Compare commits
114 Commits
temp_displ
...
viewport_e
| Author | SHA1 | Date | |
|---|---|---|---|
| 5515e5727b | |||
| c1e9df7e79 | |||
| 2a2d90e6e0 | |||
| 55e206c580 | |||
| 761e8ef733 | |||
| f43f4f0e89 | |||
| 6719fb8248 | |||
| 617fc1f49e | |||
| eedd9b70b6 | |||
| ccd3fb8ea7 | |||
| 9ef1a6b2f2 | |||
| c28f3e3e0a | |||
| 78aa9be2ee | |||
| d5b99ceb55 | |||
| 3fa8fad5f1 | |||
| 7064313ec6 | |||
| 4f5e9f0857 | |||
| 7409fddf27 | |||
| 4557ad66c1 | |||
| dc506fba9c | |||
| 4eb6b35926 | |||
| 0d8b701e25 | |||
| bdfd9ba38a | |||
| 0ea64c2b9a | |||
| 9d1336b653 | |||
| b7c1d2e898 | |||
| 268ae6a62b | |||
| 7d1e7de7be | |||
| 28f271736b | |||
| 8a8e29ac6a | |||
| a75728341b | |||
| da94a7005a | |||
| 568c8b7b55 | |||
| 6148295f1a | |||
| 0790db4f5c | |||
| 1cfb12ddbf | |||
| 27fe02f213 | |||
| 79b8540e66 | |||
| fd1036e803 | |||
| 08cc519e79 | |||
| b06999435a | |||
| 9ca9bb68af | |||
| f54d210f26 | |||
| e306e99574 | |||
| 85e9ddd515 | |||
| 63ab9c1089 | |||
| dbf18d88fc | |||
| a4c154bc5a | |||
| 2a189a0546 | |||
| 376a004b26 | |||
| 4ca945778f | |||
| 4d6d8b8c14 | |||
| 702cb6c403 | |||
| c37c50e33f | |||
| 44e8045ee5 | |||
| 5467064777 | |||
| bd434b92b6 | |||
| 5373b4a8b1 | |||
| ec69df6147 | |||
| 40b1d29ec7 | |||
| 3021399869 | |||
| ace38bdc82 | |||
| cb94f59f71 | |||
| 63d7d8e1e5 | |||
| 43d4a56d8d | |||
| 7b0031b187 | |||
| 4322085f4f | |||
| 4aad147fe4 | |||
| b550e788f2 | |||
| 46cc844f43 | |||
| 7798ecd743 | |||
| 78d42f7885 | |||
| eb8a09d567 | |||
| 2a5556b426 | |||
| de27811177 | |||
| 6484056cc1 | |||
| a4f35de026 | |||
| ba2f0ad779 | |||
| e0cba973e7 | |||
| c6292918a3 | |||
| 518f794a6f | |||
| dc22a50488 | |||
| d2d3bd35c1 | |||
| 0782c680a6 | |||
| 8f25b6d6c8 | |||
| 6e8ba2f3f5 | |||
| c48abbb090 | |||
| 5efa0e03b5 | |||
| d54c249a7b | |||
| 3967f5659d | |||
| 1082a2f125 | |||
| ddb33a3181 | |||
| 33e7e1ddb2 | |||
| 0c8469c440 | |||
| 30be0f0977 | |||
| e1755158c0 | |||
| e963efcd19 | |||
| 5b4b83d7e3 | |||
| 5c31594ab7 | |||
| c4b6d60af3 | |||
| 33cee269da | |||
| ce9fb0e997 | |||
| 81a3a364b5 | |||
| c56cf0b887 | |||
| 827ad6075d | |||
| d1ed35480e | |||
| 829addcff0 | |||
| 313b568f92 | |||
| 3a0d276c55 | |||
| acdaf71bbe | |||
| 21f43fb13c | |||
| 2632c1308f | |||
| 33722d4011 | |||
| 9e2efd68e1 |
7
.gitignore
vendored
7
.gitignore
vendored
@@ -22,7 +22,6 @@ Desktop.ini
|
|||||||
# commonly used paths in blender
|
# commonly used paths in blender
|
||||||
/blender.bin
|
/blender.bin
|
||||||
/user-config.py
|
/user-config.py
|
||||||
/BUILD_NOTES.txt
|
|
||||||
|
|
||||||
# local patches
|
# local patches
|
||||||
/*.patch
|
/*.patch
|
||||||
@@ -33,9 +32,3 @@ Desktop.ini
|
|||||||
/doc/python_api/sphinx-in-tmp/
|
/doc/python_api/sphinx-in-tmp/
|
||||||
/doc/python_api/sphinx-in/
|
/doc/python_api/sphinx-in/
|
||||||
/doc/python_api/sphinx-out/
|
/doc/python_api/sphinx-out/
|
||||||
/doc/python_api/rst/bmesh.ops.rst
|
|
||||||
/doc/python_api/rst/in_menu.png
|
|
||||||
/doc/python_api/rst/menu_id.png
|
|
||||||
/doc/python_api/rst/op_prop.png
|
|
||||||
/doc/python_api/rst/run_script.png
|
|
||||||
/doc/python_api/rst/spacebar.png
|
|
||||||
|
|||||||
6
.gitmodules
vendored
6
.gitmodules
vendored
@@ -10,7 +10,7 @@
|
|||||||
path = release/datafiles/locale
|
path = release/datafiles/locale
|
||||||
url = ../blender-translations.git
|
url = ../blender-translations.git
|
||||||
ignore = all
|
ignore = all
|
||||||
[submodule "source/tools"]
|
[submodule "scons"]
|
||||||
path = source/tools
|
path = scons
|
||||||
url = ../blender-dev-tools.git
|
url = ../scons.git
|
||||||
ignore = all
|
ignore = all
|
||||||
|
|||||||
2012
CMakeLists.txt
2012
CMakeLists.txt
File diff suppressed because it is too large
Load Diff
196
GNUmakefile
196
GNUmakefile
@@ -43,11 +43,6 @@ ifndef BUILD_DIR
|
|||||||
BUILD_DIR:=$(shell dirname "$(BLENDER_DIR)")/build_$(OS_NCASE)
|
BUILD_DIR:=$(shell dirname "$(BLENDER_DIR)")/build_$(OS_NCASE)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Allow to use alternative binary (pypy3, etc)
|
|
||||||
ifndef PYTHON
|
|
||||||
PYTHON:=python3
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# additional targets for the build configuration
|
# additional targets for the build configuration
|
||||||
@@ -70,7 +65,7 @@ ifneq "$(findstring cycles, $(MAKECMDGOALS))" ""
|
|||||||
BUILD_CMAKE_ARGS:=$(BUILD_CMAKE_ARGS) -C"$(BLENDER_DIR)/build_files/cmake/config/cycles_standalone.cmake"
|
BUILD_CMAKE_ARGS:=$(BUILD_CMAKE_ARGS) -C"$(BLENDER_DIR)/build_files/cmake/config/cycles_standalone.cmake"
|
||||||
endif
|
endif
|
||||||
ifneq "$(findstring headless, $(MAKECMDGOALS))" ""
|
ifneq "$(findstring headless, $(MAKECMDGOALS))" ""
|
||||||
BUILD_DIR:=$(BUILD_DIR)_headless
|
BUILD_DIR:=$(BUILD_DIR)_bpy
|
||||||
BUILD_CMAKE_ARGS:=$(BUILD_CMAKE_ARGS) -C"$(BLENDER_DIR)/build_files/cmake/config/blender_headless.cmake"
|
BUILD_CMAKE_ARGS:=$(BUILD_CMAKE_ARGS) -C"$(BLENDER_DIR)/build_files/cmake/config/blender_headless.cmake"
|
||||||
endif
|
endif
|
||||||
ifneq "$(findstring bpy, $(MAKECMDGOALS))" ""
|
ifneq "$(findstring bpy, $(MAKECMDGOALS))" ""
|
||||||
@@ -81,20 +76,18 @@ endif
|
|||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# Get the number of cores for threaded build
|
# Get the number of cores for threaded build
|
||||||
ifndef NPROCS
|
NPROCS:=1
|
||||||
NPROCS:=1
|
ifeq ($(OS), Linux)
|
||||||
ifeq ($(OS), Linux)
|
NPROCS:=$(shell nproc)
|
||||||
NPROCS:=$(shell nproc)
|
endif
|
||||||
endif
|
ifeq ($(OS), Darwin)
|
||||||
ifeq ($(OS), Darwin)
|
NPROCS:=$(shell sysctl -a | grep "hw.ncpu" | cut -d" " -f3)
|
||||||
NPROCS:=$(shell sysctl -n hw.ncpu)
|
endif
|
||||||
endif
|
ifeq ($(OS), FreeBSD)
|
||||||
ifeq ($(OS), FreeBSD)
|
NPROCS:=$(shell sysctl -a | grep "hw.ncpu" | cut -d" " -f2 )
|
||||||
NPROCS:=$(shell sysctl -n hw.ncpu)
|
endif
|
||||||
endif
|
ifeq ($(OS), NetBSD)
|
||||||
ifeq ($(OS), NetBSD)
|
NPROCS:=$(shell sysctl -a | grep "hw.ncpu" | cut -d" " -f2 )
|
||||||
NPROCS:=$(shell sysctl -n hw.ncpu)
|
|
||||||
endif
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
@@ -120,23 +113,23 @@ endif
|
|||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# Build Blender
|
# Build Blender
|
||||||
all: .FORCE
|
all: FORCE
|
||||||
@echo
|
@echo
|
||||||
@echo Configuring Blender in \"$(BUILD_DIR)\" ...
|
@echo Configuring Blender ...
|
||||||
|
|
||||||
# # if test ! -f $(BUILD_DIR)/CMakeCache.txt ; then \
|
# if test ! -f $(BUILD_DIR)/CMakeCache.txt ; then \
|
||||||
# # $(CMAKE_CONFIG); \
|
# $(CMAKE_CONFIG); \
|
||||||
# # fi
|
# fi
|
||||||
|
|
||||||
# # do this always incase of failed initial build, could be smarter here...
|
# do this always incase of failed initial build, could be smarter here...
|
||||||
@$(CMAKE_CONFIG)
|
$(CMAKE_CONFIG)
|
||||||
|
|
||||||
@echo
|
@echo
|
||||||
@echo Building Blender ...
|
@echo Building Blender ...
|
||||||
$(MAKE) -C "$(BUILD_DIR)" -s -j $(NPROCS) install
|
$(MAKE) -C "$(BUILD_DIR)" -s -j $(NPROCS) install
|
||||||
@echo
|
@echo
|
||||||
@echo edit build configuration with: "$(BUILD_DIR)/CMakeCache.txt" run make again to rebuild.
|
@echo edit build configuration with: "$(BUILD_DIR)/CMakeCache.txt" run make again to rebuild.
|
||||||
@echo Blender successfully built, run from: "$(BUILD_DIR)/bin/blender"
|
@echo blender installed, run from: "$(BUILD_DIR)/bin/blender"
|
||||||
@echo
|
@echo
|
||||||
|
|
||||||
debug: all
|
debug: all
|
||||||
@@ -149,13 +142,13 @@ bpy: all
|
|||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# Configuration (save some cd'ing around)
|
# Configuration (save some cd'ing around)
|
||||||
config: .FORCE
|
config: FORCE
|
||||||
$(CMAKE_CONFIG_TOOL) "$(BUILD_DIR)"
|
$(CMAKE_CONFIG_TOOL) "$(BUILD_DIR)"
|
||||||
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# Help for build targets
|
# Help for build targets
|
||||||
help: .FORCE
|
help: FORCE
|
||||||
@echo ""
|
@echo ""
|
||||||
@echo "Convenience targets provided for building blender, (multiple at once can be used)"
|
@echo "Convenience targets provided for building blender, (multiple at once can be used)"
|
||||||
@echo " * debug - build a debug binary"
|
@echo " * debug - build a debug binary"
|
||||||
@@ -178,24 +171,18 @@ help: .FORCE
|
|||||||
@echo ""
|
@echo ""
|
||||||
@echo "Package Targets"
|
@echo "Package Targets"
|
||||||
@echo " * package_debian - build a debian package"
|
@echo " * package_debian - build a debian package"
|
||||||
@echo " * package_pacman - build an arch linux pacman package"
|
@echo " * package_pacman - build an arch linux pacmanpackage"
|
||||||
@echo " * package_archive - build an archive package"
|
@echo " * package_archive - build an archive package"
|
||||||
@echo ""
|
@echo ""
|
||||||
@echo "Testing Targets (not associated with building blender)"
|
@echo "Testing Targets (not associated with building blender)"
|
||||||
@echo " * test - run ctest, currently tests import/export,"
|
@echo " * test - run ctest, currently tests import/export, operator execution and that python modules load"
|
||||||
@echo " operator execution and that python modules load"
|
@echo " * test_cmake - runs our own cmake file checker which detects errors in the cmake file list definitions"
|
||||||
@echo " * test_cmake - runs our own cmake file checker"
|
@echo " * test_pep8 - checks all python script are pep8 which are tagged to use the stricter formatting"
|
||||||
@echo " which detects errors in the cmake file list definitions"
|
|
||||||
@echo " * test_pep8 - checks all python script are pep8"
|
|
||||||
@echo " which are tagged to use the stricter formatting"
|
|
||||||
@echo " * test_deprecated - checks for deprecation tags in our code which may need to be removed"
|
@echo " * test_deprecated - checks for deprecation tags in our code which may need to be removed"
|
||||||
@echo " * test_style_c - checks C/C++ conforms with blenders style guide:"
|
@echo " * test_style_c - checks C/C++ conforms with blenders style guide: http://wiki.blender.org/index.php/Dev:Doc/CodeStyle"
|
||||||
@echo " http://wiki.blender.org/index.php/Dev:Doc/CodeStyle"
|
|
||||||
@echo " * test_style_c_qtc - same as test_style but outputs QtCreator tasks format"
|
@echo " * test_style_c_qtc - same as test_style but outputs QtCreator tasks format"
|
||||||
@echo " * test_style_osl - checks OpenShadingLanguage conforms with blenders style guide:"
|
@echo " * test_style_osl - checks OpenShadingLanguage conforms with blenders style guide: http://wiki.blender.org/index.php/Dev:Doc/CodeStyle"
|
||||||
@echo " http://wiki.blender.org/index.php/Dev:Doc/CodeStyle"
|
@echo " * test_style_osl_qtc - checks OpenShadingLanguage conforms with blenders style guide: http://wiki.blender.org/index.php/Dev:Doc/CodeStyle"
|
||||||
@echo " * test_style_osl_qtc - checks OpenShadingLanguage conforms with blenders style guide:"
|
|
||||||
@echo " http://wiki.blender.org/index.php/Dev:Doc/CodeStyle"
|
|
||||||
@echo ""
|
@echo ""
|
||||||
@echo "Static Source Code Checking (not associated with building blender)"
|
@echo "Static Source Code Checking (not associated with building blender)"
|
||||||
@echo " * check_cppcheck - run blender source through cppcheck (C & C++)"
|
@echo " * check_cppcheck - run blender source through cppcheck (C & C++)"
|
||||||
@@ -214,12 +201,6 @@ help: .FORCE
|
|||||||
@echo " * tgz - create a compressed archive of the source code."
|
@echo " * tgz - create a compressed archive of the source code."
|
||||||
@echo " * update - updates git and all submodules"
|
@echo " * update - updates git and all submodules"
|
||||||
@echo ""
|
@echo ""
|
||||||
@echo "Environment Variables"
|
|
||||||
@echo " * BUILD_CMAKE_ARGS - arguments passed to CMake."
|
|
||||||
@echo " * BUILD_DIR - override default build path."
|
|
||||||
@echo " * PYTHON - use this for the Python command (used for checking tools)."
|
|
||||||
@echo " * NPROCS - number of processes to use building (auto-detect when omitted)."
|
|
||||||
@echo ""
|
|
||||||
@echo "Documentation Targets (not associated with building blender)"
|
@echo "Documentation Targets (not associated with building blender)"
|
||||||
@echo " * doc_py - generate sphinx python api docs"
|
@echo " * doc_py - generate sphinx python api docs"
|
||||||
@echo " * doc_doxy - generate doxygen C/C++ docs"
|
@echo " * doc_doxy - generate doxygen C/C++ docs"
|
||||||
@@ -229,18 +210,17 @@ help: .FORCE
|
|||||||
@echo "Information"
|
@echo "Information"
|
||||||
@echo " * help - this help message"
|
@echo " * help - this help message"
|
||||||
@echo " * help_features - show a list of optional features when building"
|
@echo " * help_features - show a list of optional features when building"
|
||||||
@echo ""
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# Packages
|
# Packages
|
||||||
#
|
#
|
||||||
package_debian: .FORCE
|
package_debian: FORCE
|
||||||
cd build_files/package_spec ; DEB_BUILD_OPTIONS="parallel=$(NPROCS)" sh ./build_debian.sh
|
cd build_files/package_spec ; DEB_BUILD_OPTIONS="parallel=$(NPROCS)" sh ./build_debian.sh
|
||||||
|
|
||||||
package_pacman: .FORCE
|
package_pacman: FORCE
|
||||||
cd build_files/package_spec/pacman ; MAKEFLAGS="-j$(NPROCS)" makepkg
|
cd build_files/package_spec/pacman ; MAKEFLAGS="-j$(NPROCS)" makepkg --asroot
|
||||||
|
|
||||||
package_archive: .FORCE
|
package_archive: FORCE
|
||||||
make -C "$(BUILD_DIR)" -s package_archive
|
make -C "$(BUILD_DIR)" -s package_archive
|
||||||
@echo archive in "$(BUILD_DIR)/release"
|
@echo archive in "$(BUILD_DIR)/release"
|
||||||
|
|
||||||
@@ -248,35 +228,35 @@ package_archive: .FORCE
|
|||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# Tests
|
# Tests
|
||||||
#
|
#
|
||||||
test: .FORCE
|
test: FORCE
|
||||||
cd $(BUILD_DIR) ; ctest . --output-on-failure
|
cd $(BUILD_DIR) ; ctest . --output-on-failure
|
||||||
|
|
||||||
# run pep8 check check on scripts we distribute.
|
# run pep8 check check on scripts we distribute.
|
||||||
test_pep8: .FORCE
|
test_pep8: FORCE
|
||||||
$(PYTHON) tests/python/pep8.py > test_pep8.log 2>&1
|
python3 tests/python/pep8.py > test_pep8.log 2>&1
|
||||||
@echo "written: test_pep8.log"
|
@echo "written: test_pep8.log"
|
||||||
|
|
||||||
# run some checks on our cmakefiles.
|
# run some checks on our cmakefiles.
|
||||||
test_cmake: .FORCE
|
test_cmake: FORCE
|
||||||
$(PYTHON) build_files/cmake/cmake_consistency_check.py > test_cmake_consistency.log 2>&1
|
python3 build_files/cmake/cmake_consistency_check.py > test_cmake_consistency.log 2>&1
|
||||||
@echo "written: test_cmake_consistency.log"
|
@echo "written: test_cmake_consistency.log"
|
||||||
|
|
||||||
# run deprecation tests, see if we have anything to remove.
|
# run deprecation tests, see if we have anything to remove.
|
||||||
test_deprecated: .FORCE
|
test_deprecated: FORCE
|
||||||
$(PYTHON) tests/check_deprecated.py
|
python3 tests/check_deprecated.py
|
||||||
|
|
||||||
test_style_c: .FORCE
|
test_style_c: FORCE
|
||||||
# run our own checks on C/C++ style
|
# run our own checks on C/C++ style
|
||||||
PYTHONIOENCODING=utf_8 $(PYTHON) \
|
PYTHONIOENCODING=utf_8 python3 \
|
||||||
"$(BLENDER_DIR)/source/tools/check_source/check_style_c.py" \
|
"$(BLENDER_DIR)/source/tools/check_source/check_style_c.py" \
|
||||||
"$(BLENDER_DIR)/source/blender" \
|
"$(BLENDER_DIR)/source/blender" \
|
||||||
"$(BLENDER_DIR)/source/creator" \
|
"$(BLENDER_DIR)/source/creator" \
|
||||||
--no-length-check
|
--no-length-check
|
||||||
|
|
||||||
test_style_c_qtc: .FORCE
|
test_style_c_qtc: FORCE
|
||||||
# run our own checks on C/C++ style
|
# run our own checks on C/C++ style
|
||||||
USE_QTC_TASK=1 \
|
USE_QTC_TASK=1 \
|
||||||
PYTHONIOENCODING=utf_8 $(PYTHON) \
|
PYTHONIOENCODING=utf_8 python3 \
|
||||||
"$(BLENDER_DIR)/source/tools/check_source/check_style_c.py" \
|
"$(BLENDER_DIR)/source/tools/check_source/check_style_c.py" \
|
||||||
"$(BLENDER_DIR)/source/blender" \
|
"$(BLENDER_DIR)/source/blender" \
|
||||||
"$(BLENDER_DIR)/source/creator" \
|
"$(BLENDER_DIR)/source/creator" \
|
||||||
@@ -286,18 +266,18 @@ test_style_c_qtc: .FORCE
|
|||||||
@echo "written: test_style.tasks"
|
@echo "written: test_style.tasks"
|
||||||
|
|
||||||
|
|
||||||
test_style_osl: .FORCE
|
test_style_osl: FORCE
|
||||||
# run our own checks on C/C++ style
|
# run our own checks on C/C++ style
|
||||||
PYTHONIOENCODING=utf_8 $(PYTHON) \
|
PYTHONIOENCODING=utf_8 python3 \
|
||||||
"$(BLENDER_DIR)/source/tools/check_source/check_style_c.py" \
|
"$(BLENDER_DIR)/source/tools/check_source/check_style_c.py" \
|
||||||
"$(BLENDER_DIR)/intern/cycles/kernel/shaders" \
|
"$(BLENDER_DIR)/intern/cycles/kernel/shaders" \
|
||||||
"$(BLENDER_DIR)/release/scripts/templates_osl"
|
"$(BLENDER_DIR)/release/scripts/templates_osl"
|
||||||
|
|
||||||
|
|
||||||
test_style_osl_qtc: .FORCE
|
test_style_osl_qtc: FORCE
|
||||||
# run our own checks on C/C++ style
|
# run our own checks on C/C++ style
|
||||||
USE_QTC_TASK=1 \
|
USE_QTC_TASK=1 \
|
||||||
PYTHONIOENCODING=utf_8 $(PYTHON) \
|
PYTHONIOENCODING=utf_8 python3 \
|
||||||
"$(BLENDER_DIR)/source/tools/check_source/check_style_c.py" \
|
"$(BLENDER_DIR)/source/tools/check_source/check_style_c.py" \
|
||||||
"$(BLENDER_DIR)/intern/cycles/kernel/shaders" \
|
"$(BLENDER_DIR)/intern/cycles/kernel/shaders" \
|
||||||
"$(BLENDER_DIR)/release/scripts/templates_osl" \
|
"$(BLENDER_DIR)/release/scripts/templates_osl" \
|
||||||
@@ -309,13 +289,13 @@ test_style_osl_qtc: .FORCE
|
|||||||
# Project Files
|
# Project Files
|
||||||
#
|
#
|
||||||
|
|
||||||
project_qtcreator: .FORCE
|
project_qtcreator: FORCE
|
||||||
$(PYTHON) build_files/cmake/cmake_qtcreator_project.py "$(BUILD_DIR)"
|
python3 build_files/cmake/cmake_qtcreator_project.py "$(BUILD_DIR)"
|
||||||
|
|
||||||
project_netbeans: .FORCE
|
project_netbeans: FORCE
|
||||||
$(PYTHON) build_files/cmake/cmake_netbeans_project.py "$(BUILD_DIR)"
|
python3 build_files/cmake/cmake_netbeans_project.py "$(BUILD_DIR)"
|
||||||
|
|
||||||
project_eclipse: .FORCE
|
project_eclipse: FORCE
|
||||||
cmake -G"Eclipse CDT4 - Unix Makefiles" -H"$(BLENDER_DIR)" -B"$(BUILD_DIR)"
|
cmake -G"Eclipse CDT4 - Unix Makefiles" -H"$(BLENDER_DIR)" -B"$(BUILD_DIR)"
|
||||||
|
|
||||||
|
|
||||||
@@ -323,51 +303,51 @@ project_eclipse: .FORCE
|
|||||||
# Static Checking
|
# Static Checking
|
||||||
#
|
#
|
||||||
|
|
||||||
check_cppcheck: .FORCE
|
check_cppcheck: FORCE
|
||||||
$(CMAKE_CONFIG)
|
$(CMAKE_CONFIG)
|
||||||
cd "$(BUILD_DIR)" ; \
|
cd "$(BUILD_DIR)" ; \
|
||||||
$(PYTHON) "$(BLENDER_DIR)/build_files/cmake/cmake_static_check_cppcheck.py" 2> \
|
python3 "$(BLENDER_DIR)/build_files/cmake/cmake_static_check_cppcheck.py" 2> \
|
||||||
"$(BLENDER_DIR)/check_cppcheck.txt"
|
"$(BLENDER_DIR)/check_cppcheck.txt"
|
||||||
@echo "written: check_cppcheck.txt"
|
@echo "written: check_cppcheck.txt"
|
||||||
|
|
||||||
check_clang_array: .FORCE
|
check_clang_array: FORCE
|
||||||
$(CMAKE_CONFIG)
|
$(CMAKE_CONFIG)
|
||||||
cd "$(BUILD_DIR)" ; \
|
cd "$(BUILD_DIR)" ; \
|
||||||
$(PYTHON) "$(BLENDER_DIR)/build_files/cmake/cmake_static_check_clang_array.py"
|
python3 "$(BLENDER_DIR)/build_files/cmake/cmake_static_check_clang_array.py"
|
||||||
|
|
||||||
check_splint: .FORCE
|
check_splint: FORCE
|
||||||
$(CMAKE_CONFIG)
|
$(CMAKE_CONFIG)
|
||||||
cd "$(BUILD_DIR)" ; \
|
cd "$(BUILD_DIR)" ; \
|
||||||
$(PYTHON) "$(BLENDER_DIR)/build_files/cmake/cmake_static_check_splint.py"
|
python3 "$(BLENDER_DIR)/build_files/cmake/cmake_static_check_splint.py"
|
||||||
|
|
||||||
check_sparse: .FORCE
|
check_sparse: FORCE
|
||||||
$(CMAKE_CONFIG)
|
$(CMAKE_CONFIG)
|
||||||
cd "$(BUILD_DIR)" ; \
|
cd "$(BUILD_DIR)" ; \
|
||||||
$(PYTHON) "$(BLENDER_DIR)/build_files/cmake/cmake_static_check_sparse.py"
|
python3 "$(BLENDER_DIR)/build_files/cmake/cmake_static_check_sparse.py"
|
||||||
|
|
||||||
check_smatch: .FORCE
|
check_smatch: FORCE
|
||||||
$(CMAKE_CONFIG)
|
$(CMAKE_CONFIG)
|
||||||
cd "$(BUILD_DIR)" ; \
|
cd "$(BUILD_DIR)" ; \
|
||||||
$(PYTHON) "$(BLENDER_DIR)/build_files/cmake/cmake_static_check_smatch.py"
|
python3 "$(BLENDER_DIR)/build_files/cmake/cmake_static_check_smatch.py"
|
||||||
|
|
||||||
check_spelling_py: .FORCE
|
check_spelling_py: FORCE
|
||||||
cd "$(BUILD_DIR)" ; \
|
cd "$(BUILD_DIR)" ; \
|
||||||
PYTHONIOENCODING=utf_8 $(PYTHON) \
|
PYTHONIOENCODING=utf_8 python3 \
|
||||||
"$(BLENDER_DIR)/source/tools/check_source/check_spelling.py" \
|
"$(BLENDER_DIR)/source/tools/check_source/check_spelling.py" \
|
||||||
"$(BLENDER_DIR)/release/scripts"
|
"$(BLENDER_DIR)/release/scripts"
|
||||||
|
|
||||||
check_spelling_c: .FORCE
|
check_spelling_c: FORCE
|
||||||
cd "$(BUILD_DIR)" ; \
|
cd "$(BUILD_DIR)" ; \
|
||||||
PYTHONIOENCODING=utf_8 $(PYTHON) \
|
PYTHONIOENCODING=utf_8 python3 \
|
||||||
"$(BLENDER_DIR)/source/tools/check_source/check_spelling.py" \
|
"$(BLENDER_DIR)/source/tools/check_source/check_spelling.py" \
|
||||||
"$(BLENDER_DIR)/source" \
|
"$(BLENDER_DIR)/source" \
|
||||||
"$(BLENDER_DIR)/intern/cycles" \
|
"$(BLENDER_DIR)/intern/cycles" \
|
||||||
"$(BLENDER_DIR)/intern/guardedalloc" \
|
"$(BLENDER_DIR)/intern/guardedalloc" \
|
||||||
"$(BLENDER_DIR)/intern/ghost" \
|
"$(BLENDER_DIR)/intern/ghost" \
|
||||||
|
|
||||||
check_spelling_c_qtc: .FORCE
|
check_spelling_c_qtc: FORCE
|
||||||
cd "$(BUILD_DIR)" ; USE_QTC_TASK=1 \
|
cd "$(BUILD_DIR)" ; USE_QTC_TASK=1 \
|
||||||
PYTHONIOENCODING=utf_8 $(PYTHON) \
|
PYTHONIOENCODING=utf_8 python3 \
|
||||||
"$(BLENDER_DIR)/source/tools/check_source/check_spelling.py" \
|
"$(BLENDER_DIR)/source/tools/check_source/check_spelling.py" \
|
||||||
"$(BLENDER_DIR)/source" \
|
"$(BLENDER_DIR)/source" \
|
||||||
"$(BLENDER_DIR)/intern/cycles" \
|
"$(BLENDER_DIR)/intern/cycles" \
|
||||||
@@ -376,13 +356,13 @@ check_spelling_c_qtc: .FORCE
|
|||||||
> \
|
> \
|
||||||
"$(BLENDER_DIR)/check_spelling_c.tasks"
|
"$(BLENDER_DIR)/check_spelling_c.tasks"
|
||||||
|
|
||||||
check_spelling_osl: .FORCE
|
check_spelling_osl: FORCE
|
||||||
cd "$(BUILD_DIR)" ;\
|
cd "$(BUILD_DIR)" ;\
|
||||||
PYTHONIOENCODING=utf_8 $(PYTHON) \
|
PYTHONIOENCODING=utf_8 python3 \
|
||||||
"$(BLENDER_DIR)/source/tools/check_source/check_spelling.py" \
|
"$(BLENDER_DIR)/source/tools/check_source/check_spelling.py" \
|
||||||
"$(BLENDER_DIR)/intern/cycles/kernel/shaders"
|
"$(BLENDER_DIR)/intern/cycles/kernel/shaders"
|
||||||
|
|
||||||
check_descriptions: .FORCE
|
check_descriptions: FORCE
|
||||||
"$(BUILD_DIR)/bin/blender" --background -noaudio --factory-startup --python \
|
"$(BUILD_DIR)/bin/blender" --background -noaudio --factory-startup --python \
|
||||||
"$(BLENDER_DIR)/source/tools/check_source/check_descriptions.py"
|
"$(BLENDER_DIR)/source/tools/check_source/check_descriptions.py"
|
||||||
|
|
||||||
@@ -390,14 +370,14 @@ check_descriptions: .FORCE
|
|||||||
# Utilities
|
# Utilities
|
||||||
#
|
#
|
||||||
|
|
||||||
tgz: .FORCE
|
tgz: FORCE
|
||||||
./build_files/utils/build_tgz.sh
|
./build_files/utils/build_tgz.sh
|
||||||
|
|
||||||
icons: .FORCE
|
icons: FORCE
|
||||||
"$(BLENDER_DIR)/release/datafiles/blender_icons_update.py"
|
"$(BLENDER_DIR)/release/datafiles/blender_icons_update.py"
|
||||||
"$(BLENDER_DIR)/release/datafiles/prvicons_update.py"
|
"$(BLENDER_DIR)/release/datafiles/prvicons_update.py"
|
||||||
|
|
||||||
update: .FORCE
|
update: FORCE
|
||||||
if [ -d "../lib" ]; then \
|
if [ -d "../lib" ]; then \
|
||||||
svn update ../lib/* ; \
|
svn update ../lib/* ; \
|
||||||
fi
|
fi
|
||||||
@@ -410,26 +390,24 @@ update: .FORCE
|
|||||||
#
|
#
|
||||||
|
|
||||||
# Simple version of ./doc/python_api/sphinx_doc_gen.sh with no PDF generation.
|
# Simple version of ./doc/python_api/sphinx_doc_gen.sh with no PDF generation.
|
||||||
doc_py: .FORCE
|
doc_py: FORCE
|
||||||
"$(BUILD_DIR)/bin/blender" --background -noaudio --factory-startup \
|
"$(BUILD_DIR)/bin/blender" --background -noaudio --factory-startup --python doc/python_api/sphinx_doc_gen.py
|
||||||
--python doc/python_api/sphinx_doc_gen.py
|
|
||||||
cd doc/python_api ; sphinx-build -b html sphinx-in sphinx-out
|
cd doc/python_api ; sphinx-build -b html sphinx-in sphinx-out
|
||||||
@echo "docs written into: '$(BLENDER_DIR)/doc/python_api/sphinx-out/contents.html'"
|
@echo "docs written into: '$(BLENDER_DIR)/doc/python_api/sphinx-out/contents.html'"
|
||||||
|
|
||||||
doc_doxy: .FORCE
|
doc_doxy: FORCE
|
||||||
cd doc/doxygen; doxygen Doxyfile
|
cd doc/doxygen; doxygen Doxyfile
|
||||||
@echo "docs written into: '$(BLENDER_DIR)/doc/doxygen/html/index.html'"
|
@echo "docs written into: '$(BLENDER_DIR)/doc/doxygen/html/index.html'"
|
||||||
|
|
||||||
doc_dna: .FORCE
|
doc_dna: FORCE
|
||||||
"$(BUILD_DIR)/bin/blender" --background -noaudio --factory-startup \
|
"$(BUILD_DIR)/bin/blender" --background -noaudio --factory-startup --python doc/blender_file_format/BlendFileDnaExporter_25.py
|
||||||
--python doc/blender_file_format/BlendFileDnaExporter_25.py
|
|
||||||
@echo "docs written into: '$(BLENDER_DIR)/doc/blender_file_format/dna.html'"
|
@echo "docs written into: '$(BLENDER_DIR)/doc/blender_file_format/dna.html'"
|
||||||
|
|
||||||
doc_man: .FORCE
|
doc_man: FORCE
|
||||||
$(PYTHON) doc/manpage/blender.1.py "$(BUILD_DIR)/bin/blender"
|
python3 doc/manpage/blender.1.py "$(BUILD_DIR)/bin/blender"
|
||||||
|
|
||||||
help_features: .FORCE
|
help_features: FORCE
|
||||||
@$(PYTHON) -c \
|
@python3 -c \
|
||||||
"import re; \
|
"import re; \
|
||||||
print('\n'.join([ \
|
print('\n'.join([ \
|
||||||
w for l in open('"$(BLENDER_DIR)"/CMakeLists.txt', 'r').readlines() \
|
w for l in open('"$(BLENDER_DIR)"/CMakeLists.txt', 'r').readlines() \
|
||||||
@@ -439,9 +417,9 @@ help_features: .FORCE
|
|||||||
if w.startswith('WITH_')]))" | uniq
|
if w.startswith('WITH_')]))" | uniq
|
||||||
|
|
||||||
|
|
||||||
clean: .FORCE
|
clean: FORCE
|
||||||
$(MAKE) -C "$(BUILD_DIR)" clean
|
$(MAKE) -C "$(BUILD_DIR)" clean
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
|
|
||||||
.FORCE:
|
FORCE:
|
||||||
|
|||||||
1329
SConstruct
Normal file
1329
SConstruct
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,11 +0,0 @@
|
|||||||
--- a/CMakeLists.txt
|
|
||||||
+++ b/CMakeLists.txt
|
|
||||||
@@ -14,7 +14,7 @@
|
|
||||||
set(LLVM_VERSION_MINOR 4)
|
|
||||||
|
|
||||||
if (NOT PACKAGE_VERSION)
|
|
||||||
- set(PACKAGE_VERSION "${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}svn")
|
|
||||||
+ set(PACKAGE_VERSION "${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
option(LLVM_INSTALL_TOOLCHAIN_ONLY "Only include toolchain files in the 'install' target." OFF)
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
--- a/src/shaders/CMakeLists.txt
|
|
||||||
+++ b/src/shaders/CMakeLists.txt
|
|
||||||
@@ -27,7 +27,7 @@ macro (osl_compile oslsrc objlist headers)
|
|
||||||
message (STATUS "cmd: ${CMAKE_CURRENT_BINARY_DIR}/../oslc/oslc ${oslsrc}")
|
|
||||||
endif ()
|
|
||||||
add_custom_command (OUTPUT ${osofile}
|
|
||||||
- COMMAND "${CMAKE_CURRENT_BINARY_DIR}/../oslc/oslc" ${oslsrc}
|
|
||||||
+ COMMAND "${CMAKE_CURRENT_BINARY_DIR}/../oslc/oslc" "-o" ${osofile} ${oslsrc}
|
|
||||||
MAIN_DEPENDENCY ${oslsrc}
|
|
||||||
DEPENDS ${${headers}} ${oslsrc} "${CMAKE_CURRENT_BINARY_DIR}/stdosl.h" "${CMAKE_CURRENT_BINARY_DIR}/../oslc/oslc"
|
|
||||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
|
||||||
|
|
||||||
1555
build_files/build_environment/prepare_release_env.sh
Executable file
1555
build_files/build_environment/prepare_release_env.sh
Executable file
File diff suppressed because it is too large
Load Diff
@@ -1,143 +0,0 @@
|
|||||||
# ######## Global feature set settings ########
|
|
||||||
|
|
||||||
include("${CMAKE_CURRENT_LIST_DIR}/../../cmake/config/blender_full.cmake")
|
|
||||||
|
|
||||||
# Detect which libc we'll be linking against.
|
|
||||||
# Some of the paths will depend on this
|
|
||||||
|
|
||||||
if (EXISTS "/lib/x86_64-linux-gnu/libc-2.19.so")
|
|
||||||
message(STATUS "Building in GLibc-2.19 environment")
|
|
||||||
set(GLIBC "2.19")
|
|
||||||
set(MULTILIB "/x86_64-linux-gnu")
|
|
||||||
elseif (EXISTS "/lib/i386-linux-gnu//libc-2.19.so")
|
|
||||||
message(STATUS "Building in GLibc-2.19 environment")
|
|
||||||
set(GLIBC "2.19")
|
|
||||||
set(MULTILIB "/i386-linux-gnu")
|
|
||||||
elseif (EXISTS "/lib/libc-2.11.3.so")
|
|
||||||
message(STATUS "Building in GLibc-2.11 environment")
|
|
||||||
set(GLIBC "2.11")
|
|
||||||
set(MULTILIB "")
|
|
||||||
else()
|
|
||||||
message(FATAL_ERROR "Unknown build environment")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Default to only build Blender, not the player
|
|
||||||
set(WITH_BLENDER ON CACHE BOOL "" FORCE)
|
|
||||||
set(WITH_PLAYER OFF CACHE BOOL "" FORCE)
|
|
||||||
|
|
||||||
# ######## Linux-specific build options ########
|
|
||||||
# Options which are specific to Linux-only platforms
|
|
||||||
set(WITH_DOC_MANPAGE OFF CACHE BOOL "" FORCE)
|
|
||||||
|
|
||||||
# ######## Official release-specific build options ########
|
|
||||||
# Options which are specific to Linux release builds only
|
|
||||||
set(WITH_JACK_DYNLOAD ON CACHE BOOL "" FORCE)
|
|
||||||
set(WITH_SDL_DYNLOAD ON CACHE BOOL "" FORCE)
|
|
||||||
set(WITH_SYSTEM_GLEW OFF CACHE BOOL "" FORCE)
|
|
||||||
|
|
||||||
set(WITH_OPENMP_STATIC ON CACHE BOOL "" FORCE)
|
|
||||||
|
|
||||||
set(WITH_PYTHON_INSTALL_NUMPY ON CACHE BOOL "" FORCE)
|
|
||||||
set(WITH_PYTHON_INSTALL_REQUESTS ON CACHE BOOL "" FORCE)
|
|
||||||
|
|
||||||
# ######## Release environment specific settings ########
|
|
||||||
# All the hardcoded libraru paths and such
|
|
||||||
|
|
||||||
# LLVM libraries
|
|
||||||
set(LLVM_VERSION "3.4" CACHE STRING "" FORCE)
|
|
||||||
set(LLVM_ROOT_DIR "/opt/lib/llvm-${LLVM_VERSION}" CACHE STRING "" FORCE)
|
|
||||||
set(LLVM_STATIC ON CACHE BOOL "" FORCE)
|
|
||||||
|
|
||||||
# BOOST libraries
|
|
||||||
set(BOOST_ROOT "/opt/lib/boost" CACHE STRING "" FORCE)
|
|
||||||
set(Boost_USE_STATIC_LIBS ON CACHE BOOL "" FORCE)
|
|
||||||
|
|
||||||
# FFmpeg libraries
|
|
||||||
set(FFMPEG "/opt/lib/ffmpeg" CACHE STRING "" FORCE)
|
|
||||||
set(FFMPEG_LIBRARIES
|
|
||||||
avdevice avformat avcodec avutil avfilter swscale swresample
|
|
||||||
/usr/lib${MULTILIB}/libxvidcore.a
|
|
||||||
/usr/lib${MULTILIB}/libx264.a
|
|
||||||
/usr/lib${MULTILIB}/libmp3lame.a
|
|
||||||
/usr/lib${MULTILIB}/libvpx.a
|
|
||||||
/usr/lib${MULTILIB}/libvorbis.a
|
|
||||||
/usr/lib${MULTILIB}/libogg.a
|
|
||||||
/usr/lib${MULTILIB}/libvorbisenc.a
|
|
||||||
/usr/lib${MULTILIB}/libtheora.a
|
|
||||||
/usr/lib${MULTILIB}/libschroedinger-1.0.a
|
|
||||||
/usr/lib${MULTILIB}/liborc-0.4.a
|
|
||||||
CACHE STRING "" FORCE
|
|
||||||
)
|
|
||||||
|
|
||||||
# SndFile libraries
|
|
||||||
set(SNDFILE_LIBRARY "/usr/lib/libsndfile.a;/usr/lib/libFLAC.a" CACHE STRING "" FORCE)
|
|
||||||
|
|
||||||
# OpenAL libraries
|
|
||||||
set(OPENAL_ROOT_DIR "/opt/lib/openal" CACHE STRING "" FORCE)
|
|
||||||
set(OPENAL_INCLUDE_DIR "${OPENAL_ROOT_DIR}/include" CACHE STRING "" FORCE)
|
|
||||||
set(OPENAL_LIBRARY
|
|
||||||
${OPENAL_ROOT_DIR}/lib/libopenal.a
|
|
||||||
${OPENAL_ROOT_DIR}/lib/libcommon.a
|
|
||||||
CACHE STRING "" FORCE
|
|
||||||
)
|
|
||||||
|
|
||||||
# OpenCollada libraries
|
|
||||||
set(OPENCOLLADA_UTF_LIBRARY "" CACHE STRING "" FORCE)
|
|
||||||
set(PCRE_INCLUDE_DIR "/usr/include" CACHE STRING "" FORCE)
|
|
||||||
set(PCRE_LIBRARY "/usr/lib${MULTILIB}/libpcre.a" CACHE STRING "" FORCE)
|
|
||||||
set(XML2_INCLUDE_DIR "/usr/include" CACHE STRING "" FORCE)
|
|
||||||
set(XML2_LIBRARY "/usr/lib${MULTILIB}/libxml2.a" CACHE STRING "" FORCE)
|
|
||||||
|
|
||||||
# OpenColorIO libraries
|
|
||||||
set(OPENCOLORIO_ROOT_DIR "/opt/lib/ocio" CACHE STRING "" FORCE)
|
|
||||||
set(OPENCOLORIO_OPENCOLORIO_LIBRARY "${OPENCOLORIO_ROOT_DIR}/lib/libOpenColorIO.a" CACHE STRING "" FORCE)
|
|
||||||
set(OPENCOLORIO_TINYXML_LIBRARY "${OPENCOLORIO_ROOT_DIR}/lib/libtinyxml.a" CACHE STRING "" FORCE)
|
|
||||||
set(OPENCOLORIO_YAML-CPP_LIBRARY "${OPENCOLORIO_ROOT_DIR}/lib/libyaml-cpp.a" CACHE STRING "" FORCE)
|
|
||||||
|
|
||||||
# OpenImageIO
|
|
||||||
if(GLIBC EQUAL "2.19")
|
|
||||||
set(OPENIMAGEIO_LIBRARY
|
|
||||||
/opt/lib/oiio/lib/libOpenImageIO.a
|
|
||||||
/opt/lib/oiio/lib/libOpenImageIO_Util.a
|
|
||||||
/usr/lib${MULTILIB}/libwebp.a
|
|
||||||
/usr/lib${MULTILIB}/liblzma.a
|
|
||||||
/usr/lib${MULTILIB}/libjbig.a
|
|
||||||
CACHE STRING "" FORCE
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# OpenSubdiv libraries
|
|
||||||
set(OPENSUBDIV_ROOT_DIR "/opt/lib/opensubdiv" CACHE STRING "" FORCE)
|
|
||||||
set(OPENSUBDIV_OSDCPU_LIBRARY "${OPENSUBDIV_ROOT_DIR}/lib/libosdCPU.a" CACHE STRING "" FORCE)
|
|
||||||
set(OPENSUBDIV_OSDGPU_LIBRARY "${OPENSUBDIV_ROOT_DIR}/lib/libosdGPU.a" CACHE STRING "" FORCE)
|
|
||||||
|
|
||||||
# OpenEXR libraries
|
|
||||||
set(OPENEXR_ROOT_DIR "/opt/lib/openexr" CACHE STRING "" FORCE)
|
|
||||||
set(OPENEXR_HALF_LIBRARY "/opt/lib/openexr/lib/libHalf.a" CACHE STRING "" FORCE)
|
|
||||||
set(OPENEXR_IEX_LIBRARY "/opt/lib/openexr/lib/libIex.a" CACHE STRING "" FORCE)
|
|
||||||
set(OPENEXR_ILMIMF_LIBRARY "/opt/lib/openexr/lib/libIlmImf.a" CACHE STRING "" FORCE)
|
|
||||||
set(OPENEXR_ILMTHREAD_LIBRARY "/opt/lib/openexr/lib/libIlmThread.a" CACHE STRING "" FORCE)
|
|
||||||
set(OPENEXR_IMATH_LIBRARY "/opt/lib/openexr/lib/libImath.a" CACHE STRING "" FORCE)
|
|
||||||
|
|
||||||
# JeMalloc library
|
|
||||||
set(JEMALLOC_LIBRARY "/opt/lib/jemalloc/lib/libjemalloc.a" CACHE STRING "" FORCE)
|
|
||||||
|
|
||||||
# Space navigation
|
|
||||||
set(SPACENAV_ROOT_DIR "/opt/lib/libspnav" CACHE STRING "" FORCE)
|
|
||||||
|
|
||||||
# Force some system libraries to be static
|
|
||||||
set(FFTW3_LIBRARY "/usr/lib${MULTILIB}/libfftw3.a" CACHE STRING "" FORCE)
|
|
||||||
set(JPEG_LIBRARY "/usr/lib${MULTILIB}/libjpeg.a" CACHE STRING "" FORCE)
|
|
||||||
set(PNG_LIBRARY "/usr/lib${MULTILIB}/libpng.a" CACHE STRING "" FORCE)
|
|
||||||
set(TIFF_LIBRARY "/usr/lib${MULTILIB}/libtiff.a" CACHE STRING "" FORCE)
|
|
||||||
set(ZLIB_LIBRARY "/usr/lib${MULTILIB}/libz.a" CACHE STRING "" FORCE)
|
|
||||||
|
|
||||||
# OpenVDB
|
|
||||||
set(OPENVDB_LIBRARY
|
|
||||||
/opt/lib/openvdb/lib/libopenvdb.a
|
|
||||||
/opt/lib/blosc/lib/libblosc.a
|
|
||||||
CACHE BOOL "" FORCE
|
|
||||||
)
|
|
||||||
|
|
||||||
# Additional linking libraries
|
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "-lrt -static-libstdc++" CACHE STRING "" FORCE)
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
# This is applied as an ovveride on top of blender_linux.config
|
|
||||||
# Disables all the areas which are not needed for the player.
|
|
||||||
set(WITH_COMPOSITOR OFF CACHE BOOL "" FORCE)
|
|
||||||
set(WITH_CYCLES OFF CACHE BOOL "" FORCE)
|
|
||||||
set(WITH_FREESTYLE OFF CACHE BOOL "" FORCE)
|
|
||||||
set(WITH_GHOST_XDND OFF CACHE BOOL "" FORCE)
|
|
||||||
set(WITH_OPENCOLLADA OFF CACHE BOOL "" FORCE)
|
|
||||||
set(WITH_OPENSUBDIV OFF CACHE BOOL "" FORCE)
|
|
||||||
set(WITH_LIBMV OFF CACHE BOOL "" FORCE)
|
|
||||||
|
|
||||||
set(WITH_BLENDER OFF CACHE BOOL "" FORCE)
|
|
||||||
set(WITH_PLAYER ON CACHE BOOL "" FORCE)
|
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
BF_BUILDDIR = '../blender-build/linux-glibc211-i686'
|
||||||
|
BF_INSTALLDIR = '../blender-install/linux-glibc211-i686'
|
||||||
|
BF_NUMJOBS = 1
|
||||||
|
|
||||||
|
BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_20', 'sm_21', 'sm_30', 'sm_35', 'sm_50', 'sm_52']
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
BF_BUILDDIR = '../blender-build/linux-glibc211-x86_64'
|
||||||
|
BF_INSTALLDIR = '../blender-install/linux-glibc211-x86_64'
|
||||||
|
BF_NUMJOBS = 1
|
||||||
|
|
||||||
|
BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_20', 'sm_21', 'sm_30', 'sm_35', 'sm_50', 'sm_52']
|
||||||
176
build_files/buildbot/config/user-config-glibc211-i686.py
Normal file
176
build_files/buildbot/config/user-config-glibc211-i686.py
Normal file
@@ -0,0 +1,176 @@
|
|||||||
|
BF_BUILDDIR = '../blender-build/linux-glibc211-i686'
|
||||||
|
BF_INSTALLDIR = '../blender-install/linux-glibc211-i686'
|
||||||
|
BF_NUMJOBS = 4
|
||||||
|
WITHOUT_BF_OVERWRITE_INSTALL = True
|
||||||
|
|
||||||
|
# Python configuration
|
||||||
|
BF_PYTHON_VERSION = '3.4'
|
||||||
|
BF_PYTHON_ABI_FLAGS = 'm'
|
||||||
|
BF_PYTHON = '/opt/lib/python-3.4'
|
||||||
|
WITH_BF_PYTHON_INSTALL_NUMPY = True
|
||||||
|
WITH_BF_PYTHON_INSTALL_REQUESTS = True
|
||||||
|
|
||||||
|
WITH_BF_STATICPYTHON = True
|
||||||
|
|
||||||
|
# OpenCollada configuration
|
||||||
|
WITH_BF_COLLADA = True
|
||||||
|
WITH_BF_STATICOPENCOLLADA=True
|
||||||
|
BF_OPENCOLLADA = '/opt/lib/opencollada'
|
||||||
|
BF_OPENCOLLADA_INC = '${BF_OPENCOLLADA}/include'
|
||||||
|
BF_OPENCOLLADA_LIB_STATIC = '${BF_OPENCOLLADA}/lib/libOpenCOLLADAStreamWriter.a ' + \
|
||||||
|
'${BF_OPENCOLLADA}/lib/libOpenCOLLADASaxFrameworkLoader.a ' + \
|
||||||
|
'${BF_OPENCOLLADA}/lib/libOpenCOLLADAFramework.a ' + \
|
||||||
|
'${BF_OPENCOLLADA}/lib/libOpenCOLLADABaseUtils.a ' + \
|
||||||
|
'${BF_OPENCOLLADA}/lib/libGeneratedSaxParser.a ' + \
|
||||||
|
'${BF_OPENCOLLADA}/lib/libMathMLSolver.a ' + \
|
||||||
|
'${BF_OPENCOLLADA}/lib/libbuffer.a ${BF_OPENCOLLADA}/lib/libftoa.a ' + \
|
||||||
|
'/usr/lib/libxml2.a /usr/lib/libexpat.a /usr/lib/libpcre.a'
|
||||||
|
BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib /home/sources/staticlibs/lib64'
|
||||||
|
BF_PCRE_LIB = ''
|
||||||
|
BF_EXPAT_LIB = ''
|
||||||
|
|
||||||
|
# FFMPEG configuration
|
||||||
|
WITH_BF_FFMPEG = True
|
||||||
|
WITH_BF_STATICFFMPEG = True
|
||||||
|
|
||||||
|
BF_FFMPEG = '/opt/lib/ffmpeg'
|
||||||
|
BF_FFMPEG_LIBPATH = '${BF_FFMPEG}/lib'
|
||||||
|
BF_FFMPEG_LIB_STATIC = '${BF_FFMPEG_LIBPATH}/libavformat.a ${BF_FFMPEG_LIBPATH}/libavdevice.a ' + \
|
||||||
|
'${BF_FFMPEG_LIBPATH}/libavfilter.a ${BF_FFMPEG_LIBPATH}/libavcodec.a ${BF_FFMPEG_LIBPATH}/libavutil.a ' + \
|
||||||
|
'${BF_FFMPEG_LIBPATH}/libswscale.a ${BF_FFMPEG_LIBPATH}/libswresample.a ' + \
|
||||||
|
'/usr/lib/libxvidcore.a /usr/lib/libx264.a /usr/lib/libmp3lame.a /usr/lib/libvpx.a /usr/lib/libvorbis.a ' + \
|
||||||
|
'/usr/lib/libogg.a /usr/lib/libvorbisenc.a /usr/lib/libtheora.a /usr/lib/libschroedinger-1.0.a ' + \
|
||||||
|
'/usr/lib/liborc-0.4.a'
|
||||||
|
|
||||||
|
# Don't depend on system's libstdc++
|
||||||
|
WITH_BF_STATICCXX = True
|
||||||
|
BF_CXX_LIB_STATIC = '/usr/lib/gcc/i486-linux-gnu/4.7.1/libstdc++.a'
|
||||||
|
|
||||||
|
WITH_BF_OPENAL = True
|
||||||
|
WITH_BF_STATICOPENAL = True
|
||||||
|
BF_OPENAL = '/opt/lib/openal'
|
||||||
|
BF_OPENAL_LIB_STATIC = '/opt/lib/openal/lib/libopenal.a /opt/lib/openal/lib/libcommon.a'
|
||||||
|
|
||||||
|
WITH_BF_GETTEXT_STATIC = True
|
||||||
|
|
||||||
|
WITH_BF_FREETYPE_STATIC = False
|
||||||
|
|
||||||
|
WITH_BF_OPENEXR = True
|
||||||
|
BF_OPENEXR = '/opt/lib/openexr'
|
||||||
|
BF_OPENEXR_INC = '${BF_OPENEXR}/include/OpenEXR ${BF_OPENEXR}/include'
|
||||||
|
WITH_BF_STATICOPENEXR = True
|
||||||
|
|
||||||
|
WITH_BF_TIFF = True
|
||||||
|
WITH_BF_STATICTIFF = True
|
||||||
|
BF_TIFF_LIB_STATIC = '${BF_TIFF}/lib/libtiff.a'
|
||||||
|
|
||||||
|
WITH_BF_JPEG = True
|
||||||
|
WITH_BF_STATICJPEG = True
|
||||||
|
BF_JPEG_LIB_STATIC= '${BF_JPEG}/lib/libjpeg.a'
|
||||||
|
|
||||||
|
WITH_BF_PNG = True
|
||||||
|
WITH_BF_STATICPNG = True
|
||||||
|
BF_PNG_LIB_STATIC = '${BF_PNG}/lib/libpng.a'
|
||||||
|
|
||||||
|
WITH_BF_STATICLIBSAMPLERATE = True
|
||||||
|
|
||||||
|
WITH_BF_ZLIB = True
|
||||||
|
WITH_BF_STATICZLIB = True
|
||||||
|
BF_ZLIB_LIB_STATIC = '${BF_ZLIB}/lib/libz.a'
|
||||||
|
|
||||||
|
WITH_BF_SDL = True
|
||||||
|
WITH_BF_SDL_DYNLOAD = True
|
||||||
|
|
||||||
|
WITH_BF_OGG = True
|
||||||
|
|
||||||
|
WITH_BF_OPENMP = True
|
||||||
|
WITH_BF_STATICOPENMP = True
|
||||||
|
BF_OPENMP_LIB_STATIC = '/usr/lib/gcc/i486-linux-gnu/4.7/libgomp.a'
|
||||||
|
|
||||||
|
WITH_BF_GAMEENGINE = True
|
||||||
|
WITH_BF_BULLET = True
|
||||||
|
|
||||||
|
# Blender player (would be enabled in it's own config)
|
||||||
|
WITH_BF_PLAYER = False
|
||||||
|
|
||||||
|
# Use jemalloc memory manager
|
||||||
|
WITH_BF_JEMALLOC = True
|
||||||
|
WITH_BF_STATICJEMALLOC = True
|
||||||
|
BF_JEMALLOC = '/opt/lib/jemalloc'
|
||||||
|
BF_JEMALLOC_LIBPATH = '${BF_JEMALLOC}/lib'
|
||||||
|
|
||||||
|
# Use 3d mouse library
|
||||||
|
WITH_BF_3DMOUSE = True
|
||||||
|
WITH_BF_STATIC3DMOUSE = True
|
||||||
|
BF_3DMOUSE = '/opt/lib/libspnav'
|
||||||
|
BF_3DMOUSE_LIBPATH = '${BF_3DMOUSE}/lib'
|
||||||
|
|
||||||
|
# FFT
|
||||||
|
WITH_BF_FFTW3 = True
|
||||||
|
WITH_BF_STATICFFTW3 = True
|
||||||
|
|
||||||
|
# JACK
|
||||||
|
WITH_BF_JACK = True
|
||||||
|
WITH_BF_JACK_DYNLOAD = True
|
||||||
|
|
||||||
|
# Cycles
|
||||||
|
WITH_BF_CYCLES = True
|
||||||
|
WITH_BF_CYCLES_CUDA_BINARIES = False
|
||||||
|
|
||||||
|
WITH_BF_OIIO = True
|
||||||
|
WITH_BF_STATICOIIO = True
|
||||||
|
BF_OIIO = '/opt/lib/oiio'
|
||||||
|
BF_OIIO_INC = '${BF_OIIO}/include'
|
||||||
|
BF_OIIO_LIB_STATIC = '${BF_OIIO_LIBPATH}/libOpenImageIO.a ${BF_OPENEXR}/lib/libIlmImf.a ${BF_JPEG}/lib/libjpeg.a'
|
||||||
|
BF_OIIO_LIBPATH = '${BF_OIIO}/lib'
|
||||||
|
|
||||||
|
BF_IS_NEW_OSL = False
|
||||||
|
WITH_BF_CYCLES_OSL = True
|
||||||
|
WITH_BF_STATICOSL = BF_IS_NEW_OSL
|
||||||
|
BF_OSL = '/opt/lib/osl'
|
||||||
|
BF_OSL_INC = '${BF_OSL}/include'
|
||||||
|
# note oslexec would passed via program linkflags, which is needed to
|
||||||
|
# make llvm happy with osl_allocate_closure_component
|
||||||
|
BF_OSL_LIB = 'oslcomp oslexec oslquery'
|
||||||
|
BF_OSL_LIB_STATIC = '${BF_OSL}/lib/liboslcomp.a ${BF_OSL}/lib/liboslexec.a ${BF_OSL}/lib/liboslquery.a'
|
||||||
|
BF_OSL_LIBPATH = '${BF_OSL}/lib'
|
||||||
|
BF_OSL_COMPILER = '${BF_OSL}/bin/oslc'
|
||||||
|
|
||||||
|
WITH_BF_LLVM = True
|
||||||
|
WITH_BF_STATICLLVM = False
|
||||||
|
BF_LLVM = '/opt/lib/llvm-3.4.2'
|
||||||
|
BF_LLVM_LIB = 'LLVMBitReader LLVMJIT LLVMipo LLVMVectorize LLVMBitWriter LLVMX86CodeGen LLVMX86Desc LLVMObject LLVMX86Info LLVMX86AsmPrinter ' + \
|
||||||
|
'LLVMX86Utils LLVMSelectionDAG LLVMCodeGen LLVMScalarOpts LLVMInstCombine LLVMTransformUtils LLVMipa LLVMAnalysis LLVMExecutionEngine ' + \
|
||||||
|
'LLVMTarget LLVMMC LLVMCore LLVMSupport'
|
||||||
|
BF_LLVM_LIBPATH = '${BF_LLVM}/lib'
|
||||||
|
|
||||||
|
# Color management
|
||||||
|
WITH_BF_OCIO = True
|
||||||
|
WITH_BF_STATICOCIO = True
|
||||||
|
BF_OCIO = '/opt/lib/ocio'
|
||||||
|
BF_OCIO_INC = '${BF_OCIO}/include'
|
||||||
|
BF_OCIO_LIB_STATIC = '${BF_OCIO_LIBPATH}/libOpenColorIO.a ${BF_OCIO_LIBPATH}/libtinyxml.a ${BF_OCIO_LIBPATH}/libyaml-cpp.a'
|
||||||
|
BF_OCIO_LIBPATH = '${BF_OCIO}/lib'
|
||||||
|
|
||||||
|
WITH_BF_BOOST = True
|
||||||
|
WITH_BF_STATICBOOST = True
|
||||||
|
BF_BOOST = '/opt/lib/boost'
|
||||||
|
BF_BOOST_INC = '${BF_BOOST}/include'
|
||||||
|
BF_BOOST_LIB_STATIC = '${BF_BOOST_LIBPATH}/libboost_filesystem.a ${BF_BOOST_LIBPATH}/libboost_date_time.a ' + \
|
||||||
|
'${BF_BOOST_LIBPATH}/libboost_regex.a ${BF_BOOST_LIBPATH}/libboost_locale.a ${BF_BOOST_LIBPATH}/libboost_system.a \
|
||||||
|
${BF_BOOST_LIBPATH}/libboost_thread.a'
|
||||||
|
if BF_IS_NEW_OSL:
|
||||||
|
BF_BOOST_LIB_STATIC += ' ${BF_BOOST_LIBPATH}/libboost_wave.a'
|
||||||
|
BF_BOOST_LIBPATH = '${BF_BOOST}/lib'
|
||||||
|
|
||||||
|
# Ocean Simulation
|
||||||
|
WITH_BF_OCEANSIM = True
|
||||||
|
|
||||||
|
# Compilation and optimization
|
||||||
|
BF_DEBUG = False
|
||||||
|
REL_CCFLAGS = ['-DNDEBUG', '-O2', '-msse', '-msse2'] # C & C++
|
||||||
|
PLATFORM_LINKFLAGS = ['-lrt']
|
||||||
|
if BF_IS_NEW_OSL:
|
||||||
|
BF_PROGRAM_LINKFLAGS = ['-Wl,--version-script=source/creator/blender.map']
|
||||||
|
else:
|
||||||
|
BF_PROGRAM_LINKFLAGS = ['-Wl,--whole-archive', '-loslexec', '-Wl,--no-whole-archive', '-Wl,--version-script=source/creator/blender.map']
|
||||||
176
build_files/buildbot/config/user-config-glibc211-x86_64.py
Normal file
176
build_files/buildbot/config/user-config-glibc211-x86_64.py
Normal file
@@ -0,0 +1,176 @@
|
|||||||
|
BF_BUILDDIR = '../blender-build/linux-glibc211-x86_64'
|
||||||
|
BF_INSTALLDIR = '../blender-install/linux-glibc211-x86_64'
|
||||||
|
BF_NUMJOBS = 4
|
||||||
|
WITHOUT_BF_OVERWRITE_INSTALL = True
|
||||||
|
|
||||||
|
# Python configuration
|
||||||
|
BF_PYTHON_VERSION = '3.4'
|
||||||
|
BF_PYTHON_ABI_FLAGS = 'm'
|
||||||
|
BF_PYTHON = '/opt/lib/python-3.4'
|
||||||
|
WITH_BF_PYTHON_INSTALL_NUMPY = True
|
||||||
|
WITH_BF_PYTHON_INSTALL_REQUESTS = True
|
||||||
|
|
||||||
|
WITH_BF_STATICPYTHON = True
|
||||||
|
|
||||||
|
# OpenCollada configuration
|
||||||
|
WITH_BF_COLLADA = True
|
||||||
|
WITH_BF_STATICOPENCOLLADA=True
|
||||||
|
BF_OPENCOLLADA = '/opt/lib/opencollada'
|
||||||
|
BF_OPENCOLLADA_INC = '${BF_OPENCOLLADA}/include'
|
||||||
|
BF_OPENCOLLADA_LIB_STATIC = '${BF_OPENCOLLADA}/lib/libOpenCOLLADAStreamWriter.a ' + \
|
||||||
|
'${BF_OPENCOLLADA}/lib/libOpenCOLLADASaxFrameworkLoader.a ' + \
|
||||||
|
'${BF_OPENCOLLADA}/lib/libOpenCOLLADAFramework.a ' + \
|
||||||
|
'${BF_OPENCOLLADA}/lib/libOpenCOLLADABaseUtils.a ' + \
|
||||||
|
'${BF_OPENCOLLADA}/lib/libGeneratedSaxParser.a ' + \
|
||||||
|
'${BF_OPENCOLLADA}/lib/libMathMLSolver.a ' + \
|
||||||
|
'${BF_OPENCOLLADA}/lib/libbuffer.a ${BF_OPENCOLLADA}/lib/libftoa.a ' + \
|
||||||
|
'/usr/lib/libxml2.a /usr/lib/libexpat.a /usr/lib/libpcre.a'
|
||||||
|
BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib /home/sources/staticlibs/lib64'
|
||||||
|
BF_PCRE_LIB = ''
|
||||||
|
BF_EXPAT_LIB = ''
|
||||||
|
|
||||||
|
# FFMPEG configuration
|
||||||
|
WITH_BF_FFMPEG = True
|
||||||
|
WITH_BF_STATICFFMPEG = True
|
||||||
|
|
||||||
|
BF_FFMPEG = '/opt/lib/ffmpeg'
|
||||||
|
BF_FFMPEG_LIBPATH = '${BF_FFMPEG}/lib'
|
||||||
|
BF_FFMPEG_LIB_STATIC = '${BF_FFMPEG_LIBPATH}/libavformat.a ${BF_FFMPEG_LIBPATH}/libavdevice.a ' + \
|
||||||
|
'${BF_FFMPEG_LIBPATH}/libavfilter.a ${BF_FFMPEG_LIBPATH}/libavcodec.a ${BF_FFMPEG_LIBPATH}/libavutil.a ' + \
|
||||||
|
'${BF_FFMPEG_LIBPATH}/libswscale.a ${BF_FFMPEG_LIBPATH}/libswresample.a ' + \
|
||||||
|
'/usr/lib/libxvidcore.a /usr/lib/libx264.a /usr/lib/libmp3lame.a /usr/lib/libvpx.a /usr/lib/libvorbis.a ' + \
|
||||||
|
'/usr/lib/libogg.a /usr/lib/libvorbisenc.a /usr/lib/libtheora.a /usr/lib/libschroedinger-1.0.a ' + \
|
||||||
|
'/usr/lib/liborc-0.4.a'
|
||||||
|
|
||||||
|
# Don't depend on system's libstdc++
|
||||||
|
WITH_BF_STATICCXX = True
|
||||||
|
BF_CXX_LIB_STATIC = '/usr/lib/gcc/x86_64-linux-gnu/4.7.1/libstdc++.a'
|
||||||
|
|
||||||
|
WITH_BF_OPENAL = True
|
||||||
|
WITH_BF_STATICOPENAL = True
|
||||||
|
BF_OPENAL = '/opt/lib/openal'
|
||||||
|
BF_OPENAL_LIB_STATIC = '/opt/lib/openal/lib/libopenal.a /opt/lib/openal/lib/libcommon.a'
|
||||||
|
|
||||||
|
WITH_BF_GETTEXT_STATIC = True
|
||||||
|
|
||||||
|
WITH_BF_FREETYPE_STATIC = False
|
||||||
|
|
||||||
|
WITH_BF_OPENEXR = True
|
||||||
|
BF_OPENEXR = '/opt/lib/openexr'
|
||||||
|
BF_OPENEXR_INC = '${BF_OPENEXR}/include/OpenEXR ${BF_OPENEXR}/include'
|
||||||
|
WITH_BF_STATICOPENEXR = True
|
||||||
|
|
||||||
|
WITH_BF_TIFF = True
|
||||||
|
WITH_BF_STATICTIFF = True
|
||||||
|
BF_TIFF_LIB_STATIC = '${BF_TIFF}/lib/libtiff.a'
|
||||||
|
|
||||||
|
WITH_BF_JPEG = True
|
||||||
|
WITH_BF_STATICJPEG = True
|
||||||
|
BF_JPEG_LIB_STATIC= '${BF_JPEG}/lib/libjpeg.a'
|
||||||
|
|
||||||
|
WITH_BF_PNG = True
|
||||||
|
WITH_BF_STATICPNG = True
|
||||||
|
BF_PNG_LIB_STATIC = '${BF_PNG}/lib/libpng.a'
|
||||||
|
|
||||||
|
WITH_BF_STATICLIBSAMPLERATE = True
|
||||||
|
|
||||||
|
WITH_BF_ZLIB = True
|
||||||
|
WITH_BF_STATICZLIB = True
|
||||||
|
BF_ZLIB_LIB_STATIC = '${BF_ZLIB}/lib/libz.a'
|
||||||
|
|
||||||
|
WITH_BF_SDL = True
|
||||||
|
WITH_BF_SDL_DYNLOAD = True
|
||||||
|
|
||||||
|
WITH_BF_OGG = True
|
||||||
|
|
||||||
|
WITH_BF_OPENMP = True
|
||||||
|
WITH_BF_STATICOPENMP = True
|
||||||
|
BF_OPENMP_LIB_STATIC = '/usr/lib/gcc/x86_64-linux-gnu/4.7/libgomp.a'
|
||||||
|
|
||||||
|
WITH_BF_GAMEENGINE = True
|
||||||
|
WITH_BF_BULLET = True
|
||||||
|
|
||||||
|
# Blender player (would be enabled in it's own config)
|
||||||
|
WITH_BF_PLAYER = False
|
||||||
|
|
||||||
|
# Use jemalloc memory manager
|
||||||
|
WITH_BF_JEMALLOC = True
|
||||||
|
WITH_BF_STATICJEMALLOC = True
|
||||||
|
BF_JEMALLOC = '/opt/lib/jemalloc'
|
||||||
|
BF_JEMALLOC_LIBPATH = '${BF_JEMALLOC}/lib'
|
||||||
|
|
||||||
|
# Use 3d mouse library
|
||||||
|
WITH_BF_3DMOUSE = True
|
||||||
|
WITH_BF_STATIC3DMOUSE = True
|
||||||
|
BF_3DMOUSE = '/opt/lib/libspnav'
|
||||||
|
BF_3DMOUSE_LIBPATH = '${BF_3DMOUSE}/lib'
|
||||||
|
|
||||||
|
# FFT
|
||||||
|
WITH_BF_FFTW3 = True
|
||||||
|
WITH_BF_STATICFFTW3 = True
|
||||||
|
|
||||||
|
# JACK
|
||||||
|
WITH_BF_JACK = True
|
||||||
|
WITH_BF_JACK_DYNLOAD = True
|
||||||
|
|
||||||
|
# Cycles
|
||||||
|
WITH_BF_CYCLES = True
|
||||||
|
WITH_BF_CYCLES_CUDA_BINARIES = False
|
||||||
|
|
||||||
|
WITH_BF_OIIO = True
|
||||||
|
WITH_BF_STATICOIIO = True
|
||||||
|
BF_OIIO = '/opt/lib/oiio'
|
||||||
|
BF_OIIO_INC = '${BF_OIIO}/include'
|
||||||
|
BF_OIIO_LIB_STATIC = '${BF_OIIO_LIBPATH}/libOpenImageIO.a ${BF_OPENEXR}/lib/libIlmImf.a ${BF_JPEG}/lib/libjpeg.a'
|
||||||
|
BF_OIIO_LIBPATH = '${BF_OIIO}/lib'
|
||||||
|
|
||||||
|
BF_IS_NEW_OSL = False
|
||||||
|
WITH_BF_CYCLES_OSL = True
|
||||||
|
WITH_BF_STATICOSL = BF_IS_NEW_OSL
|
||||||
|
BF_OSL = '/opt/lib/osl'
|
||||||
|
BF_OSL_INC = '${BF_OSL}/include'
|
||||||
|
# note oslexec would passed via program linkflags, which is needed to
|
||||||
|
# make llvm happy with osl_allocate_closure_component
|
||||||
|
BF_OSL_LIB = 'oslcomp oslexec oslquery'
|
||||||
|
BF_OSL_LIB_STATIC = '${BF_OSL}/lib/liboslcomp.a ${BF_OSL}/lib/liboslexec.a ${BF_OSL}/lib/liboslquery.a'
|
||||||
|
BF_OSL_LIBPATH = '${BF_OSL}/lib'
|
||||||
|
BF_OSL_COMPILER = '${BF_OSL}/bin/oslc'
|
||||||
|
|
||||||
|
WITH_BF_LLVM = True
|
||||||
|
WITH_BF_STATICLLVM = False
|
||||||
|
BF_LLVM = '/opt/lib/llvm-3.4.2'
|
||||||
|
BF_LLVM_LIB = 'LLVMBitReader LLVMJIT LLVMipo LLVMVectorize LLVMBitWriter LLVMX86CodeGen LLVMX86Desc LLVMObject LLVMX86Info LLVMX86AsmPrinter ' + \
|
||||||
|
'LLVMX86Utils LLVMSelectionDAG LLVMCodeGen LLVMScalarOpts LLVMInstCombine LLVMTransformUtils LLVMipa LLVMAnalysis LLVMExecutionEngine ' + \
|
||||||
|
'LLVMTarget LLVMMC LLVMCore LLVMSupport'
|
||||||
|
BF_LLVM_LIBPATH = '${BF_LLVM}/lib'
|
||||||
|
|
||||||
|
# Color management
|
||||||
|
WITH_BF_OCIO = True
|
||||||
|
WITH_BF_STATICOCIO = True
|
||||||
|
BF_OCIO = '/opt/lib/ocio'
|
||||||
|
BF_OCIO_INC = '${BF_OCIO}/include'
|
||||||
|
BF_OCIO_LIB_STATIC = '${BF_OCIO_LIBPATH}/libOpenColorIO.a ${BF_OCIO_LIBPATH}/libtinyxml.a ${BF_OCIO_LIBPATH}/libyaml-cpp.a'
|
||||||
|
BF_OCIO_LIBPATH = '${BF_OCIO}/lib'
|
||||||
|
|
||||||
|
WITH_BF_BOOST = True
|
||||||
|
WITH_BF_STATICBOOST = True
|
||||||
|
BF_BOOST = '/opt/lib/boost'
|
||||||
|
BF_BOOST_INC = '${BF_BOOST}/include'
|
||||||
|
BF_BOOST_LIB_STATIC = '${BF_BOOST_LIBPATH}/libboost_filesystem.a ${BF_BOOST_LIBPATH}/libboost_date_time.a ' + \
|
||||||
|
'${BF_BOOST_LIBPATH}/libboost_regex.a ${BF_BOOST_LIBPATH}/libboost_locale.a ${BF_BOOST_LIBPATH}/libboost_system.a \
|
||||||
|
${BF_BOOST_LIBPATH}/libboost_thread.a'
|
||||||
|
if BF_IS_NEW_OSL:
|
||||||
|
BF_BOOST_LIB_STATIC += ' ${BF_BOOST_LIBPATH}/libboost_wave.a'
|
||||||
|
BF_BOOST_LIBPATH = '${BF_BOOST}/lib'
|
||||||
|
|
||||||
|
# Ocean Simulation
|
||||||
|
WITH_BF_OCEANSIM = True
|
||||||
|
|
||||||
|
# Compilation and optimization
|
||||||
|
BF_DEBUG = False
|
||||||
|
REL_CCFLAGS = ['-DNDEBUG', '-O2', '-msse', '-msse2'] # C & C++
|
||||||
|
PLATFORM_LINKFLAGS = ['-lrt']
|
||||||
|
if BF_IS_NEW_OSL:
|
||||||
|
BF_PROGRAM_LINKFLAGS = ['-Wl,--version-script=source/creator/blender.map']
|
||||||
|
else:
|
||||||
|
BF_PROGRAM_LINKFLAGS = ['-Wl,--whole-archive', '-loslexec', '-Wl,--no-whole-archive', '-Wl,--version-script=source/creator/blender.map']
|
||||||
7
build_files/buildbot/config/user-config-mac-i386.py
Normal file
7
build_files/buildbot/config/user-config-mac-i386.py
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
|
||||||
|
MACOSX_ARCHITECTURE = 'i386' # valid archs: ppc, i386, ppc64, x86_64
|
||||||
|
|
||||||
|
WITH_BF_CYCLES_CUDA_BINARIES = True
|
||||||
|
|
||||||
|
WITH_BF_CYCLES_OSL = False # OSL never worked on OSX 32bit !
|
||||||
|
|
||||||
5
build_files/buildbot/config/user-config-mac-x86_64.py
Normal file
5
build_files/buildbot/config/user-config-mac-x86_64.py
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
|
||||||
|
MACOSX_ARCHITECTURE = 'x86_64' # valid archs: ppc, i386, ppc64, x86_64
|
||||||
|
|
||||||
|
WITH_BF_CYCLES_CUDA_BINARIES = True
|
||||||
|
|
||||||
126
build_files/buildbot/config/user-config-player-glibc211-i686.py
Normal file
126
build_files/buildbot/config/user-config-player-glibc211-i686.py
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
BF_BUILDDIR = '../blender-build/linux-glibc211-i686'
|
||||||
|
BF_INSTALLDIR = '../blender-install/linux-glibc211-i686'
|
||||||
|
BF_NUMJOBS = 4
|
||||||
|
|
||||||
|
# Python configuration
|
||||||
|
BF_PYTHON_VERSION = '3.4'
|
||||||
|
BF_PYTHON_ABI_FLAGS = 'm'
|
||||||
|
BF_PYTHON = '/opt/lib/python-3.4'
|
||||||
|
WITH_BF_PYTHON_INSTALL_NUMPY = True
|
||||||
|
WITH_BF_PYTHON_INSTALL_REQUESTS = True
|
||||||
|
|
||||||
|
WITH_BF_STATICPYTHON = True
|
||||||
|
|
||||||
|
# OpenCollada configuration
|
||||||
|
WITH_BF_COLLADA = False
|
||||||
|
|
||||||
|
# FFMPEG configuration
|
||||||
|
WITH_BF_FFMPEG = True
|
||||||
|
WITH_BF_STATICFFMPEG = True
|
||||||
|
|
||||||
|
BF_FFMPEG = '/opt/lib/ffmpeg'
|
||||||
|
BF_FFMPEG_LIBPATH = '${BF_FFMPEG}/lib'
|
||||||
|
BF_FFMPEG_LIB_STATIC = '${BF_FFMPEG_LIBPATH}/libavformat.a ${BF_FFMPEG_LIBPATH}/libavdevice.a ' + \
|
||||||
|
'${BF_FFMPEG_LIBPATH}/libavfilter.a ${BF_FFMPEG_LIBPATH}/libavcodec.a ${BF_FFMPEG_LIBPATH}/libavutil.a ' + \
|
||||||
|
'${BF_FFMPEG_LIBPATH}/libswscale.a ${BF_FFMPEG_LIBPATH}/libswresample.a ' + \
|
||||||
|
'/usr/lib/libxvidcore.a /usr/lib/libx264.a /usr/lib/libmp3lame.a /usr/lib/libvpx.a /usr/lib/libvorbis.a ' + \
|
||||||
|
'/usr/lib/libogg.a /usr/lib/libvorbisenc.a /usr/lib/libtheora.a /usr/lib/libschroedinger-1.0.a ' + \
|
||||||
|
'/usr/lib/liborc-0.4.a'
|
||||||
|
|
||||||
|
# Don't depend on system's libstdc++
|
||||||
|
WITH_BF_STATICCXX = True
|
||||||
|
BF_CXX_LIB_STATIC = '/usr/lib/gcc/i486-linux-gnu/4.7.1/libstdc++.a'
|
||||||
|
|
||||||
|
WITH_BF_OPENAL = True
|
||||||
|
WITH_BF_STATICOPENAL = True
|
||||||
|
BF_OPENAL = '/opt/lib/openal'
|
||||||
|
BF_OPENAL_LIB_STATIC = '/opt/lib/openal/lib/libopenal.a /opt/lib/openal/lib/libcommon.a'
|
||||||
|
|
||||||
|
WITH_BF_GETTEXT_STATIC = True
|
||||||
|
|
||||||
|
WITH_BF_FREETYPE_STATIC = False
|
||||||
|
|
||||||
|
WITH_BF_OPENEXR = True
|
||||||
|
BF_OPENEXR = '/opt/lib/openexr'
|
||||||
|
BF_OPENEXR_INC = '${BF_OPENEXR}/include/OpenEXR ${BF_OPENEXR}/include'
|
||||||
|
WITH_BF_STATICOPENEXR = True
|
||||||
|
|
||||||
|
WITH_BF_TIFF = True
|
||||||
|
WITH_BF_STATICTIFF = True
|
||||||
|
BF_TIFF_LIB_STATIC = '${BF_TIFF}/lib/libtiff.a'
|
||||||
|
|
||||||
|
WITH_BF_JPEG = True
|
||||||
|
WITH_BF_STATICJPEG = True
|
||||||
|
BF_JPEG_LIB_STATIC= '${BF_JPEG}/lib/libjpeg.a'
|
||||||
|
|
||||||
|
WITH_BF_STATICLIBSAMPLERATE = True
|
||||||
|
|
||||||
|
WITH_BF_PNG = True
|
||||||
|
WITH_BF_STATICPNG = True
|
||||||
|
BF_PNG_LIB_STATIC = '${BF_PNG}/lib/libpng.a'
|
||||||
|
|
||||||
|
WITH_BF_ZLIB = True
|
||||||
|
WITH_BF_STATICZLIB = True
|
||||||
|
BF_ZLIB_LIB_STATIC = '${BF_ZLIB}/lib/libz.a'
|
||||||
|
|
||||||
|
WITH_BF_SDL = True
|
||||||
|
WITH_BF_SDL_DYNLOAD = True
|
||||||
|
|
||||||
|
WITH_BF_OGG = False
|
||||||
|
|
||||||
|
WITH_BF_OPENMP = True
|
||||||
|
WITH_BF_STATICOPENMP = True
|
||||||
|
BF_OPENMP_LIB_STATIC = '/usr/lib/gcc/i486-linux-gnu/4.7/libgomp.a'
|
||||||
|
|
||||||
|
WITH_BF_GAMEENGINE = True
|
||||||
|
WITH_BF_BULLET = True
|
||||||
|
|
||||||
|
# Do not build blender when building blenderplayer
|
||||||
|
WITH_BF_NOBLENDER = True
|
||||||
|
WITH_BF_PLAYER = True
|
||||||
|
|
||||||
|
# Use jemalloc memory manager
|
||||||
|
WITH_BF_JEMALLOC = True
|
||||||
|
WITH_BF_STATICJEMALLOC = True
|
||||||
|
BF_JEMALLOC = '/opt/lib/jemalloc'
|
||||||
|
BF_JEMALLOC_LIBPATH = '${BF_JEMALLOC}/lib'
|
||||||
|
|
||||||
|
# Use 3d mouse library
|
||||||
|
WITH_BF_3DMOUSE = True
|
||||||
|
WITH_BF_STATIC3DMOUSE = True
|
||||||
|
BF_3DMOUSE = '/opt/lib/libspnav'
|
||||||
|
BF_3DMOUSE_LIBPATH = '${BF_3DMOUSE}/lib'
|
||||||
|
|
||||||
|
# Color management
|
||||||
|
WITH_BF_OCIO = True
|
||||||
|
WITH_BF_STATICOCIO = True
|
||||||
|
BF_OCIO = '/opt/lib/ocio'
|
||||||
|
BF_OCIO_INC = '${BF_OCIO}/include'
|
||||||
|
BF_OCIO_LIB_STATIC = '${BF_OCIO_LIBPATH}/libOpenColorIO.a ${BF_OCIO_LIBPATH}/libtinyxml.a ${BF_OCIO_LIBPATH}/libyaml-cpp.a'
|
||||||
|
BF_OCIO_LIBPATH = '${BF_OCIO}/lib'
|
||||||
|
|
||||||
|
WITH_BF_BOOST = True
|
||||||
|
WITH_BF_STATICBOOST = True
|
||||||
|
BF_BOOST = '/opt/lib/boost'
|
||||||
|
BF_BOOST_INC = '${BF_BOOST}/include'
|
||||||
|
BF_BOOST_LIB_STATIC = '${BF_BOOST_LIBPATH}/libboost_filesystem.a ${BF_BOOST_LIBPATH}/libboost_date_time.a ' + \
|
||||||
|
'${BF_BOOST_LIBPATH}/libboost_regex.a ${BF_BOOST_LIBPATH}/libboost_locale.a ${BF_BOOST_LIBPATH}/libboost_system.a \
|
||||||
|
${BF_BOOST_LIBPATH}/libboost_thread.a'
|
||||||
|
BF_BOOST_LIBPATH = '${BF_BOOST}/lib'
|
||||||
|
|
||||||
|
# JACK
|
||||||
|
WITH_BF_JACK = True
|
||||||
|
WITH_BF_JACK_DYNLOAD = True
|
||||||
|
|
||||||
|
# Motion Tracking
|
||||||
|
WITH_BF_LIBMV = False
|
||||||
|
|
||||||
|
# Ocean Simulation
|
||||||
|
WITH_BF_FFTW3 = True
|
||||||
|
WITH_BF_STATICFFTW3 = True
|
||||||
|
WITH_BF_OCEANSIM = True
|
||||||
|
|
||||||
|
# Compilation and optimization
|
||||||
|
BF_DEBUG = False
|
||||||
|
REL_CCFLAGS = ['-DNDEBUG', '-O2', '-msse', '-msse2'] # C & C++
|
||||||
|
PLATFORM_LINKFLAGS = ['-lrt']
|
||||||
@@ -0,0 +1,126 @@
|
|||||||
|
BF_BUILDDIR = '../blender-build/linux-glibc211-x86_64'
|
||||||
|
BF_INSTALLDIR = '../blender-install/linux-glibc211-x86_64'
|
||||||
|
BF_NUMJOBS = 4
|
||||||
|
|
||||||
|
# Python configuration
|
||||||
|
BF_PYTHON_VERSION = '3.4'
|
||||||
|
BF_PYTHON_ABI_FLAGS = 'm'
|
||||||
|
BF_PYTHON = '/opt/lib/python-3.4'
|
||||||
|
WITH_BF_PYTHON_INSTALL_NUMPY = True
|
||||||
|
WITH_BF_PYTHON_INSTALL_REQUESTS = True
|
||||||
|
|
||||||
|
WITH_BF_STATICPYTHON = True
|
||||||
|
|
||||||
|
# OpenCollada configuration
|
||||||
|
WITH_BF_COLLADA = False
|
||||||
|
|
||||||
|
# FFMPEG configuration
|
||||||
|
WITH_BF_FFMPEG = True
|
||||||
|
WITH_BF_STATICFFMPEG = True
|
||||||
|
|
||||||
|
BF_FFMPEG = '/opt/lib/ffmpeg'
|
||||||
|
BF_FFMPEG_LIBPATH = '${BF_FFMPEG}/lib'
|
||||||
|
BF_FFMPEG_LIB_STATIC = '${BF_FFMPEG_LIBPATH}/libavformat.a ${BF_FFMPEG_LIBPATH}/libavdevice.a ' + \
|
||||||
|
'${BF_FFMPEG_LIBPATH}/libavfilter.a ${BF_FFMPEG_LIBPATH}/libavcodec.a ${BF_FFMPEG_LIBPATH}/libavutil.a ' + \
|
||||||
|
'${BF_FFMPEG_LIBPATH}/libswscale.a ${BF_FFMPEG_LIBPATH}/libswresample.a ' + \
|
||||||
|
'/usr/lib/libxvidcore.a /usr/lib/libx264.a /usr/lib/libmp3lame.a /usr/lib/libvpx.a /usr/lib/libvorbis.a ' + \
|
||||||
|
'/usr/lib/libogg.a /usr/lib/libvorbisenc.a /usr/lib/libtheora.a /usr/lib/libschroedinger-1.0.a ' + \
|
||||||
|
'/usr/lib/liborc-0.4.a'
|
||||||
|
|
||||||
|
# Don't depend on system's libstdc++
|
||||||
|
WITH_BF_STATICCXX = True
|
||||||
|
BF_CXX_LIB_STATIC = '/usr/lib/gcc/x86_64-linux-gnu/4.7.1/libstdc++.a'
|
||||||
|
|
||||||
|
WITH_BF_OPENAL = True
|
||||||
|
WITH_BF_STATICOPENAL = True
|
||||||
|
BF_OPENAL = '/opt/lib/openal'
|
||||||
|
BF_OPENAL_LIB_STATIC = '/opt/lib/openal/lib/libopenal.a /opt/lib/openal/lib/libcommon.a'
|
||||||
|
|
||||||
|
WITH_BF_GETTEXT_STATIC = True
|
||||||
|
|
||||||
|
WITH_BF_FREETYPE_STATIC = False
|
||||||
|
|
||||||
|
WITH_BF_OPENEXR = True
|
||||||
|
BF_OPENEXR = '/opt/lib/openexr'
|
||||||
|
BF_OPENEXR_INC = '${BF_OPENEXR}/include/OpenEXR ${BF_OPENEXR}/include'
|
||||||
|
WITH_BF_STATICOPENEXR = True
|
||||||
|
|
||||||
|
WITH_BF_TIFF = True
|
||||||
|
WITH_BF_STATICTIFF = True
|
||||||
|
BF_TIFF_LIB_STATIC = '${BF_TIFF}/lib/libtiff.a'
|
||||||
|
|
||||||
|
WITH_BF_JPEG = True
|
||||||
|
WITH_BF_STATICJPEG = True
|
||||||
|
BF_JPEG_LIB_STATIC= '${BF_JPEG}/lib/libjpeg.a'
|
||||||
|
|
||||||
|
WITH_BF_STATICLIBSAMPLERATE = True
|
||||||
|
|
||||||
|
WITH_BF_PNG = True
|
||||||
|
WITH_BF_STATICPNG = True
|
||||||
|
BF_PNG_LIB_STATIC = '${BF_PNG}/lib/libpng.a'
|
||||||
|
|
||||||
|
WITH_BF_ZLIB = True
|
||||||
|
WITH_BF_STATICZLIB = True
|
||||||
|
BF_ZLIB_LIB_STATIC = '${BF_ZLIB}/lib/libz.a'
|
||||||
|
|
||||||
|
WITH_BF_SDL = True
|
||||||
|
WITH_BF_SDL_DYNLOAD = True
|
||||||
|
|
||||||
|
WITH_BF_OGG = False
|
||||||
|
|
||||||
|
WITH_BF_OPENMP = True
|
||||||
|
WITH_BF_STATICOPENMP = True
|
||||||
|
BF_OPENMP_LIB_STATIC = '/usr/lib/gcc/x86_64-linux-gnu/4.7/libgomp.a'
|
||||||
|
|
||||||
|
WITH_BF_GAMEENGINE = True
|
||||||
|
WITH_BF_BULLET = True
|
||||||
|
|
||||||
|
# Do not build blender when building blenderplayer
|
||||||
|
WITH_BF_NOBLENDER = True
|
||||||
|
WITH_BF_PLAYER = True
|
||||||
|
|
||||||
|
# Use jemalloc memory manager
|
||||||
|
WITH_BF_JEMALLOC = True
|
||||||
|
WITH_BF_STATICJEMALLOC = True
|
||||||
|
BF_JEMALLOC = '/opt/lib/jemalloc'
|
||||||
|
BF_JEMALLOC_LIBPATH = '${BF_JEMALLOC}/lib'
|
||||||
|
|
||||||
|
# Use 3d mouse library
|
||||||
|
WITH_BF_3DMOUSE = True
|
||||||
|
WITH_BF_STATIC3DMOUSE = True
|
||||||
|
BF_3DMOUSE = '/opt/lib/libspnav'
|
||||||
|
BF_3DMOUSE_LIBPATH = '${BF_3DMOUSE}/lib'
|
||||||
|
|
||||||
|
# Color management
|
||||||
|
WITH_BF_OCIO = True
|
||||||
|
WITH_BF_STATICOCIO = True
|
||||||
|
BF_OCIO = '/opt/lib/ocio'
|
||||||
|
BF_OCIO_INC = '${BF_OCIO}/include'
|
||||||
|
BF_OCIO_LIB_STATIC = '${BF_OCIO_LIBPATH}/libOpenColorIO.a ${BF_OCIO_LIBPATH}/libtinyxml.a ${BF_OCIO_LIBPATH}/libyaml-cpp.a'
|
||||||
|
BF_OCIO_LIBPATH = '${BF_OCIO}/lib'
|
||||||
|
|
||||||
|
WITH_BF_BOOST = True
|
||||||
|
WITH_BF_STATICBOOST = True
|
||||||
|
BF_BOOST = '/opt/lib/boost'
|
||||||
|
BF_BOOST_INC = '${BF_BOOST}/include'
|
||||||
|
BF_BOOST_LIB_STATIC = '${BF_BOOST_LIBPATH}/libboost_filesystem.a ${BF_BOOST_LIBPATH}/libboost_date_time.a ' + \
|
||||||
|
'${BF_BOOST_LIBPATH}/libboost_regex.a ${BF_BOOST_LIBPATH}/libboost_locale.a ${BF_BOOST_LIBPATH}/libboost_system.a \
|
||||||
|
${BF_BOOST_LIBPATH}/libboost_thread.a'
|
||||||
|
BF_BOOST_LIBPATH = '${BF_BOOST}/lib'
|
||||||
|
|
||||||
|
# JACK
|
||||||
|
WITH_BF_JACK = True
|
||||||
|
WITH_BF_JACK_DYNLOAD = True
|
||||||
|
|
||||||
|
# Motion Tracking
|
||||||
|
WITH_BF_LIBMV = False
|
||||||
|
|
||||||
|
# Ocean Simulation
|
||||||
|
WITH_BF_FFTW3 = True
|
||||||
|
WITH_BF_STATICFFTW3 = True
|
||||||
|
WITH_BF_OCEANSIM = True
|
||||||
|
|
||||||
|
# Compilation and optimization
|
||||||
|
BF_DEBUG = False
|
||||||
|
REL_CCFLAGS = ['-DNDEBUG', '-O2', '-msse', '-msse2'] # C & C++
|
||||||
|
PLATFORM_LINKFLAGS = ['-lrt']
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
# <pep8 compliant>
|
# <pep8 compliant>
|
||||||
|
|
||||||
# List of the branches being built automatically overnight
|
# List of the branches being built automatically overnight
|
||||||
NIGHT_SCHEDULE_BRANCHES = [None]
|
NIGHT_SCHEDULE_BRANCHES = [None, "gooseberry"]
|
||||||
|
|
||||||
# List of the branches available for force build
|
# List of the branches available for force build
|
||||||
FORCE_SCHEDULE_BRANCHES = ["master", "gooseberry", "experimental-build"]
|
FORCE_SCHEDULE_BRANCHES = ["master", "gooseberry", "experimental-build"]
|
||||||
@@ -87,13 +87,14 @@ c['change_source'] = GitPoller(
|
|||||||
|
|
||||||
# CODEBASES
|
# CODEBASES
|
||||||
#
|
#
|
||||||
# Allow to control separately things like branches for each repo and submodules.
|
# Allow to controll separately things like branches for each repo and submodules.
|
||||||
|
|
||||||
all_repositories = {
|
all_repositories = {
|
||||||
r'git://git.blender.org/blender.git': 'blender',
|
r'git://git.blender.org/blender.git': 'blender',
|
||||||
r'git://git.blender.org/blender-translations.git': 'blender-translations',
|
r'git://git.blender.org/blender-translations.git': 'blender-translations',
|
||||||
r'git://git.blender.org/blender-addons.git': 'blender-addons',
|
r'git://git.blender.org/blender-addons.git': 'blender-addons',
|
||||||
r'git://git.blender.org/blender-addons-contrib.git': 'blender-addons-contrib',
|
r'git://git.blender.org/blender-addons-contrib.git': 'blender-addons-contrib',
|
||||||
|
r'git://git.blender.org/scons.git': 'scons',
|
||||||
r'https://svn.blender.org/svnroot/bf-blender/': 'lib svn',
|
r'https://svn.blender.org/svnroot/bf-blender/': 'lib svn',
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -128,6 +129,7 @@ def schedule_force_build(name):
|
|||||||
forcesched.CodebaseParameter(hide=True, codebase="blender-translations"),
|
forcesched.CodebaseParameter(hide=True, codebase="blender-translations"),
|
||||||
forcesched.CodebaseParameter(hide=True, codebase="blender-addons"),
|
forcesched.CodebaseParameter(hide=True, codebase="blender-addons"),
|
||||||
forcesched.CodebaseParameter(hide=True, codebase="blender-addons-contrib"),
|
forcesched.CodebaseParameter(hide=True, codebase="blender-addons-contrib"),
|
||||||
|
forcesched.CodebaseParameter(hide=True, codebase="scons"),
|
||||||
forcesched.CodebaseParameter(hide=True, codebase="lib svn")],
|
forcesched.CodebaseParameter(hide=True, codebase="lib svn")],
|
||||||
properties=[]))
|
properties=[]))
|
||||||
|
|
||||||
@@ -143,6 +145,7 @@ def schedule_build(name, hour, minute=0):
|
|||||||
"blender-translations": {"repository": "", "branch": "master"},
|
"blender-translations": {"repository": "", "branch": "master"},
|
||||||
"blender-addons": {"repository": "", "branch": "master"},
|
"blender-addons": {"repository": "", "branch": "master"},
|
||||||
"blender-addons-contrib": {"repository": "", "branch": "master"},
|
"blender-addons-contrib": {"repository": "", "branch": "master"},
|
||||||
|
"scons": {"repository": "", "branch": "master"},
|
||||||
"lib svn": {"repository": "", "branch": "trunk"}},
|
"lib svn": {"repository": "", "branch": "trunk"}},
|
||||||
branch=current_branch,
|
branch=current_branch,
|
||||||
builderNames=[name],
|
builderNames=[name],
|
||||||
@@ -264,7 +267,8 @@ def generic_builder(id, libdir='', branch='', rsync=False):
|
|||||||
|
|
||||||
for submodule in ('blender-translations',
|
for submodule in ('blender-translations',
|
||||||
'blender-addons',
|
'blender-addons',
|
||||||
'blender-addons-contrib'):
|
'blender-addons-contrib',
|
||||||
|
'scons'):
|
||||||
f.addStep(git_submodule_step(submodule))
|
f.addStep(git_submodule_step(submodule))
|
||||||
|
|
||||||
f.addStep(git_step(branch))
|
f.addStep(git_step(branch))
|
||||||
@@ -278,6 +282,11 @@ def generic_builder(id, libdir='', branch='', rsync=False):
|
|||||||
descriptionDone='packaged'))
|
descriptionDone='packaged'))
|
||||||
if rsync:
|
if rsync:
|
||||||
f.addStep(rsync_step(id, branch, rsync_script))
|
f.addStep(rsync_step(id, branch, rsync_script))
|
||||||
|
elif id.find('cmake') != -1:
|
||||||
|
f.addStep(FileUpload(name='upload',
|
||||||
|
slavesrc='buildbot_upload.zip',
|
||||||
|
masterdest=filename,
|
||||||
|
maxsize=150 * 1024 * 1024))
|
||||||
else:
|
else:
|
||||||
f.addStep(FileUpload(name='upload',
|
f.addStep(FileUpload(name='upload',
|
||||||
slavesrc='buildbot_upload.zip',
|
slavesrc='buildbot_upload.zip',
|
||||||
@@ -285,21 +294,29 @@ def generic_builder(id, libdir='', branch='', rsync=False):
|
|||||||
maxsize=150 * 1024 * 1024,
|
maxsize=150 * 1024 * 1024,
|
||||||
workdir='install'))
|
workdir='install'))
|
||||||
f.addStep(MasterShellCommand(name='unpack',
|
f.addStep(MasterShellCommand(name='unpack',
|
||||||
command=['python2.7', unpack_script, filename],
|
command=['python', unpack_script, filename],
|
||||||
description='unpacking',
|
description='unpacking',
|
||||||
descriptionDone='unpacked'))
|
descriptionDone='unpacked'))
|
||||||
return f
|
return f
|
||||||
|
|
||||||
# Builders
|
# builders
|
||||||
|
|
||||||
add_builder(c, 'mac_x86_64_10_6_cmake', 'darwin-9.x.universal', generic_builder, hour=5)
|
add_builder(c, 'mac_x86_64_10_6_scons', 'darwin-9.x.universal', generic_builder, hour=5)
|
||||||
add_builder(c, 'linux_glibc211_i686_cmake', '', generic_builder, hour=1)
|
add_builder(c, 'mac_i386_10_6_scons', 'darwin-9.x.universal', generic_builder, hour=11)
|
||||||
add_builder(c, 'linux_glibc211_x86_64_cmake', '', generic_builder, hour=2)
|
add_builder(c, 'linux_glibc211_i386_scons', '', generic_builder, hour=1)
|
||||||
add_builder(c, 'linux_glibc219_i686_cmake', '', generic_builder, hour=3)
|
add_builder(c, 'linux_glibc211_x86_64_scons', '', generic_builder, hour=2)
|
||||||
add_builder(c, 'linux_glibc219_x86_64_cmake', '', generic_builder, hour=4)
|
add_builder(c, 'win32_scons_vc2013', 'windows_vc12', generic_builder, hour=1)
|
||||||
|
add_builder(c, 'win64_scons_vc2013', 'win64_vc12', generic_builder, hour=2)
|
||||||
add_builder(c, 'win32_cmake_vc2013', 'windows_vc12', generic_builder, hour=3)
|
add_builder(c, 'win32_cmake_vc2013', 'windows_vc12', generic_builder, hour=3)
|
||||||
add_builder(c, 'win64_cmake_vc2013', 'win64_vc12', generic_builder, hour=4)
|
add_builder(c, 'win64_cmake_vc2013', 'win64_vc12', generic_builder, hour=4)
|
||||||
add_builder(c, 'win64_cmake_vc2015', 'win64_vc14', generic_builder, hour=5)
|
#add_builder(c, 'mingw_win32_scons', 'mingw32', generic_builder, hour=4)
|
||||||
|
add_builder(c, 'mingw_win64_scons', 'mingw64', generic_builder, hour=3)
|
||||||
|
#add_builder(c, 'freebsd_i386_cmake', '', generic_builder, hour=1)
|
||||||
|
#add_builder(c, 'freebsd_x86_64_cmake', '', generic_builder, hour=2)
|
||||||
|
|
||||||
|
# Multiview branch
|
||||||
|
add_builder(c, 'multiview_win64_scons', 'win64', generic_builder, 'multiview', hour=4)
|
||||||
|
add_builder(c, 'multiview_win32_scons', 'windows', generic_builder, 'multiview', hour=5)
|
||||||
|
|
||||||
# STATUS TARGETS
|
# STATUS TARGETS
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -124,12 +124,10 @@ else:
|
|||||||
directory = 'public_html/download'
|
directory = 'public_html/download'
|
||||||
|
|
||||||
try:
|
try:
|
||||||
filename = os.path.join(directory, packagename)
|
|
||||||
zf = z.open(package)
|
zf = z.open(package)
|
||||||
f = file(filename, "wb")
|
f = file(os.path.join(directory, packagename), "wb")
|
||||||
|
|
||||||
shutil.copyfileobj(zf, f)
|
shutil.copyfileobj(zf, f)
|
||||||
os.chmod(filename, 0644)
|
|
||||||
|
|
||||||
zf.close()
|
zf.close()
|
||||||
z.close()
|
z.close()
|
||||||
|
|||||||
@@ -31,181 +31,160 @@ if len(sys.argv) < 2:
|
|||||||
builder = sys.argv[1]
|
builder = sys.argv[1]
|
||||||
|
|
||||||
# we run from build/ directory
|
# we run from build/ directory
|
||||||
blender_dir = os.path.join('..', 'blender.git')
|
blender_dir = '../blender.git'
|
||||||
|
|
||||||
|
|
||||||
def parse_header_file(filename, define):
|
|
||||||
import re
|
|
||||||
regex = re.compile("^#\s*define\s+%s\s+(.*)" % define)
|
|
||||||
with open(filename, "r") as file:
|
|
||||||
for l in file:
|
|
||||||
match = regex.match(l)
|
|
||||||
if match:
|
|
||||||
return match.group(1)
|
|
||||||
return None
|
|
||||||
|
|
||||||
if 'cmake' in builder:
|
if 'cmake' in builder:
|
||||||
# cmake
|
# cmake
|
||||||
|
|
||||||
# Some fine-tuning configuration
|
# set build options
|
||||||
blender_dir = os.path.join('..', blender_dir)
|
cmake_options = ['-DCMAKE_BUILD_TYPE:STRING=Release']
|
||||||
build_dir = os.path.abspath(os.path.join('..', 'build', builder))
|
|
||||||
install_dir = os.path.abspath(os.path.join('..', 'install', builder))
|
|
||||||
targets = ['blender']
|
|
||||||
|
|
||||||
chroot_name = None # If not None command will be delegated to that chroot
|
if builder.endswith('mac_x86_64_cmake'):
|
||||||
cuda_chroot_name = None # If not None cuda compilationcommand will be delegated to that chroot
|
cmake_options.append('-DCMAKE_OSX_ARCHITECTURES:STRING=x86_64')
|
||||||
build_cubins = True # Whether to build Cycles CUDA kernels
|
elif builder.endswith('mac_i386_cmake'):
|
||||||
bits = 64
|
cmake_options.append('-DCMAKE_OSX_ARCHITECTURES:STRING=i386')
|
||||||
|
elif builder.endswith('mac_ppc_cmake'):
|
||||||
|
cmake_options.append('-DCMAKE_OSX_ARCHITECTURES:STRING=ppc')
|
||||||
|
|
||||||
# Config file to be used (relative to blender's sources root)
|
if 'win64' in builder:
|
||||||
cmake_config_file = "build_files/cmake/config/blender_full.cmake"
|
cmake_options.append(['-G', '"Visual Studio 12 2013 Win64"'])
|
||||||
cmake_player_config_file = None
|
elif 'win32' in builder:
|
||||||
cmake_cuda_config_file = None
|
cmake_options.append(['-G', '"Visual Studio 12 2013"'])
|
||||||
|
|
||||||
# Set build options.
|
cmake_options.append("-C../blender.git/build_files/cmake/config/blender_full.cmake")
|
||||||
cmake_options = []
|
cmake_options.append("-DWITH_CYCLES_CUDA_BINARIES=1")
|
||||||
cmake_extra_options = ['-DCMAKE_BUILD_TYPE:STRING=Release']
|
# configure and make
|
||||||
cuda_cmake_options = []
|
retcode = subprocess.call(['cmake', blender_dir] + cmake_options)
|
||||||
|
if retcode != 0:
|
||||||
if builder.startswith('mac'):
|
sys.exit(retcode)
|
||||||
# Set up OSX architecture
|
if 'win' in builder:
|
||||||
if builder.endswith('x86_64_10_6_cmake'):
|
retcode = subprocess.call(['msbuild', 'INSTALL.vcxproj', '/p:Configuration=Release'])
|
||||||
cmake_extra_options.append('-DCMAKE_OSX_ARCHITECTURES:STRING=x86_64')
|
|
||||||
cmake_extra_options.append('-DCUDA_NVCC_EXECUTABLE=/usr/local/cuda-hack/bin/nvcc')
|
|
||||||
cmake_extra_options.append('-DCUDA_NVCC8_EXECUTABLE=/usr/local/cuda8-hack/bin/nvcc')
|
|
||||||
|
|
||||||
elif builder.startswith('win'):
|
|
||||||
if builder.endswith('_vc2015'):
|
|
||||||
if builder.startswith('win64'):
|
|
||||||
cmake_options.extend(['-G', 'Visual Studio 14 2015 Win64'])
|
|
||||||
elif builder.startswith('win32'):
|
|
||||||
bits = 32
|
|
||||||
cmake_options.extend(['-G', 'Visual Studio 14 2015'])
|
|
||||||
cmake_extra_options.append('-DCUDA_NVCC_FLAGS=--cl-version;2013;' +
|
|
||||||
'--compiler-bindir;C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\bin')
|
|
||||||
else:
|
|
||||||
if builder.startswith('win64'):
|
|
||||||
cmake_options.extend(['-G', 'Visual Studio 12 2013 Win64'])
|
|
||||||
elif builder.startswith('win32'):
|
|
||||||
bits = 32
|
|
||||||
cmake_options.extend(['-G', 'Visual Studio 12 2013'])
|
|
||||||
cmake_extra_options.append('-DCUDA_NVCC_EXECUTABLE:FILEPATH=C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v7.5/bin/nvcc.exe')
|
|
||||||
cmake_extra_options.append('-DCUDA_NVCC8_EXECUTABLE:FILEPATH=C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v8.0/bin/nvcc.exe')
|
|
||||||
|
|
||||||
elif builder.startswith('linux'):
|
|
||||||
tokens = builder.split("_")
|
|
||||||
glibc = tokens[1]
|
|
||||||
if glibc == 'glibc219':
|
|
||||||
deb_name = "jessie"
|
|
||||||
elif glibc == 'glibc211':
|
|
||||||
deb_name = "squeeze"
|
|
||||||
cmake_config_file = "build_files/buildbot/config/blender_linux.cmake"
|
|
||||||
cmake_player_config_file = "build_files/buildbot/config/blender_linux_player.cmake"
|
|
||||||
if builder.endswith('x86_64_cmake'):
|
|
||||||
chroot_name = 'buildbot_' + deb_name + '_x86_64'
|
|
||||||
targets = ['player', 'blender']
|
|
||||||
elif builder.endswith('i686_cmake'):
|
|
||||||
bits = 32
|
|
||||||
chroot_name = 'buildbot_' + deb_name + '_i686'
|
|
||||||
cuda_chroot_name = 'buildbot_' + deb_name + '_x86_64'
|
|
||||||
targets = ['player', 'blender', 'cuda']
|
|
||||||
|
|
||||||
cmake_extra_options.append('-DCUDA_NVCC_EXECUTABLE=/usr/local/cuda-7.5/bin/nvcc')
|
|
||||||
cmake_extra_options.append('-DCUDA_NVCC8_EXECUTABLE=/usr/local/cuda-8.0/bin/nvcc')
|
|
||||||
|
|
||||||
cmake_options.append("-C" + os.path.join(blender_dir, cmake_config_file))
|
|
||||||
|
|
||||||
# Prepare CMake options needed to configure cuda binaries compilation.
|
|
||||||
cuda_cmake_options.append("-DWITH_CYCLES_CUDA_BINARIES=%s" % ('ON' if build_cubins else 'OFF'))
|
|
||||||
cuda_cmake_options.append("-DCYCLES_CUDA_BINARIES_ARCH=sm_20;sm_21;sm_30;sm_35;sm_37;sm_50;sm_52;sm_60;sm_61")
|
|
||||||
if build_cubins or 'cuda' in targets:
|
|
||||||
if bits == 32:
|
|
||||||
cuda_cmake_options.append("-DCUDA_64_BIT_DEVICE_CODE=OFF")
|
|
||||||
else:
|
|
||||||
cuda_cmake_options.append("-DCUDA_64_BIT_DEVICE_CODE=ON")
|
|
||||||
|
|
||||||
# Only modify common cmake options if cuda doesn't require separate target.
|
|
||||||
if 'cuda' not in targets:
|
|
||||||
cmake_options += cuda_cmake_options
|
|
||||||
|
|
||||||
cmake_options.append("-DCMAKE_INSTALL_PREFIX=%s" % (install_dir))
|
|
||||||
|
|
||||||
cmake_options += cmake_extra_options
|
|
||||||
|
|
||||||
# Prepare chroot command prefix if needed
|
|
||||||
if chroot_name:
|
|
||||||
chroot_prefix = ['schroot', '-c', chroot_name, '--']
|
|
||||||
else:
|
else:
|
||||||
chroot_prefix = []
|
retcode = subprocess.call(['make', '-s', '-j4', 'install'])
|
||||||
if cuda_chroot_name:
|
sys.exit(retcode)
|
||||||
cuda_chroot_prefix = ['schroot', '-c', cuda_chroot_name, '--']
|
else:
|
||||||
else:
|
python_bin = 'python'
|
||||||
cuda_chroot_prefix = chroot_prefix[:]
|
if builder.find('linux') != -1:
|
||||||
|
python_bin = '/opt/lib/python-2.7/bin/python2.7'
|
||||||
|
|
||||||
# Make sure no garbage remained from the previous run
|
# scons
|
||||||
|
os.chdir(blender_dir)
|
||||||
|
scons_cmd = [python_bin, 'scons/scons.py']
|
||||||
|
scons_options = ['BF_FANCY=False']
|
||||||
|
|
||||||
|
# We're using the same rules as release builder, so tweak
|
||||||
|
# build and install dirs
|
||||||
|
build_dir = os.path.join('..', 'build', builder)
|
||||||
|
install_dir = os.path.join('..', 'install', builder)
|
||||||
|
|
||||||
|
# Clean install directory so we'll be sure there's no
|
||||||
|
# residual libs and files remained from the previous install.
|
||||||
if os.path.isdir(install_dir):
|
if os.path.isdir(install_dir):
|
||||||
shutil.rmtree(install_dir)
|
shutil.rmtree(install_dir)
|
||||||
|
|
||||||
for target in targets:
|
buildbot_dir = os.path.dirname(os.path.realpath(__file__))
|
||||||
print("Building target %s" % (target))
|
config_dir = os.path.join(buildbot_dir, 'config')
|
||||||
# Construct build directory name based on the target
|
|
||||||
target_build_dir = build_dir
|
|
||||||
target_chroot_prefix = chroot_prefix[:]
|
|
||||||
if target != 'blender':
|
|
||||||
target_build_dir += '_' + target
|
|
||||||
target_name = 'install'
|
|
||||||
# Make sure build directory exists and enter it
|
|
||||||
if not os.path.isdir(target_build_dir):
|
|
||||||
os.mkdir(target_build_dir)
|
|
||||||
os.chdir(target_build_dir)
|
|
||||||
# Tweaking CMake options to respect the target
|
|
||||||
target_cmake_options = cmake_options[:]
|
|
||||||
if target == 'player':
|
|
||||||
target_cmake_options.append("-C" + os.path.join(blender_dir, cmake_player_config_file))
|
|
||||||
elif target == 'cuda':
|
|
||||||
target_cmake_options += cuda_cmake_options
|
|
||||||
target_chroot_prefix = cuda_chroot_prefix[:]
|
|
||||||
target_name = 'cycles_kernel_cuda'
|
|
||||||
# If cuda binaries are compiled as a separate target, make sure
|
|
||||||
# other targets don't compile cuda binaries.
|
|
||||||
if 'cuda' in targets and target != 'cuda':
|
|
||||||
target_cmake_options.append("-DWITH_CYCLES_CUDA_BINARIES=OFF")
|
|
||||||
# Configure the build
|
|
||||||
print("CMake options:")
|
|
||||||
print(target_cmake_options)
|
|
||||||
if os.path.exists('CMakeCache.txt'):
|
|
||||||
print("Removing CMake cache")
|
|
||||||
os.remove('CMakeCache.txt')
|
|
||||||
retcode = subprocess.call(target_chroot_prefix + ['cmake', blender_dir] + target_cmake_options)
|
|
||||||
if retcode != 0:
|
|
||||||
print('Condifuration FAILED!')
|
|
||||||
sys.exit(retcode)
|
|
||||||
|
|
||||||
if 'win32' in builder:
|
if builder.find('linux') != -1:
|
||||||
command = ['msbuild', 'INSTALL.vcxproj', '/Property:PlatformToolset=v120_xp', '/p:Configuration=Release']
|
configs = []
|
||||||
elif 'win64' in builder:
|
if builder.endswith('linux_glibc211_x86_64_scons'):
|
||||||
command = ['msbuild', 'INSTALL.vcxproj', '/p:Configuration=Release']
|
configs = ['user-config-player-glibc211-x86_64.py',
|
||||||
else:
|
'user-config-cuda-glibc211-x86_64.py',
|
||||||
command = target_chroot_prefix + ['make', '-s', '-j2', target_name]
|
'user-config-glibc211-x86_64.py'
|
||||||
|
]
|
||||||
|
chroot_name = 'buildbot_squeeze_x86_64'
|
||||||
|
cuda_chroot = 'buildbot_squeeze_x86_64'
|
||||||
|
elif builder.endswith('linux_glibc211_i386_scons'):
|
||||||
|
configs = ['user-config-player-glibc211-i686.py',
|
||||||
|
'user-config-cuda-glibc211-i686.py',
|
||||||
|
'user-config-glibc211-i686.py']
|
||||||
|
chroot_name = 'buildbot_squeeze_i686'
|
||||||
|
|
||||||
print("Executing command:")
|
# use 64bit cuda toolkit, so there'll be no memory limit issues
|
||||||
print(command)
|
cuda_chroot = 'buildbot_squeeze_x86_64'
|
||||||
retcode = subprocess.call(command)
|
|
||||||
|
|
||||||
if retcode != 0:
|
# Compilation will happen inside of chroot environment
|
||||||
sys.exit(retcode)
|
prog_scons_cmd = ['schroot', '-c', chroot_name, '--'] + scons_cmd
|
||||||
|
cuda_scons_cmd = ['schroot', '-c', cuda_chroot, '--'] + scons_cmd
|
||||||
|
|
||||||
if builder.startswith('linux') and target == 'cuda':
|
common_options = ['BF_INSTALLDIR=' + install_dir] + scons_options
|
||||||
blender_h = os.path.join(blender_dir, "source", "blender", "blenkernel", "BKE_blender_version.h")
|
|
||||||
blender_version = int(parse_header_file(blender_h, 'BLENDER_VERSION'))
|
|
||||||
blender_version = "%d.%d" % (blender_version // 100, blender_version % 100)
|
|
||||||
kernels = os.path.join(target_build_dir, 'intern', 'cycles', 'kernel')
|
|
||||||
install_kernels = os.path.join(install_dir, blender_version, 'scripts', 'addons', 'cycles', 'lib')
|
|
||||||
os.mkdir(install_kernels)
|
|
||||||
print("Copying cuda binaries from %s to %s" % (kernels, install_kernels))
|
|
||||||
os.system('cp %s/*.cubin %s' % (kernels, install_kernels))
|
|
||||||
|
|
||||||
else:
|
for config in configs:
|
||||||
print("Unknown building system")
|
config_fpath = os.path.join(config_dir, config)
|
||||||
sys.exit(1)
|
|
||||||
|
scons_options = []
|
||||||
|
|
||||||
|
if config.find('player') != -1:
|
||||||
|
scons_options.append('BF_BUILDDIR=%s_player' % (build_dir))
|
||||||
|
else:
|
||||||
|
scons_options.append('BF_BUILDDIR=%s' % (build_dir))
|
||||||
|
|
||||||
|
scons_options += common_options
|
||||||
|
|
||||||
|
if config.find('player') != -1:
|
||||||
|
scons_options.append('blenderplayer')
|
||||||
|
cur_scons_cmd = prog_scons_cmd
|
||||||
|
elif config.find('cuda') != -1:
|
||||||
|
scons_options.append('cudakernels')
|
||||||
|
cur_scons_cmd = cuda_scons_cmd
|
||||||
|
|
||||||
|
if config.find('i686') != -1:
|
||||||
|
scons_options.append('BF_BITNESS=32')
|
||||||
|
elif config.find('x86_64') != -1:
|
||||||
|
scons_options.append('BF_BITNESS=64')
|
||||||
|
else:
|
||||||
|
scons_options.append('blender')
|
||||||
|
cur_scons_cmd = prog_scons_cmd
|
||||||
|
|
||||||
|
scons_options.append('BF_CONFIG=' + config_fpath)
|
||||||
|
|
||||||
|
retcode = subprocess.call(cur_scons_cmd + scons_options)
|
||||||
|
if retcode != 0:
|
||||||
|
print('Error building rules wuth config ' + config)
|
||||||
|
sys.exit(retcode)
|
||||||
|
|
||||||
|
sys.exit(0)
|
||||||
|
else:
|
||||||
|
if builder.find('win') != -1:
|
||||||
|
bitness = '32'
|
||||||
|
|
||||||
|
if builder.find('win64') != -1:
|
||||||
|
bitness = '64'
|
||||||
|
|
||||||
|
scons_options.append('BF_INSTALLDIR=' + install_dir)
|
||||||
|
scons_options.append('BF_BUILDDIR=' + build_dir)
|
||||||
|
scons_options.append('BF_BITNESS=' + bitness)
|
||||||
|
scons_options.append('WITH_BF_CYCLES_CUDA_BINARIES=True')
|
||||||
|
scons_options.append('BF_CYCLES_CUDA_NVCC=nvcc.exe')
|
||||||
|
if builder.find('mingw') != -1:
|
||||||
|
scons_options.append('BF_TOOLSET=mingw')
|
||||||
|
if builder.endswith('vc2013'):
|
||||||
|
scons_options.append('MSVS_VERSION=12.0')
|
||||||
|
scons_options.append('MSVC_VERSION=12.0')
|
||||||
|
scons_options.append('WITH_BF_CYCLES_CUDA_BINARIES=1')
|
||||||
|
scons_options.append('BF_CYCLES_CUDA_NVCC=nvcc.exe')
|
||||||
|
scons_options.append('BF_NUMJOBS=1')
|
||||||
|
|
||||||
|
elif builder.find('mac') != -1:
|
||||||
|
if builder.find('x86_64') != -1:
|
||||||
|
config = 'user-config-mac-x86_64.py'
|
||||||
|
else:
|
||||||
|
config = 'user-config-mac-i386.py'
|
||||||
|
|
||||||
|
scons_options.append('BF_CONFIG=' + os.path.join(config_dir, config))
|
||||||
|
|
||||||
|
if builder.find('win') != -1:
|
||||||
|
if not os.path.exists(install_dir):
|
||||||
|
os.makedirs(install_dir)
|
||||||
|
if builder.endswith('vc2013'):
|
||||||
|
dlls = ('msvcp120.dll', 'msvcr120.dll', 'vcomp120.dll')
|
||||||
|
if builder.find('win64') == -1:
|
||||||
|
dlls_path = '..\\..\\..\\redist\\x86'
|
||||||
|
else:
|
||||||
|
dlls_path = '..\\..\\..\\redist\\amd64'
|
||||||
|
for dll in dlls:
|
||||||
|
shutil.copyfile(os.path.join(dlls_path, dll), os.path.join(install_dir, dll))
|
||||||
|
|
||||||
|
retcode = subprocess.call([python_bin, 'scons/scons.py'] + scons_options)
|
||||||
|
|
||||||
|
sys.exit(retcode)
|
||||||
|
|||||||
@@ -36,205 +36,149 @@ builder = sys.argv[1]
|
|||||||
# Never write branch if it is master.
|
# Never write branch if it is master.
|
||||||
branch = sys.argv[2] if (len(sys.argv) >= 3 and sys.argv[2] != 'master') else ''
|
branch = sys.argv[2] if (len(sys.argv) >= 3 and sys.argv[2] != 'master') else ''
|
||||||
|
|
||||||
blender_dir = os.path.join('..', 'blender.git')
|
# scons does own packaging
|
||||||
build_dir = os.path.join('..', 'build', builder)
|
if builder.find('scons') != -1:
|
||||||
install_dir = os.path.join('..', 'install', builder)
|
python_bin = 'python'
|
||||||
buildbot_upload_zip = os.path.abspath(os.path.join(os.path.dirname(install_dir), "buildbot_upload.zip"))
|
if builder.find('linux') != -1:
|
||||||
|
python_bin = '/opt/lib/python-2.7/bin/python2.7'
|
||||||
|
|
||||||
upload_filename = None # Name of the archive to be uploaded
|
os.chdir('../blender.git')
|
||||||
# (this is the name of archive which will appear on the
|
scons_options = ['BF_QUICK=slnt', 'BUILDBOT_BRANCH=' + branch, 'buildslave', 'BF_FANCY=False']
|
||||||
# download page)
|
|
||||||
upload_filepath = None # Filepath to be uploaded to the server
|
|
||||||
# (this folder will be packed)
|
|
||||||
|
|
||||||
|
buildbot_dir = os.path.dirname(os.path.realpath(__file__))
|
||||||
|
config_dir = os.path.join(buildbot_dir, 'config')
|
||||||
|
build_dir = os.path.join('..', 'build', builder)
|
||||||
|
install_dir = os.path.join('..', 'install', builder)
|
||||||
|
|
||||||
def parse_header_file(filename, define):
|
if builder.find('linux') != -1:
|
||||||
import re
|
scons_options += ['WITH_BF_NOBLENDER=True', 'WITH_BF_PLAYER=False',
|
||||||
regex = re.compile("^#\s*define\s+%s\s+(.*)" % define)
|
'BF_BUILDDIR=' + build_dir,
|
||||||
with open(filename, "r") as file:
|
'BF_INSTALLDIR=' + install_dir,
|
||||||
for l in file:
|
'WITHOUT_BF_INSTALL=True']
|
||||||
match = regex.match(l)
|
|
||||||
if match:
|
|
||||||
return match.group(1)
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
config = None
|
||||||
|
bits = None
|
||||||
|
|
||||||
# Make sure install directory always exists
|
if builder.endswith('linux_glibc211_x86_64_scons'):
|
||||||
if not os.path.exists(install_dir):
|
config = 'user-config-glibc211-x86_64.py'
|
||||||
os.makedirs(install_dir)
|
chroot_name = 'buildbot_squeeze_x86_64'
|
||||||
|
bits = 64
|
||||||
|
elif builder.endswith('linux_glibc211_i386_scons'):
|
||||||
|
config = 'user-config-glibc211-i686.py'
|
||||||
|
chroot_name = 'buildbot_squeeze_i686'
|
||||||
|
bits = 32
|
||||||
|
|
||||||
|
if config is not None:
|
||||||
|
config_fpath = os.path.join(config_dir, config)
|
||||||
|
scons_options.append('BF_CONFIG=' + config_fpath)
|
||||||
|
|
||||||
def create_tar_bz2(src, dest, package_name):
|
blender = os.path.join(install_dir, 'blender')
|
||||||
# One extra to remove leading os.sep when cleaning root for package_root
|
blenderplayer = os.path.join(install_dir, 'blenderplayer')
|
||||||
ln = len(src) + 1
|
subprocess.call(['schroot', '-c', chroot_name, '--', 'strip', '--strip-all', blender, blenderplayer])
|
||||||
flist = list()
|
|
||||||
|
|
||||||
# Create list of tuples containing file and archive name
|
extra = '/' + os.path.join('home', 'sources', 'release-builder', 'extra')
|
||||||
for root, dirs, files in os.walk(src):
|
mesalibs = os.path.join(extra, 'mesalibs' + str(bits) + '.tar.bz2')
|
||||||
package_root = os.path.join(package_name, root[ln:])
|
software_gl = os.path.join(extra, 'blender-softwaregl')
|
||||||
flist.extend([(os.path.join(root, file), os.path.join(package_root, file)) for file in files])
|
|
||||||
|
|
||||||
import tarfile
|
os.system('tar -xpf %s -C %s' % (mesalibs, install_dir))
|
||||||
package = tarfile.open(dest, 'w:bz2')
|
os.system('cp %s %s' % (software_gl, install_dir))
|
||||||
for entry in flist:
|
os.system('chmod 755 %s' % (os.path.join(install_dir, 'blender-softwaregl')))
|
||||||
package.add(entry[0], entry[1], recursive=False)
|
|
||||||
package.close()
|
|
||||||
|
|
||||||
|
retcode = subprocess.call(['schroot', '-c', chroot_name, '--', python_bin, 'scons/scons.py'] + scons_options)
|
||||||
|
|
||||||
if builder.find('cmake') != -1:
|
sys.exit(retcode)
|
||||||
|
else:
|
||||||
|
if builder.find('win') != -1:
|
||||||
|
bitness = '32'
|
||||||
|
|
||||||
|
if builder.find('win64') != -1:
|
||||||
|
bitness = '64'
|
||||||
|
|
||||||
|
scons_options.append('BF_INSTALLDIR=' + install_dir)
|
||||||
|
scons_options.append('BF_BUILDDIR=' + build_dir)
|
||||||
|
scons_options.append('BF_BITNESS=' + bitness)
|
||||||
|
scons_options.append('WITH_BF_CYCLES_CUDA_BINARIES=True')
|
||||||
|
scons_options.append('BF_CYCLES_CUDA_NVCC=nvcc.exe')
|
||||||
|
if builder.find('mingw') != -1:
|
||||||
|
scons_options.append('BF_TOOLSET=mingw')
|
||||||
|
if builder.endswith('vc2013'):
|
||||||
|
scons_options.append('MSVS_VERSION=12.0')
|
||||||
|
scons_options.append('MSVC_VERSION=12.0')
|
||||||
|
|
||||||
|
elif builder.find('mac') != -1:
|
||||||
|
if builder.find('x86_64') != -1:
|
||||||
|
config = 'user-config-mac-x86_64.py'
|
||||||
|
else:
|
||||||
|
config = 'user-config-mac-i386.py'
|
||||||
|
|
||||||
|
scons_options.append('BF_CONFIG=' + os.path.join(config_dir, config))
|
||||||
|
|
||||||
|
retcode = subprocess.call([python_bin, 'scons/scons.py'] + scons_options)
|
||||||
|
sys.exit(retcode)
|
||||||
|
else:
|
||||||
# CMake
|
# CMake
|
||||||
if 'win' in builder or 'mac' in builder:
|
if 'win' in builder:
|
||||||
os.chdir(build_dir)
|
|
||||||
|
|
||||||
files = [f for f in os.listdir('.') if os.path.isfile(f) and f.endswith('.zip')]
|
files = [f for f in os.listdir('.') if os.path.isfile(f) and f.endswith('.zip')]
|
||||||
for f in files:
|
for f in files:
|
||||||
os.remove(f)
|
os.remove(f)
|
||||||
retcode = subprocess.call(['cpack', '-G', 'ZIP'])
|
retcode = subprocess.call(['cpack', '-G', 'ZIP'])
|
||||||
result_file = [f for f in os.listdir('.') if os.path.isfile(f) and f.endswith('.zip')][0]
|
result_file = [f for f in os.listdir('.') if os.path.isfile(f) and f.endswith('.zip')][0]
|
||||||
|
os.rename(result_file, "{}.zip".format(builder))
|
||||||
# TODO(sergey): Such magic usually happens in SCon's packaging but we don't have it
|
|
||||||
# in the CMake yet. For until then we do some magic here.
|
|
||||||
tokens = result_file.split('-')
|
|
||||||
blender_version = tokens[1].split('.')
|
|
||||||
blender_full_version = '.'.join(blender_version[0:2])
|
|
||||||
git_hash = tokens[2].split('.')[1]
|
|
||||||
platform = builder.split('_')[0]
|
|
||||||
if platform == 'mac':
|
|
||||||
# Special exception for OSX
|
|
||||||
platform = 'OSX-10.6-'
|
|
||||||
if builder.endswith('x86_64_10_6_cmake'):
|
|
||||||
platform += 'x86_64'
|
|
||||||
elif builder.endswith('i386_10_6_cmake'):
|
|
||||||
platform += 'i386'
|
|
||||||
elif builder.endswith('ppc_10_6_cmake'):
|
|
||||||
platform += 'ppc'
|
|
||||||
if builder.endswith('vc2015'):
|
|
||||||
platform += "-vc14"
|
|
||||||
builderified_name = 'blender-{}-{}-{}'.format(blender_full_version, git_hash, platform)
|
|
||||||
if branch != '':
|
|
||||||
builderified_name = branch + "-" + builderified_name
|
|
||||||
|
|
||||||
os.rename(result_file, "{}.zip".format(builderified_name))
|
|
||||||
# create zip file
|
# create zip file
|
||||||
try:
|
try:
|
||||||
if os.path.exists(buildbot_upload_zip):
|
upload_zip = "buildbot_upload.zip"
|
||||||
os.remove(buildbot_upload_zip)
|
if os.path.exists(upload_zip):
|
||||||
z = zipfile.ZipFile(buildbot_upload_zip, "w", compression=zipfile.ZIP_STORED)
|
os.remove(upload_zip)
|
||||||
z.write("{}.zip".format(builderified_name))
|
z = zipfile.ZipFile(upload_zip, "w", compression=zipfile.ZIP_STORED)
|
||||||
|
z.write("{}.zip".format(builder))
|
||||||
z.close()
|
z.close()
|
||||||
sys.exit(retcode)
|
sys.exit(retcode)
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
sys.stderr.write('Create buildbot_upload.zip failed' + str(ex) + '\n')
|
sys.stderr.write('Create buildbot_upload.zip failed' + str(ex) + '\n')
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
elif builder.startswith('linux_'):
|
|
||||||
blender = os.path.join(install_dir, 'blender')
|
|
||||||
blenderplayer = os.path.join(install_dir, 'blenderplayer')
|
|
||||||
|
|
||||||
buildinfo_h = os.path.join(build_dir, "source", "creator", "buildinfo.h")
|
# clean release directory if it already exists
|
||||||
blender_h = os.path.join(blender_dir, "source", "blender", "blenkernel", "BKE_blender_version.h")
|
release_dir = 'release'
|
||||||
|
|
||||||
# Get version information
|
if os.path.exists(release_dir):
|
||||||
blender_version = int(parse_header_file(blender_h, 'BLENDER_VERSION'))
|
for f in os.listdir(release_dir):
|
||||||
blender_version = "%d.%d" % (blender_version // 100, blender_version % 100)
|
if os.path.isfile(os.path.join(release_dir, f)):
|
||||||
blender_hash = parse_header_file(buildinfo_h, 'BUILD_HASH')[1:-1]
|
os.remove(os.path.join(release_dir, f))
|
||||||
blender_glibc = builder.split('_')[1]
|
|
||||||
|
|
||||||
if builder.endswith('x86_64_cmake'):
|
# create release package
|
||||||
chroot_name = 'buildbot_squeeze_x86_64'
|
try:
|
||||||
bits = 64
|
subprocess.call(['make', 'package_archive'])
|
||||||
blender_arch = 'x86_64'
|
except Exception as ex:
|
||||||
elif builder.endswith('i686_cmake'):
|
sys.stderr.write('Make package release failed' + str(ex) + '\n')
|
||||||
chroot_name = 'buildbot_squeeze_i686'
|
|
||||||
bits = 32
|
|
||||||
blender_arch = 'i686'
|
|
||||||
|
|
||||||
# Strip all unused symbols from the binaries
|
|
||||||
print("Stripping binaries...")
|
|
||||||
chroot_prefix = ['schroot', '-c', chroot_name, '--']
|
|
||||||
subprocess.call(chroot_prefix + ['strip', '--strip-all', blender, blenderplayer])
|
|
||||||
|
|
||||||
print("Stripping python...")
|
|
||||||
py_target = os.path.join(install_dir, blender_version)
|
|
||||||
subprocess.call(chroot_prefix + ['find', py_target, '-iname', '*.so', '-exec', 'strip', '-s', '{}', ';'])
|
|
||||||
|
|
||||||
# Copy all specific files which are too specific to be copied by
|
|
||||||
# the CMake rules themselves
|
|
||||||
print("Copying extra scripts and libs...")
|
|
||||||
|
|
||||||
extra = '/' + os.path.join('home', 'sources', 'release-builder', 'extra')
|
|
||||||
mesalibs = os.path.join(extra, 'mesalibs' + str(bits) + '.tar.bz2')
|
|
||||||
software_gl = os.path.join(blender_dir, 'release', 'bin', 'blender-softwaregl')
|
|
||||||
icons = os.path.join(blender_dir, 'release', 'freedesktop', 'icons')
|
|
||||||
|
|
||||||
os.system('tar -xpf %s -C %s' % (mesalibs, install_dir))
|
|
||||||
os.system('cp %s %s' % (software_gl, install_dir))
|
|
||||||
os.system('cp -r %s %s' % (icons, install_dir))
|
|
||||||
os.system('chmod 755 %s' % (os.path.join(install_dir, 'blender-softwaregl')))
|
|
||||||
|
|
||||||
# Construct archive name
|
|
||||||
package_name = 'blender-%s-%s-linux-%s-%s' % (blender_version,
|
|
||||||
blender_hash,
|
|
||||||
blender_glibc,
|
|
||||||
blender_arch)
|
|
||||||
if branch != '':
|
|
||||||
package_name = branch + "-" + package_name
|
|
||||||
|
|
||||||
upload_filename = package_name + ".tar.bz2"
|
|
||||||
|
|
||||||
print("Creating .tar.bz2 archive")
|
|
||||||
upload_filepath = install_dir + '.tar.bz2'
|
|
||||||
create_tar_bz2(install_dir, upload_filepath, package_name)
|
|
||||||
else:
|
|
||||||
print("Unknown building system")
|
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
# find release directory, must exist this time
|
||||||
|
if not os.path.exists(release_dir):
|
||||||
|
sys.stderr.write("Failed to find release directory %r.\n" % release_dir)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if upload_filepath is None:
|
# find release package
|
||||||
# clean release directory if it already exists
|
file = None
|
||||||
release_dir = 'release'
|
filepath = None
|
||||||
|
|
||||||
if os.path.exists(release_dir):
|
for f in os.listdir(release_dir):
|
||||||
for f in os.listdir(release_dir):
|
rf = os.path.join(release_dir, f)
|
||||||
if os.path.isfile(os.path.join(release_dir, f)):
|
if os.path.isfile(rf) and f.startswith('blender'):
|
||||||
os.remove(os.path.join(release_dir, f))
|
file = f
|
||||||
|
filepath = rf
|
||||||
|
|
||||||
# create release package
|
if not file:
|
||||||
try:
|
sys.stderr.write("Failed to find release package.\n")
|
||||||
subprocess.call(['make', 'package_archive'])
|
sys.exit(1)
|
||||||
except Exception as ex:
|
|
||||||
sys.stderr.write('Make package release failed' + str(ex) + '\n')
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
# find release directory, must exist this time
|
|
||||||
if not os.path.exists(release_dir):
|
|
||||||
sys.stderr.write("Failed to find release directory %r.\n" % release_dir)
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
# find release package
|
|
||||||
file = None
|
|
||||||
filepath = None
|
|
||||||
|
|
||||||
for f in os.listdir(release_dir):
|
|
||||||
rf = os.path.join(release_dir, f)
|
|
||||||
if os.path.isfile(rf) and f.startswith('blender'):
|
|
||||||
file = f
|
|
||||||
filepath = rf
|
|
||||||
|
|
||||||
if not file:
|
|
||||||
sys.stderr.write("Failed to find release package.\n")
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
upload_filename = file
|
|
||||||
upload_filepath = filepath
|
|
||||||
|
|
||||||
# create zip file
|
# create zip file
|
||||||
try:
|
try:
|
||||||
upload_zip = os.path.join(buildbot_upload_zip)
|
upload_zip = "buildbot_upload.zip"
|
||||||
if os.path.exists(upload_zip):
|
if os.path.exists(upload_zip):
|
||||||
os.remove(upload_zip)
|
os.remove(upload_zip)
|
||||||
z = zipfile.ZipFile(upload_zip, "w", compression=zipfile.ZIP_STORED)
|
z = zipfile.ZipFile(upload_zip, "w", compression=zipfile.ZIP_STORED)
|
||||||
z.write(upload_filepath, arcname=upload_filename)
|
z.write(filepath, arcname=file)
|
||||||
z.close()
|
z.close()
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
sys.stderr.write('Create buildbot_upload.zip failed' + str(ex) + '\n')
|
sys.stderr.write('Create buildbot_upload.zip failed' + str(ex) + '\n')
|
||||||
|
|||||||
@@ -19,7 +19,6 @@
|
|||||||
# <pep8 compliant>
|
# <pep8 compliant>
|
||||||
|
|
||||||
import subprocess
|
import subprocess
|
||||||
import os
|
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
# get builder name
|
# get builder name
|
||||||
@@ -34,26 +33,8 @@ blender_dir = '../blender.git'
|
|||||||
|
|
||||||
if "cmake" in builder:
|
if "cmake" in builder:
|
||||||
# cmake
|
# cmake
|
||||||
|
retcode = subprocess.call(['ctest', '.' '--output-on-failure'])
|
||||||
print("Automated tests are still DISABLED!")
|
|
||||||
sys.exit(0)
|
|
||||||
|
|
||||||
build_dir = os.path.abspath(os.path.join('..', 'build', builder))
|
|
||||||
chroot_name = None
|
|
||||||
chroot_prefix = []
|
|
||||||
|
|
||||||
"""
|
|
||||||
if builder.endswith('x86_64_cmake'):
|
|
||||||
chroot_name = 'buildbot_squeeze_x86_64'
|
|
||||||
elif builder.endswith('i686_cmake'):
|
|
||||||
chroot_name = 'buildbot_squeeze_i686'
|
|
||||||
if chroot_name:
|
|
||||||
chroot_prefix = ['schroot', '-c', chroot_name, '--']
|
|
||||||
"""
|
|
||||||
|
|
||||||
os.chdir(build_dir)
|
|
||||||
retcode = subprocess.call(chroot_prefix + ['ctest', '--output-on-failure'])
|
|
||||||
sys.exit(retcode)
|
sys.exit(retcode)
|
||||||
else:
|
else:
|
||||||
print("Unknown building system")
|
# scons
|
||||||
sys.exit(1)
|
pass
|
||||||
|
|||||||
@@ -1,70 +0,0 @@
|
|||||||
# - Find Alembic library
|
|
||||||
# Find the native Alembic includes and libraries
|
|
||||||
# This module defines
|
|
||||||
# ALEMBIC_INCLUDE_DIRS, where to find Alembic headers, Set when
|
|
||||||
# ALEMBIC_INCLUDE_DIR is found.
|
|
||||||
# ALEMBIC_LIBRARIES, libraries to link against to use Alembic.
|
|
||||||
# ALEMBIC_ROOT_DIR, The base directory to search for Alembic.
|
|
||||||
# This can also be an environment variable.
|
|
||||||
# ALEMBIC_FOUND, If false, do not try to use Alembic.
|
|
||||||
#
|
|
||||||
|
|
||||||
#=============================================================================
|
|
||||||
# Copyright 2016 Blender Foundation.
|
|
||||||
#
|
|
||||||
# Distributed under the OSI-approved BSD License (the "License");
|
|
||||||
# see accompanying file Copyright.txt for details.
|
|
||||||
#
|
|
||||||
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
|
||||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
# See the License for more information.
|
|
||||||
#=============================================================================
|
|
||||||
|
|
||||||
# If ALEMBIC_ROOT_DIR was defined in the environment, use it.
|
|
||||||
IF(NOT ALEMBIC_ROOT_DIR AND NOT $ENV{ALEMBIC_ROOT_DIR} STREQUAL "")
|
|
||||||
SET(ALEMBIC_ROOT_DIR $ENV{ALEMBIC_ROOT_DIR})
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
SET(_alembic_SEARCH_DIRS
|
|
||||||
${ALEMBIC_ROOT_DIR}
|
|
||||||
/usr/local
|
|
||||||
/sw # Fink
|
|
||||||
/opt/local # DarwinPorts
|
|
||||||
/opt/csw # Blastwave
|
|
||||||
/opt/lib/alembic
|
|
||||||
)
|
|
||||||
|
|
||||||
FIND_PATH(ALEMBIC_INCLUDE_DIR
|
|
||||||
NAMES
|
|
||||||
Alembic/Abc/All.h
|
|
||||||
HINTS
|
|
||||||
${_alembic_SEARCH_DIRS}
|
|
||||||
PATH_SUFFIXES
|
|
||||||
include
|
|
||||||
)
|
|
||||||
|
|
||||||
FIND_LIBRARY(ALEMBIC_LIBRARY
|
|
||||||
NAMES
|
|
||||||
Alembic
|
|
||||||
HINTS
|
|
||||||
${_alembic_SEARCH_DIRS}
|
|
||||||
PATH_SUFFIXES
|
|
||||||
lib64 lib lib/static
|
|
||||||
)
|
|
||||||
|
|
||||||
# handle the QUIETLY and REQUIRED arguments and set ALEMBIC_FOUND to TRUE if
|
|
||||||
# all listed variables are TRUE
|
|
||||||
INCLUDE(FindPackageHandleStandardArgs)
|
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(ALEMBIC DEFAULT_MSG ALEMBIC_LIBRARY ALEMBIC_INCLUDE_DIR)
|
|
||||||
|
|
||||||
IF(ALEMBIC_FOUND)
|
|
||||||
SET(ALEMBIC_LIBRARIES ${ALEMBIC_LIBRARY})
|
|
||||||
SET(ALEMBIC_INCLUDE_DIRS ${ALEMBIC_INCLUDE_DIR})
|
|
||||||
ENDIF(ALEMBIC_FOUND)
|
|
||||||
|
|
||||||
MARK_AS_ADVANCED(
|
|
||||||
ALEMBIC_INCLUDE_DIR
|
|
||||||
ALEMBIC_LIBRARY
|
|
||||||
)
|
|
||||||
|
|
||||||
UNSET(_alembic_SEARCH_DIRS)
|
|
||||||
@@ -1,113 +0,0 @@
|
|||||||
# - Try to find audaspace
|
|
||||||
# Once done, this will define
|
|
||||||
#
|
|
||||||
# AUDASPACE_FOUND - system has audaspace
|
|
||||||
# AUDASPACE_INCLUDE_DIRS - the audaspace include directories
|
|
||||||
# AUDASPACE_LIBRARIES - link these to use audaspace
|
|
||||||
# AUDASPACE_C_FOUND - system has audaspace's C binding
|
|
||||||
# AUDASPACE_C_INCLUDE_DIRS - the audaspace's C binding include directories
|
|
||||||
# AUDASPACE_C_LIBRARIES - link these to use audaspace's C binding
|
|
||||||
# AUDASPACE_PY_FOUND - system has audaspace's python binding
|
|
||||||
# AUDASPACE_PY_INCLUDE_DIRS - the audaspace's python binding include directories
|
|
||||||
# AUDASPACE_PY_LIBRARIES - link these to use audaspace's python binding
|
|
||||||
|
|
||||||
IF(NOT AUDASPACE_ROOT_DIR AND NOT $ENV{AUDASPACE_ROOT_DIR} STREQUAL "")
|
|
||||||
SET(AUDASPACE_ROOT_DIR $ENV{AUDASPACE_ROOT_DIR})
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
SET(_audaspace_SEARCH_DIRS
|
|
||||||
${AUDASPACE_ROOT_DIR}
|
|
||||||
/usr/local
|
|
||||||
/sw # Fink
|
|
||||||
/opt/local # DarwinPorts
|
|
||||||
/opt/csw # Blastwave
|
|
||||||
)
|
|
||||||
|
|
||||||
# Use pkg-config to get hints about paths
|
|
||||||
FIND_PACKAGE(PkgConfig)
|
|
||||||
IF(PKG_CONFIG_FOUND)
|
|
||||||
PKG_CHECK_MODULES(AUDASPACE_PKGCONF audaspace)
|
|
||||||
ENDIF(PKG_CONFIG_FOUND)
|
|
||||||
|
|
||||||
# Include dir
|
|
||||||
FIND_PATH(AUDASPACE_INCLUDE_DIR
|
|
||||||
NAMES ISound.h
|
|
||||||
HINTS ${_audaspace_SEARCH_DIRS}
|
|
||||||
PATHS ${AUDASPACE_PKGCONF_INCLUDE_DIRS}
|
|
||||||
PATH_SUFFIXES include/audaspace
|
|
||||||
)
|
|
||||||
|
|
||||||
# Library
|
|
||||||
FIND_LIBRARY(AUDASPACE_LIBRARY
|
|
||||||
NAMES audaspace
|
|
||||||
HINTS ${_audaspace_SEARCH_DIRS}
|
|
||||||
PATHS ${AUDASPACE_PKGCONF_LIBRARY_DIRS}
|
|
||||||
PATH_SUFFIXES lib lib64
|
|
||||||
)
|
|
||||||
|
|
||||||
# Include dir
|
|
||||||
FIND_PATH(AUDASPACE_C_INCLUDE_DIR
|
|
||||||
NAMES AUD_Sound.h
|
|
||||||
HINTS ${_audaspace_SEARCH_DIRS}
|
|
||||||
PATHS ${AUDASPACE_PKGCONF_INCLUDE_DIRS}
|
|
||||||
PATH_SUFFIXES include/audaspace
|
|
||||||
)
|
|
||||||
|
|
||||||
# Library
|
|
||||||
FIND_LIBRARY(AUDASPACE_C_LIBRARY
|
|
||||||
NAMES audaspace-c
|
|
||||||
HINTS ${_audaspace_SEARCH_DIRS}
|
|
||||||
PATHS ${AUDASPACE_PKGCONF_LIBRARY_DIRS}
|
|
||||||
PATH_SUFFIXES lib lib64
|
|
||||||
)
|
|
||||||
|
|
||||||
# Include dir
|
|
||||||
FIND_PATH(AUDASPACE_PY_INCLUDE_DIR
|
|
||||||
NAMES python/PyAPI.h
|
|
||||||
HINTS ${_audaspace_SEARCH_DIRS}
|
|
||||||
PATHS ${AUDASPACE_PKGCONF_INCLUDE_DIRS}
|
|
||||||
PATH_SUFFIXES include/audaspace
|
|
||||||
)
|
|
||||||
|
|
||||||
# Library
|
|
||||||
FIND_LIBRARY(AUDASPACE_PY_LIBRARY
|
|
||||||
NAMES audaspace-py
|
|
||||||
HINTS ${_audaspace_SEARCH_DIRS}
|
|
||||||
PATHS ${AUDASPACE_PKGCONF_LIBRARY_DIRS}
|
|
||||||
PATH_SUFFIXES lib lib64
|
|
||||||
)
|
|
||||||
|
|
||||||
FIND_PACKAGE(PackageHandleStandardArgs)
|
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Audaspace DEFAULT_MSG AUDASPACE_LIBRARY AUDASPACE_INCLUDE_DIR)
|
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Audaspace_C DEFAULT_MSG AUDASPACE_C_LIBRARY AUDASPACE_C_INCLUDE_DIR)
|
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Audaspace_Py DEFAULT_MSG AUDASPACE_PY_LIBRARY AUDASPACE_PY_INCLUDE_DIR)
|
|
||||||
|
|
||||||
IF(AUDASPACE_FOUND)
|
|
||||||
SET(AUDASPACE_LIBRARIES ${AUDASPACE_LIBRARY})
|
|
||||||
SET(AUDASPACE_INCLUDE_DIRS ${AUDASPACE_INCLUDE_DIR})
|
|
||||||
ENDIF(AUDASPACE_FOUND)
|
|
||||||
|
|
||||||
IF(AUDASPACE_C_FOUND)
|
|
||||||
SET(AUDASPACE_C_LIBRARIES ${AUDASPACE_C_LIBRARY})
|
|
||||||
SET(AUDASPACE_C_INCLUDE_DIRS ${AUDASPACE_C_INCLUDE_DIR})
|
|
||||||
ENDIF(AUDASPACE_C_FOUND)
|
|
||||||
|
|
||||||
IF(AUDASPACE_PY_FOUND)
|
|
||||||
SET(AUDASPACE_PY_LIBRARIES ${AUDASPACE_PY_LIBRARY})
|
|
||||||
SET(AUDASPACE_PY_INCLUDE_DIRS ${AUDASPACE_PY_INCLUDE_DIR})
|
|
||||||
ENDIF(AUDASPACE_PY_FOUND)
|
|
||||||
|
|
||||||
MARK_AS_ADVANCED(
|
|
||||||
AUDASPACE_LIBRARY
|
|
||||||
AUDASPACE_LIBRARIES
|
|
||||||
AUDASPACE_INCLUDE_DIR
|
|
||||||
AUDASPACE_INCLUDE_DIRS
|
|
||||||
AUDASPACE_C_LIBRARY
|
|
||||||
AUDASPACE_C_LIBRARIES
|
|
||||||
AUDASPACE_C_INCLUDE_DIR
|
|
||||||
AUDASPACE_C_INCLUDE_DIRS
|
|
||||||
AUDASPACE_PY_LIBRARY
|
|
||||||
AUDASPACE_PY_LIBRARIES
|
|
||||||
AUDASPACE_PY_INCLUDE_DIR
|
|
||||||
AUDASPACE_PY_INCLUDE_DIRS
|
|
||||||
)
|
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
# - Find Eigen3 library
|
|
||||||
# Find the native Eigen3 includes and library
|
|
||||||
# This module defines
|
|
||||||
# EIGEN3_INCLUDE_DIRS, where to find spnav.h, Set when
|
|
||||||
# EIGEN3_INCLUDE_DIR is found.
|
|
||||||
# EIGEN3_ROOT_DIR, The base directory to search for Eigen3.
|
|
||||||
# This can also be an environment variable.
|
|
||||||
# EIGEN3_FOUND, If false, do not try to use Eigen3.
|
|
||||||
#
|
|
||||||
#=============================================================================
|
|
||||||
# Copyright 2015 Blender Foundation.
|
|
||||||
#
|
|
||||||
# Distributed under the OSI-approved BSD License (the "License");
|
|
||||||
# see accompanying file Copyright.txt for details.
|
|
||||||
#
|
|
||||||
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
|
||||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
# See the License for more information.
|
|
||||||
#=============================================================================
|
|
||||||
|
|
||||||
# If EIGEN3_ROOT_DIR was defined in the environment, use it.
|
|
||||||
IF(NOT EIGEN3_ROOT_DIR AND NOT $ENV{EIGEN3_ROOT_DIR} STREQUAL "")
|
|
||||||
SET(EIGEN3_ROOT_DIR $ENV{EIGEN3_ROOT_DIR})
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
SET(_eigen3_SEARCH_DIRS
|
|
||||||
${EIGEN3_ROOT_DIR}
|
|
||||||
/usr/local
|
|
||||||
/sw # Fink
|
|
||||||
/opt/local # DarwinPorts
|
|
||||||
/opt/csw # Blastwave
|
|
||||||
)
|
|
||||||
|
|
||||||
FIND_PATH(EIGEN3_INCLUDE_DIR
|
|
||||||
NAMES
|
|
||||||
# header has no '.h' suffix
|
|
||||||
Eigen/Eigen
|
|
||||||
HINTS
|
|
||||||
${_eigen3_SEARCH_DIRS}
|
|
||||||
PATH_SUFFIXES
|
|
||||||
include/eigen3
|
|
||||||
)
|
|
||||||
|
|
||||||
# handle the QUIETLY and REQUIRED arguments and set EIGEN3_FOUND to TRUE if
|
|
||||||
# all listed variables are TRUE
|
|
||||||
INCLUDE(FindPackageHandleStandardArgs)
|
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Eigen3 DEFAULT_MSG
|
|
||||||
EIGEN3_INCLUDE_DIR)
|
|
||||||
|
|
||||||
IF(EIGEN3_FOUND)
|
|
||||||
SET(EIGEN3_INCLUDE_DIRS ${EIGEN3_INCLUDE_DIR})
|
|
||||||
ENDIF(EIGEN3_FOUND)
|
|
||||||
|
|
||||||
MARK_AS_ADVANCED(
|
|
||||||
EIGEN3_INCLUDE_DIR
|
|
||||||
)
|
|
||||||
@@ -1,69 +0,0 @@
|
|||||||
# - Find HDF5 library
|
|
||||||
# Find the native HDF5 includes and libraries
|
|
||||||
# This module defines
|
|
||||||
# HDF5_INCLUDE_DIRS, where to find hdf5.h, Set when HDF5_INCLUDE_DIR is found.
|
|
||||||
# HDF5_LIBRARIES, libraries to link against to use HDF5.
|
|
||||||
# HDF5_ROOT_DIR, The base directory to search for HDF5.
|
|
||||||
# This can also be an environment variable.
|
|
||||||
# HDF5_FOUND, If false, do not try to use HDF5.
|
|
||||||
#
|
|
||||||
|
|
||||||
#=============================================================================
|
|
||||||
# Copyright 2016 Blender Foundation.
|
|
||||||
#
|
|
||||||
# Distributed under the OSI-approved BSD License (the "License");
|
|
||||||
# see accompanying file Copyright.txt for details.
|
|
||||||
#
|
|
||||||
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
|
||||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
# See the License for more information.
|
|
||||||
#=============================================================================
|
|
||||||
|
|
||||||
# If HDF5_ROOT_DIR was defined in the environment, use it.
|
|
||||||
IF(NOT HDF5_ROOT_DIR AND NOT $ENV{HDF5_ROOT_DIR} STREQUAL "")
|
|
||||||
SET(HDF5_ROOT_DIR $ENV{HDF5_ROOT_DIR})
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
SET(_hdf5_SEARCH_DIRS
|
|
||||||
${HDF5_ROOT_DIR}
|
|
||||||
/usr/local
|
|
||||||
/sw # Fink
|
|
||||||
/opt/local # DarwinPorts
|
|
||||||
/opt/csw # Blastwave
|
|
||||||
/opt/lib/hdf5
|
|
||||||
)
|
|
||||||
|
|
||||||
FIND_LIBRARY(HDF5_LIBRARY
|
|
||||||
NAMES
|
|
||||||
hdf5
|
|
||||||
HINTS
|
|
||||||
${_hdf5_SEARCH_DIRS}
|
|
||||||
PATH_SUFFIXES
|
|
||||||
lib64 lib
|
|
||||||
)
|
|
||||||
|
|
||||||
FIND_PATH(HDF5_INCLUDE_DIR
|
|
||||||
NAMES
|
|
||||||
hdf5.h
|
|
||||||
HINTS
|
|
||||||
${_hdf5_SEARCH_DIRS}
|
|
||||||
PATH_SUFFIXES
|
|
||||||
include
|
|
||||||
)
|
|
||||||
|
|
||||||
# handle the QUIETLY and REQUIRED arguments and set HDF5_FOUND to TRUE if
|
|
||||||
# all listed variables are TRUE
|
|
||||||
INCLUDE(FindPackageHandleStandardArgs)
|
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(HDF5 DEFAULT_MSG HDF5_LIBRARY HDF5_INCLUDE_DIR)
|
|
||||||
|
|
||||||
IF(HDF5_FOUND)
|
|
||||||
SET(HDF5_LIBRARIES ${HDF5_LIBRARY})
|
|
||||||
SET(HDF5_INCLUDE_DIRS ${HDF5_INCLUDE_DIR})
|
|
||||||
ENDIF(HDF5_FOUND)
|
|
||||||
|
|
||||||
MARK_AS_ADVANCED(
|
|
||||||
HDF5_INCLUDE_DIR
|
|
||||||
HDF5_LIBRARY
|
|
||||||
)
|
|
||||||
|
|
||||||
UNSET(_hdf5_SEARCH_DIRS)
|
|
||||||
@@ -33,7 +33,6 @@ SET(_jemalloc_SEARCH_DIRS
|
|||||||
/sw # Fink
|
/sw # Fink
|
||||||
/opt/local # DarwinPorts
|
/opt/local # DarwinPorts
|
||||||
/opt/csw # Blastwave
|
/opt/csw # Blastwave
|
||||||
/opt/lib/jemalloc
|
|
||||||
)
|
)
|
||||||
|
|
||||||
FIND_PATH(JEMALLOC_INCLUDE_DIR
|
FIND_PATH(JEMALLOC_INCLUDE_DIR
|
||||||
|
|||||||
@@ -1,96 +0,0 @@
|
|||||||
# - Find LLVM library
|
|
||||||
# Find the native LLVM includes and library
|
|
||||||
# This module defines
|
|
||||||
# LLVM_INCLUDE_DIRS, where to find LLVM.h, Set when LLVM_INCLUDE_DIR is found.
|
|
||||||
# LLVM_LIBRARIES, libraries to link against to use LLVM.
|
|
||||||
# LLVM_ROOT_DIR, The base directory to search for LLVM.
|
|
||||||
# This can also be an environment variable.
|
|
||||||
# LLVM_FOUND, If false, do not try to use LLVM.
|
|
||||||
#
|
|
||||||
# also defined, but not for general use are
|
|
||||||
# LLVM_LIBRARY, where to find the LLVM library.
|
|
||||||
|
|
||||||
#=============================================================================
|
|
||||||
# Copyright 2015 Blender Foundation.
|
|
||||||
#
|
|
||||||
# Distributed under the OSI-approved BSD License (the "License");
|
|
||||||
# see accompanying file Copyright.txt for details.
|
|
||||||
#
|
|
||||||
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
|
||||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
# See the License for more information.
|
|
||||||
#=============================================================================
|
|
||||||
|
|
||||||
if(LLVM_ROOT_DIR)
|
|
||||||
if(DEFINED LLVM_VERSION)
|
|
||||||
find_program(LLVM_CONFIG llvm-config-${LLVM_VERSION} HINTS ${LLVM_ROOT_DIR}/bin NO_CMAKE_PATH)
|
|
||||||
endif()
|
|
||||||
if(NOT LLVM_CONFIG)
|
|
||||||
find_program(LLVM_CONFIG llvm-config HINTS ${LLVM_ROOT_DIR}/bin NO_CMAKE_PATH)
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
if(DEFINED LLVM_VERSION)
|
|
||||||
message(running llvm-config-${LLVM_VERSION})
|
|
||||||
find_program(LLVM_CONFIG llvm-config-${LLVM_VERSION})
|
|
||||||
endif()
|
|
||||||
if(NOT LLVM_CONFIG)
|
|
||||||
find_program(LLVM_CONFIG llvm-config)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT DEFINED LLVM_VERSION)
|
|
||||||
execute_process(COMMAND ${LLVM_CONFIG} --version
|
|
||||||
OUTPUT_VARIABLE LLVM_VERSION
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
set(LLVM_VERSION ${LLVM_VERSION} CACHE STRING "Version of LLVM to use")
|
|
||||||
endif()
|
|
||||||
if(NOT LLVM_ROOT_DIR)
|
|
||||||
execute_process(COMMAND ${LLVM_CONFIG} --prefix
|
|
||||||
OUTPUT_VARIABLE LLVM_ROOT_DIR
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
set(LLVM_ROOT_DIR ${LLVM_ROOT_DIR} CACHE PATH "Path to the LLVM installation")
|
|
||||||
endif()
|
|
||||||
if(NOT LLVM_LIBPATH)
|
|
||||||
execute_process(COMMAND ${LLVM_CONFIG} --libdir
|
|
||||||
OUTPUT_VARIABLE LLVM_LIBPATH
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
set(LLVM_LIBPATH ${LLVM_LIBPATH} CACHE PATH "Path to the LLVM library path")
|
|
||||||
mark_as_advanced(LLVM_LIBPATH)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(LLVM_STATIC)
|
|
||||||
find_library(LLVM_LIBRARY
|
|
||||||
NAMES LLVMAnalysis # first of a whole bunch of libs to get
|
|
||||||
PATHS ${LLVM_LIBPATH})
|
|
||||||
else()
|
|
||||||
find_library(LLVM_LIBRARY
|
|
||||||
NAMES
|
|
||||||
LLVM-${LLVM_VERSION}
|
|
||||||
LLVMAnalysis # check for the static library as a fall-back
|
|
||||||
PATHS ${LLVM_LIBPATH})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
if(LLVM_LIBRARY AND LLVM_ROOT_DIR AND LLVM_LIBPATH)
|
|
||||||
if(LLVM_STATIC)
|
|
||||||
# if static LLVM libraries were requested, use llvm-config to generate
|
|
||||||
# the list of what libraries we need, and substitute that in the right
|
|
||||||
# way for LLVM_LIBRARY.
|
|
||||||
execute_process(COMMAND ${LLVM_CONFIG} --libfiles
|
|
||||||
OUTPUT_VARIABLE LLVM_LIBRARY
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
string(REPLACE " " ";" LLVM_LIBRARY "${LLVM_LIBRARY}")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
# handle the QUIETLY and REQUIRED arguments and set SDL2_FOUND to TRUE if
|
|
||||||
# all listed variables are TRUE
|
|
||||||
INCLUDE(FindPackageHandleStandardArgs)
|
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(LLVM DEFAULT_MSG
|
|
||||||
LLVM_LIBRARY)
|
|
||||||
|
|
||||||
MARK_AS_ADVANCED(
|
|
||||||
LLVM_LIBRARY
|
|
||||||
)
|
|
||||||
|
|
||||||
@@ -1,68 +0,0 @@
|
|||||||
# - Find LZO library
|
|
||||||
# Find the native LZO includes and library
|
|
||||||
# This module defines
|
|
||||||
# LZO_INCLUDE_DIRS, where to find lzo1x.h, Set when
|
|
||||||
# LZO_INCLUDE_DIR is found.
|
|
||||||
# LZO_LIBRARIES, libraries to link against to use LZO.
|
|
||||||
# LZO_ROOT_DIR, The base directory to search for LZO.
|
|
||||||
# This can also be an environment variable.
|
|
||||||
# LZO_FOUND, If false, do not try to use LZO.
|
|
||||||
#
|
|
||||||
# also defined, but not for general use are
|
|
||||||
# LZO_LIBRARY, where to find the LZO library.
|
|
||||||
|
|
||||||
#=============================================================================
|
|
||||||
# Copyright 2015 Blender Foundation.
|
|
||||||
#
|
|
||||||
# Distributed under the OSI-approved BSD License (the "License");
|
|
||||||
# see accompanying file Copyright.txt for details.
|
|
||||||
#
|
|
||||||
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
|
||||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
# See the License for more information.
|
|
||||||
#=============================================================================
|
|
||||||
|
|
||||||
# If LZO_ROOT_DIR was defined in the environment, use it.
|
|
||||||
IF(NOT LZO_ROOT_DIR AND NOT $ENV{LZO_ROOT_DIR} STREQUAL "")
|
|
||||||
SET(LZO_ROOT_DIR $ENV{LZO_ROOT_DIR})
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
SET(_lzo_SEARCH_DIRS
|
|
||||||
${LZO_ROOT_DIR}
|
|
||||||
/usr/local
|
|
||||||
/sw # Fink
|
|
||||||
/opt/local # DarwinPorts
|
|
||||||
/opt/csw # Blastwave
|
|
||||||
)
|
|
||||||
|
|
||||||
FIND_PATH(LZO_INCLUDE_DIR lzo/lzo1x.h
|
|
||||||
HINTS
|
|
||||||
${_lzo_SEARCH_DIRS}
|
|
||||||
PATH_SUFFIXES
|
|
||||||
include
|
|
||||||
)
|
|
||||||
|
|
||||||
FIND_LIBRARY(LZO_LIBRARY
|
|
||||||
NAMES
|
|
||||||
lzo2
|
|
||||||
HINTS
|
|
||||||
${_lzo_SEARCH_DIRS}
|
|
||||||
PATH_SUFFIXES
|
|
||||||
lib64 lib
|
|
||||||
)
|
|
||||||
|
|
||||||
# handle the QUIETLY and REQUIRED arguments and set LZO_FOUND to TRUE if
|
|
||||||
# all listed variables are TRUE
|
|
||||||
INCLUDE(FindPackageHandleStandardArgs)
|
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(LZO DEFAULT_MSG
|
|
||||||
LZO_LIBRARY LZO_INCLUDE_DIR)
|
|
||||||
|
|
||||||
IF(LZO_FOUND)
|
|
||||||
SET(LZO_LIBRARIES ${LZO_LIBRARY})
|
|
||||||
SET(LZO_INCLUDE_DIRS ${LZO_INCLUDE_DIR})
|
|
||||||
ENDIF(LZO_FOUND)
|
|
||||||
|
|
||||||
MARK_AS_ADVANCED(
|
|
||||||
LZO_INCLUDE_DIR
|
|
||||||
LZO_LIBRARY
|
|
||||||
)
|
|
||||||
@@ -71,7 +71,6 @@ ENDIF()
|
|||||||
MARK_AS_ADVANCED(
|
MARK_AS_ADVANCED(
|
||||||
OPENGLES_EGL_INCLUDE_DIR
|
OPENGLES_EGL_INCLUDE_DIR
|
||||||
OPENGLES_EGL_LIBRARY
|
OPENGLES_EGL_LIBRARY
|
||||||
OPENGLES_LIBRARY
|
|
||||||
OPENGLES_INCLUDE_DIR
|
OPENGLES_INCLUDE_DIR
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -59,8 +59,7 @@ FIND_LIBRARY(OPENIMAGEIO_LIBRARY
|
|||||||
FIND_FILE(OPENIMAGEIO_IDIFF
|
FIND_FILE(OPENIMAGEIO_IDIFF
|
||||||
NAMES
|
NAMES
|
||||||
idiff
|
idiff
|
||||||
HINTS
|
${OPENIMAGEIO_ROOT_DIR}
|
||||||
${OPENIMAGEIO_ROOT_DIR}
|
|
||||||
PATH_SUFFIXES
|
PATH_SUFFIXES
|
||||||
bin
|
bin
|
||||||
)
|
)
|
||||||
@@ -84,7 +83,6 @@ ENDIF()
|
|||||||
MARK_AS_ADVANCED(
|
MARK_AS_ADVANCED(
|
||||||
OPENIMAGEIO_INCLUDE_DIR
|
OPENIMAGEIO_INCLUDE_DIR
|
||||||
OPENIMAGEIO_LIBRARY
|
OPENIMAGEIO_LIBRARY
|
||||||
OPENIMAGEIO_IDIFF
|
|
||||||
)
|
)
|
||||||
|
|
||||||
UNSET(_openimageio_SEARCH_DIRS)
|
UNSET(_openimageio_SEARCH_DIRS)
|
||||||
|
|||||||
@@ -1,112 +0,0 @@
|
|||||||
# - Find OpenSubdiv library
|
|
||||||
# Find the native OpenSubdiv includes and library
|
|
||||||
# This module defines
|
|
||||||
# OPENSUBDIV_INCLUDE_DIRS, where to find OpenSubdiv headers, Set when
|
|
||||||
# OPENSUBDIV_INCLUDE_DIR is found.
|
|
||||||
# OPENSUBDIV_LIBRARIES, libraries to link against to use OpenSubdiv.
|
|
||||||
# OPENSUBDIV_ROOT_DIR, the base directory to search for OpenSubdiv.
|
|
||||||
# This can also be an environment variable.
|
|
||||||
# OPENSUBDIV_FOUND, if false, do not try to use OpenSubdiv.
|
|
||||||
#
|
|
||||||
# also defined, but not for general use are
|
|
||||||
# OPENSUBDIV_LIBRARY, where to find the OpenSubdiv library.
|
|
||||||
|
|
||||||
#=============================================================================
|
|
||||||
# Copyright 2013 Blender Foundation.
|
|
||||||
#
|
|
||||||
# Distributed under the OSI-approved BSD License (the "License");
|
|
||||||
# see accompanying file Copyright.txt for details.
|
|
||||||
#
|
|
||||||
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
|
||||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
# See the License for more information.
|
|
||||||
#=============================================================================
|
|
||||||
|
|
||||||
# If OPENSUBDIV_ROOT_DIR was defined in the environment, use it.
|
|
||||||
IF(NOT OPENSUBDIV_ROOT_DIR AND NOT $ENV{OPENSUBDIV_ROOT_DIR} STREQUAL "")
|
|
||||||
SET(OPENSUBDIV_ROOT_DIR $ENV{OPENSUBDIV_ROOT_DIR})
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
SET(_opensubdiv_FIND_COMPONENTS
|
|
||||||
osdGPU
|
|
||||||
osdCPU
|
|
||||||
)
|
|
||||||
|
|
||||||
SET(_opensubdiv_SEARCH_DIRS
|
|
||||||
${OPENSUBDIV_ROOT_DIR}
|
|
||||||
/usr/local
|
|
||||||
/sw # Fink
|
|
||||||
/opt/local # DarwinPorts
|
|
||||||
/opt/csw # Blastwave
|
|
||||||
/opt/lib/opensubdiv
|
|
||||||
/opt/lib/osd # install_deps.sh
|
|
||||||
)
|
|
||||||
|
|
||||||
FIND_PATH(OPENSUBDIV_INCLUDE_DIR
|
|
||||||
NAMES
|
|
||||||
opensubdiv/osd/mesh.h
|
|
||||||
HINTS
|
|
||||||
${_opensubdiv_SEARCH_DIRS}
|
|
||||||
PATH_SUFFIXES
|
|
||||||
include
|
|
||||||
)
|
|
||||||
|
|
||||||
SET(_opensubdiv_LIBRARIES)
|
|
||||||
FOREACH(COMPONENT ${_opensubdiv_FIND_COMPONENTS})
|
|
||||||
STRING(TOUPPER ${COMPONENT} UPPERCOMPONENT)
|
|
||||||
|
|
||||||
FIND_LIBRARY(OPENSUBDIV_${UPPERCOMPONENT}_LIBRARY
|
|
||||||
NAMES
|
|
||||||
${COMPONENT}
|
|
||||||
HINTS
|
|
||||||
${_opensubdiv_SEARCH_DIRS}
|
|
||||||
PATH_SUFFIXES
|
|
||||||
lib64 lib
|
|
||||||
)
|
|
||||||
LIST(APPEND _opensubdiv_LIBRARIES "${OPENSUBDIV_${UPPERCOMPONENT}_LIBRARY}")
|
|
||||||
ENDFOREACH()
|
|
||||||
|
|
||||||
MACRO(OPENSUBDIV_CHECK_CONTROLLER
|
|
||||||
controller_include_file
|
|
||||||
variable_name)
|
|
||||||
IF(EXISTS "${OPENSUBDIV_INCLUDE_DIR}/opensubdiv/osd/${controller_include_file}")
|
|
||||||
SET(${variable_name} TRUE)
|
|
||||||
ELSE()
|
|
||||||
SET(${variable_name} FALSE)
|
|
||||||
ENDIF()
|
|
||||||
ENDMACRO()
|
|
||||||
|
|
||||||
|
|
||||||
# handle the QUIETLY and REQUIRED arguments and set OPENSUBDIV_FOUND to TRUE if
|
|
||||||
# all listed variables are TRUE
|
|
||||||
INCLUDE(FindPackageHandleStandardArgs)
|
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenSubdiv DEFAULT_MSG
|
|
||||||
_opensubdiv_LIBRARIES OPENSUBDIV_INCLUDE_DIR)
|
|
||||||
|
|
||||||
IF(OPENSUBDIV_FOUND)
|
|
||||||
SET(OPENSUBDIV_LIBRARIES ${_opensubdiv_LIBRARIES})
|
|
||||||
SET(OPENSUBDIV_INCLUDE_DIRS ${OPENSUBDIV_INCLUDE_DIR})
|
|
||||||
|
|
||||||
# Find available compute controllers.
|
|
||||||
|
|
||||||
FIND_PACKAGE(OpenMP)
|
|
||||||
IF(OPENMP_FOUND)
|
|
||||||
SET(OPENSUBDIV_HAS_OPENMP TRUE)
|
|
||||||
ELSE()
|
|
||||||
SET(OPENSUBDIV_HAS_OPENMP FALSE)
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
OPENSUBDIV_CHECK_CONTROLLER("tbbEvaluator.h" OPENSUBDIV_HAS_TBB)
|
|
||||||
OPENSUBDIV_CHECK_CONTROLLER("clEvaluator.h" OPENSUBDIV_HAS_OPENCL)
|
|
||||||
OPENSUBDIV_CHECK_CONTROLLER("cudaEvaluator.h" OPENSUBDIV_HAS_CUDA)
|
|
||||||
OPENSUBDIV_CHECK_CONTROLLER("glXFBEvaluator.h" OPENSUBDIV_HAS_GLSL_TRANSFORM_FEEDBACK)
|
|
||||||
OPENSUBDIV_CHECK_CONTROLLER("glComputeEvaluator.h" OPENSUBDIV_HAS_GLSL_COMPUTE)
|
|
||||||
ENDIF(OPENSUBDIV_FOUND)
|
|
||||||
|
|
||||||
MARK_AS_ADVANCED(
|
|
||||||
OPENSUBDIV_INCLUDE_DIR
|
|
||||||
)
|
|
||||||
FOREACH(COMPONENT ${_opensubdiv_FIND_COMPONENTS})
|
|
||||||
STRING(TOUPPER ${COMPONENT} UPPERCOMPONENT)
|
|
||||||
MARK_AS_ADVANCED(OPENSUBDIV_${UPPERCOMPONENT}_LIBRARY)
|
|
||||||
ENDFOREACH()
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
# - Find OPENVDB library
|
|
||||||
# Find the native OPENVDB includes and library
|
|
||||||
# This module defines
|
|
||||||
# OPENVDB_INCLUDE_DIRS, where to find openvdb.h, Set when
|
|
||||||
# OPENVDB_INCLUDE_DIR is found.
|
|
||||||
# OPENVDB_LIBRARIES, libraries to link against to use OPENVDB.
|
|
||||||
# OPENVDB_ROOT_DIR, The base directory to search for OPENVDB.
|
|
||||||
# This can also be an environment variable.
|
|
||||||
# OPENVDB_FOUND, If false, do not try to use OPENVDB.
|
|
||||||
#
|
|
||||||
# also defined, but not for general use are
|
|
||||||
# OPENVDB_LIBRARY, where to find the OPENVDB library.
|
|
||||||
|
|
||||||
#=============================================================================
|
|
||||||
# Copyright 2015 Blender Foundation.
|
|
||||||
#
|
|
||||||
# Distributed under the OSI-approved BSD License (the "License");
|
|
||||||
# see accompanying file Copyright.txt for details.
|
|
||||||
#
|
|
||||||
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
|
||||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
# See the License for more information.
|
|
||||||
#=============================================================================
|
|
||||||
|
|
||||||
# If OPENVDB_ROOT_DIR was defined in the environment, use it.
|
|
||||||
IF(NOT OPENVDB_ROOT_DIR AND NOT $ENV{OPENVDB_ROOT_DIR} STREQUAL "")
|
|
||||||
SET(OPENVDB_ROOT_DIR $ENV{OPENVDB_ROOT_DIR})
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
SET(_openvdb_SEARCH_DIRS
|
|
||||||
${OPENVDB_ROOT_DIR}
|
|
||||||
/usr/local
|
|
||||||
/sw # Fink
|
|
||||||
/opt/local # DarwinPorts
|
|
||||||
/opt/csw # Blastwave
|
|
||||||
/opt/openvdb
|
|
||||||
/opt/lib/openvdb
|
|
||||||
)
|
|
||||||
|
|
||||||
FIND_PATH(OPENVDB_INCLUDE_DIR
|
|
||||||
NAMES
|
|
||||||
openvdb/openvdb.h
|
|
||||||
HINTS
|
|
||||||
${_openvdb_SEARCH_DIRS}
|
|
||||||
PATH_SUFFIXES
|
|
||||||
include
|
|
||||||
)
|
|
||||||
|
|
||||||
FIND_LIBRARY(OPENVDB_LIBRARY
|
|
||||||
NAMES
|
|
||||||
openvdb
|
|
||||||
HINTS
|
|
||||||
${_openvdb_SEARCH_DIRS}
|
|
||||||
PATH_SUFFIXES
|
|
||||||
lib64 lib
|
|
||||||
)
|
|
||||||
|
|
||||||
# handle the QUIETLY and REQUIRED arguments and set OPENVDB_FOUND to TRUE if
|
|
||||||
# all listed variables are TRUE
|
|
||||||
INCLUDE(FindPackageHandleStandardArgs)
|
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(OPENVDB DEFAULT_MSG
|
|
||||||
OPENVDB_LIBRARY OPENVDB_INCLUDE_DIR)
|
|
||||||
|
|
||||||
IF(OPENVDB_FOUND)
|
|
||||||
SET(OPENVDB_LIBRARIES ${OPENVDB_LIBRARY})
|
|
||||||
SET(OPENVDB_INCLUDE_DIRS ${OPENVDB_INCLUDE_DIR})
|
|
||||||
ENDIF(OPENVDB_FOUND)
|
|
||||||
|
|
||||||
MARK_AS_ADVANCED(
|
|
||||||
OPENVDB_INCLUDE_DIR
|
|
||||||
OPENVDB_LIBRARY
|
|
||||||
)
|
|
||||||
|
|
||||||
UNSET(_openvdb_SEARCH_DIRS)
|
|
||||||
@@ -40,6 +40,7 @@ FIND_PATH(PCRE_INCLUDE_DIR pcre.h
|
|||||||
${_pcre_SEARCH_DIRS}
|
${_pcre_SEARCH_DIRS}
|
||||||
PATH_SUFFIXES
|
PATH_SUFFIXES
|
||||||
include
|
include
|
||||||
|
include
|
||||||
)
|
)
|
||||||
|
|
||||||
FIND_LIBRARY(PCRE_LIBRARY
|
FIND_LIBRARY(PCRE_LIBRARY
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# - Find PugiXML library
|
# - Find PugiXML library
|
||||||
# Find the native PugiXML includes and library
|
# Find the native PugiXML includes and library
|
||||||
# This module defines
|
# This module defines
|
||||||
# PUGIXML_INCLUDE_DIRS, where to find pugixml.hpp, Set when
|
# PUGIXML_INCLUDE_DIRS, where to find pugixml.h, Set when
|
||||||
# PugiXML is found.
|
# PugiXML is found.
|
||||||
# PUGIXML_LIBRARIES, libraries to link against to use PugiiXML.
|
# PUGIXML_LIBRARIES, libraries to link against to use PugiiXML.
|
||||||
# PUGIXML_ROOT_DIR, The base directory to search for PugiXML.
|
# PUGIXML_ROOT_DIR, The base directory to search for PugiXML.
|
||||||
@@ -38,7 +38,7 @@ SET(_pugixml_SEARCH_DIRS
|
|||||||
|
|
||||||
FIND_PATH(PUGIXML_INCLUDE_DIR
|
FIND_PATH(PUGIXML_INCLUDE_DIR
|
||||||
NAMES
|
NAMES
|
||||||
pugixml.hpp
|
pugixml.h
|
||||||
HINTS
|
HINTS
|
||||||
${_pugixml_SEARCH_DIRS}
|
${_pugixml_SEARCH_DIRS}
|
||||||
PATH_SUFFIXES
|
PATH_SUFFIXES
|
||||||
|
|||||||
@@ -14,7 +14,6 @@
|
|||||||
# PYTHON_INCLUDE_CONFIG_DIRS
|
# PYTHON_INCLUDE_CONFIG_DIRS
|
||||||
# PYTHON_LIBRARIES
|
# PYTHON_LIBRARIES
|
||||||
# PYTHON_LIBPATH, Used for installation
|
# PYTHON_LIBPATH, Used for installation
|
||||||
# PYTHON_SITE_PACKAGES, Used for installation (as a Python module)
|
|
||||||
# PYTHON_LINKFLAGS
|
# PYTHON_LINKFLAGS
|
||||||
# PYTHON_ROOT_DIR, The base directory to search for Python.
|
# PYTHON_ROOT_DIR, The base directory to search for Python.
|
||||||
# This can also be an environment variable.
|
# This can also be an environment variable.
|
||||||
@@ -38,7 +37,7 @@ IF(NOT PYTHON_ROOT_DIR AND NOT $ENV{PYTHON_ROOT_DIR} STREQUAL "")
|
|||||||
SET(PYTHON_ROOT_DIR $ENV{PYTHON_ROOT_DIR})
|
SET(PYTHON_ROOT_DIR $ENV{PYTHON_ROOT_DIR})
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
SET(PYTHON_VERSION 3.5 CACHE STRING "Python Version (major and minor only)")
|
SET(PYTHON_VERSION 3.4 CACHE STRING "Python Version (major and minor only)")
|
||||||
MARK_AS_ADVANCED(PYTHON_VERSION)
|
MARK_AS_ADVANCED(PYTHON_VERSION)
|
||||||
|
|
||||||
|
|
||||||
@@ -66,14 +65,6 @@ IF(DEFINED PYTHON_LIBPATH)
|
|||||||
SET(_IS_LIB_PATH_DEF ON)
|
SET(_IS_LIB_PATH_DEF ON)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
STRING(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION})
|
|
||||||
|
|
||||||
SET(_python_SEARCH_DIRS
|
|
||||||
${PYTHON_ROOT_DIR}
|
|
||||||
"$ENV{HOME}/py${_PYTHON_VERSION_NO_DOTS}"
|
|
||||||
"/opt/py${_PYTHON_VERSION_NO_DOTS}"
|
|
||||||
"/opt/lib/python-${PYTHON_VERSION}"
|
|
||||||
)
|
|
||||||
|
|
||||||
# only search for the dirs if we havn't already
|
# only search for the dirs if we havn't already
|
||||||
IF((NOT _IS_INC_DEF) OR (NOT _IS_INC_CONF_DEF) OR (NOT _IS_LIB_DEF) OR (NOT _IS_LIB_PATH_DEF))
|
IF((NOT _IS_INC_DEF) OR (NOT _IS_INC_CONF_DEF) OR (NOT _IS_LIB_DEF) OR (NOT _IS_LIB_PATH_DEF))
|
||||||
@@ -83,7 +74,14 @@ IF((NOT _IS_INC_DEF) OR (NOT _IS_INC_CONF_DEF) OR (NOT _IS_LIB_DEF) OR (NOT _IS_
|
|||||||
"dm;dmu;du;d" # debug
|
"dm;dmu;du;d" # debug
|
||||||
)
|
)
|
||||||
|
|
||||||
|
STRING(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION})
|
||||||
|
|
||||||
|
SET(_python_SEARCH_DIRS
|
||||||
|
${PYTHON_ROOT_DIR}
|
||||||
|
"$ENV{HOME}/py${_PYTHON_VERSION_NO_DOTS}"
|
||||||
|
"/opt/py${_PYTHON_VERSION_NO_DOTS}"
|
||||||
|
"/opt/lib/python-${PYTHON_VERSION}"
|
||||||
|
)
|
||||||
|
|
||||||
FOREACH(_CURRENT_ABI_FLAGS ${_python_ABI_FLAGS})
|
FOREACH(_CURRENT_ABI_FLAGS ${_python_ABI_FLAGS})
|
||||||
#IF(CMAKE_BUILD_TYPE STREQUAL Debug)
|
#IF(CMAKE_BUILD_TYPE STREQUAL Debug)
|
||||||
@@ -148,7 +146,6 @@ IF((NOT _IS_INC_DEF) OR (NOT _IS_INC_CONF_DEF) OR (NOT _IS_LIB_DEF) OR (NOT _IS_
|
|||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
IF(PYTHON_LIBRARY AND PYTHON_LIBPATH AND PYTHON_INCLUDE_DIR AND PYTHON_INCLUDE_CONFIG_DIR)
|
IF(PYTHON_LIBRARY AND PYTHON_LIBPATH AND PYTHON_INCLUDE_DIR AND PYTHON_INCLUDE_CONFIG_DIR)
|
||||||
SET(_PYTHON_ABI_FLAGS "${_CURRENT_ABI_FLAGS}")
|
|
||||||
break()
|
break()
|
||||||
ELSE()
|
ELSE()
|
||||||
# ensure we dont find values from 2 different ABI versions
|
# ensure we dont find values from 2 different ABI versions
|
||||||
@@ -171,6 +168,7 @@ IF((NOT _IS_INC_DEF) OR (NOT _IS_INC_CONF_DEF) OR (NOT _IS_LIB_DEF) OR (NOT _IS_
|
|||||||
UNSET(_CURRENT_PATH)
|
UNSET(_CURRENT_PATH)
|
||||||
|
|
||||||
UNSET(_python_ABI_FLAGS)
|
UNSET(_python_ABI_FLAGS)
|
||||||
|
UNSET(_python_SEARCH_DIRS)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
UNSET(_IS_INC_DEF)
|
UNSET(_IS_INC_DEF)
|
||||||
@@ -189,41 +187,17 @@ IF(PYTHONLIBSUNIX_FOUND)
|
|||||||
SET(PYTHON_INCLUDE_DIRS ${PYTHON_INCLUDE_DIR} ${PYTHON_INCLUDE_CONFIG_DIR})
|
SET(PYTHON_INCLUDE_DIRS ${PYTHON_INCLUDE_DIR} ${PYTHON_INCLUDE_CONFIG_DIR})
|
||||||
SET(PYTHON_LIBRARIES ${PYTHON_LIBRARY})
|
SET(PYTHON_LIBRARIES ${PYTHON_LIBRARY})
|
||||||
|
|
||||||
FIND_FILE(PYTHON_SITE_PACKAGES
|
|
||||||
NAMES
|
|
||||||
# debian specific
|
|
||||||
dist-packages
|
|
||||||
site-packages
|
|
||||||
HINTS
|
|
||||||
${PYTHON_LIBPATH}/python${PYTHON_VERSION}
|
|
||||||
)
|
|
||||||
|
|
||||||
# we need this for installation
|
# we need this for installation
|
||||||
# XXX No more valid with debian-like py3.5 packages...
|
# XXX No more valid with debian-like py3.4 packages...
|
||||||
# GET_FILENAME_COMPONENT(PYTHON_LIBPATH ${PYTHON_LIBRARY} PATH)
|
# GET_FILENAME_COMPONENT(PYTHON_LIBPATH ${PYTHON_LIBRARY} PATH)
|
||||||
|
|
||||||
# not required for build, just used when bundling Python.
|
# not used
|
||||||
FIND_PROGRAM(
|
# SET(PYTHON_BINARY ${PYTHON_EXECUTABLE} CACHE STRING "")
|
||||||
PYTHON_EXECUTABLE
|
|
||||||
NAMES
|
|
||||||
"python${PYTHON_VERSION}${_PYTHON_ABI_FLAGS}"
|
|
||||||
"python${PYTHON_VERSION}"
|
|
||||||
"python"
|
|
||||||
HINTS
|
|
||||||
${_python_SEARCH_DIRS}
|
|
||||||
PATH_SUFFIXES bin
|
|
||||||
)
|
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
UNSET(_PYTHON_VERSION_NO_DOTS)
|
|
||||||
UNSET(_PYTHON_ABI_FLAGS)
|
|
||||||
UNSET(_python_SEARCH_DIRS)
|
|
||||||
|
|
||||||
MARK_AS_ADVANCED(
|
MARK_AS_ADVANCED(
|
||||||
PYTHON_INCLUDE_DIR
|
PYTHON_INCLUDE_DIR
|
||||||
PYTHON_INCLUDE_CONFIG_DIR
|
PYTHON_INCLUDE_CONFIG_DIR
|
||||||
PYTHON_LIBRARY
|
PYTHON_LIBRARY
|
||||||
PYTHON_LIBPATH
|
PYTHON_LIBPATH
|
||||||
PYTHON_SITE_PACKAGES
|
|
||||||
PYTHON_EXECUTABLE
|
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,72 +0,0 @@
|
|||||||
# - Find SDL library
|
|
||||||
# Find the native SDL includes and library
|
|
||||||
# This module defines
|
|
||||||
# SDL2_INCLUDE_DIRS, where to find SDL.h, Set when SDL2_INCLUDE_DIR is found.
|
|
||||||
# SDL2_LIBRARIES, libraries to link against to use SDL.
|
|
||||||
# SDL2_ROOT_DIR, The base directory to search for SDL.
|
|
||||||
# This can also be an environment variable.
|
|
||||||
# SDL2_FOUND, If false, do not try to use SDL.
|
|
||||||
#
|
|
||||||
# also defined, but not for general use are
|
|
||||||
# SDL2_LIBRARY, where to find the SDL library.
|
|
||||||
|
|
||||||
#=============================================================================
|
|
||||||
# Copyright 2015 Blender Foundation.
|
|
||||||
#
|
|
||||||
# Distributed under the OSI-approved BSD License (the "License");
|
|
||||||
# see accompanying file Copyright.txt for details.
|
|
||||||
#
|
|
||||||
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
|
||||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
# See the License for more information.
|
|
||||||
#=============================================================================
|
|
||||||
|
|
||||||
# If SDL2_ROOT_DIR was defined in the environment, use it.
|
|
||||||
IF(NOT SDL2_ROOT_DIR AND NOT $ENV{SDL2_ROOT_DIR} STREQUAL "")
|
|
||||||
SET(SDL2_ROOT_DIR $ENV{SDL2_ROOT_DIR})
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
SET(_sdl2_SEARCH_DIRS
|
|
||||||
${SDL2_ROOT_DIR}
|
|
||||||
~/Library/Frameworks
|
|
||||||
/Library/Frameworks
|
|
||||||
/usr/local
|
|
||||||
/usr
|
|
||||||
/sw # Fink
|
|
||||||
/opt/local # DarwinPorts
|
|
||||||
/opt/csw # Blastwave
|
|
||||||
)
|
|
||||||
|
|
||||||
FIND_PATH(SDL2_INCLUDE_DIR
|
|
||||||
NAMES
|
|
||||||
SDL.h
|
|
||||||
HINTS
|
|
||||||
${_sdl2_SEARCH_DIRS}
|
|
||||||
PATH_SUFFIXES
|
|
||||||
include/SDL2 include
|
|
||||||
)
|
|
||||||
|
|
||||||
FIND_LIBRARY(SDL2_LIBRARY
|
|
||||||
NAMES
|
|
||||||
SDL2
|
|
||||||
HINTS
|
|
||||||
${_sdl2_SEARCH_DIRS}
|
|
||||||
PATH_SUFFIXES
|
|
||||||
lib64 lib
|
|
||||||
)
|
|
||||||
|
|
||||||
# handle the QUIETLY and REQUIRED arguments and set SDL2_FOUND to TRUE if
|
|
||||||
# all listed variables are TRUE
|
|
||||||
INCLUDE(FindPackageHandleStandardArgs)
|
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2 DEFAULT_MSG
|
|
||||||
SDL2_LIBRARY SDL2_INCLUDE_DIR)
|
|
||||||
|
|
||||||
IF(SDL2_FOUND)
|
|
||||||
SET(SDL2_LIBRARIES ${SDL2_LIBRARY})
|
|
||||||
SET(SDL2_INCLUDE_DIRS ${SDL2_INCLUDE_DIR})
|
|
||||||
ENDIF(SDL2_FOUND)
|
|
||||||
|
|
||||||
MARK_AS_ADVANCED(
|
|
||||||
SDL2_INCLUDE_DIR
|
|
||||||
SDL2_LIBRARY
|
|
||||||
)
|
|
||||||
@@ -1,73 +0,0 @@
|
|||||||
# - Find TBB library
|
|
||||||
# Find the native TBB includes and library
|
|
||||||
# This module defines
|
|
||||||
# TBB_INCLUDE_DIRS, where to find tbb.h, Set when
|
|
||||||
# TBB is found.
|
|
||||||
# TBB_LIBRARIES, libraries to link against to use TBB.
|
|
||||||
# TBB_ROOT_DIR, The base directory to search for TBB.
|
|
||||||
# This can also be an environment variable.
|
|
||||||
# TBB_FOUND, If false, do not try to use TBB.
|
|
||||||
#
|
|
||||||
# also defined, but not for general use are
|
|
||||||
# TBB_LIBRARY, where to find the TBB library.
|
|
||||||
|
|
||||||
#=============================================================================
|
|
||||||
# Copyright 2016 Blender Foundation.
|
|
||||||
#
|
|
||||||
# Distributed under the OSI-approved BSD License (the "License");
|
|
||||||
# see accompanying file Copyright.txt for details.
|
|
||||||
#
|
|
||||||
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
|
||||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
# See the License for more information.
|
|
||||||
#=============================================================================
|
|
||||||
|
|
||||||
# If TBB_ROOT_DIR was defined in the environment, use it.
|
|
||||||
IF(NOT TBB_ROOT_DIR AND NOT $ENV{TBB_ROOT_DIR} STREQUAL "")
|
|
||||||
SET(TBB_ROOT_DIR $ENV{TBB_ROOT_DIR})
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
SET(_tbb_SEARCH_DIRS
|
|
||||||
${TBB_ROOT_DIR}
|
|
||||||
/usr/local
|
|
||||||
/sw # Fink
|
|
||||||
/opt/local # DarwinPorts
|
|
||||||
/opt/csw # Blastwave
|
|
||||||
/opt/lib/tbb
|
|
||||||
)
|
|
||||||
|
|
||||||
FIND_PATH(TBB_INCLUDE_DIR
|
|
||||||
NAMES
|
|
||||||
tbb/tbb.h
|
|
||||||
HINTS
|
|
||||||
${_tbb_SEARCH_DIRS}
|
|
||||||
PATH_SUFFIXES
|
|
||||||
include
|
|
||||||
)
|
|
||||||
|
|
||||||
FIND_LIBRARY(TBB_LIBRARY
|
|
||||||
NAMES
|
|
||||||
tbb
|
|
||||||
HINTS
|
|
||||||
${_tbb_SEARCH_DIRS}
|
|
||||||
PATH_SUFFIXES
|
|
||||||
lib64 lib
|
|
||||||
)
|
|
||||||
|
|
||||||
# handle the QUIETLY and REQUIRED arguments and set TBB_FOUND to TRUE if
|
|
||||||
# all listed variables are TRUE
|
|
||||||
INCLUDE(FindPackageHandleStandardArgs)
|
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(TBB DEFAULT_MSG
|
|
||||||
TBB_LIBRARY TBB_INCLUDE_DIR)
|
|
||||||
|
|
||||||
IF(TBB_FOUND)
|
|
||||||
SET(TBB_LIBRARIES ${TBB_LIBRARY})
|
|
||||||
SET(TBB_INCLUDE_DIRS ${TBB_INCLUDE_DIR})
|
|
||||||
ELSE()
|
|
||||||
SET(TBB_TBB_FOUND FALSE)
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
MARK_AS_ADVANCED(
|
|
||||||
TBB_INCLUDE_DIR
|
|
||||||
TBB_LIBRARY
|
|
||||||
)
|
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
#
|
#
|
||||||
#=============================================================================
|
#=============================================================================
|
||||||
|
|
||||||
macro(BLENDER_SRC_GTEST_EX NAME SRC EXTRA_LIBS DO_ADD_TEST)
|
macro(BLENDER_SRC_GTEST NAME SRC EXTRA_LIBS)
|
||||||
if(WITH_GTESTS)
|
if(WITH_GTESTS)
|
||||||
get_property(_current_include_directories
|
get_property(_current_include_directories
|
||||||
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
@@ -20,44 +20,30 @@ macro(BLENDER_SRC_GTEST_EX NAME SRC EXTRA_LIBS DO_ADD_TEST)
|
|||||||
set(TEST_INC
|
set(TEST_INC
|
||||||
${_current_include_directories}
|
${_current_include_directories}
|
||||||
${CMAKE_SOURCE_DIR}/tests/gtests
|
${CMAKE_SOURCE_DIR}/tests/gtests
|
||||||
${CMAKE_SOURCE_DIR}/extern/glog/src
|
${CMAKE_SOURCE_DIR}/extern/libmv/third_party/glog/src
|
||||||
${CMAKE_SOURCE_DIR}/extern/gflags/src
|
${CMAKE_SOURCE_DIR}/extern/libmv/third_party/gflags
|
||||||
${CMAKE_SOURCE_DIR}/extern/gtest/include
|
${CMAKE_SOURCE_DIR}/extern/gtest/include
|
||||||
${CMAKE_SOURCE_DIR}/extern/gmock/include
|
|
||||||
)
|
)
|
||||||
unset(_current_include_directories)
|
unset(_current_include_directories)
|
||||||
|
|
||||||
add_executable(${NAME}_test ${SRC})
|
add_executable(${NAME}_test ${SRC})
|
||||||
target_link_libraries(${NAME}_test
|
target_link_libraries(${NAME}_test
|
||||||
${EXTRA_LIBS}
|
${EXTRA_LIBS}
|
||||||
${PLATFORM_LINKLIBS}
|
|
||||||
bf_testing_main
|
bf_testing_main
|
||||||
bf_intern_guardedalloc
|
bf_intern_guardedalloc
|
||||||
extern_gtest
|
extern_gtest
|
||||||
extern_gmock
|
|
||||||
# needed for glog
|
# needed for glog
|
||||||
${PTHREADS_LIBRARIES}
|
${PTHREADS_LIBRARIES}
|
||||||
extern_glog
|
extern_glog)
|
||||||
extern_gflags)
|
|
||||||
set_target_properties(${NAME}_test PROPERTIES
|
set_target_properties(${NAME}_test PROPERTIES
|
||||||
RUNTIME_OUTPUT_DIRECTORY "${TESTS_OUTPUT_DIR}"
|
RUNTIME_OUTPUT_DIRECTORY "${TESTS_OUTPUT_DIR}"
|
||||||
RUNTIME_OUTPUT_DIRECTORY_RELEASE "${TESTS_OUTPUT_DIR}"
|
RUNTIME_OUTPUT_DIRECTORY_RELEASE "${TESTS_OUTPUT_DIR}"
|
||||||
RUNTIME_OUTPUT_DIRECTORY_DEBUG "${TESTS_OUTPUT_DIR}"
|
RUNTIME_OUTPUT_DIRECTORY_DEBUG "${TESTS_OUTPUT_DIR}"
|
||||||
INCLUDE_DIRECTORIES "${TEST_INC}")
|
INCLUDE_DIRECTORIES "${TEST_INC}")
|
||||||
if(${DO_ADD_TEST})
|
add_test(${NAME}_test ${TESTS_OUTPUT_DIR}/${NAME}_test)
|
||||||
add_test(${NAME}_test ${TESTS_OUTPUT_DIR}/${NAME}_test)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
macro(BLENDER_SRC_GTEST NAME SRC EXTRA_LIBS)
|
|
||||||
BLENDER_SRC_GTEST_EX("${NAME}" "${SRC}" "${EXTRA_LIBS}" "TRUE")
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
macro(BLENDER_TEST NAME EXTRA_LIBS)
|
macro(BLENDER_TEST NAME EXTRA_LIBS)
|
||||||
BLENDER_SRC_GTEST_EX("${NAME}" "${NAME}_test.cc" "${EXTRA_LIBS}" "TRUE")
|
BLENDER_SRC_GTEST("${NAME}" "${NAME}_test.cc" "${EXTRA_LIBS}")
|
||||||
endmacro()
|
|
||||||
|
|
||||||
macro(BLENDER_TEST_PERFORMANCE NAME EXTRA_LIBS)
|
|
||||||
BLENDER_SRC_GTEST_EX("${NAME}" "${NAME}_test.cc" "${EXTRA_LIBS}" "FALSE")
|
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|||||||
@@ -1,10 +1,5 @@
|
|||||||
# This is called by cmake as an external process from
|
# This is called by cmake as an extermal process from
|
||||||
# ./source/creator/CMakeLists.txt to write ./source/creator/buildinfo.h
|
# ./source/creator/CMakeLists.txt to write ./source/creator/buildinfo.h
|
||||||
# Caller must define:
|
|
||||||
# SOURCE_DIR
|
|
||||||
# Optional overrides:
|
|
||||||
# BUILD_DATE
|
|
||||||
# BUILD_TIME
|
|
||||||
|
|
||||||
# Extract working copy information for SOURCE_DIR into MY_XXX variables
|
# Extract working copy information for SOURCE_DIR into MY_XXX variables
|
||||||
# with a default in case anything fails, for example when using git-svn
|
# with a default in case anything fails, for example when using git-svn
|
||||||
@@ -14,138 +9,132 @@ set(MY_WC_COMMIT_TIMESTAMP 0)
|
|||||||
|
|
||||||
# Guess if this is a git working copy and then look up the revision
|
# Guess if this is a git working copy and then look up the revision
|
||||||
if(EXISTS ${SOURCE_DIR}/.git)
|
if(EXISTS ${SOURCE_DIR}/.git)
|
||||||
execute_process(COMMAND git rev-parse --abbrev-ref HEAD
|
# The FindGit.cmake module is part of the standard distribution
|
||||||
WORKING_DIRECTORY ${SOURCE_DIR}
|
include(FindGit)
|
||||||
OUTPUT_VARIABLE MY_WC_BRANCH
|
if(GIT_FOUND)
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
message(STATUS "-- Found Git: ${GIT_EXECUTABLE}")
|
||||||
|
|
||||||
if(MY_WC_BRANCH STREQUAL "HEAD")
|
execute_process(COMMAND git rev-parse --abbrev-ref HEAD
|
||||||
# Detached HEAD, check whether commit hash is reachable
|
|
||||||
# in the master branch
|
|
||||||
execute_process(COMMAND git rev-parse --short HEAD
|
|
||||||
WORKING_DIRECTORY ${SOURCE_DIR}
|
WORKING_DIRECTORY ${SOURCE_DIR}
|
||||||
OUTPUT_VARIABLE MY_WC_HASH
|
OUTPUT_VARIABLE MY_WC_BRANCH
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
|
||||||
execute_process(COMMAND git branch --list master --contains ${MY_WC_HASH}
|
if(MY_WC_BRANCH STREQUAL "HEAD")
|
||||||
WORKING_DIRECTORY ${SOURCE_DIR}
|
# Detached HEAD, check whether commit hash is reachable
|
||||||
OUTPUT_VARIABLE _git_contains_check
|
# in the master branch
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
|
|
||||||
STRING(REGEX REPLACE "^[ \t]+" "" _git_contains_check "${_git_contains_check}")
|
|
||||||
if(_git_contains_check STREQUAL "master")
|
|
||||||
set(MY_WC_BRANCH "master")
|
|
||||||
else()
|
|
||||||
execute_process(COMMAND git show-ref --tags -d
|
|
||||||
WORKING_DIRECTORY ${SOURCE_DIR}
|
|
||||||
OUTPUT_VARIABLE _git_tag_hashes
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
|
|
||||||
execute_process(COMMAND git rev-parse HEAD
|
|
||||||
WORKING_DIRECTORY ${SOURCE_DIR}
|
|
||||||
OUTPUT_VARIABLE _git_head_hash
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
|
|
||||||
if(_git_tag_hashes MATCHES "${_git_head_hash}")
|
|
||||||
set(MY_WC_BRANCH "master")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
unset(_git_tag_hashes)
|
|
||||||
unset(_git_head_hashs)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
unset(_git_contains_check)
|
|
||||||
else()
|
|
||||||
execute_process(COMMAND git log HEAD..@{u}
|
|
||||||
WORKING_DIRECTORY ${SOURCE_DIR}
|
|
||||||
OUTPUT_VARIABLE _git_below_check
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
||||||
ERROR_QUIET)
|
|
||||||
if(NOT _git_below_check STREQUAL "")
|
|
||||||
# If there're commits between HEAD and upstream this means
|
|
||||||
# that we're reset-ed to older revision. Use it's hash then.
|
|
||||||
execute_process(COMMAND git rev-parse --short HEAD
|
execute_process(COMMAND git rev-parse --short HEAD
|
||||||
WORKING_DIRECTORY ${SOURCE_DIR}
|
WORKING_DIRECTORY ${SOURCE_DIR}
|
||||||
OUTPUT_VARIABLE MY_WC_HASH
|
OUTPUT_VARIABLE MY_WC_HASH
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
else()
|
|
||||||
execute_process(COMMAND git rev-parse --short @{u}
|
|
||||||
WORKING_DIRECTORY ${SOURCE_DIR}
|
|
||||||
OUTPUT_VARIABLE MY_WC_HASH
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
||||||
ERROR_QUIET)
|
|
||||||
|
|
||||||
if(MY_WC_HASH STREQUAL "")
|
execute_process(COMMAND git branch --list master --contains ${MY_WC_HASH}
|
||||||
# Local branch, not set to upstream.
|
WORKING_DIRECTORY ${SOURCE_DIR}
|
||||||
# Well, let's use HEAD for now
|
OUTPUT_VARIABLE _git_contains_check
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
|
||||||
|
STRING(REGEX REPLACE "^[ \t]+" "" _git_contains_check "${_git_contains_check}")
|
||||||
|
if(_git_contains_check STREQUAL "master")
|
||||||
|
set(MY_WC_BRANCH "master")
|
||||||
|
else()
|
||||||
|
execute_process(COMMAND git show-ref --tags -d
|
||||||
|
WORKING_DIRECTORY ${SOURCE_DIR}
|
||||||
|
OUTPUT_VARIABLE _git_tag_hashes
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
|
||||||
|
execute_process(COMMAND git rev-parse HEAD
|
||||||
|
WORKING_DIRECTORY ${SOURCE_DIR}
|
||||||
|
OUTPUT_VARIABLE _git_head_hash
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
|
||||||
|
if(_git_tag_hashes MATCHES "${_git_head_hash}")
|
||||||
|
set(MY_WC_BRANCH "master")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
unset(_git_tag_hashes)
|
||||||
|
unset(_git_head_hashs)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
unset(_git_contains_check)
|
||||||
|
else()
|
||||||
|
execute_process(COMMAND git log HEAD..@{u}
|
||||||
|
WORKING_DIRECTORY ${SOURCE_DIR}
|
||||||
|
OUTPUT_VARIABLE _git_below_check
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
if(NOT _git_below_check STREQUAL "")
|
||||||
|
# If there're commits between HEAD and upstream this means
|
||||||
|
# that we're reset-ed to older revision. Use it's hash then.
|
||||||
execute_process(COMMAND git rev-parse --short HEAD
|
execute_process(COMMAND git rev-parse --short HEAD
|
||||||
WORKING_DIRECTORY ${SOURCE_DIR}
|
WORKING_DIRECTORY ${SOURCE_DIR}
|
||||||
OUTPUT_VARIABLE MY_WC_HASH
|
OUTPUT_VARIABLE MY_WC_HASH
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
else()
|
||||||
|
execute_process(COMMAND git rev-parse --short @{u}
|
||||||
|
WORKING_DIRECTORY ${SOURCE_DIR}
|
||||||
|
OUTPUT_VARIABLE MY_WC_HASH
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
ERROR_QUIET)
|
||||||
|
|
||||||
|
if(MY_WC_HASH STREQUAL "")
|
||||||
|
# Local branch, not set to upstream.
|
||||||
|
# Well, let's use HEAD for now
|
||||||
|
execute_process(COMMAND git rev-parse --short HEAD
|
||||||
|
WORKING_DIRECTORY ${SOURCE_DIR}
|
||||||
|
OUTPUT_VARIABLE MY_WC_HASH
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(MY_WC_BRANCH MATCHES "^blender-v")
|
||||||
|
set(MY_WC_BRANCH "master")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
unset(_git_below_check)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(MY_WC_BRANCH MATCHES "^blender-v")
|
execute_process(COMMAND git log -1 --format=%ct
|
||||||
set(MY_WC_BRANCH "master")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
unset(_git_below_check)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
execute_process(COMMAND git log -1 --format=%ct
|
|
||||||
WORKING_DIRECTORY ${SOURCE_DIR}
|
|
||||||
OUTPUT_VARIABLE MY_WC_COMMIT_TIMESTAMP
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
# May fail in rare cases
|
|
||||||
if(MY_WC_COMMIT_TIMESTAMP STREQUAL "")
|
|
||||||
set(MY_WC_COMMIT_TIMESTAMP 0)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Update GIT index before getting dirty files
|
|
||||||
execute_process(COMMAND git update-index -q --refresh
|
|
||||||
WORKING_DIRECTORY ${SOURCE_DIR}
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
|
|
||||||
execute_process(COMMAND git diff-index --name-only HEAD --
|
|
||||||
WORKING_DIRECTORY ${SOURCE_DIR}
|
|
||||||
OUTPUT_VARIABLE _git_changed_files
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
|
|
||||||
if(NOT _git_changed_files STREQUAL "")
|
|
||||||
set(MY_WC_BRANCH "${MY_WC_BRANCH} (modified)")
|
|
||||||
else()
|
|
||||||
# Unpushed commits are also considered local modifications
|
|
||||||
execute_process(COMMAND git log @{u}..
|
|
||||||
WORKING_DIRECTORY ${SOURCE_DIR}
|
WORKING_DIRECTORY ${SOURCE_DIR}
|
||||||
OUTPUT_VARIABLE _git_unpushed_log
|
OUTPUT_VARIABLE MY_WC_COMMIT_TIMESTAMP
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
ERROR_QUIET)
|
|
||||||
if(NOT _git_unpushed_log STREQUAL "")
|
|
||||||
set(MY_WC_BRANCH "${MY_WC_BRANCH} (modified)")
|
|
||||||
endif()
|
|
||||||
unset(_git_unpushed_log)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
unset(_git_changed_files)
|
# Update GIT index before getting dirty files
|
||||||
|
execute_process(COMMAND git update-index -q --refresh
|
||||||
|
WORKING_DIRECTORY ${SOURCE_DIR}
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
|
||||||
|
execute_process(COMMAND git diff-index --name-only HEAD --
|
||||||
|
WORKING_DIRECTORY ${SOURCE_DIR}
|
||||||
|
OUTPUT_VARIABLE _git_changed_files
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
|
||||||
|
if(NOT _git_changed_files STREQUAL "")
|
||||||
|
set(MY_WC_BRANCH "${MY_WC_BRANCH} (modified)")
|
||||||
|
else()
|
||||||
|
# Unpushed commits are also considered local modifications
|
||||||
|
execute_process(COMMAND git log @{u}..
|
||||||
|
WORKING_DIRECTORY ${SOURCE_DIR}
|
||||||
|
OUTPUT_VARIABLE _git_unpushed_log
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
ERROR_QUIET)
|
||||||
|
if(NOT _git_unpushed_log STREQUAL "")
|
||||||
|
set(MY_WC_BRANCH "${MY_WC_BRANCH} (modified)")
|
||||||
|
endif()
|
||||||
|
unset(_git_unpushed_log)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
unset(_git_changed_files)
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# BUILD_PLATFORM and BUILD_PLATFORM are taken from CMake
|
# BUILD_PLATFORM and BUILD_PLATFORM are taken from CMake
|
||||||
# but BUILD_DATE and BUILD_TIME are platform dependent
|
# but BUILD_DATE and BUILD_TIME are platform dependent
|
||||||
if(UNIX)
|
if(UNIX)
|
||||||
if(NOT BUILD_DATE)
|
execute_process(COMMAND date "+%Y-%m-%d" OUTPUT_VARIABLE BUILD_DATE OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
execute_process(COMMAND date "+%Y-%m-%d" OUTPUT_VARIABLE BUILD_DATE OUTPUT_STRIP_TRAILING_WHITESPACE)
|
execute_process(COMMAND date "+%H:%M:%S" OUTPUT_VARIABLE BUILD_TIME OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
endif()
|
endif()
|
||||||
if(NOT BUILD_TIME)
|
if(WIN32)
|
||||||
execute_process(COMMAND date "+%H:%M:%S" OUTPUT_VARIABLE BUILD_TIME OUTPUT_STRIP_TRAILING_WHITESPACE)
|
execute_process(COMMAND cmd /c date /t OUTPUT_VARIABLE BUILD_DATE OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
endif()
|
execute_process(COMMAND cmd /c time /t OUTPUT_VARIABLE BUILD_TIME OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
elseif(WIN32)
|
|
||||||
if(NOT BUILD_DATE)
|
|
||||||
execute_process(COMMAND cmd /c date /t OUTPUT_VARIABLE BUILD_DATE OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
endif()
|
|
||||||
if(NOT BUILD_TIME)
|
|
||||||
execute_process(COMMAND cmd /c time /t OUTPUT_VARIABLE BUILD_TIME OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Write a file with the BUILD_HASH define
|
# Write a file with the BUILD_HASH define
|
||||||
|
|||||||
@@ -239,8 +239,8 @@ def file_check_arg_sizes(tu):
|
|||||||
if 0:
|
if 0:
|
||||||
print("---",
|
print("---",
|
||||||
" <~> ".join(
|
" <~> ".join(
|
||||||
[" ".join([t.spelling for t in C.get_tokens()])
|
[" ".join([t.spelling for t in C.get_tokens()])
|
||||||
for C in node.get_children()]
|
for C in node.get_children()]
|
||||||
))
|
))
|
||||||
# print(node.location)
|
# print(node.location)
|
||||||
|
|
||||||
|
|||||||
@@ -28,17 +28,13 @@ if not sys.version.startswith("3"):
|
|||||||
sys.version.partition(" ")[0])
|
sys.version.partition(" ")[0])
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
from cmake_consistency_check_config import (
|
from cmake_consistency_check_config import IGNORE, UTF8_CHECK, SOURCE_DIR
|
||||||
IGNORE,
|
|
||||||
UTF8_CHECK,
|
|
||||||
SOURCE_DIR,
|
|
||||||
BUILD_DIR,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from os.path import join, dirname, normpath, splitext
|
from os.path import join, dirname, normpath, splitext
|
||||||
|
|
||||||
|
print("Scanning:", SOURCE_DIR)
|
||||||
|
|
||||||
global_h = set()
|
global_h = set()
|
||||||
global_c = set()
|
global_c = set()
|
||||||
global_refs = {}
|
global_refs = {}
|
||||||
@@ -138,7 +134,6 @@ def cmake_get_src(f):
|
|||||||
|
|
||||||
if found:
|
if found:
|
||||||
cmake_base = dirname(f)
|
cmake_base = dirname(f)
|
||||||
cmake_base_bin = os.path.join(BUILD_DIR, os.path.relpath(cmake_base, SOURCE_DIR))
|
|
||||||
|
|
||||||
while it is not None:
|
while it is not None:
|
||||||
i += 1
|
i += 1
|
||||||
@@ -159,8 +154,6 @@ def cmake_get_src(f):
|
|||||||
|
|
||||||
# replace dirs
|
# replace dirs
|
||||||
l = l.replace("${CMAKE_CURRENT_SOURCE_DIR}", cmake_base)
|
l = l.replace("${CMAKE_CURRENT_SOURCE_DIR}", cmake_base)
|
||||||
l = l.replace("${CMAKE_CURRENT_BINARY_DIR}", cmake_base_bin)
|
|
||||||
l = l.strip('"')
|
|
||||||
|
|
||||||
if not l:
|
if not l:
|
||||||
pass
|
pass
|
||||||
@@ -194,22 +187,17 @@ def cmake_get_src(f):
|
|||||||
pass
|
pass
|
||||||
elif new_file.endswith(".osl"): # open shading language
|
elif new_file.endswith(".osl"): # open shading language
|
||||||
pass
|
pass
|
||||||
elif new_file.endswith(".glsl"):
|
|
||||||
pass
|
|
||||||
else:
|
else:
|
||||||
raise Exception("unknown file type - not c or h %s -> %s" % (f, new_file))
|
raise Exception("unknown file type - not c or h %s -> %s" % (f, new_file))
|
||||||
|
|
||||||
elif context_name == "INC":
|
elif context_name == "INC":
|
||||||
if new_file.startswith(BUILD_DIR):
|
if os.path.isdir(new_file):
|
||||||
# assume generated path
|
|
||||||
pass
|
|
||||||
elif os.path.isdir(new_file):
|
|
||||||
new_path_rel = os.path.relpath(new_file, cmake_base)
|
new_path_rel = os.path.relpath(new_file, cmake_base)
|
||||||
|
|
||||||
if new_path_rel != l:
|
if new_path_rel != l:
|
||||||
print("overly relative path:\n %s:%d\n %s\n %s" % (f, i, l, new_path_rel))
|
print("overly relative path:\n %s:%d\n %s\n %s" % (f, i, l, new_path_rel))
|
||||||
|
|
||||||
# # Save time. just replace the line
|
## Save time. just replace the line
|
||||||
# replace_line(f, i - 1, new_path_rel)
|
# replace_line(f, i - 1, new_path_rel)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
@@ -240,99 +228,84 @@ def cmake_get_src(f):
|
|||||||
filen.close()
|
filen.close()
|
||||||
|
|
||||||
|
|
||||||
def is_ignore(f, ignore_used):
|
for cmake in source_list(SOURCE_DIR, is_cmake):
|
||||||
for index, ig in enumerate(IGNORE):
|
cmake_get_src(cmake)
|
||||||
|
|
||||||
|
|
||||||
|
def is_ignore(f):
|
||||||
|
for ig in IGNORE:
|
||||||
if ig in f:
|
if ig in f:
|
||||||
ignore_used[index] = True
|
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
def main():
|
# First do stupid check, do these files exist?
|
||||||
|
print("\nChecking for missing references:")
|
||||||
|
is_err = False
|
||||||
|
errs = []
|
||||||
|
for f in (global_h | global_c):
|
||||||
|
if f.endswith("dna.c"):
|
||||||
|
continue
|
||||||
|
|
||||||
print("Scanning:", SOURCE_DIR)
|
if not os.path.exists(f):
|
||||||
|
refs = global_refs[f]
|
||||||
|
if refs:
|
||||||
|
for cf, i in refs:
|
||||||
|
errs.append((cf, i))
|
||||||
|
else:
|
||||||
|
raise Exception("CMake referenecs missing, internal error, aborting!")
|
||||||
|
is_err = True
|
||||||
|
|
||||||
for cmake in source_list(SOURCE_DIR, is_cmake):
|
errs.sort()
|
||||||
cmake_get_src(cmake)
|
errs.reverse()
|
||||||
|
for cf, i in errs:
|
||||||
# First do stupid check, do these files exist?
|
print("%s:%d" % (cf, i))
|
||||||
print("\nChecking for missing references:")
|
# Write a 'sed' script, useful if we get a lot of these
|
||||||
is_err = False
|
# print("sed '%dd' '%s' > '%s.tmp' ; mv '%s.tmp' '%s'" % (i, cf, cf, cf, cf))
|
||||||
errs = []
|
|
||||||
for f in (global_h | global_c):
|
|
||||||
if f.startswith(BUILD_DIR):
|
|
||||||
continue
|
|
||||||
|
|
||||||
if not os.path.exists(f):
|
|
||||||
refs = global_refs[f]
|
|
||||||
if refs:
|
|
||||||
for cf, i in refs:
|
|
||||||
errs.append((cf, i))
|
|
||||||
else:
|
|
||||||
raise Exception("CMake referenecs missing, internal error, aborting!")
|
|
||||||
is_err = True
|
|
||||||
|
|
||||||
errs.sort()
|
|
||||||
errs.reverse()
|
|
||||||
for cf, i in errs:
|
|
||||||
print("%s:%d" % (cf, i))
|
|
||||||
# Write a 'sed' script, useful if we get a lot of these
|
|
||||||
# print("sed '%dd' '%s' > '%s.tmp' ; mv '%s.tmp' '%s'" % (i, cf, cf, cf, cf))
|
|
||||||
|
|
||||||
if is_err:
|
|
||||||
raise Exception("CMake referenecs missing files, aborting!")
|
|
||||||
del is_err
|
|
||||||
del errs
|
|
||||||
|
|
||||||
ignore_used = [False] * len(IGNORE)
|
|
||||||
|
|
||||||
# now check on files not accounted for.
|
|
||||||
print("\nC/C++ Files CMake doesnt know about...")
|
|
||||||
for cf in sorted(source_list(SOURCE_DIR, is_c)):
|
|
||||||
if not is_ignore(cf, ignore_used):
|
|
||||||
if cf not in global_c:
|
|
||||||
print("missing_c: ", cf)
|
|
||||||
|
|
||||||
# check if automake builds a corrasponding .o file.
|
|
||||||
'''
|
|
||||||
if cf in global_c:
|
|
||||||
out1 = os.path.splitext(cf)[0] + ".o"
|
|
||||||
out2 = os.path.splitext(cf)[0] + ".Po"
|
|
||||||
out2_dir, out2_file = out2 = os.path.split(out2)
|
|
||||||
out2 = os.path.join(out2_dir, ".deps", out2_file)
|
|
||||||
if not os.path.exists(out1) and not os.path.exists(out2):
|
|
||||||
print("bad_c: ", cf)
|
|
||||||
'''
|
|
||||||
|
|
||||||
print("\nC/C++ Headers CMake doesnt know about...")
|
|
||||||
for hf in sorted(source_list(SOURCE_DIR, is_c_header)):
|
|
||||||
if not is_ignore(hf, ignore_used):
|
|
||||||
if hf not in global_h:
|
|
||||||
print("missing_h: ", hf)
|
|
||||||
|
|
||||||
if UTF8_CHECK:
|
|
||||||
# test encoding
|
|
||||||
import traceback
|
|
||||||
for files in (global_c, global_h):
|
|
||||||
for f in sorted(files):
|
|
||||||
if os.path.exists(f):
|
|
||||||
# ignore outside of our source tree
|
|
||||||
if "extern" not in f:
|
|
||||||
i = 1
|
|
||||||
try:
|
|
||||||
for l in open(f, "r", encoding="utf8"):
|
|
||||||
i += 1
|
|
||||||
except UnicodeDecodeError:
|
|
||||||
print("Non utf8: %s:%d" % (f, i))
|
|
||||||
if i > 1:
|
|
||||||
traceback.print_exc()
|
|
||||||
|
|
||||||
# Check ignores aren't stale
|
|
||||||
print("\nCheck for unused 'IGNORE' paths...")
|
|
||||||
for index, ig in enumerate(IGNORE):
|
|
||||||
if not ignore_used[index]:
|
|
||||||
print("unused ignore: %r" % ig)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if is_err:
|
||||||
main()
|
raise Exception("CMake referenecs missing files, aborting!")
|
||||||
|
del is_err
|
||||||
|
del errs
|
||||||
|
|
||||||
|
# now check on files not accounted for.
|
||||||
|
print("\nC/C++ Files CMake doesnt know about...")
|
||||||
|
for cf in sorted(source_list(SOURCE_DIR, is_c)):
|
||||||
|
if not is_ignore(cf):
|
||||||
|
if cf not in global_c:
|
||||||
|
print("missing_c: ", cf)
|
||||||
|
|
||||||
|
# check if automake builds a corrasponding .o file.
|
||||||
|
'''
|
||||||
|
if cf in global_c:
|
||||||
|
out1 = os.path.splitext(cf)[0] + ".o"
|
||||||
|
out2 = os.path.splitext(cf)[0] + ".Po"
|
||||||
|
out2_dir, out2_file = out2 = os.path.split(out2)
|
||||||
|
out2 = os.path.join(out2_dir, ".deps", out2_file)
|
||||||
|
if not os.path.exists(out1) and not os.path.exists(out2):
|
||||||
|
print("bad_c: ", cf)
|
||||||
|
'''
|
||||||
|
|
||||||
|
print("\nC/C++ Headers CMake doesnt know about...")
|
||||||
|
for hf in sorted(source_list(SOURCE_DIR, is_c_header)):
|
||||||
|
if not is_ignore(hf):
|
||||||
|
if hf not in global_h:
|
||||||
|
print("missing_h: ", hf)
|
||||||
|
|
||||||
|
if UTF8_CHECK:
|
||||||
|
# test encoding
|
||||||
|
import traceback
|
||||||
|
for files in (global_c, global_h):
|
||||||
|
for f in sorted(files):
|
||||||
|
if os.path.exists(f):
|
||||||
|
# ignore outside of our source tree
|
||||||
|
if "extern" not in f:
|
||||||
|
i = 1
|
||||||
|
try:
|
||||||
|
for l in open(f, "r", encoding="utf8"):
|
||||||
|
i += 1
|
||||||
|
except:
|
||||||
|
print("Non utf8: %s:%d" % (f, i))
|
||||||
|
if i > 1:
|
||||||
|
traceback.print_exc()
|
||||||
|
|||||||
@@ -3,9 +3,16 @@ import os
|
|||||||
IGNORE = (
|
IGNORE = (
|
||||||
"/test/",
|
"/test/",
|
||||||
"/tests/gtests/",
|
"/tests/gtests/",
|
||||||
|
"/BSP_GhostTest/",
|
||||||
"/release/",
|
"/release/",
|
||||||
|
"/xembed/",
|
||||||
|
"/TerraplayNetwork/",
|
||||||
|
"/ik_glut_test/",
|
||||||
|
|
||||||
# specific source files
|
# specific source files
|
||||||
|
"extern/Eigen2/Eigen/src/Cholesky/CholeskyInstantiations.cpp",
|
||||||
|
"extern/Eigen2/Eigen/src/Core/CoreInstantiations.cpp",
|
||||||
|
"extern/Eigen2/Eigen/src/QR/QrInstantiations.cpp",
|
||||||
"extern/bullet2/src/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp",
|
"extern/bullet2/src/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp",
|
||||||
"extern/bullet2/src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp",
|
"extern/bullet2/src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp",
|
||||||
"extern/bullet2/src/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp",
|
"extern/bullet2/src/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp",
|
||||||
@@ -14,8 +21,31 @@ IGNORE = (
|
|||||||
"extern/bullet2/src/BulletDynamics/Character/btKinematicCharacterController.cpp",
|
"extern/bullet2/src/BulletDynamics/Character/btKinematicCharacterController.cpp",
|
||||||
"extern/bullet2/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp",
|
"extern/bullet2/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp",
|
||||||
"extern/bullet2/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp",
|
"extern/bullet2/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp",
|
||||||
|
"extern/eltopo/common/meshes/ObjLoader.cpp",
|
||||||
|
"extern/eltopo/common/meshes/meshloader.cpp",
|
||||||
|
"extern/eltopo/common/openglutils.cpp",
|
||||||
|
"extern/eltopo/eltopo3d/broadphase_blenderbvh.cpp",
|
||||||
|
"source/blender/imbuf/intern/imbuf_cocoa.m",
|
||||||
|
"extern/recastnavigation/Recast/Source/RecastLog.cpp",
|
||||||
|
"extern/recastnavigation/Recast/Source/RecastTimer.cpp",
|
||||||
"intern/audaspace/SRC/AUD_SRCResampleFactory.cpp",
|
"intern/audaspace/SRC/AUD_SRCResampleFactory.cpp",
|
||||||
"intern/audaspace/SRC/AUD_SRCResampleReader.cpp",
|
"intern/audaspace/SRC/AUD_SRCResampleReader.cpp",
|
||||||
|
"intern/cycles/render/film_response.cpp",
|
||||||
|
"extern/libmv/third_party/ceres/internal/ceres/generated/schur_eliminator_2_2_2.cc",
|
||||||
|
"extern/libmv/third_party/ceres/internal/ceres/generated/schur_eliminator_2_2_3.cc",
|
||||||
|
"extern/libmv/third_party/ceres/internal/ceres/generated/schur_eliminator_2_2_4.cc",
|
||||||
|
"extern/libmv/third_party/ceres/internal/ceres/generated/schur_eliminator_2_2_d.cc",
|
||||||
|
"extern/libmv/third_party/ceres/internal/ceres/generated/schur_eliminator_2_3_3.cc",
|
||||||
|
"extern/libmv/third_party/ceres/internal/ceres/generated/schur_eliminator_2_3_4.cc",
|
||||||
|
"extern/libmv/third_party/ceres/internal/ceres/generated/schur_eliminator_2_3_9.cc",
|
||||||
|
"extern/libmv/third_party/ceres/internal/ceres/generated/schur_eliminator_2_3_d.cc",
|
||||||
|
"extern/libmv/third_party/ceres/internal/ceres/generated/schur_eliminator_2_4_3.cc",
|
||||||
|
"extern/libmv/third_party/ceres/internal/ceres/generated/schur_eliminator_2_4_4.cc",
|
||||||
|
"extern/libmv/third_party/ceres/internal/ceres/generated/schur_eliminator_2_4_d.cc",
|
||||||
|
"extern/libmv/third_party/ceres/internal/ceres/generated/schur_eliminator_4_4_2.cc",
|
||||||
|
"extern/libmv/third_party/ceres/internal/ceres/generated/schur_eliminator_4_4_3.cc",
|
||||||
|
"extern/libmv/third_party/ceres/internal/ceres/generated/schur_eliminator_4_4_4.cc",
|
||||||
|
"extern/libmv/third_party/ceres/internal/ceres/generated/schur_eliminator_4_4_d.cc",
|
||||||
|
|
||||||
"extern/bullet2/src/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h",
|
"extern/bullet2/src/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h",
|
||||||
"extern/bullet2/src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h",
|
"extern/bullet2/src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h",
|
||||||
@@ -25,17 +55,22 @@ IGNORE = (
|
|||||||
"extern/bullet2/src/BulletDynamics/Character/btKinematicCharacterController.h",
|
"extern/bullet2/src/BulletDynamics/Character/btKinematicCharacterController.h",
|
||||||
"extern/bullet2/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.h",
|
"extern/bullet2/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.h",
|
||||||
"extern/bullet2/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.h",
|
"extern/bullet2/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.h",
|
||||||
"extern/carve/include/carve/config.h",
|
"extern/eltopo/common/meshes/Edge.hpp",
|
||||||
"extern/carve/include/carve/random/random.h",
|
"extern/eltopo/common/meshes/ObjLoader.hpp",
|
||||||
"extern/carve/patches/files/config.h",
|
"extern/eltopo/common/meshes/TriangleIndex.hpp",
|
||||||
"extern/carve/patches/files/random.h",
|
"extern/eltopo/common/meshes/meshloader.h",
|
||||||
|
"extern/eltopo/eltopo3d/broadphase_blenderbvh.h",
|
||||||
|
"extern/recastnavigation/Recast/Include/RecastLog.h",
|
||||||
|
"extern/recastnavigation/Recast/Include/RecastTimer.h",
|
||||||
"intern/audaspace/SRC/AUD_SRCResampleFactory.h",
|
"intern/audaspace/SRC/AUD_SRCResampleFactory.h",
|
||||||
"intern/audaspace/SRC/AUD_SRCResampleReader.h",
|
"intern/audaspace/SRC/AUD_SRCResampleReader.h",
|
||||||
)
|
"intern/cycles/render/film_response.h",
|
||||||
|
"extern/carve/include/carve/config.h",
|
||||||
|
"extern/carve/include/carve/external/boost/random.hpp",
|
||||||
|
"extern/carve/patches/files/config.h",
|
||||||
|
"extern/carve/patches/files/random.hpp",
|
||||||
|
)
|
||||||
|
|
||||||
UTF8_CHECK = True
|
UTF8_CHECK = True
|
||||||
|
|
||||||
SOURCE_DIR = os.path.normpath(os.path.abspath(os.path.normpath(os.path.join(os.path.dirname(__file__), "..", ".."))))
|
SOURCE_DIR = os.path.normpath(os.path.abspath(os.path.normpath(os.path.join(os.path.dirname(__file__), "..", ".."))))
|
||||||
|
|
||||||
# doesn't have to exist, just use as reference
|
|
||||||
BUILD_DIR = os.path.normpath(os.path.abspath(os.path.normpath(os.path.join(SOURCE_DIR, "..", "build"))))
|
|
||||||
|
|||||||
@@ -29,27 +29,18 @@ Example linux usage
|
|||||||
Windows not supported so far
|
Windows not supported so far
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import sys
|
from project_info import (SIMPLE_PROJECTFILE,
|
||||||
|
SOURCE_DIR,
|
||||||
# until we have arg parsing
|
CMAKE_DIR,
|
||||||
import project_info
|
PROJECT_DIR,
|
||||||
if not project_info.init(sys.argv[-1]):
|
source_list,
|
||||||
sys.exit(1)
|
is_project_file,
|
||||||
|
is_c_header,
|
||||||
from project_info import (
|
# is_py,
|
||||||
SIMPLE_PROJECTFILE,
|
cmake_advanced_info,
|
||||||
SOURCE_DIR,
|
cmake_compiler_defines,
|
||||||
CMAKE_DIR,
|
project_name_get,
|
||||||
PROJECT_DIR,
|
)
|
||||||
source_list,
|
|
||||||
is_project_file,
|
|
||||||
is_c_header,
|
|
||||||
# is_py,
|
|
||||||
cmake_advanced_info,
|
|
||||||
cmake_compiler_defines,
|
|
||||||
cmake_cache_var,
|
|
||||||
project_name_get,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
import os
|
import os
|
||||||
@@ -57,8 +48,6 @@ from os.path import join, dirname, normpath, relpath, exists
|
|||||||
|
|
||||||
|
|
||||||
def create_nb_project_main():
|
def create_nb_project_main():
|
||||||
from xml.sax.saxutils import escape
|
|
||||||
|
|
||||||
files = list(source_list(SOURCE_DIR, filename_check=is_project_file))
|
files = list(source_list(SOURCE_DIR, filename_check=is_project_file))
|
||||||
files_rel = [relpath(f, start=PROJECT_DIR) for f in files]
|
files_rel = [relpath(f, start=PROJECT_DIR) for f in files]
|
||||||
files_rel.sort()
|
files_rel.sort()
|
||||||
@@ -81,9 +70,6 @@ def create_nb_project_main():
|
|||||||
# be tricky, get the project name from git if we can!
|
# be tricky, get the project name from git if we can!
|
||||||
PROJECT_NAME = project_name_get()
|
PROJECT_NAME = project_name_get()
|
||||||
|
|
||||||
make_exe = cmake_cache_var("CMAKE_MAKE_PROGRAM")
|
|
||||||
make_exe_basename = os.path.basename(make_exe)
|
|
||||||
|
|
||||||
# --------------- NB spesific
|
# --------------- NB spesific
|
||||||
defines = [("%s=%s" % cdef) if cdef[1] else cdef[0] for cdef in defines]
|
defines = [("%s=%s" % cdef) if cdef[1] else cdef[0] for cdef in defines]
|
||||||
defines += [cdef.replace("#define", "").strip() for cdef in cmake_compiler_defines()]
|
defines += [cdef.replace("#define", "").strip() for cdef in cmake_compiler_defines()]
|
||||||
@@ -144,9 +130,9 @@ def create_nb_project_main():
|
|||||||
f = open(join(PROJECT_DIR_NB, "configurations.xml"), 'w')
|
f = open(join(PROJECT_DIR_NB, "configurations.xml"), 'w')
|
||||||
|
|
||||||
f.write('<?xml version="1.0" encoding="UTF-8"?>\n')
|
f.write('<?xml version="1.0" encoding="UTF-8"?>\n')
|
||||||
f.write('<configurationDescriptor version="95">\n')
|
f.write('<configurationDescriptor version="94">\n')
|
||||||
f.write(' <logicalFolder name="root" displayName="root" projectFiles="true" kind="ROOT">\n')
|
f.write(' <logicalFolder name="root" displayName="root" projectFiles="true" kind="ROOT">\n')
|
||||||
f.write(' <df root="%s" name="0">\n' % SOURCE_DIR) # base_root_rel
|
f.write(' <df name="0" root="%s">\n' % SOURCE_DIR) # base_root_rel
|
||||||
|
|
||||||
# write files!
|
# write files!
|
||||||
files_rel_local = [normpath(relpath(join(CMAKE_DIR, path), SOURCE_DIR)) for path in files_rel]
|
files_rel_local = [normpath(relpath(join(CMAKE_DIR, path), SOURCE_DIR)) for path in files_rel]
|
||||||
@@ -198,27 +184,16 @@ def create_nb_project_main():
|
|||||||
|
|
||||||
f.write(' <toolsSet>\n')
|
f.write(' <toolsSet>\n')
|
||||||
f.write(' <compilerSet>default</compilerSet>\n')
|
f.write(' <compilerSet>default</compilerSet>\n')
|
||||||
f.write(' <dependencyChecking>false</dependencyChecking>\n')
|
|
||||||
f.write(' <rebuildPropChanged>false</rebuildPropChanged>\n')
|
|
||||||
f.write(' </toolsSet>\n')
|
f.write(' </toolsSet>\n')
|
||||||
f.write(' <codeAssistance>\n')
|
f.write(' <dependencyChecking>false</dependencyChecking>\n')
|
||||||
f.write(' </codeAssistance>\n')
|
f.write(' <rebuildPropChanged>false</rebuildPropChanged>\n')
|
||||||
f.write(' <makefileType>\n')
|
f.write(' <makefileType>\n')
|
||||||
|
|
||||||
f.write(' <makeTool>\n')
|
f.write(' <makeTool>\n')
|
||||||
f.write(' <buildCommandWorkingDir>.</buildCommandWorkingDir>\n')
|
f.write(' <buildCommandWorkingDir>.</buildCommandWorkingDir>\n')
|
||||||
|
f.write(' <buildCommand>${MAKE} -f Makefile</buildCommand>\n')
|
||||||
if make_exe_basename == "ninja":
|
f.write(' <cleanCommand>${MAKE} -f Makefile clean</cleanCommand>\n')
|
||||||
build_cmd = "ninja"
|
|
||||||
clean_cmd = "ninja -t clean"
|
|
||||||
else:
|
|
||||||
build_cmd = "${MAKE} -f Makefile"
|
|
||||||
clean_cmd = "${MAKE} -f Makefile clean"
|
|
||||||
|
|
||||||
f.write(' <buildCommand>%s</buildCommand>\n' % escape(build_cmd))
|
|
||||||
f.write(' <cleanCommand>%s</cleanCommand>\n' % escape(clean_cmd))
|
|
||||||
f.write(' <executablePath>./bin/blender</executablePath>\n')
|
f.write(' <executablePath>./bin/blender</executablePath>\n')
|
||||||
del build_cmd, clean_cmd
|
|
||||||
|
|
||||||
def write_toolinfo():
|
def write_toolinfo():
|
||||||
f.write(' <incDir>\n')
|
f.write(' <incDir>\n')
|
||||||
@@ -227,7 +202,7 @@ def create_nb_project_main():
|
|||||||
f.write(' </incDir>\n')
|
f.write(' </incDir>\n')
|
||||||
f.write(' <preprocessorList>\n')
|
f.write(' <preprocessorList>\n')
|
||||||
for cdef in defines:
|
for cdef in defines:
|
||||||
f.write(' <Elem>%s</Elem>\n' % escape(cdef))
|
f.write(' <Elem>%s</Elem>\n' % cdef)
|
||||||
f.write(' </preprocessorList>\n')
|
f.write(' </preprocessorList>\n')
|
||||||
|
|
||||||
f.write(' <cTool>\n')
|
f.write(' <cTool>\n')
|
||||||
@@ -245,11 +220,10 @@ def create_nb_project_main():
|
|||||||
f.write(' \n')
|
f.write(' \n')
|
||||||
|
|
||||||
for path in files_rel_local:
|
for path in files_rel_local:
|
||||||
is_c = path.endswith(".c")
|
|
||||||
f.write(' <item path="%s"\n' % path)
|
f.write(' <item path="%s"\n' % path)
|
||||||
f.write(' ex="false"\n')
|
f.write(' ex="false"\n')
|
||||||
f.write(' tool="%d"\n' % (0 if is_c else 1))
|
f.write(' tool="1"\n')
|
||||||
f.write(' flavor2="%d">\n' % (3 if is_c else 0))
|
f.write(' flavor2="0">\n')
|
||||||
f.write(' </item>\n')
|
f.write(' </item>\n')
|
||||||
|
|
||||||
f.write(' <runprofile version="9">\n')
|
f.write(' <runprofile version="9">\n')
|
||||||
|
|||||||
@@ -22,16 +22,29 @@
|
|||||||
|
|
||||||
# <pep8 compliant>
|
# <pep8 compliant>
|
||||||
|
|
||||||
r"""
|
"""
|
||||||
Example Linux usage:
|
|
||||||
python ~/blender-git/blender/build_files/cmake/cmake_qtcreator_project.py --build-dir ~/blender-git/cmake
|
|
||||||
|
|
||||||
Example Win32 usage:
|
Example Win32 usage:
|
||||||
c:\Python32\python.exe c:\blender_dev\blender\build_files\cmake\cmake_qtcreator_project.py --build-dir c:\blender_dev\cmake_build
|
c:\Python32\python.exe c:\blender_dev\blender\build_files\cmake\cmake_qtcreator_project.py c:\blender_dev\cmake_build
|
||||||
|
|
||||||
|
example linux usage
|
||||||
|
python ~/blender-git/blender/build_files/cmake/cmake_qtcreator_project.py ~/blender-git/cmake
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from project_info import (SIMPLE_PROJECTFILE,
|
||||||
|
SOURCE_DIR,
|
||||||
|
# CMAKE_DIR,
|
||||||
|
PROJECT_DIR,
|
||||||
|
source_list,
|
||||||
|
is_project_file,
|
||||||
|
is_c_header,
|
||||||
|
is_py,
|
||||||
|
cmake_advanced_info,
|
||||||
|
cmake_compiler_defines,
|
||||||
|
project_name_get,
|
||||||
|
)
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
def quote_define(define):
|
def quote_define(define):
|
||||||
@@ -41,20 +54,7 @@ def quote_define(define):
|
|||||||
return define
|
return define
|
||||||
|
|
||||||
|
|
||||||
def create_qtc_project_main(name):
|
def create_qtc_project_main():
|
||||||
from project_info import (
|
|
||||||
SIMPLE_PROJECTFILE,
|
|
||||||
SOURCE_DIR,
|
|
||||||
# CMAKE_DIR,
|
|
||||||
PROJECT_DIR,
|
|
||||||
source_list,
|
|
||||||
is_project_file,
|
|
||||||
is_c_header,
|
|
||||||
cmake_advanced_info,
|
|
||||||
cmake_compiler_defines,
|
|
||||||
project_name_get,
|
|
||||||
)
|
|
||||||
|
|
||||||
files = list(source_list(SOURCE_DIR, filename_check=is_project_file))
|
files = list(source_list(SOURCE_DIR, filename_check=is_project_file))
|
||||||
files_rel = [os.path.relpath(f, start=PROJECT_DIR) for f in files]
|
files_rel = [os.path.relpath(f, start=PROJECT_DIR) for f in files]
|
||||||
files_rel.sort()
|
files_rel.sort()
|
||||||
@@ -62,20 +62,19 @@ def create_qtc_project_main(name):
|
|||||||
# --- qtcreator specific, simple format
|
# --- qtcreator specific, simple format
|
||||||
if SIMPLE_PROJECTFILE:
|
if SIMPLE_PROJECTFILE:
|
||||||
# --- qtcreator specific, simple format
|
# --- qtcreator specific, simple format
|
||||||
PROJECT_NAME = name or "Blender"
|
PROJECT_NAME = "Blender"
|
||||||
FILE_NAME = PROJECT_NAME.lower()
|
with open(os.path.join(PROJECT_DIR, "%s.files" % PROJECT_NAME), 'w') as f:
|
||||||
with open(os.path.join(PROJECT_DIR, "%s.files" % FILE_NAME), 'w') as f:
|
|
||||||
f.write("\n".join(files_rel))
|
f.write("\n".join(files_rel))
|
||||||
|
|
||||||
with open(os.path.join(PROJECT_DIR, "%s.includes" % FILE_NAME), 'w') as f:
|
with open(os.path.join(PROJECT_DIR, "%s.includes" % PROJECT_NAME), 'w') as f:
|
||||||
f.write("\n".join(sorted(list(set(os.path.dirname(f)
|
f.write("\n".join(sorted(list(set(os.path.dirname(f)
|
||||||
for f in files_rel if is_c_header(f))))))
|
for f in files_rel if is_c_header(f))))))
|
||||||
|
|
||||||
qtc_prj = os.path.join(PROJECT_DIR, "%s.creator" % FILE_NAME)
|
qtc_prj = os.path.join(PROJECT_DIR, "%s.creator" % PROJECT_NAME)
|
||||||
with open(qtc_prj, 'w') as f:
|
with open(qtc_prj, 'w') as f:
|
||||||
f.write("[General]\n")
|
f.write("[General]\n")
|
||||||
|
|
||||||
qtc_cfg = os.path.join(PROJECT_DIR, "%s.config" % FILE_NAME)
|
qtc_cfg = os.path.join(PROJECT_DIR, "%s.config" % PROJECT_NAME)
|
||||||
if not os.path.exists(qtc_cfg):
|
if not os.path.exists(qtc_cfg):
|
||||||
with open(qtc_cfg, 'w') as f:
|
with open(qtc_cfg, 'w') as f:
|
||||||
f.write("// ADD PREDEFINED MACROS HERE!\n")
|
f.write("// ADD PREDEFINED MACROS HERE!\n")
|
||||||
@@ -87,11 +86,14 @@ def create_qtc_project_main(name):
|
|||||||
|
|
||||||
# for some reason it doesnt give all internal includes
|
# for some reason it doesnt give all internal includes
|
||||||
includes = list(set(includes) | set(os.path.dirname(f)
|
includes = list(set(includes) | set(os.path.dirname(f)
|
||||||
for f in files_rel if is_c_header(f)))
|
for f in files_rel if is_c_header(f)))
|
||||||
includes.sort()
|
includes.sort()
|
||||||
|
|
||||||
# be tricky, get the project name from CMake if we can!
|
if 0:
|
||||||
PROJECT_NAME = name or project_name_get()
|
PROJECT_NAME = "Blender"
|
||||||
|
else:
|
||||||
|
# be tricky, get the project name from CMake if we can!
|
||||||
|
PROJECT_NAME = project_name_get()
|
||||||
|
|
||||||
FILE_NAME = PROJECT_NAME.lower()
|
FILE_NAME = PROJECT_NAME.lower()
|
||||||
with open(os.path.join(PROJECT_DIR, "%s.files" % FILE_NAME), 'w') as f:
|
with open(os.path.join(PROJECT_DIR, "%s.files" % FILE_NAME), 'w') as f:
|
||||||
@@ -115,7 +117,7 @@ def create_qtc_project_main(name):
|
|||||||
f.write("\n")
|
f.write("\n")
|
||||||
|
|
||||||
defines_final = [("#define %s %s" % (item[0], quote_define(item[1]))) for item in defines]
|
defines_final = [("#define %s %s" % (item[0], quote_define(item[1]))) for item in defines]
|
||||||
if os.name != "nt":
|
if sys.platform != "win32":
|
||||||
defines_final += cmake_compiler_defines()
|
defines_final += cmake_compiler_defines()
|
||||||
f.write("\n".join(defines_final))
|
f.write("\n".join(defines_final))
|
||||||
|
|
||||||
@@ -123,23 +125,17 @@ def create_qtc_project_main(name):
|
|||||||
# --- end
|
# --- end
|
||||||
|
|
||||||
|
|
||||||
def create_qtc_project_python(name):
|
def create_qtc_project_python():
|
||||||
from project_info import (
|
|
||||||
SOURCE_DIR,
|
|
||||||
# CMAKE_DIR,
|
|
||||||
PROJECT_DIR,
|
|
||||||
source_list,
|
|
||||||
is_py,
|
|
||||||
project_name_get,
|
|
||||||
)
|
|
||||||
|
|
||||||
files = list(source_list(SOURCE_DIR, filename_check=is_py))
|
files = list(source_list(SOURCE_DIR, filename_check=is_py))
|
||||||
files_rel = [os.path.relpath(f, start=PROJECT_DIR) for f in files]
|
files_rel = [os.path.relpath(f, start=PROJECT_DIR) for f in files]
|
||||||
files_rel.sort()
|
files_rel.sort()
|
||||||
|
|
||||||
# --- qtcreator specific, simple format
|
# --- qtcreator specific, simple format
|
||||||
# be tricky, get the project name from git if we can!
|
if 0:
|
||||||
PROJECT_NAME = (name or project_name_get()) + "_Python"
|
PROJECT_NAME = "Blender_Python"
|
||||||
|
else:
|
||||||
|
# be tricky, get the project name from git if we can!
|
||||||
|
PROJECT_NAME = project_name_get() + "_Python"
|
||||||
|
|
||||||
FILE_NAME = PROJECT_NAME.lower()
|
FILE_NAME = PROJECT_NAME.lower()
|
||||||
with open(os.path.join(PROJECT_DIR, "%s.files" % FILE_NAME), 'w') as f:
|
with open(os.path.join(PROJECT_DIR, "%s.files" % FILE_NAME), 'w') as f:
|
||||||
@@ -157,43 +153,9 @@ def create_qtc_project_python(name):
|
|||||||
print("Python project file written to: %r" % qtc_prj)
|
print("Python project file written to: %r" % qtc_prj)
|
||||||
|
|
||||||
|
|
||||||
def argparse_create():
|
|
||||||
import argparse
|
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(
|
|
||||||
description="This script generates Qt Creator project files for Blender",
|
|
||||||
)
|
|
||||||
|
|
||||||
parser.add_argument(
|
|
||||||
"-n", "--name",
|
|
||||||
dest="name",
|
|
||||||
metavar='NAME', type=str,
|
|
||||||
help="Override default project name (\"Blender\")",
|
|
||||||
required=False,
|
|
||||||
)
|
|
||||||
|
|
||||||
parser.add_argument(
|
|
||||||
"-b", "--build-dir",
|
|
||||||
dest="build_dir",
|
|
||||||
metavar='BUILD_DIR', type=str,
|
|
||||||
help="Specify the build path (or fallback to the $PWD)",
|
|
||||||
required=False,
|
|
||||||
)
|
|
||||||
|
|
||||||
return parser
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
parser = argparse_create()
|
create_qtc_project_main()
|
||||||
args = parser.parse_args()
|
create_qtc_project_python()
|
||||||
name = args.name
|
|
||||||
|
|
||||||
import project_info
|
|
||||||
if not project_info.init(args.build_dir):
|
|
||||||
return
|
|
||||||
|
|
||||||
create_qtc_project_main(name)
|
|
||||||
create_qtc_project_python(name)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
@@ -32,7 +32,8 @@ USE_QUIET = (os.environ.get("QUIET", None) is not None)
|
|||||||
CHECKER_IGNORE_PREFIX = [
|
CHECKER_IGNORE_PREFIX = [
|
||||||
"extern",
|
"extern",
|
||||||
"intern/moto",
|
"intern/moto",
|
||||||
]
|
"blender/intern/opennl",
|
||||||
|
]
|
||||||
|
|
||||||
CHECKER_BIN = "python2"
|
CHECKER_BIN = "python2"
|
||||||
|
|
||||||
@@ -42,7 +43,7 @@ CHECKER_ARGS = [
|
|||||||
"-I" + os.path.join(project_source_info.SOURCE_DIR, "extern", "glew", "include"),
|
"-I" + os.path.join(project_source_info.SOURCE_DIR, "extern", "glew", "include"),
|
||||||
# stupid but needed
|
# stupid but needed
|
||||||
"-Dbool=char"
|
"-Dbool=char"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
|||||||
@@ -32,7 +32,8 @@ USE_QUIET = (os.environ.get("QUIET", None) is not None)
|
|||||||
CHECKER_IGNORE_PREFIX = [
|
CHECKER_IGNORE_PREFIX = [
|
||||||
"extern",
|
"extern",
|
||||||
"intern/moto",
|
"intern/moto",
|
||||||
]
|
"blender/intern/opennl",
|
||||||
|
]
|
||||||
|
|
||||||
CHECKER_BIN = "cppcheck"
|
CHECKER_BIN = "cppcheck"
|
||||||
|
|
||||||
@@ -43,7 +44,7 @@ CHECKER_ARGS = [
|
|||||||
"--max-configs=1", # speeds up execution
|
"--max-configs=1", # speeds up execution
|
||||||
# "--check-config", # when includes are missing
|
# "--check-config", # when includes are missing
|
||||||
"--enable=all", # if you want sixty hundred pedantic suggestions
|
"--enable=all", # if you want sixty hundred pedantic suggestions
|
||||||
]
|
]
|
||||||
|
|
||||||
if USE_QUIET:
|
if USE_QUIET:
|
||||||
CHECKER_ARGS.append("--quiet")
|
CHECKER_ARGS.append("--quiet")
|
||||||
|
|||||||
@@ -25,13 +25,14 @@
|
|||||||
CHECKER_IGNORE_PREFIX = [
|
CHECKER_IGNORE_PREFIX = [
|
||||||
"extern",
|
"extern",
|
||||||
"intern/moto",
|
"intern/moto",
|
||||||
]
|
"blender/intern/opennl",
|
||||||
|
]
|
||||||
|
|
||||||
CHECKER_BIN = "smatch"
|
CHECKER_BIN = "smatch"
|
||||||
CHECKER_ARGS = [
|
CHECKER_ARGS = [
|
||||||
"--full-path",
|
"--full-path",
|
||||||
"--two-passes",
|
"--two-passes",
|
||||||
]
|
]
|
||||||
|
|
||||||
import project_source_info
|
import project_source_info
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|||||||
@@ -25,11 +25,12 @@
|
|||||||
CHECKER_IGNORE_PREFIX = [
|
CHECKER_IGNORE_PREFIX = [
|
||||||
"extern",
|
"extern",
|
||||||
"intern/moto",
|
"intern/moto",
|
||||||
]
|
"blender/intern/opennl",
|
||||||
|
]
|
||||||
|
|
||||||
CHECKER_BIN = "sparse"
|
CHECKER_BIN = "sparse"
|
||||||
CHECKER_ARGS = [
|
CHECKER_ARGS = [
|
||||||
]
|
]
|
||||||
|
|
||||||
import project_source_info
|
import project_source_info
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|||||||
@@ -25,7 +25,8 @@
|
|||||||
CHECKER_IGNORE_PREFIX = [
|
CHECKER_IGNORE_PREFIX = [
|
||||||
"extern",
|
"extern",
|
||||||
"intern/moto",
|
"intern/moto",
|
||||||
]
|
"blender/intern/opennl",
|
||||||
|
]
|
||||||
|
|
||||||
CHECKER_BIN = "splint"
|
CHECKER_BIN = "splint"
|
||||||
|
|
||||||
@@ -61,7 +62,7 @@ CHECKER_ARGS = [
|
|||||||
# dummy, witjout this splint complains with:
|
# dummy, witjout this splint complains with:
|
||||||
# /usr/include/bits/confname.h:31:27: *** Internal Bug at cscannerHelp.c:2428: Unexpanded macro not function or constant: int _PC_MAX_CANON
|
# /usr/include/bits/confname.h:31:27: *** Internal Bug at cscannerHelp.c:2428: Unexpanded macro not function or constant: int _PC_MAX_CANON
|
||||||
"-D_PC_MAX_CANON=0",
|
"-D_PC_MAX_CANON=0",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
import project_source_info
|
import project_source_info
|
||||||
|
|||||||
@@ -1,20 +1,18 @@
|
|||||||
# Turn everything ON thats expected for an official release builds.
|
# turn everything OFF except for python which defaults to ON
|
||||||
|
# and is needed for the UI
|
||||||
#
|
#
|
||||||
# Example usage:
|
# Example usage:
|
||||||
# cmake -C../blender/build_files/cmake/config/blender_full.cmake ../blender
|
# cmake -C../blender/build_files/cmake/config/blender_full.cmake ../blender
|
||||||
#
|
#
|
||||||
|
|
||||||
set(WITH_ALEMBIC ON CACHE BOOL "" FORCE)
|
|
||||||
set(WITH_BUILDINFO ON CACHE BOOL "" FORCE)
|
set(WITH_BUILDINFO ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_BULLET ON CACHE BOOL "" FORCE)
|
set(WITH_BULLET ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_CODEC_AVI ON CACHE BOOL "" FORCE)
|
set(WITH_CODEC_AVI ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_CODEC_FFMPEG ON CACHE BOOL "" FORCE)
|
set(WITH_CODEC_FFMPEG ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_CODEC_SNDFILE ON CACHE BOOL "" FORCE)
|
set(WITH_CODEC_SNDFILE ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_CYCLES ON CACHE BOOL "" FORCE)
|
set(WITH_CYCLES ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_CYCLES_OSL ON CACHE BOOL "" FORCE)
|
|
||||||
set(WITH_FFTW3 ON CACHE BOOL "" FORCE)
|
set(WITH_FFTW3 ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_LIBMV ON CACHE BOOL "" FORCE)
|
set(WITH_LIBMV ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_LIBMV_SCHUR_SPECIALIZATIONS ON CACHE BOOL "" FORCE)
|
|
||||||
set(WITH_GAMEENGINE ON CACHE BOOL "" FORCE)
|
set(WITH_GAMEENGINE ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_COMPOSITOR ON CACHE BOOL "" FORCE)
|
set(WITH_COMPOSITOR ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_FREESTYLE ON CACHE BOOL "" FORCE)
|
set(WITH_FREESTYLE ON CACHE BOOL "" FORCE)
|
||||||
@@ -27,6 +25,7 @@ set(WITH_IMAGE_FRAMESERVER ON CACHE BOOL "" FORCE)
|
|||||||
set(WITH_IMAGE_HDR ON CACHE BOOL "" FORCE)
|
set(WITH_IMAGE_HDR ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_IMAGE_OPENEXR ON CACHE BOOL "" FORCE)
|
set(WITH_IMAGE_OPENEXR ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_IMAGE_OPENJPEG ON CACHE BOOL "" FORCE)
|
set(WITH_IMAGE_OPENJPEG ON CACHE BOOL "" FORCE)
|
||||||
|
set(WITH_IMAGE_REDCODE ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_IMAGE_TIFF ON CACHE BOOL "" FORCE)
|
set(WITH_IMAGE_TIFF ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_INPUT_NDOF ON CACHE BOOL "" FORCE)
|
set(WITH_INPUT_NDOF ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_INTERNATIONAL ON CACHE BOOL "" FORCE)
|
set(WITH_INTERNATIONAL ON CACHE BOOL "" FORCE)
|
||||||
@@ -43,8 +42,7 @@ set(WITH_OPENAL ON CACHE BOOL "" FORCE)
|
|||||||
set(WITH_OPENCOLLADA ON CACHE BOOL "" FORCE)
|
set(WITH_OPENCOLLADA ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_OPENCOLORIO ON CACHE BOOL "" FORCE)
|
set(WITH_OPENCOLORIO ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_OPENMP ON CACHE BOOL "" FORCE)
|
set(WITH_OPENMP ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_OPENVDB ON CACHE BOOL "" FORCE)
|
set(WITH_OPENNL ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_OPENVDB_BLOSC ON CACHE BOOL "" FORCE)
|
|
||||||
set(WITH_PYTHON_INSTALL ON CACHE BOOL "" FORCE)
|
set(WITH_PYTHON_INSTALL ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_RAYOPTIMIZATION ON CACHE BOOL "" FORCE)
|
set(WITH_RAYOPTIMIZATION ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_SDL ON CACHE BOOL "" FORCE)
|
set(WITH_SDL ON CACHE BOOL "" FORCE)
|
||||||
@@ -54,24 +52,11 @@ set(WITH_X11_XF86VMODE ON CACHE BOOL "" FORCE)
|
|||||||
set(WITH_PLAYER ON CACHE BOOL "" FORCE)
|
set(WITH_PLAYER ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_MEM_JEMALLOC ON CACHE BOOL "" FORCE)
|
set(WITH_MEM_JEMALLOC ON CACHE BOOL "" FORCE)
|
||||||
|
|
||||||
|
|
||||||
# platform dependent options
|
|
||||||
if(UNIX AND NOT APPLE)
|
if(UNIX AND NOT APPLE)
|
||||||
set(WITH_JACK ON CACHE BOOL "" FORCE)
|
|
||||||
set(WITH_DOC_MANPAGE ON CACHE BOOL "" FORCE)
|
set(WITH_DOC_MANPAGE ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_OPENSUBDIV ON CACHE BOOL "" FORCE)
|
|
||||||
elseif(WIN32)
|
|
||||||
set(WITH_JACK OFF CACHE BOOL "" FORCE)
|
|
||||||
if(NOT CMAKE_COMPILER_IS_GNUCC)
|
|
||||||
set(WITH_OPENSUBDIV ON CACHE BOOL "" FORCE)
|
|
||||||
else()
|
|
||||||
# MinGW exceptions
|
|
||||||
set(WITH_OPENSUBDIV OFF CACHE BOOL "" FORCE)
|
|
||||||
set(WITH_CODEC_SNDFILE OFF CACHE BOOL "" FORCE)
|
|
||||||
set(WITH_CYCLES_OSL OFF CACHE BOOL "" FORCE)
|
|
||||||
endif()
|
|
||||||
elseif(APPLE)
|
|
||||||
set(WITH_JACK ON CACHE BOOL "" FORCE)
|
|
||||||
set(WITH_CODEC_QUICKTIME ON CACHE BOOL "" FORCE)
|
|
||||||
set(WITH_OPENSUBDIV OFF CACHE BOOL "" FORCE)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(APPLE)
|
||||||
|
set(WITH_CODEC_QUICKTIME ON CACHE BOOL "" FORCE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|||||||
@@ -8,17 +8,14 @@
|
|||||||
set(WITH_INSTALL_PORTABLE ON CACHE BOOL "" FORCE)
|
set(WITH_INSTALL_PORTABLE ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_SYSTEM_GLEW ON CACHE BOOL "" FORCE)
|
set(WITH_SYSTEM_GLEW ON CACHE BOOL "" FORCE)
|
||||||
|
|
||||||
set(WITH_ALEMBIC OFF CACHE BOOL "" FORCE)
|
|
||||||
set(WITH_BUILDINFO OFF CACHE BOOL "" FORCE)
|
set(WITH_BUILDINFO OFF CACHE BOOL "" FORCE)
|
||||||
set(WITH_BULLET OFF CACHE BOOL "" FORCE)
|
set(WITH_BULLET OFF CACHE BOOL "" FORCE)
|
||||||
set(WITH_CODEC_AVI OFF CACHE BOOL "" FORCE)
|
set(WITH_CODEC_AVI OFF CACHE BOOL "" FORCE)
|
||||||
set(WITH_CODEC_FFMPEG OFF CACHE BOOL "" FORCE)
|
set(WITH_CODEC_FFMPEG OFF CACHE BOOL "" FORCE)
|
||||||
set(WITH_CODEC_SNDFILE OFF CACHE BOOL "" FORCE)
|
set(WITH_CODEC_SNDFILE OFF CACHE BOOL "" FORCE)
|
||||||
set(WITH_CYCLES OFF CACHE BOOL "" FORCE)
|
set(WITH_CYCLES OFF CACHE BOOL "" FORCE)
|
||||||
set(WITH_CYCLES_OSL OFF CACHE BOOL "" FORCE)
|
|
||||||
set(WITH_FFTW3 OFF CACHE BOOL "" FORCE)
|
set(WITH_FFTW3 OFF CACHE BOOL "" FORCE)
|
||||||
set(WITH_LIBMV OFF CACHE BOOL "" FORCE)
|
set(WITH_LIBMV OFF CACHE BOOL "" FORCE)
|
||||||
set(WITH_LLVM OFF CACHE BOOL "" FORCE)
|
|
||||||
set(WITH_GAMEENGINE OFF CACHE BOOL "" FORCE)
|
set(WITH_GAMEENGINE OFF CACHE BOOL "" FORCE)
|
||||||
set(WITH_COMPOSITOR OFF CACHE BOOL "" FORCE)
|
set(WITH_COMPOSITOR OFF CACHE BOOL "" FORCE)
|
||||||
set(WITH_FREESTYLE OFF CACHE BOOL "" FORCE)
|
set(WITH_FREESTYLE OFF CACHE BOOL "" FORCE)
|
||||||
@@ -31,6 +28,7 @@ set(WITH_IMAGE_FRAMESERVER OFF CACHE BOOL "" FORCE)
|
|||||||
set(WITH_IMAGE_HDR OFF CACHE BOOL "" FORCE)
|
set(WITH_IMAGE_HDR OFF CACHE BOOL "" FORCE)
|
||||||
set(WITH_IMAGE_OPENEXR OFF CACHE BOOL "" FORCE)
|
set(WITH_IMAGE_OPENEXR OFF CACHE BOOL "" FORCE)
|
||||||
set(WITH_IMAGE_OPENJPEG OFF CACHE BOOL "" FORCE)
|
set(WITH_IMAGE_OPENJPEG OFF CACHE BOOL "" FORCE)
|
||||||
|
set(WITH_IMAGE_REDCODE OFF CACHE BOOL "" FORCE)
|
||||||
set(WITH_IMAGE_TIFF OFF CACHE BOOL "" FORCE)
|
set(WITH_IMAGE_TIFF OFF CACHE BOOL "" FORCE)
|
||||||
set(WITH_INPUT_NDOF OFF CACHE BOOL "" FORCE)
|
set(WITH_INPUT_NDOF OFF CACHE BOOL "" FORCE)
|
||||||
set(WITH_INTERNATIONAL OFF CACHE BOOL "" FORCE)
|
set(WITH_INTERNATIONAL OFF CACHE BOOL "" FORCE)
|
||||||
@@ -48,7 +46,8 @@ set(WITH_OPENCOLLADA OFF CACHE BOOL "" FORCE)
|
|||||||
set(WITH_OPENCOLORIO OFF CACHE BOOL "" FORCE)
|
set(WITH_OPENCOLORIO OFF CACHE BOOL "" FORCE)
|
||||||
set(WITH_OPENIMAGEIO OFF CACHE BOOL "" FORCE)
|
set(WITH_OPENIMAGEIO OFF CACHE BOOL "" FORCE)
|
||||||
set(WITH_OPENMP OFF CACHE BOOL "" FORCE)
|
set(WITH_OPENMP OFF CACHE BOOL "" FORCE)
|
||||||
set(WITH_OPENVDB OFF CACHE BOOL "" FORCE)
|
set(WITH_OPENNL OFF CACHE BOOL "" FORCE)
|
||||||
|
set(WITH_PYTHON_INSTALL OFF CACHE BOOL "" FORCE)
|
||||||
set(WITH_RAYOPTIMIZATION OFF CACHE BOOL "" FORCE)
|
set(WITH_RAYOPTIMIZATION OFF CACHE BOOL "" FORCE)
|
||||||
set(WITH_SDL OFF CACHE BOOL "" FORCE)
|
set(WITH_SDL OFF CACHE BOOL "" FORCE)
|
||||||
set(WITH_X11_XINPUT OFF CACHE BOOL "" FORCE)
|
set(WITH_X11_XINPUT OFF CACHE BOOL "" FORCE)
|
||||||
|
|||||||
@@ -31,5 +31,3 @@ set(WITH_INPUT_NDOF OFF CACHE BOOL "" FORCE)
|
|||||||
set(WITH_OPENCOLLADA OFF CACHE BOOL "" FORCE)
|
set(WITH_OPENCOLLADA OFF CACHE BOOL "" FORCE)
|
||||||
set(WITH_INTERNATIONAL OFF CACHE BOOL "" FORCE)
|
set(WITH_INTERNATIONAL OFF CACHE BOOL "" FORCE)
|
||||||
set(WITH_BULLET OFF CACHE BOOL "" FORCE)
|
set(WITH_BULLET OFF CACHE BOOL "" FORCE)
|
||||||
set(WITH_OPENVDB OFF CACHE BOOL "" FORCE)
|
|
||||||
set(WITH_ALEMBIC OFF CACHE BOOL "" FORCE)
|
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ def main():
|
|||||||
"rebuild_cache",
|
"rebuild_cache",
|
||||||
"depend",
|
"depend",
|
||||||
"cmake_check_build_system",
|
"cmake_check_build_system",
|
||||||
])
|
])
|
||||||
|
|
||||||
targets -= set(bad)
|
targets -= set(bad)
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -21,14 +21,13 @@ SET(CPACK_PACKAGE_VERSION_PATCH "${PATCH_VERSION}")
|
|||||||
# Get the build revision, note that this can get out-of-sync, so for packaging run cmake first.
|
# Get the build revision, note that this can get out-of-sync, so for packaging run cmake first.
|
||||||
set(MY_WC_HASH "unknown")
|
set(MY_WC_HASH "unknown")
|
||||||
if(EXISTS ${CMAKE_SOURCE_DIR}/.git/)
|
if(EXISTS ${CMAKE_SOURCE_DIR}/.git/)
|
||||||
find_package(Git)
|
include(FindGit)
|
||||||
if(GIT_FOUND)
|
if(GIT_FOUND)
|
||||||
message(STATUS "Found Git: ${GIT_EXECUTABLE}")
|
message(STATUS "-- Found Git: ${GIT_EXECUTABLE}")
|
||||||
execute_process(COMMAND git rev-parse --short HEAD
|
execute_process(COMMAND git rev-parse --short @{u}
|
||||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
OUTPUT_VARIABLE MY_WC_HASH
|
OUTPUT_VARIABLE MY_WC_HASH
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
ERROR_QUIET)
|
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
set(BUILD_REV ${MY_WC_HASH})
|
set(BUILD_REV ${MY_WC_HASH})
|
||||||
@@ -37,22 +36,7 @@ unset(MY_WC_HASH)
|
|||||||
|
|
||||||
# Force Package Name
|
# Force Package Name
|
||||||
execute_process(COMMAND date "+%Y%m%d" OUTPUT_VARIABLE CPACK_DATE OUTPUT_STRIP_TRAILING_WHITESPACE)
|
execute_process(COMMAND date "+%Y%m%d" OUTPUT_VARIABLE CPACK_DATE OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
string(TOLOWER ${PROJECT_NAME} PROJECT_NAME_LOWER)
|
set(CPACK_PACKAGE_FILE_NAME ${PROJECT_NAME}-${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}-git${CPACK_DATE}.${BUILD_REV}-${CMAKE_SYSTEM_PROCESSOR})
|
||||||
if (MSVC)
|
|
||||||
if ("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
|
|
||||||
set(PACKAGE_ARCH windows64)
|
|
||||||
else()
|
|
||||||
set(PACKAGE_ARCH windows32)
|
|
||||||
endif()
|
|
||||||
else(MSVC)
|
|
||||||
set(PACKAGE_ARCH ${CMAKE_SYSTEM_PROCESSOR})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (CPACK_OVERRIDE_PACKAGENAME)
|
|
||||||
set(CPACK_PACKAGE_FILE_NAME ${CPACK_OVERRIDE_PACKAGENAME}-${PACKAGE_ARCH})
|
|
||||||
else()
|
|
||||||
set(CPACK_PACKAGE_FILE_NAME ${PROJECT_NAME_LOWER}-${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}-git${CPACK_DATE}.${BUILD_REV}-${PACKAGE_ARCH})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||||
# RPM packages
|
# RPM packages
|
||||||
@@ -81,14 +65,13 @@ if(WIN32)
|
|||||||
set(CPACK_PACKAGE_INSTALL_DIRECTORY "Blender Foundation/Blender")
|
set(CPACK_PACKAGE_INSTALL_DIRECTORY "Blender Foundation/Blender")
|
||||||
set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "Blender Foundation/Blender")
|
set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "Blender Foundation/Blender")
|
||||||
|
|
||||||
set(CPACK_NSIS_MUI_ICON ${CMAKE_SOURCE_DIR}/release/windows/icons/winblender.ico)
|
set(CPACK_NSIS_MUI_ICON ${CMAKE_SOURCE_DIR}/source/icons/winblender.ico)
|
||||||
set(CPACK_NSIS_COMPRESSOR "/SOLID lzma")
|
set(CPACK_NSIS_COMPRESSOR "/SOLID lzma")
|
||||||
|
|
||||||
set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/release/text/GPL-license.txt)
|
set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/release/text/GPL-license.txt)
|
||||||
set(CPACK_WIX_PRODUCT_ICON ${CMAKE_SOURCE_DIR}/release/windows/icons/winblender.ico)
|
set(CPACK_WIX_PRODUCT_ICON ${CMAKE_SOURCE_DIR}/source/icons/winblender.ico)
|
||||||
set(CPACK_WIX_UPGRADE_GUID "B767E4FD-7DE7-4094-B051-3AE62E13A17A")
|
set(CPACK_WIX_UPGRADE_GUID "B767E4FD-7DE7-4094-B051-3AE62E13A17A")
|
||||||
|
|
||||||
set(CPACK_WIX_TEMPLATE ${LIBDIR}/package/installer_wix/WIX.template)
|
|
||||||
set(CPACK_WIX_UI_BANNER ${LIBDIR}/package/installer_wix/WIX_UI_BANNER.bmp)
|
set(CPACK_WIX_UI_BANNER ${LIBDIR}/package/installer_wix/WIX_UI_BANNER.bmp)
|
||||||
set(CPACK_WIX_UI_DIALOG ${LIBDIR}/package/installer_wix/WIX_UI_DIALOG.bmp)
|
set(CPACK_WIX_UI_DIALOG ${LIBDIR}/package/installer_wix/WIX_UI_DIALOG.bmp)
|
||||||
|
|
||||||
@@ -128,9 +111,3 @@ elseif(UNIX)
|
|||||||
"tar.bz2")
|
"tar.bz2")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
unset(MAJOR_VERSION)
|
|
||||||
unset(MINOR_VERSION)
|
|
||||||
unset(PATCH_VERSION)
|
|
||||||
|
|
||||||
unset(BUILD_REV)
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,430 +0,0 @@
|
|||||||
# ***** BEGIN GPL LICENSE BLOCK *****
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or
|
|
||||||
# modify it under the terms of the GNU General Public License
|
|
||||||
# as published by the Free Software Foundation; either version 2
|
|
||||||
# of the License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program; if not, write to the Free Software Foundation,
|
|
||||||
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
#
|
|
||||||
# The Original Code is Copyright (C) 2016, Blender Foundation
|
|
||||||
# All rights reserved.
|
|
||||||
#
|
|
||||||
# Contributor(s): Sergey Sharybin.
|
|
||||||
#
|
|
||||||
# ***** END GPL LICENSE BLOCK *****
|
|
||||||
|
|
||||||
# Libraries configuration for Apple.
|
|
||||||
|
|
||||||
if(NOT DEFINED LIBDIR)
|
|
||||||
set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-9.x.universal)
|
|
||||||
else()
|
|
||||||
message(STATUS "Using pre-compiled LIBDIR: ${LIBDIR}")
|
|
||||||
endif()
|
|
||||||
if(NOT EXISTS "${LIBDIR}/")
|
|
||||||
message(FATAL_ERROR "Mac OSX requires pre-compiled libs at: '${LIBDIR}'")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_OPENAL)
|
|
||||||
find_package(OpenAL)
|
|
||||||
if(OPENAL_FOUND)
|
|
||||||
set(WITH_OPENAL ON)
|
|
||||||
set(OPENAL_INCLUDE_DIR "${LIBDIR}/openal/include")
|
|
||||||
else()
|
|
||||||
set(WITH_OPENAL OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_ALEMBIC)
|
|
||||||
set(ALEMBIC ${LIBDIR}/alembic)
|
|
||||||
set(ALEMBIC_INCLUDE_DIR ${ALEMBIC}/include)
|
|
||||||
set(ALEMBIC_INCLUDE_DIRS ${ALEMBIC_INCLUDE_DIR})
|
|
||||||
set(ALEMBIC_LIBPATH ${ALEMBIC}/lib)
|
|
||||||
set(ALEMBIC_LIBRARIES Alembic)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_OPENSUBDIV)
|
|
||||||
set(OPENSUBDIV ${LIBDIR}/opensubdiv)
|
|
||||||
set(OPENSUBDIV_LIBPATH ${OPENSUBDIV}/lib)
|
|
||||||
find_library(OSL_LIB_UTIL NAMES osdutil PATHS ${OPENSUBDIV_LIBPATH})
|
|
||||||
find_library(OSL_LIB_CPU NAMES osdCPU PATHS ${OPENSUBDIV_LIBPATH})
|
|
||||||
find_library(OSL_LIB_GPU NAMES osdGPU PATHS ${OPENSUBDIV_LIBPATH})
|
|
||||||
set(OPENSUBDIV_INCLUDE_DIR ${OPENSUBDIV}/include)
|
|
||||||
set(OPENSUBDIV_INCLUDE_DIRS ${OPENSUBDIV_INCLUDE_DIR})
|
|
||||||
list(APPEND OPENSUBDIV_LIBRARIES ${OSL_LIB_UTIL} ${OSL_LIB_CPU} ${OSL_LIB_GPU})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_JACK)
|
|
||||||
find_library(JACK_FRAMEWORK
|
|
||||||
NAMES jackmp
|
|
||||||
)
|
|
||||||
set(JACK_INCLUDE_DIRS ${JACK_FRAMEWORK}/headers)
|
|
||||||
if(NOT JACK_FRAMEWORK)
|
|
||||||
set(WITH_JACK OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_CODEC_SNDFILE)
|
|
||||||
set(SNDFILE ${LIBDIR}/sndfile)
|
|
||||||
set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include)
|
|
||||||
set(SNDFILE_LIBRARIES sndfile FLAC ogg vorbis vorbisenc)
|
|
||||||
set(SNDFILE_LIBPATH ${SNDFILE}/lib ${FFMPEG}/lib) # TODO, deprecate
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_PYTHON)
|
|
||||||
# we use precompiled libraries for py 3.5 and up by default
|
|
||||||
set(PYTHON_VERSION 3.5)
|
|
||||||
if(NOT WITH_PYTHON_MODULE AND NOT WITH_PYTHON_FRAMEWORK)
|
|
||||||
# normally cached but not since we include them with blender
|
|
||||||
set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}m")
|
|
||||||
set(PYTHON_EXECUTABLE "${LIBDIR}/python/bin/python${PYTHON_VERSION}m")
|
|
||||||
set(PYTHON_LIBRARY python${PYTHON_VERSION}m)
|
|
||||||
set(PYTHON_LIBPATH "${LIBDIR}/python/lib/python${PYTHON_VERSION}")
|
|
||||||
# set(PYTHON_LINKFLAGS "-u _PyMac_Error") # won't build with this enabled
|
|
||||||
else()
|
|
||||||
# module must be compiled against Python framework
|
|
||||||
set(_py_framework "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}")
|
|
||||||
|
|
||||||
set(PYTHON_INCLUDE_DIR "${_py_framework}/include/python${PYTHON_VERSION}m")
|
|
||||||
set(PYTHON_EXECUTABLE "${_py_framework}/bin/python${PYTHON_VERSION}m")
|
|
||||||
set(PYTHON_LIBPATH "${_py_framework}/lib/python${PYTHON_VERSION}/config-${PYTHON_VERSION}m")
|
|
||||||
#set(PYTHON_LIBRARY python${PYTHON_VERSION})
|
|
||||||
#set(PYTHON_LINKFLAGS "-u _PyMac_Error -framework Python") # won't build with this enabled
|
|
||||||
|
|
||||||
unset(_py_framework)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# uncached vars
|
|
||||||
set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
|
|
||||||
set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
|
|
||||||
|
|
||||||
if(NOT EXISTS "${PYTHON_EXECUTABLE}")
|
|
||||||
message(FATAL_ERROR "Python executable missing: ${PYTHON_EXECUTABLE}")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_FFTW3)
|
|
||||||
set(FFTW3 ${LIBDIR}/fftw3)
|
|
||||||
set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
|
|
||||||
set(FFTW3_LIBRARIES fftw3)
|
|
||||||
set(FFTW3_LIBPATH ${FFTW3}/lib)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(PNG_LIBRARIES png)
|
|
||||||
set(JPEG_LIBRARIES jpeg)
|
|
||||||
|
|
||||||
set(ZLIB /usr)
|
|
||||||
set(ZLIB_INCLUDE_DIRS "${ZLIB}/include")
|
|
||||||
set(ZLIB_LIBRARIES z bz2)
|
|
||||||
|
|
||||||
set(FREETYPE ${LIBDIR}/freetype)
|
|
||||||
set(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2)
|
|
||||||
set(FREETYPE_LIBPATH ${FREETYPE}/lib)
|
|
||||||
set(FREETYPE_LIBRARY freetype)
|
|
||||||
|
|
||||||
if(WITH_IMAGE_OPENEXR)
|
|
||||||
set(OPENEXR ${LIBDIR}/openexr)
|
|
||||||
set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
|
|
||||||
set(OPENEXR_INCLUDE_DIRS ${OPENEXR_INCLUDE_DIR} ${OPENEXR}/include/OpenEXR)
|
|
||||||
set(OPENEXR_LIBRARIES Iex Half IlmImf Imath IlmThread)
|
|
||||||
set(OPENEXR_LIBPATH ${OPENEXR}/lib)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_CODEC_FFMPEG)
|
|
||||||
set(FFMPEG ${LIBDIR}/ffmpeg)
|
|
||||||
set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
|
|
||||||
set(FFMPEG_LIBRARIES
|
|
||||||
avcodec avdevice avformat avutil
|
|
||||||
mp3lame swscale x264 xvidcore theora theoradec theoraenc vorbis vorbisenc vorbisfile ogg
|
|
||||||
)
|
|
||||||
set(FFMPEG_LIBPATH ${FFMPEG}/lib)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_library(SYSTEMSTUBS_LIBRARY
|
|
||||||
NAMES
|
|
||||||
SystemStubs
|
|
||||||
PATHS
|
|
||||||
)
|
|
||||||
mark_as_advanced(SYSTEMSTUBS_LIBRARY)
|
|
||||||
if(SYSTEMSTUBS_LIBRARY)
|
|
||||||
list(APPEND PLATFORM_LINKLIBS SystemStubs)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(PLATFORM_CFLAGS "-pipe -funsigned-char")
|
|
||||||
set(PLATFORM_LINKFLAGS
|
|
||||||
"-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox -framework CoreAudio"
|
|
||||||
)
|
|
||||||
if(WITH_CODEC_QUICKTIME)
|
|
||||||
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QTKit")
|
|
||||||
if(CMAKE_OSX_ARCHITECTURES MATCHES i386)
|
|
||||||
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime")
|
|
||||||
# libSDL still needs 32bit carbon quicktime
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_CXX11)
|
|
||||||
list(APPEND PLATFORM_LINKLIBS c++)
|
|
||||||
else()
|
|
||||||
list(APPEND PLATFORM_LINKLIBS stdc++)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_JACK)
|
|
||||||
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -F/Library/Frameworks -weak_framework jackmp")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_PYTHON_MODULE OR WITH_PYTHON_FRAMEWORK)
|
|
||||||
# force cmake to link right framework
|
|
||||||
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} /Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/Python")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_OPENCOLLADA)
|
|
||||||
set(OPENCOLLADA ${LIBDIR}/opencollada)
|
|
||||||
|
|
||||||
set(OPENCOLLADA_INCLUDE_DIRS
|
|
||||||
${LIBDIR}/opencollada/include/COLLADAStreamWriter
|
|
||||||
${LIBDIR}/opencollada/include/COLLADABaseUtils
|
|
||||||
${LIBDIR}/opencollada/include/COLLADAFramework
|
|
||||||
${LIBDIR}/opencollada/include/COLLADASaxFrameworkLoader
|
|
||||||
${LIBDIR}/opencollada/include/GeneratedSaxParser
|
|
||||||
)
|
|
||||||
|
|
||||||
set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib)
|
|
||||||
set(OPENCOLLADA_LIBRARIES
|
|
||||||
OpenCOLLADASaxFrameworkLoader
|
|
||||||
-lOpenCOLLADAFramework
|
|
||||||
-lOpenCOLLADABaseUtils
|
|
||||||
-lOpenCOLLADAStreamWriter
|
|
||||||
-lMathMLSolver
|
|
||||||
-lGeneratedSaxParser
|
|
||||||
-lxml2 -lbuffer -lftoa
|
|
||||||
)
|
|
||||||
# Use UTF functions from collada if LLVM is not enabled
|
|
||||||
if(NOT WITH_LLVM)
|
|
||||||
list(APPEND OPENCOLLADA_LIBRARIES -lUTF)
|
|
||||||
endif()
|
|
||||||
# pcre is bundled with openCollada
|
|
||||||
#set(PCRE ${LIBDIR}/pcre)
|
|
||||||
#set(PCRE_LIBPATH ${PCRE}/lib)
|
|
||||||
set(PCRE_LIBRARIES pcre)
|
|
||||||
#libxml2 is used
|
|
||||||
#set(EXPAT ${LIBDIR}/expat)
|
|
||||||
#set(EXPAT_LIBPATH ${EXPAT}/lib)
|
|
||||||
set(EXPAT_LIB)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_SDL)
|
|
||||||
set(SDL ${LIBDIR}/sdl)
|
|
||||||
set(SDL_INCLUDE_DIR ${SDL}/include)
|
|
||||||
set(SDL_LIBRARY SDL2)
|
|
||||||
set(SDL_LIBPATH ${SDL}/lib)
|
|
||||||
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -lazy_framework ForceFeedback")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(PNG "${LIBDIR}/png")
|
|
||||||
set(PNG_INCLUDE_DIRS "${PNG}/include")
|
|
||||||
set(PNG_LIBPATH ${PNG}/lib)
|
|
||||||
|
|
||||||
set(JPEG "${LIBDIR}/jpeg")
|
|
||||||
set(JPEG_INCLUDE_DIR "${JPEG}/include")
|
|
||||||
set(JPEG_LIBPATH ${JPEG}/lib)
|
|
||||||
|
|
||||||
if(WITH_IMAGE_TIFF)
|
|
||||||
set(TIFF ${LIBDIR}/tiff)
|
|
||||||
set(TIFF_INCLUDE_DIR ${TIFF}/include)
|
|
||||||
set(TIFF_LIBRARY tiff)
|
|
||||||
set(TIFF_LIBPATH ${TIFF}/lib)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_BOOST)
|
|
||||||
set(BOOST ${LIBDIR}/boost)
|
|
||||||
set(BOOST_INCLUDE_DIR ${BOOST}/include)
|
|
||||||
set(BOOST_LIBRARIES
|
|
||||||
boost_date_time-mt
|
|
||||||
boost_filesystem-mt
|
|
||||||
boost_regex-mt
|
|
||||||
boost_system-mt
|
|
||||||
boost_thread-mt
|
|
||||||
boost_wave-mt
|
|
||||||
)
|
|
||||||
if(WITH_INTERNATIONAL)
|
|
||||||
list(APPEND BOOST_LIBRARIES boost_locale-mt)
|
|
||||||
endif()
|
|
||||||
if(WITH_CYCLES_NETWORK)
|
|
||||||
list(APPEND BOOST_LIBRARIES boost_serialization-mt)
|
|
||||||
endif()
|
|
||||||
if(WITH_OPENVDB)
|
|
||||||
list(APPEND BOOST_LIBRARIES boost_iostreams-mt)
|
|
||||||
endif()
|
|
||||||
set(BOOST_LIBPATH ${BOOST}/lib)
|
|
||||||
set(BOOST_DEFINITIONS)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_INTERNATIONAL OR WITH_CODEC_FFMPEG)
|
|
||||||
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -liconv") # boost_locale and ffmpeg needs it !
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_OPENIMAGEIO)
|
|
||||||
set(OPENIMAGEIO ${LIBDIR}/openimageio)
|
|
||||||
set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
|
|
||||||
set(OPENIMAGEIO_LIBRARIES
|
|
||||||
${OPENIMAGEIO}/lib/libOpenImageIO.a
|
|
||||||
${PNG_LIBRARIES}
|
|
||||||
${JPEG_LIBRARIES}
|
|
||||||
${TIFF_LIBRARY}
|
|
||||||
${OPENEXR_LIBRARIES}
|
|
||||||
${ZLIB_LIBRARIES}
|
|
||||||
)
|
|
||||||
set(OPENIMAGEIO_LIBPATH
|
|
||||||
${OPENIMAGEIO}/lib
|
|
||||||
${JPEG_LIBPATH}
|
|
||||||
${PNG_LIBPATH}
|
|
||||||
${TIFF_LIBPATH}
|
|
||||||
${OPENEXR_LIBPATH}
|
|
||||||
${ZLIB_LIBPATH}
|
|
||||||
)
|
|
||||||
set(OPENIMAGEIO_DEFINITIONS "-DOIIO_STATIC_BUILD")
|
|
||||||
set(OPENIMAGEIO_IDIFF "${LIBDIR}/openimageio/bin/idiff")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_OPENCOLORIO)
|
|
||||||
set(OPENCOLORIO ${LIBDIR}/opencolorio)
|
|
||||||
set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
|
|
||||||
set(OPENCOLORIO_LIBRARIES OpenColorIO tinyxml yaml-cpp)
|
|
||||||
set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_OPENVDB)
|
|
||||||
set(OPENVDB ${LIBDIR}/openvdb)
|
|
||||||
set(OPENVDB_INCLUDE_DIRS ${OPENVDB}/include)
|
|
||||||
set(TBB_INCLUDE_DIRS ${LIBDIR}/tbb/include)
|
|
||||||
set(TBB_LIBRARIES ${LIBDIR}/tbb/lib/libtbb.a)
|
|
||||||
set(OPENVDB_LIBRARIES openvdb blosc ${TBB_LIBRARIES})
|
|
||||||
set(OPENVDB_LIBPATH ${LIBDIR}/openvdb/lib)
|
|
||||||
set(OPENVDB_DEFINITIONS)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_LLVM)
|
|
||||||
set(LLVM_ROOT_DIR ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
|
|
||||||
set(LLVM_VERSION "3.4" CACHE STRING "Version of LLVM to use")
|
|
||||||
if(EXISTS "${LLVM_ROOT_DIR}/bin/llvm-config")
|
|
||||||
set(LLVM_CONFIG "${LLVM_ROOT_DIR}/bin/llvm-config")
|
|
||||||
else()
|
|
||||||
set(LLVM_CONFIG llvm-config)
|
|
||||||
endif()
|
|
||||||
execute_process(COMMAND ${LLVM_CONFIG} --version
|
|
||||||
OUTPUT_VARIABLE LLVM_VERSION
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
execute_process(COMMAND ${LLVM_CONFIG} --prefix
|
|
||||||
OUTPUT_VARIABLE LLVM_ROOT_DIR
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
execute_process(COMMAND ${LLVM_CONFIG} --libdir
|
|
||||||
OUTPUT_VARIABLE LLVM_LIBPATH
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
find_library(LLVM_LIBRARY
|
|
||||||
NAMES LLVMAnalysis # first of a whole bunch of libs to get
|
|
||||||
PATHS ${LLVM_LIBPATH})
|
|
||||||
|
|
||||||
if(LLVM_LIBRARY AND LLVM_ROOT_DIR AND LLVM_LIBPATH)
|
|
||||||
if(LLVM_STATIC)
|
|
||||||
# if static LLVM libraries were requested, use llvm-config to generate
|
|
||||||
# the list of what libraries we need, and substitute that in the right
|
|
||||||
# way for LLVM_LIBRARY.
|
|
||||||
execute_process(COMMAND ${LLVM_CONFIG} --libfiles
|
|
||||||
OUTPUT_VARIABLE LLVM_LIBRARY
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
string(REPLACE " " ";" LLVM_LIBRARY ${LLVM_LIBRARY})
|
|
||||||
else()
|
|
||||||
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -lLLVM-3.4")
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
message(FATAL_ERROR "LLVM not found.")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_CYCLES_OSL)
|
|
||||||
set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
|
|
||||||
|
|
||||||
find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
|
|
||||||
find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
|
|
||||||
find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
|
|
||||||
# WARNING! depends on correct order of OSL libs linking
|
|
||||||
list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} -force_load ${OSL_LIB_EXEC} ${OSL_LIB_QUERY})
|
|
||||||
find_path(OSL_INCLUDE_DIR OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
|
|
||||||
find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
|
|
||||||
|
|
||||||
if(OSL_INCLUDE_DIR AND OSL_LIBRARIES AND OSL_COMPILER)
|
|
||||||
set(OSL_FOUND TRUE)
|
|
||||||
else()
|
|
||||||
message(STATUS "OSL not found")
|
|
||||||
set(WITH_CYCLES_OSL OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_OPENMP)
|
|
||||||
execute_process(COMMAND ${CMAKE_C_COMPILER} --version OUTPUT_VARIABLE COMPILER_VENDOR)
|
|
||||||
string(SUBSTRING "${COMPILER_VENDOR}" 0 5 VENDOR_NAME) # truncate output
|
|
||||||
if(${VENDOR_NAME} MATCHES "Apple") # Apple does not support OpenMP reliable with gcc and not with clang
|
|
||||||
set(WITH_OPENMP OFF)
|
|
||||||
else() # vanilla gcc or clang_omp support OpenMP
|
|
||||||
message(STATUS "Using special OpenMP enabled compiler !") # letting find_package(OpenMP) module work for gcc
|
|
||||||
if(CMAKE_C_COMPILER_ID MATCHES "Clang") # clang-omp in darwin libs
|
|
||||||
set(OPENMP_FOUND ON)
|
|
||||||
set(OpenMP_C_FLAGS "-fopenmp" CACHE STRING "C compiler flags for OpenMP parallization" FORCE)
|
|
||||||
set(OpenMP_CXX_FLAGS "-fopenmp" CACHE STRING "C++ compiler flags for OpenMP parallization" FORCE)
|
|
||||||
include_directories(${LIBDIR}/openmp/include)
|
|
||||||
link_directories(${LIBDIR}/openmp/lib)
|
|
||||||
# This is a workaround for our helperbinaries ( datatoc, masgfmt, ... ),
|
|
||||||
# They are linked also to omp lib, so we need it in builddir for runtime exexcution,
|
|
||||||
# TODO: remove all unneeded dependencies from these
|
|
||||||
|
|
||||||
# for intermediate binaries, in respect to lib ID
|
|
||||||
execute_process(
|
|
||||||
COMMAND ditto -arch ${CMAKE_OSX_ARCHITECTURES}
|
|
||||||
${LIBDIR}/openmp/lib/libiomp5.dylib
|
|
||||||
${CMAKE_BINARY_DIR}/Resources/lib/libiomp5.dylib)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(EXETYPE MACOSX_BUNDLE)
|
|
||||||
|
|
||||||
set(CMAKE_C_FLAGS_DEBUG "-fno-strict-aliasing -g")
|
|
||||||
set(CMAKE_CXX_FLAGS_DEBUG "-fno-strict-aliasing -g")
|
|
||||||
if(CMAKE_OSX_ARCHITECTURES MATCHES "x86_64" OR CMAKE_OSX_ARCHITECTURES MATCHES "i386")
|
|
||||||
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3")
|
|
||||||
set(CMAKE_C_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3")
|
|
||||||
if(NOT CMAKE_C_COMPILER_ID MATCHES "Clang")
|
|
||||||
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ftree-vectorize -fvariable-expansion-in-unroller")
|
|
||||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ftree-vectorize -fvariable-expansion-in-unroller")
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
set(CMAKE_C_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
|
|
||||||
set(CMAKE_CXX_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(${XCODE_VERSION} VERSION_EQUAL 5 OR ${XCODE_VERSION} VERSION_GREATER 5)
|
|
||||||
# Xcode 5 is always using CLANG, which has too low template depth of 128 for libmv
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftemplate-depth=1024")
|
|
||||||
endif()
|
|
||||||
# Get rid of eventually clashes, we export some symbols explicite as local
|
|
||||||
set(PLATFORM_LINKFLAGS
|
|
||||||
"${PLATFORM_LINKFLAGS} -Xlinker -unexported_symbols_list -Xlinker ${CMAKE_SOURCE_DIR}/source/creator/osx_locals.map"
|
|
||||||
)
|
|
||||||
|
|
||||||
if(WITH_CXX11)
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
|
|
||||||
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -stdlib=libc++")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Suppress ranlib "has no symbols" warnings (workaround for T48250)
|
|
||||||
set(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> Scr <TARGET> <LINK_FLAGS> <OBJECTS>")
|
|
||||||
set(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> Scr <TARGET> <LINK_FLAGS> <OBJECTS>")
|
|
||||||
set(CMAKE_C_ARCHIVE_FINISH "<CMAKE_RANLIB> -no_warning_for_no_symbols -c <TARGET>")
|
|
||||||
set(CMAKE_CXX_ARCHIVE_FINISH "<CMAKE_RANLIB> -no_warning_for_no_symbols -c <TARGET>")
|
|
||||||
@@ -1,426 +0,0 @@
|
|||||||
# ***** BEGIN GPL LICENSE BLOCK *****
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or
|
|
||||||
# modify it under the terms of the GNU General Public License
|
|
||||||
# as published by the Free Software Foundation; either version 2
|
|
||||||
# of the License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program; if not, write to the Free Software Foundation,
|
|
||||||
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
#
|
|
||||||
# The Original Code is Copyright (C) 2016, Blender Foundation
|
|
||||||
# All rights reserved.
|
|
||||||
#
|
|
||||||
# Contributor(s): Sergey Sharybin.
|
|
||||||
#
|
|
||||||
# ***** END GPL LICENSE BLOCK *****
|
|
||||||
|
|
||||||
# Libraries configuration for any *nix system including Linux and Unix.
|
|
||||||
|
|
||||||
macro(find_package_wrapper)
|
|
||||||
if(WITH_STATIC_LIBS)
|
|
||||||
find_package_static(${ARGV})
|
|
||||||
else()
|
|
||||||
find_package(${ARGV})
|
|
||||||
endif()
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
find_package_wrapper(JPEG REQUIRED)
|
|
||||||
find_package_wrapper(PNG REQUIRED)
|
|
||||||
find_package_wrapper(ZLIB REQUIRED)
|
|
||||||
find_package_wrapper(Freetype REQUIRED)
|
|
||||||
|
|
||||||
if(WITH_LZO AND WITH_SYSTEM_LZO)
|
|
||||||
find_package_wrapper(LZO)
|
|
||||||
if(NOT LZO_FOUND)
|
|
||||||
message(FATAL_ERROR "Failed finding system LZO version!")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_SYSTEM_EIGEN3)
|
|
||||||
find_package_wrapper(Eigen3)
|
|
||||||
if(NOT EIGEN3_FOUND)
|
|
||||||
message(FATAL_ERROR "Failed finding system Eigen3 version!")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
# else values are set below for all platforms
|
|
||||||
|
|
||||||
if(WITH_PYTHON)
|
|
||||||
# No way to set py35, remove for now.
|
|
||||||
# find_package(PythonLibs)
|
|
||||||
|
|
||||||
# Use our own instead, since without py is such a rare case,
|
|
||||||
# require this package
|
|
||||||
# XXX Linking errors with debian static python :/
|
|
||||||
# find_package_wrapper(PythonLibsUnix REQUIRED)
|
|
||||||
find_package(PythonLibsUnix REQUIRED)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_IMAGE_OPENEXR)
|
|
||||||
find_package_wrapper(OpenEXR) # our own module
|
|
||||||
if(NOT OPENEXR_FOUND)
|
|
||||||
set(WITH_IMAGE_OPENEXR OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_IMAGE_OPENJPEG)
|
|
||||||
find_package_wrapper(OpenJPEG)
|
|
||||||
if(NOT OPENJPEG_FOUND)
|
|
||||||
set(WITH_IMAGE_OPENJPEG OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_IMAGE_TIFF)
|
|
||||||
# XXX Linking errors with debian static tiff :/
|
|
||||||
# find_package_wrapper(TIFF)
|
|
||||||
find_package(TIFF)
|
|
||||||
if(NOT TIFF_FOUND)
|
|
||||||
set(WITH_IMAGE_TIFF OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Audio IO
|
|
||||||
if(WITH_SYSTEM_AUDASPACE)
|
|
||||||
find_package_wrapper(Audaspace)
|
|
||||||
if(NOT AUDASPACE_FOUND OR NOT AUDASPACE_C_FOUND)
|
|
||||||
message(FATAL_ERROR "Audaspace external library not found!")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_OPENAL)
|
|
||||||
find_package_wrapper(OpenAL)
|
|
||||||
if(NOT OPENAL_FOUND)
|
|
||||||
set(WITH_OPENAL OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_SDL)
|
|
||||||
if(WITH_SDL_DYNLOAD)
|
|
||||||
set(SDL_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/extern/sdlew/include/SDL2")
|
|
||||||
set(SDL_LIBRARY)
|
|
||||||
else()
|
|
||||||
find_package_wrapper(SDL2)
|
|
||||||
if(SDL2_FOUND)
|
|
||||||
# Use same names for both versions of SDL until we move to 2.x.
|
|
||||||
set(SDL_INCLUDE_DIR "${SDL2_INCLUDE_DIR}")
|
|
||||||
set(SDL_LIBRARY "${SDL2_LIBRARY}")
|
|
||||||
set(SDL_FOUND "${SDL2_FOUND}")
|
|
||||||
else()
|
|
||||||
find_package_wrapper(SDL)
|
|
||||||
endif()
|
|
||||||
mark_as_advanced(
|
|
||||||
SDL_INCLUDE_DIR
|
|
||||||
SDL_LIBRARY
|
|
||||||
)
|
|
||||||
# unset(SDLMAIN_LIBRARY CACHE)
|
|
||||||
if(NOT SDL_FOUND)
|
|
||||||
set(WITH_SDL OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_JACK)
|
|
||||||
find_package_wrapper(Jack)
|
|
||||||
if(NOT JACK_FOUND)
|
|
||||||
set(WITH_JACK OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Codecs
|
|
||||||
if(WITH_CODEC_SNDFILE)
|
|
||||||
find_package_wrapper(SndFile)
|
|
||||||
if(NOT SNDFILE_FOUND)
|
|
||||||
set(WITH_CODEC_SNDFILE OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_CODEC_FFMPEG)
|
|
||||||
set(FFMPEG /usr CACHE PATH "FFMPEG Directory")
|
|
||||||
set(FFMPEG_LIBRARIES avformat avcodec avutil avdevice swscale CACHE STRING "FFMPEG Libraries")
|
|
||||||
|
|
||||||
mark_as_advanced(FFMPEG)
|
|
||||||
|
|
||||||
# lame, but until we have proper find module for ffmpeg
|
|
||||||
set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
|
|
||||||
if(EXISTS "${FFMPEG}/include/ffmpeg/")
|
|
||||||
list(APPEND FFMPEG_INCLUDE_DIRS "${FFMPEG}/include/ffmpeg")
|
|
||||||
endif()
|
|
||||||
# end lameness
|
|
||||||
|
|
||||||
mark_as_advanced(FFMPEG_LIBRARIES)
|
|
||||||
set(FFMPEG_LIBPATH ${FFMPEG}/lib)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_FFTW3)
|
|
||||||
find_package_wrapper(Fftw3)
|
|
||||||
if(NOT FFTW3_FOUND)
|
|
||||||
set(WITH_FFTW3 OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_OPENCOLLADA)
|
|
||||||
find_package_wrapper(OpenCOLLADA)
|
|
||||||
if(OPENCOLLADA_FOUND)
|
|
||||||
find_package_wrapper(XML2)
|
|
||||||
find_package_wrapper(PCRE)
|
|
||||||
else()
|
|
||||||
set(WITH_OPENCOLLADA OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_MEM_JEMALLOC)
|
|
||||||
find_package_wrapper(JeMalloc)
|
|
||||||
if(NOT JEMALLOC_FOUND)
|
|
||||||
set(WITH_MEM_JEMALLOC OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_INPUT_NDOF)
|
|
||||||
find_package_wrapper(Spacenav)
|
|
||||||
if(SPACENAV_FOUND)
|
|
||||||
# use generic names within blenders buildsystem.
|
|
||||||
set(NDOF_INCLUDE_DIRS ${SPACENAV_INCLUDE_DIRS})
|
|
||||||
set(NDOF_LIBRARIES ${SPACENAV_LIBRARIES})
|
|
||||||
else()
|
|
||||||
set(WITH_INPUT_NDOF OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_CYCLES_OSL)
|
|
||||||
set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
|
|
||||||
if(NOT OSL_ROOT)
|
|
||||||
set(OSL_ROOT ${CYCLES_OSL})
|
|
||||||
endif()
|
|
||||||
find_package_wrapper(OpenShadingLanguage)
|
|
||||||
if(OSL_FOUND)
|
|
||||||
if(${OSL_LIBRARY_VERSION_MAJOR} EQUAL "1" AND ${OSL_LIBRARY_VERSION_MINOR} LESS "6")
|
|
||||||
# Note: --whole-archive is needed to force loading of all symbols in liboslexec,
|
|
||||||
# otherwise LLVM is missing the osl_allocate_closure_component function
|
|
||||||
set(OSL_LIBRARIES
|
|
||||||
${OSL_OSLCOMP_LIBRARY}
|
|
||||||
-Wl,--whole-archive ${OSL_OSLEXEC_LIBRARY}
|
|
||||||
-Wl,--no-whole-archive ${OSL_OSLQUERY_LIBRARY}
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
message(STATUS "OSL not found, disabling it from Cycles")
|
|
||||||
set(WITH_CYCLES_OSL OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_OPENVDB)
|
|
||||||
find_package_wrapper(OpenVDB)
|
|
||||||
find_package_wrapper(TBB)
|
|
||||||
if(NOT OPENVDB_FOUND OR NOT TBB_FOUND)
|
|
||||||
set(WITH_OPENVDB OFF)
|
|
||||||
set(WITH_OPENVDB_BLOSC OFF)
|
|
||||||
message(STATUS "OpenVDB not found, disabling it")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_ALEMBIC)
|
|
||||||
find_package_wrapper(Alembic)
|
|
||||||
|
|
||||||
if(WITH_ALEMBIC_HDF5)
|
|
||||||
set(HDF5_ROOT_DIR ${LIBDIR}/hdf5)
|
|
||||||
find_package_wrapper(HDF5)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT ALEMBIC_FOUND OR (WITH_ALEMBIC_HDF5 AND NOT HDF5_FOUND))
|
|
||||||
set(WITH_ALEMBIC OFF)
|
|
||||||
set(WITH_ALEMBIC_HDF5 OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_BOOST)
|
|
||||||
# uses in build instructions to override include and library variables
|
|
||||||
if(NOT BOOST_CUSTOM)
|
|
||||||
if(WITH_STATIC_LIBS)
|
|
||||||
set(Boost_USE_STATIC_LIBS ON)
|
|
||||||
endif()
|
|
||||||
set(Boost_USE_MULTITHREADED ON)
|
|
||||||
set(__boost_packages filesystem regex thread date_time)
|
|
||||||
if(WITH_CYCLES_OSL)
|
|
||||||
if(NOT (${OSL_LIBRARY_VERSION_MAJOR} EQUAL "1" AND ${OSL_LIBRARY_VERSION_MINOR} LESS "6"))
|
|
||||||
list(APPEND __boost_packages wave)
|
|
||||||
else()
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
if(WITH_INTERNATIONAL)
|
|
||||||
list(APPEND __boost_packages locale)
|
|
||||||
endif()
|
|
||||||
if(WITH_CYCLES_NETWORK)
|
|
||||||
list(APPEND __boost_packages serialization)
|
|
||||||
endif()
|
|
||||||
if(WITH_OPENVDB)
|
|
||||||
list(APPEND __boost_packages iostreams)
|
|
||||||
endif()
|
|
||||||
list(APPEND __boost_packages system)
|
|
||||||
find_package(Boost 1.48 COMPONENTS ${__boost_packages})
|
|
||||||
if(NOT Boost_FOUND)
|
|
||||||
# try to find non-multithreaded if -mt not found, this flag
|
|
||||||
# doesn't matter for us, it has nothing to do with thread
|
|
||||||
# safety, but keep it to not disturb build setups
|
|
||||||
set(Boost_USE_MULTITHREADED OFF)
|
|
||||||
find_package(Boost 1.48 COMPONENTS ${__boost_packages})
|
|
||||||
endif()
|
|
||||||
unset(__boost_packages)
|
|
||||||
if(Boost_USE_STATIC_LIBS AND WITH_BOOST_ICU)
|
|
||||||
find_package(IcuLinux)
|
|
||||||
endif()
|
|
||||||
mark_as_advanced(Boost_DIR) # why doesnt boost do this?
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(BOOST_INCLUDE_DIR ${Boost_INCLUDE_DIRS})
|
|
||||||
set(BOOST_LIBRARIES ${Boost_LIBRARIES})
|
|
||||||
set(BOOST_LIBPATH ${Boost_LIBRARY_DIRS})
|
|
||||||
set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_OPENIMAGEIO)
|
|
||||||
find_package_wrapper(OpenImageIO)
|
|
||||||
if(NOT OPENIMAGEIO_PUGIXML_FOUND AND WITH_CYCLES_STANDALONE)
|
|
||||||
find_package_wrapper(PugiXML)
|
|
||||||
else()
|
|
||||||
set(PUGIXML_INCLUDE_DIR "${OPENIMAGEIO_INCLUDE_DIR/OpenImageIO}")
|
|
||||||
set(PUGIXML_LIBRARIES "")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(OPENIMAGEIO_LIBRARIES
|
|
||||||
${OPENIMAGEIO_LIBRARIES}
|
|
||||||
${PNG_LIBRARIES}
|
|
||||||
${JPEG_LIBRARIES}
|
|
||||||
${ZLIB_LIBRARIES}
|
|
||||||
${BOOST_LIBRARIES}
|
|
||||||
)
|
|
||||||
set(OPENIMAGEIO_LIBPATH) # TODO, remove and reference the absolute path everywhere
|
|
||||||
set(OPENIMAGEIO_DEFINITIONS "")
|
|
||||||
|
|
||||||
if(WITH_IMAGE_TIFF)
|
|
||||||
list(APPEND OPENIMAGEIO_LIBRARIES "${TIFF_LIBRARY}")
|
|
||||||
endif()
|
|
||||||
if(WITH_IMAGE_OPENEXR)
|
|
||||||
list(APPEND OPENIMAGEIO_LIBRARIES "${OPENEXR_LIBRARIES}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT OPENIMAGEIO_FOUND)
|
|
||||||
set(WITH_OPENIMAGEIO OFF)
|
|
||||||
message(STATUS "OpenImageIO not found, disabling WITH_CYCLES")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_OPENCOLORIO)
|
|
||||||
find_package_wrapper(OpenColorIO)
|
|
||||||
|
|
||||||
set(OPENCOLORIO_LIBRARIES ${OPENCOLORIO_LIBRARIES})
|
|
||||||
set(OPENCOLORIO_LIBPATH) # TODO, remove and reference the absolute path everywhere
|
|
||||||
set(OPENCOLORIO_DEFINITIONS)
|
|
||||||
|
|
||||||
if(NOT OPENCOLORIO_FOUND)
|
|
||||||
set(WITH_OPENCOLORIO OFF)
|
|
||||||
message(STATUS "OpenColorIO not found")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_LLVM)
|
|
||||||
find_package_wrapper(LLVM)
|
|
||||||
|
|
||||||
if(NOT LLVM_FOUND)
|
|
||||||
set(WITH_LLVM OFF)
|
|
||||||
message(STATUS "LLVM not found")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_LLVM OR WITH_SDL_DYNLOAD)
|
|
||||||
# Fix for conflict with Mesa llvmpipe
|
|
||||||
set(PLATFORM_LINKFLAGS
|
|
||||||
"${PLATFORM_LINKFLAGS} -Wl,--version-script='${CMAKE_SOURCE_DIR}/source/creator/blender.map'"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_OPENSUBDIV)
|
|
||||||
find_package_wrapper(OpenSubdiv)
|
|
||||||
|
|
||||||
set(OPENSUBDIV_LIBRARIES ${OPENSUBDIV_LIBRARIES})
|
|
||||||
set(OPENSUBDIV_LIBPATH) # TODO, remove and reference the absolute path everywhere
|
|
||||||
|
|
||||||
if(NOT OPENSUBDIV_FOUND)
|
|
||||||
set(WITH_OPENSUBDIV OFF)
|
|
||||||
message(STATUS "OpenSubdiv not found")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# OpenSuse needs lutil, ArchLinux not, for now keep, can avoid by using --as-needed
|
|
||||||
list(APPEND PLATFORM_LINKLIBS -lutil -lc -lm)
|
|
||||||
|
|
||||||
find_package(Threads REQUIRED)
|
|
||||||
list(APPEND PLATFORM_LINKLIBS ${CMAKE_THREAD_LIBS_INIT})
|
|
||||||
# used by other platforms
|
|
||||||
set(PTHREADS_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
|
|
||||||
|
|
||||||
if(CMAKE_DL_LIBS)
|
|
||||||
list(APPEND PLATFORM_LINKLIBS ${CMAKE_DL_LIBS})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
|
||||||
if(NOT WITH_PYTHON_MODULE)
|
|
||||||
# binreloc is linux only
|
|
||||||
set(BINRELOC_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extern/binreloc/include)
|
|
||||||
set(WITH_BINRELOC ON)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# lfs on glibc, all compilers should use
|
|
||||||
add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
|
|
||||||
|
|
||||||
# GNU Compiler
|
|
||||||
if(CMAKE_COMPILER_IS_GNUCC)
|
|
||||||
set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
|
|
||||||
|
|
||||||
# use ld.gold linker if available, could make optional
|
|
||||||
execute_process(
|
|
||||||
COMMAND ${CMAKE_C_COMPILER} -fuse-ld=gold -Wl,--version
|
|
||||||
ERROR_QUIET OUTPUT_VARIABLE LD_VERSION)
|
|
||||||
if("${LD_VERSION}" MATCHES "GNU gold")
|
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fuse-ld=gold")
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fuse-ld=gold")
|
|
||||||
else()
|
|
||||||
message(STATUS "GNU gold linker isn't available, using the default system linker.")
|
|
||||||
endif()
|
|
||||||
unset(LD_VERSION)
|
|
||||||
|
|
||||||
# CLang is the same as GCC for now.
|
|
||||||
elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
|
|
||||||
set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
|
|
||||||
# Solaris CC
|
|
||||||
elseif(CMAKE_C_COMPILER_ID MATCHES "SunPro")
|
|
||||||
set(PLATFORM_CFLAGS "-pipe -features=extensions -fPIC -D__FUNCTION__=__func__")
|
|
||||||
|
|
||||||
# Intel C++ Compiler
|
|
||||||
elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
|
|
||||||
# think these next two are broken
|
|
||||||
find_program(XIAR xiar)
|
|
||||||
if(XIAR)
|
|
||||||
set(CMAKE_AR "${XIAR}")
|
|
||||||
endif()
|
|
||||||
mark_as_advanced(XIAR)
|
|
||||||
|
|
||||||
find_program(XILD xild)
|
|
||||||
if(XILD)
|
|
||||||
set(CMAKE_LINKER "${XILD}")
|
|
||||||
endif()
|
|
||||||
mark_as_advanced(XILD)
|
|
||||||
|
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fp-model precise -prec_div -parallel")
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fp-model precise -prec_div -parallel")
|
|
||||||
|
|
||||||
# set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -diag-enable sc3")
|
|
||||||
set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
|
|
||||||
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-intel")
|
|
||||||
endif()
|
|
||||||
@@ -1,87 +0,0 @@
|
|||||||
# ***** BEGIN GPL LICENSE BLOCK *****
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or
|
|
||||||
# modify it under the terms of the GNU General Public License
|
|
||||||
# as published by the Free Software Foundation; either version 2
|
|
||||||
# of the License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program; if not, write to the Free Software Foundation,
|
|
||||||
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
#
|
|
||||||
# The Original Code is Copyright (C) 2016, Blender Foundation
|
|
||||||
# All rights reserved.
|
|
||||||
#
|
|
||||||
# Contributor(s): Sergey Sharybin.
|
|
||||||
#
|
|
||||||
# ***** END GPL LICENSE BLOCK *****
|
|
||||||
|
|
||||||
# Libraries configuration for Windows.
|
|
||||||
|
|
||||||
add_definitions(-DWIN32)
|
|
||||||
|
|
||||||
if(MSVC)
|
|
||||||
include(platform_win32_msvc)
|
|
||||||
elseif(CMAKE_COMPILER_IS_GNUCC)
|
|
||||||
include(platform_win32_mingw)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Things common to both mingw and MSVC should go here
|
|
||||||
|
|
||||||
set(WINTAB_INC ${LIBDIR}/wintab/include)
|
|
||||||
|
|
||||||
if(WITH_OPENAL)
|
|
||||||
set(OPENAL ${LIBDIR}/openal)
|
|
||||||
set(OPENALDIR ${LIBDIR}/openal)
|
|
||||||
set(OPENAL_INCLUDE_DIR ${OPENAL}/include)
|
|
||||||
if(MSVC)
|
|
||||||
set(OPENAL_LIBRARY openal32)
|
|
||||||
else()
|
|
||||||
set(OPENAL_LIBRARY wrap_oal)
|
|
||||||
endif()
|
|
||||||
set(OPENAL_LIBPATH ${OPENAL}/lib)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_CODEC_SNDFILE)
|
|
||||||
set(SNDFILE ${LIBDIR}/sndfile)
|
|
||||||
set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include)
|
|
||||||
set(SNDFILE_LIBRARIES libsndfile-1)
|
|
||||||
set(SNDFILE_LIBPATH ${SNDFILE}/lib) # TODO, deprecate
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD)
|
|
||||||
add_definitions(-D__SSE__ -D__MMX__)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_CYCLES_OSL)
|
|
||||||
set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
|
|
||||||
|
|
||||||
find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
|
|
||||||
find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
|
|
||||||
find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
|
|
||||||
find_library(OSL_LIB_EXEC_DEBUG NAMES oslexec_d PATHS ${CYCLES_OSL}/lib)
|
|
||||||
find_library(OSL_LIB_COMP_DEBUG NAMES oslcomp_d PATHS ${CYCLES_OSL}/lib)
|
|
||||||
find_library(OSL_LIB_QUERY_DEBUG NAMES oslquery_d PATHS ${CYCLES_OSL}/lib)
|
|
||||||
list(APPEND OSL_LIBRARIES
|
|
||||||
optimized ${OSL_LIB_COMP}
|
|
||||||
optimized ${OSL_LIB_EXEC}
|
|
||||||
optimized ${OSL_LIB_QUERY}
|
|
||||||
debug ${OSL_LIB_EXEC_DEBUG}
|
|
||||||
debug ${OSL_LIB_COMP_DEBUG}
|
|
||||||
debug ${OSL_LIB_QUERY_DEBUG}
|
|
||||||
)
|
|
||||||
find_path(OSL_INCLUDE_DIR OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
|
|
||||||
find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
|
|
||||||
|
|
||||||
if(OSL_INCLUDE_DIR AND OSL_LIBRARIES AND OSL_COMPILER)
|
|
||||||
set(OSL_FOUND TRUE)
|
|
||||||
else()
|
|
||||||
message(STATUS "OSL not found")
|
|
||||||
set(WITH_CYCLES_OSL OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
@@ -1,302 +0,0 @@
|
|||||||
# ***** BEGIN GPL LICENSE BLOCK *****
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or
|
|
||||||
# modify it under the terms of the GNU General Public License
|
|
||||||
# as published by the Free Software Foundation; either version 2
|
|
||||||
# of the License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program; if not, write to the Free Software Foundation,
|
|
||||||
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
#
|
|
||||||
# The Original Code is Copyright (C) 2016, Blender Foundation
|
|
||||||
# All rights reserved.
|
|
||||||
#
|
|
||||||
# Contributor(s): Sergey Sharybin.
|
|
||||||
#
|
|
||||||
# ***** END GPL LICENSE BLOCK *****
|
|
||||||
|
|
||||||
# Libraries configuration for Windows when compiling with MinGW.
|
|
||||||
|
|
||||||
# keep GCC specific stuff here
|
|
||||||
include(CheckCSourceCompiles)
|
|
||||||
# Setup 64bit and 64bit windows systems
|
|
||||||
CHECK_C_SOURCE_COMPILES("
|
|
||||||
#ifndef __MINGW64__
|
|
||||||
#error
|
|
||||||
#endif
|
|
||||||
int main(void) { return 0; }
|
|
||||||
"
|
|
||||||
WITH_MINGW64
|
|
||||||
)
|
|
||||||
|
|
||||||
if(NOT DEFINED LIBDIR)
|
|
||||||
if(WITH_MINGW64)
|
|
||||||
message(STATUS "Compiling for 64 bit with MinGW-w64.")
|
|
||||||
set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw64)
|
|
||||||
else()
|
|
||||||
message(STATUS "Compiling for 32 bit with MinGW-w32.")
|
|
||||||
set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw32)
|
|
||||||
|
|
||||||
if(WITH_RAYOPTIMIZATION)
|
|
||||||
message(WARNING "MinGW-w32 is known to be unstable with 'WITH_RAYOPTIMIZATION' option enabled.")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
message(STATUS "Using pre-compiled LIBDIR: ${LIBDIR}")
|
|
||||||
endif()
|
|
||||||
if(NOT EXISTS "${LIBDIR}/")
|
|
||||||
message(FATAL_ERROR "Windows requires pre-compiled libs at: '${LIBDIR}'")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
list(APPEND PLATFORM_LINKLIBS
|
|
||||||
-lshell32 -lshfolder -lgdi32 -lmsvcrt -lwinmm -lmingw32 -lm -lws2_32
|
|
||||||
-lz -lstdc++ -lole32 -luuid -lwsock32 -lpsapi -ldbghelp
|
|
||||||
)
|
|
||||||
|
|
||||||
if(WITH_INPUT_IME)
|
|
||||||
list(APPEND PLATFORM_LINKLIBS -limm32)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(PLATFORM_CFLAGS "-pipe -funsigned-char -fno-strict-aliasing")
|
|
||||||
|
|
||||||
if(WITH_MINGW64)
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive")
|
|
||||||
list(APPEND PLATFORM_LINKLIBS -lpthread)
|
|
||||||
|
|
||||||
add_definitions(-DFREE_WINDOWS64 -DMS_WIN64)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
|
|
||||||
|
|
||||||
add_definitions(-DFREE_WINDOWS)
|
|
||||||
|
|
||||||
set(PNG "${LIBDIR}/png")
|
|
||||||
set(PNG_INCLUDE_DIRS "${PNG}/include")
|
|
||||||
set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
|
|
||||||
|
|
||||||
if(WITH_MINGW64)
|
|
||||||
set(JPEG_LIBRARIES jpeg)
|
|
||||||
else()
|
|
||||||
set(JPEG_LIBRARIES libjpeg)
|
|
||||||
endif()
|
|
||||||
set(PNG_LIBRARIES png)
|
|
||||||
|
|
||||||
set(ZLIB ${LIBDIR}/zlib)
|
|
||||||
set(ZLIB_INCLUDE_DIRS ${ZLIB}/include)
|
|
||||||
set(ZLIB_LIBPATH ${ZLIB}/lib)
|
|
||||||
set(ZLIB_LIBRARIES z)
|
|
||||||
|
|
||||||
set(JPEG "${LIBDIR}/jpeg")
|
|
||||||
set(JPEG_INCLUDE_DIR "${JPEG}/include")
|
|
||||||
set(JPEG_LIBPATH ${JPEG}/lib) # not cmake defined
|
|
||||||
|
|
||||||
# comes with own pthread library
|
|
||||||
if(NOT WITH_MINGW64)
|
|
||||||
set(PTHREADS ${LIBDIR}/pthreads)
|
|
||||||
#set(PTHREADS_INCLUDE_DIRS ${PTHREADS}/include)
|
|
||||||
set(PTHREADS_LIBPATH ${PTHREADS}/lib)
|
|
||||||
set(PTHREADS_LIBRARIES pthreadGC2)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(FREETYPE ${LIBDIR}/freetype)
|
|
||||||
set(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2)
|
|
||||||
set(FREETYPE_LIBPATH ${FREETYPE}/lib)
|
|
||||||
set(FREETYPE_LIBRARY freetype)
|
|
||||||
|
|
||||||
if(WITH_FFTW3)
|
|
||||||
set(FFTW3 ${LIBDIR}/fftw3)
|
|
||||||
set(FFTW3_LIBRARIES fftw3)
|
|
||||||
set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
|
|
||||||
set(FFTW3_LIBPATH ${FFTW3}/lib)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_OPENCOLLADA)
|
|
||||||
set(OPENCOLLADA ${LIBDIR}/opencollada)
|
|
||||||
set(OPENCOLLADA_INCLUDE_DIRS
|
|
||||||
${OPENCOLLADA}/include/opencollada/COLLADAStreamWriter
|
|
||||||
${OPENCOLLADA}/include/opencollada/COLLADABaseUtils
|
|
||||||
${OPENCOLLADA}/include/opencollada/COLLADAFramework
|
|
||||||
${OPENCOLLADA}/include/opencollada/COLLADASaxFrameworkLoader
|
|
||||||
${OPENCOLLADA}/include/opencollada/GeneratedSaxParser
|
|
||||||
)
|
|
||||||
set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib/opencollada)
|
|
||||||
set(OPENCOLLADA_LIBRARIES
|
|
||||||
OpenCOLLADAStreamWriter
|
|
||||||
OpenCOLLADASaxFrameworkLoader
|
|
||||||
OpenCOLLADAFramework
|
|
||||||
OpenCOLLADABaseUtils
|
|
||||||
GeneratedSaxParser
|
|
||||||
UTF MathMLSolver buffer ftoa xml
|
|
||||||
)
|
|
||||||
set(PCRE_LIBRARIES pcre)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_CODEC_FFMPEG)
|
|
||||||
set(FFMPEG ${LIBDIR}/ffmpeg)
|
|
||||||
set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
|
|
||||||
if(WITH_MINGW64)
|
|
||||||
set(FFMPEG_LIBRARIES avcodec.dll avformat.dll avdevice.dll avutil.dll swscale.dll swresample.dll)
|
|
||||||
else()
|
|
||||||
set(FFMPEG_LIBRARIES avcodec-55 avformat-55 avdevice-55 avutil-52 swscale-2)
|
|
||||||
endif()
|
|
||||||
set(FFMPEG_LIBPATH ${FFMPEG}/lib)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_IMAGE_OPENEXR)
|
|
||||||
set(OPENEXR ${LIBDIR}/openexr)
|
|
||||||
set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
|
|
||||||
set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
|
|
||||||
set(OPENEXR_LIBRARIES Half IlmImf Imath IlmThread Iex)
|
|
||||||
set(OPENEXR_LIBPATH ${OPENEXR}/lib)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_IMAGE_TIFF)
|
|
||||||
set(TIFF ${LIBDIR}/tiff)
|
|
||||||
set(TIFF_LIBRARY tiff)
|
|
||||||
set(TIFF_INCLUDE_DIR ${TIFF}/include)
|
|
||||||
set(TIFF_LIBPATH ${TIFF}/lib)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_JACK)
|
|
||||||
set(JACK ${LIBDIR}/jack)
|
|
||||||
set(JACK_INCLUDE_DIRS ${JACK}/include/jack ${JACK}/include)
|
|
||||||
set(JACK_LIBRARIES jack)
|
|
||||||
set(JACK_LIBPATH ${JACK}/lib)
|
|
||||||
|
|
||||||
# TODO, gives linking errors, force off
|
|
||||||
set(WITH_JACK OFF)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_PYTHON)
|
|
||||||
# normally cached but not since we include them with blender
|
|
||||||
set(PYTHON_VERSION 3.5) # CACHE STRING)
|
|
||||||
string(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION})
|
|
||||||
set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}") # CACHE PATH)
|
|
||||||
set(PYTHON_LIBRARY "${LIBDIR}/python/lib/python${_PYTHON_VERSION_NO_DOTS}mw.lib") # CACHE FILEPATH)
|
|
||||||
unset(_PYTHON_VERSION_NO_DOTS)
|
|
||||||
|
|
||||||
# uncached vars
|
|
||||||
set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
|
|
||||||
set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_BOOST)
|
|
||||||
set(BOOST ${LIBDIR}/boost)
|
|
||||||
set(BOOST_INCLUDE_DIR ${BOOST}/include)
|
|
||||||
if(WITH_MINGW64)
|
|
||||||
set(BOOST_POSTFIX "mgw47-mt-s-1_49")
|
|
||||||
set(BOOST_DEBUG_POSTFIX "mgw47-mt-sd-1_49")
|
|
||||||
else()
|
|
||||||
set(BOOST_POSTFIX "mgw46-mt-s-1_49")
|
|
||||||
set(BOOST_DEBUG_POSTFIX "mgw46-mt-sd-1_49")
|
|
||||||
endif()
|
|
||||||
set(BOOST_LIBRARIES
|
|
||||||
optimized boost_date_time-${BOOST_POSTFIX} boost_filesystem-${BOOST_POSTFIX}
|
|
||||||
boost_regex-${BOOST_POSTFIX}
|
|
||||||
boost_system-${BOOST_POSTFIX} boost_thread-${BOOST_POSTFIX}
|
|
||||||
debug boost_date_time-${BOOST_DEBUG_POSTFIX} boost_filesystem-${BOOST_DEBUG_POSTFIX}
|
|
||||||
boost_regex-${BOOST_DEBUG_POSTFIX}
|
|
||||||
boost_system-${BOOST_DEBUG_POSTFIX} boost_thread-${BOOST_DEBUG_POSTFIX})
|
|
||||||
if(WITH_INTERNATIONAL)
|
|
||||||
set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
|
|
||||||
optimized boost_locale-${BOOST_POSTFIX}
|
|
||||||
debug boost_locale-${BOOST_DEBUG_POSTFIX}
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
if(WITH_CYCLES_OSL)
|
|
||||||
set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
|
|
||||||
optimized boost_wave-${BOOST_POSTFIX}
|
|
||||||
debug boost_wave-${BOOST_DEBUG_POSTFIX}
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
set(BOOST_LIBPATH ${BOOST}/lib)
|
|
||||||
set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB -DBOOST_THREAD_USE_LIB ")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_OPENIMAGEIO)
|
|
||||||
set(OPENIMAGEIO ${LIBDIR}/openimageio)
|
|
||||||
set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
|
|
||||||
set(OPENIMAGEIO_LIBRARIES OpenImageIO)
|
|
||||||
set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib)
|
|
||||||
set(OPENIMAGEIO_DEFINITIONS "")
|
|
||||||
set(OPENIMAGEIO_IDIFF "${OPENIMAGEIO}/bin/idiff.exe")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_LLVM)
|
|
||||||
set(LLVM_ROOT_DIR ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
|
|
||||||
set(LLVM_LIBPATH ${LLVM_ROOT_DIR}/lib)
|
|
||||||
# Explicitly set llvm lib order.
|
|
||||||
#---- WARNING ON GCC ORDER OF LIBS IS IMPORTANT, DO NOT CHANGE! ---------
|
|
||||||
set(LLVM_LIBRARY LLVMSelectionDAG LLVMCodeGen LLVMScalarOpts LLVMAnalysis LLVMArchive
|
|
||||||
LLVMAsmParser LLVMAsmPrinter
|
|
||||||
LLVMBitReader LLVMBitWriter
|
|
||||||
LLVMDebugInfo LLVMExecutionEngine
|
|
||||||
LLVMInstCombine LLVMInstrumentation
|
|
||||||
LLVMInterpreter LLVMJIT
|
|
||||||
LLVMLinker LLVMMC
|
|
||||||
LLVMMCDisassembler LLVMMCJIT
|
|
||||||
LLVMMCParser LLVMObject
|
|
||||||
LLVMRuntimeDyld
|
|
||||||
LLVMSupport
|
|
||||||
LLVMTableGen LLVMTarget
|
|
||||||
LLVMTransformUtils LLVMVectorize
|
|
||||||
LLVMX86AsmParser LLVMX86AsmPrinter
|
|
||||||
LLVMX86CodeGen LLVMX86Desc
|
|
||||||
LLVMX86Disassembler LLVMX86Info
|
|
||||||
LLVMX86Utils LLVMipa
|
|
||||||
LLVMipo LLVMCore)
|
|
||||||
# imagehelp is needed by LLVM 3.1 on MinGW, check lib\Support\Windows\Signals.inc
|
|
||||||
list(APPEND PLATFORM_LINKLIBS -limagehlp)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_OPENCOLORIO)
|
|
||||||
set(OPENCOLORIO ${LIBDIR}/opencolorio)
|
|
||||||
set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
|
|
||||||
set(OPENCOLORIO_LIBRARIES OpenColorIO)
|
|
||||||
set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib)
|
|
||||||
set(OPENCOLORIO_DEFINITIONS)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_SDL)
|
|
||||||
set(SDL ${LIBDIR}/sdl)
|
|
||||||
set(SDL_INCLUDE_DIR ${SDL}/include)
|
|
||||||
set(SDL_LIBRARY SDL)
|
|
||||||
set(SDL_LIBPATH ${SDL}/lib)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_OPENVDB)
|
|
||||||
set(OPENVDB ${LIBDIR}/openvdb)
|
|
||||||
set(OPENVDB_INCLUDE_DIRS ${OPENVDB}/include)
|
|
||||||
set(OPENVDB_LIBRARIES openvdb ${TBB_LIBRARIES})
|
|
||||||
set(OPENVDB_LIBPATH ${LIBDIR}/openvdb/lib)
|
|
||||||
set(OPENVDB_DEFINITIONS)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_ALEMBIC)
|
|
||||||
# TODO(sergey): For until someone drops by and compiles libraries for
|
|
||||||
# MinGW we allow users to compile their own Alembic library and use
|
|
||||||
# that via find_package(),
|
|
||||||
#
|
|
||||||
# Once precompiled libraries are there we'll use hardcoded locations.
|
|
||||||
find_package_wrapper(Alembic)
|
|
||||||
if(WITH_ALEMBIC_HDF5)
|
|
||||||
set(HDF5_ROOT_DIR ${LIBDIR}/hdf5)
|
|
||||||
find_package_wrapper(HDF5)
|
|
||||||
endif()
|
|
||||||
if(NOT ALEMBIC_FOUND OR (WITH_ALEMBIC_HDF5 AND NOT HDF5_FOUND))
|
|
||||||
set(WITH_ALEMBIC OFF)
|
|
||||||
set(WITH_ALEMBIC_HDF5 OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(PLATFORM_LINKFLAGS "-Xlinker --stack=2097152")
|
|
||||||
|
|
||||||
## DISABLE - causes linking errors
|
|
||||||
## for re-distribution, so users dont need mingw installed
|
|
||||||
# set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-libgcc -static-libstdc++")
|
|
||||||
@@ -1,485 +0,0 @@
|
|||||||
# ***** BEGIN GPL LICENSE BLOCK *****
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or
|
|
||||||
# modify it under the terms of the GNU General Public License
|
|
||||||
# as published by the Free Software Foundation; either version 2
|
|
||||||
# of the License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program; if not, write to the Free Software Foundation,
|
|
||||||
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
#
|
|
||||||
# The Original Code is Copyright (C) 2016, Blender Foundation
|
|
||||||
# All rights reserved.
|
|
||||||
#
|
|
||||||
# Contributor(s): Sergey Sharybin.
|
|
||||||
#
|
|
||||||
# ***** END GPL LICENSE BLOCK *****
|
|
||||||
|
|
||||||
# Libraries configuration for Windows when compiling with MSVC.
|
|
||||||
|
|
||||||
macro(warn_hardcoded_paths package_name
|
|
||||||
)
|
|
||||||
if(WITH_WINDOWS_FIND_MODULES)
|
|
||||||
message(WARNING "Using HARDCODED ${package_name} locations")
|
|
||||||
endif(WITH_WINDOWS_FIND_MODULES)
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
macro(windows_find_package package_name
|
|
||||||
)
|
|
||||||
if(WITH_WINDOWS_FIND_MODULES)
|
|
||||||
find_package( ${package_name})
|
|
||||||
endif(WITH_WINDOWS_FIND_MODULES)
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
add_definitions(-DWIN32)
|
|
||||||
# Minimum MSVC Version
|
|
||||||
if(MSVC_VERSION EQUAL 1800)
|
|
||||||
set(_min_ver "18.0.31101")
|
|
||||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${_min_ver})
|
|
||||||
message(FATAL_ERROR
|
|
||||||
"Visual Studio 2013 (Update 4, ${_min_ver}) required, "
|
|
||||||
"found (${CMAKE_CXX_COMPILER_VERSION})")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
if(MSVC_VERSION EQUAL 1900)
|
|
||||||
set(_min_ver "19.0.24210")
|
|
||||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${_min_ver})
|
|
||||||
message(FATAL_ERROR
|
|
||||||
"Visual Studio 2015 (Update 3, ${_min_ver}) required, "
|
|
||||||
"found (${CMAKE_CXX_COMPILER_VERSION})")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
unset(_min_ver)
|
|
||||||
|
|
||||||
# needed for some MSVC installations
|
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO")
|
|
||||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO")
|
|
||||||
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /SAFESEH:NO")
|
|
||||||
|
|
||||||
list(APPEND PLATFORM_LINKLIBS
|
|
||||||
ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32
|
|
||||||
advapi32 shfolder shell32 ole32 oleaut32 uuid psapi Dbghelp
|
|
||||||
)
|
|
||||||
|
|
||||||
if(WITH_INPUT_IME)
|
|
||||||
list(APPEND PLATFORM_LINKLIBS imm32)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_definitions(
|
|
||||||
-D_CRT_NONSTDC_NO_DEPRECATE
|
|
||||||
-D_CRT_SECURE_NO_DEPRECATE
|
|
||||||
-D_SCL_SECURE_NO_DEPRECATE
|
|
||||||
-D_CONSOLE
|
|
||||||
-D_LIB
|
|
||||||
)
|
|
||||||
|
|
||||||
# MSVC11 needs _ALLOW_KEYWORD_MACROS to build
|
|
||||||
add_definitions(-D_ALLOW_KEYWORD_MACROS)
|
|
||||||
|
|
||||||
# We want to support Vista level ABI
|
|
||||||
add_definitions(-D_WIN32_WINNT=0x600)
|
|
||||||
|
|
||||||
# Make cmake find the msvc redistributables
|
|
||||||
set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE)
|
|
||||||
include(InstallRequiredSystemLibraries)
|
|
||||||
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /nologo /J /Gd /MP /EHsc")
|
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /nologo /J /Gd /MP")
|
|
||||||
|
|
||||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
|
|
||||||
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MTd")
|
|
||||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
|
|
||||||
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MT")
|
|
||||||
set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /MT")
|
|
||||||
set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL} /MT")
|
|
||||||
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /MT")
|
|
||||||
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /MT")
|
|
||||||
|
|
||||||
set(PLATFORM_LINKFLAGS "/SUBSYSTEM:CONSOLE /STACK:2097152 /INCREMENTAL:NO ")
|
|
||||||
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcmrt.lib /NODEFAULTLIB:msvcurt.lib /NODEFAULTLIB:msvcrtd.lib ")
|
|
||||||
|
|
||||||
# Ignore meaningless for us linker warnings.
|
|
||||||
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} /ignore:4049 /ignore:4217 /ignore:4221")
|
|
||||||
set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} /ignore:4221")
|
|
||||||
|
|
||||||
# MSVC only, Mingw doesnt need
|
|
||||||
if(CMAKE_CL_64)
|
|
||||||
set(PLATFORM_LINKFLAGS "/MACHINE:X64 /OPT:NOREF ${PLATFORM_LINKFLAGS}")
|
|
||||||
else()
|
|
||||||
set(PLATFORM_LINKFLAGS "/MACHINE:IX86 /LARGEADDRESSAWARE ${PLATFORM_LINKFLAGS}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(PLATFORM_LINKFLAGS_DEBUG "/IGNORE:4099 /NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libc.lib")
|
|
||||||
|
|
||||||
if(NOT DEFINED LIBDIR)
|
|
||||||
|
|
||||||
# Setup 64bit and 64bit windows systems
|
|
||||||
if(CMAKE_CL_64)
|
|
||||||
message(STATUS "64 bit compiler detected.")
|
|
||||||
set(LIBDIR_BASE "win64")
|
|
||||||
else()
|
|
||||||
message(STATUS "32 bit compiler detected.")
|
|
||||||
set(LIBDIR_BASE "windows")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(MSVC_VERSION EQUAL 1900)
|
|
||||||
message(STATUS "Visual Studio 2015 detected.")
|
|
||||||
set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/${LIBDIR_BASE}_vc14)
|
|
||||||
else()
|
|
||||||
message(STATUS "Visual Studio 2013 detected.")
|
|
||||||
set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/${LIBDIR_BASE}_vc12)
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
message(STATUS "Using pre-compiled LIBDIR: ${LIBDIR}")
|
|
||||||
endif()
|
|
||||||
if(NOT EXISTS "${LIBDIR}/")
|
|
||||||
message(FATAL_ERROR "Windows requires pre-compiled libs at: '${LIBDIR}'")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Add each of our libraries to our cmake_prefix_path so find_package() could work
|
|
||||||
file(GLOB children RELATIVE ${LIBDIR} ${LIBDIR}/*)
|
|
||||||
foreach(child ${children})
|
|
||||||
if(IS_DIRECTORY ${LIBDIR}/${child})
|
|
||||||
list(APPEND CMAKE_PREFIX_PATH ${LIBDIR}/${child})
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
set(ZLIB_INCLUDE_DIRS ${LIBDIR}/zlib/include)
|
|
||||||
set(ZLIB_LIBRARIES ${LIBDIR}/zlib/lib/libz_st.lib)
|
|
||||||
set(ZLIB_INCLUDE_DIR ${LIBDIR}/zlib/include)
|
|
||||||
set(ZLIB_LIBRARY ${LIBDIR}/zlib/lib/libz_st.lib)
|
|
||||||
set(ZLIB_DIR ${LIBDIR}/zlib)
|
|
||||||
|
|
||||||
windows_find_package(zlib) # we want to find before finding things that depend on it like png
|
|
||||||
windows_find_package(png)
|
|
||||||
|
|
||||||
if(NOT PNG_FOUND)
|
|
||||||
warn_hardcoded_paths(libpng)
|
|
||||||
set(PNG_PNG_INCLUDE_DIR ${LIBDIR}/png/include)
|
|
||||||
set(PNG_LIBRARIES libpng)
|
|
||||||
set(PNG "${LIBDIR}/png")
|
|
||||||
set(PNG_INCLUDE_DIRS "${PNG}/include")
|
|
||||||
set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(JPEG_NAMES ${JPEG_NAMES} libjpeg)
|
|
||||||
windows_find_package(jpeg REQUIRED)
|
|
||||||
if(NOT JPEG_FOUND)
|
|
||||||
warn_hardcoded_paths(jpeg)
|
|
||||||
set(JPEG_INCLUDE_DIR ${LIBDIR}/jpeg/include)
|
|
||||||
set(JPEG_LIBRARIES ${LIBDIR}/jpeg/lib/libjpeg.lib)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(PTHREADS_INCLUDE_DIRS ${LIBDIR}/pthreads/include)
|
|
||||||
set(PTHREADS_LIBRARIES ${LIBDIR}/pthreads/lib/pthreadVC2.lib)
|
|
||||||
|
|
||||||
set(FREETYPE ${LIBDIR}/freetype)
|
|
||||||
set(FREETYPE_INCLUDE_DIRS
|
|
||||||
${LIBDIR}/freetype/include
|
|
||||||
${LIBDIR}/freetype/include/freetype2
|
|
||||||
)
|
|
||||||
set(FREETYPE_LIBRARY ${LIBDIR}/freetype/lib/freetype2ST.lib)
|
|
||||||
windows_find_package(freetype REQUIRED)
|
|
||||||
|
|
||||||
if(WITH_FFTW3)
|
|
||||||
set(FFTW3 ${LIBDIR}/fftw3)
|
|
||||||
set(FFTW3_LIBRARIES libfftw)
|
|
||||||
set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
|
|
||||||
set(FFTW3_LIBPATH ${FFTW3}/lib)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_OPENCOLLADA)
|
|
||||||
set(OPENCOLLADA ${LIBDIR}/opencollada)
|
|
||||||
|
|
||||||
set(OPENCOLLADA_INCLUDE_DIRS
|
|
||||||
${OPENCOLLADA}/include/opencollada/COLLADAStreamWriter
|
|
||||||
${OPENCOLLADA}/include/opencollada/COLLADABaseUtils
|
|
||||||
${OPENCOLLADA}/include/opencollada/COLLADAFramework
|
|
||||||
${OPENCOLLADA}/include/opencollada/COLLADASaxFrameworkLoader
|
|
||||||
${OPENCOLLADA}/include/opencollada/GeneratedSaxParser
|
|
||||||
)
|
|
||||||
|
|
||||||
set(OPENCOLLADA_LIBRARIES
|
|
||||||
${OPENCOLLADA}/lib/opencollada/OpenCOLLADASaxFrameworkLoader.lib
|
|
||||||
${OPENCOLLADA}/lib/opencollada/OpenCOLLADAFramework.lib
|
|
||||||
${OPENCOLLADA}/lib/opencollada/OpenCOLLADABaseUtils.lib
|
|
||||||
${OPENCOLLADA}/lib/opencollada/OpenCOLLADAStreamWriter.lib
|
|
||||||
${OPENCOLLADA}/lib/opencollada/MathMLSolver.lib
|
|
||||||
${OPENCOLLADA}/lib/opencollada/GeneratedSaxParser.lib
|
|
||||||
${OPENCOLLADA}/lib/opencollada/xml.lib
|
|
||||||
${OPENCOLLADA}/lib/opencollada/buffer.lib
|
|
||||||
${OPENCOLLADA}/lib/opencollada/ftoa.lib
|
|
||||||
)
|
|
||||||
|
|
||||||
if(NOT WITH_LLVM)
|
|
||||||
list(APPEND OPENCOLLADA_LIBRARIES ${OPENCOLLADA}/lib/opencollada/UTF.lib)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(PCRE_LIBRARIES
|
|
||||||
${OPENCOLLADA}/lib/opencollada/pcre.lib
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_CODEC_FFMPEG)
|
|
||||||
set(FFMPEG_INCLUDE_DIRS
|
|
||||||
${LIBDIR}/ffmpeg/include
|
|
||||||
${LIBDIR}/ffmpeg/include/msvc
|
|
||||||
)
|
|
||||||
windows_find_package(FFMPEG)
|
|
||||||
if(NOT FFMPEG_FOUND)
|
|
||||||
warn_hardcoded_paths(ffmpeg)
|
|
||||||
set(FFMPEG_LIBRARY_VERSION 55)
|
|
||||||
set(FFMPEG_LIBRARY_VERSION_AVU 52)
|
|
||||||
set(FFMPEG_LIBRARIES
|
|
||||||
${LIBDIR}/ffmpeg/lib/avcodec-${FFMPEG_LIBRARY_VERSION}.lib
|
|
||||||
${LIBDIR}/ffmpeg/lib/avformat-${FFMPEG_LIBRARY_VERSION}.lib
|
|
||||||
${LIBDIR}/ffmpeg/lib/avdevice-${FFMPEG_LIBRARY_VERSION}.lib
|
|
||||||
${LIBDIR}/ffmpeg/lib/avutil-${FFMPEG_LIBRARY_VERSION_AVU}.lib
|
|
||||||
${LIBDIR}/ffmpeg/lib/swscale-2.lib
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_IMAGE_OPENEXR)
|
|
||||||
set(OPENEXR_ROOT_DIR ${LIBDIR}/openexr)
|
|
||||||
set(OPENEXR_VERSION "2.1")
|
|
||||||
windows_find_package(OPENEXR REQUIRED)
|
|
||||||
if(NOT OPENEXR_FOUND)
|
|
||||||
warn_hardcoded_paths(OpenEXR)
|
|
||||||
set(OPENEXR ${LIBDIR}/openexr)
|
|
||||||
set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
|
|
||||||
set(OPENEXR_INCLUDE_DIRS ${OPENEXR_INCLUDE_DIR} ${OPENEXR}/include/OpenEXR)
|
|
||||||
set(OPENEXR_LIBPATH ${OPENEXR}/lib)
|
|
||||||
set(OPENEXR_LIBRARIES
|
|
||||||
optimized ${OPENEXR_LIBPATH}/Iex-2_2.lib
|
|
||||||
optimized ${OPENEXR_LIBPATH}/Half.lib
|
|
||||||
optimized ${OPENEXR_LIBPATH}/IlmImf-2_2.lib
|
|
||||||
optimized ${OPENEXR_LIBPATH}/Imath-2_2.lib
|
|
||||||
optimized ${OPENEXR_LIBPATH}/IlmThread-2_2.lib
|
|
||||||
debug ${OPENEXR_LIBPATH}/Iex-2_2_d.lib
|
|
||||||
debug ${OPENEXR_LIBPATH}/Half_d.lib
|
|
||||||
debug ${OPENEXR_LIBPATH}/IlmImf-2_2_d.lib
|
|
||||||
debug ${OPENEXR_LIBPATH}/Imath-2_2_d.lib
|
|
||||||
debug ${OPENEXR_LIBPATH}/IlmThread-2_2_d.lib
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_IMAGE_TIFF)
|
|
||||||
# Try to find tiff first then complain and set static and maybe wrong paths
|
|
||||||
windows_find_package(TIFF)
|
|
||||||
if(NOT TIFF_FOUND)
|
|
||||||
warn_hardcoded_paths(libtiff)
|
|
||||||
set(TIFF_LIBRARY ${LIBDIR}/tiff/lib/libtiff.lib)
|
|
||||||
set(TIFF_INCLUDE_DIR ${LIBDIR}/tiff/include)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_JACK)
|
|
||||||
set(JACK_INCLUDE_DIRS
|
|
||||||
${LIBDIR}/jack/include/jack
|
|
||||||
${LIBDIR}/jack/include
|
|
||||||
)
|
|
||||||
set(JACK_LIBRARIES optimized ${LIBDIR}/jack/lib/libjack.lib debug ${LIBDIR}/jack/lib/libjack_d.lib)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_PYTHON)
|
|
||||||
set(PYTHON_VERSION 3.5) # CACHE STRING)
|
|
||||||
|
|
||||||
string(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION})
|
|
||||||
# Use shared libs for vc2008 and vc2010 until we actually have vc2010 libs
|
|
||||||
set(PYTHON_LIBRARY ${LIBDIR}/python/lib/python${_PYTHON_VERSION_NO_DOTS}.lib)
|
|
||||||
unset(_PYTHON_VERSION_NO_DOTS)
|
|
||||||
|
|
||||||
# Shared includes for both vc2008 and vc2010
|
|
||||||
set(PYTHON_INCLUDE_DIR ${LIBDIR}/python/include/python${PYTHON_VERSION})
|
|
||||||
|
|
||||||
# uncached vars
|
|
||||||
set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
|
|
||||||
set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_BOOST)
|
|
||||||
if(WITH_CYCLES_OSL)
|
|
||||||
set(boost_extra_libs wave)
|
|
||||||
endif()
|
|
||||||
if(WITH_INTERNATIONAL)
|
|
||||||
list(APPEND boost_extra_libs locale)
|
|
||||||
endif()
|
|
||||||
if(WITH_OPENVDB)
|
|
||||||
list(APPEND boost_extra_libs iostreams)
|
|
||||||
endif()
|
|
||||||
set(Boost_USE_STATIC_RUNTIME ON) # prefix lib
|
|
||||||
set(Boost_USE_MULTITHREADED ON) # suffix -mt
|
|
||||||
set(Boost_USE_STATIC_LIBS ON) # suffix -s
|
|
||||||
if (WITH_WINDOWS_FIND_MODULES)
|
|
||||||
find_package(Boost COMPONENTS date_time filesystem thread regex system ${boost_extra_libs})
|
|
||||||
endif (WITH_WINDOWS_FIND_MODULES)
|
|
||||||
if(NOT Boost_FOUND)
|
|
||||||
warn_hardcoded_paths(BOOST)
|
|
||||||
set(BOOST ${LIBDIR}/boost)
|
|
||||||
set(BOOST_INCLUDE_DIR ${BOOST}/include)
|
|
||||||
if(MSVC12)
|
|
||||||
set(BOOST_LIBPATH ${BOOST}/lib)
|
|
||||||
set(BOOST_POSTFIX "vc120-mt-s-1_60.lib")
|
|
||||||
set(BOOST_DEBUG_POSTFIX "vc120-mt-sgd-1_60.lib")
|
|
||||||
else()
|
|
||||||
set(BOOST_LIBPATH ${BOOST}/lib)
|
|
||||||
set(BOOST_POSTFIX "vc140-mt-s-1_60.lib")
|
|
||||||
set(BOOST_DEBUG_POSTFIX "vc140-mt-sgd-1_60.lib")
|
|
||||||
endif()
|
|
||||||
set(BOOST_LIBRARIES
|
|
||||||
optimized libboost_date_time-${BOOST_POSTFIX}
|
|
||||||
optimized libboost_filesystem-${BOOST_POSTFIX}
|
|
||||||
optimized libboost_regex-${BOOST_POSTFIX}
|
|
||||||
optimized libboost_system-${BOOST_POSTFIX}
|
|
||||||
optimized libboost_thread-${BOOST_POSTFIX}
|
|
||||||
debug libboost_date_time-${BOOST_DEBUG_POSTFIX}
|
|
||||||
debug libboost_filesystem-${BOOST_DEBUG_POSTFIX}
|
|
||||||
debug libboost_regex-${BOOST_DEBUG_POSTFIX}
|
|
||||||
debug libboost_system-${BOOST_DEBUG_POSTFIX}
|
|
||||||
debug libboost_thread-${BOOST_DEBUG_POSTFIX}
|
|
||||||
)
|
|
||||||
if(WITH_CYCLES_OSL)
|
|
||||||
set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
|
|
||||||
optimized libboost_wave-${BOOST_POSTFIX}
|
|
||||||
debug libboost_wave-${BOOST_DEBUG_POSTFIX})
|
|
||||||
endif()
|
|
||||||
if(WITH_INTERNATIONAL)
|
|
||||||
set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
|
|
||||||
optimized libboost_locale-${BOOST_POSTFIX}
|
|
||||||
debug libboost_locale-${BOOST_DEBUG_POSTFIX})
|
|
||||||
endif()
|
|
||||||
else() # we found boost using find_package
|
|
||||||
set(BOOST_INCLUDE_DIR ${Boost_INCLUDE_DIRS})
|
|
||||||
set(BOOST_LIBRARIES ${Boost_LIBRARIES})
|
|
||||||
set(BOOST_LIBPATH ${Boost_LIBRARY_DIRS})
|
|
||||||
endif()
|
|
||||||
set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_OPENIMAGEIO)
|
|
||||||
windows_find_package(OpenImageIO)
|
|
||||||
set(OPENIMAGEIO ${LIBDIR}/openimageio)
|
|
||||||
set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
|
|
||||||
set(OIIO_OPTIMIZED optimized OpenImageIO optimized OpenImageIO_Util)
|
|
||||||
set(OIIO_DEBUG debug OpenImageIO_d debug OpenImageIO_Util_d)
|
|
||||||
set(OPENIMAGEIO_LIBRARIES ${OIIO_OPTIMIZED} ${OIIO_DEBUG})
|
|
||||||
set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib)
|
|
||||||
set(OPENIMAGEIO_DEFINITIONS "-DUSE_TBB=0")
|
|
||||||
set(OPENCOLORIO_DEFINITIONS "-DOCIO_STATIC_BUILD")
|
|
||||||
set(OPENIMAGEIO_IDIFF "${OPENIMAGEIO}/bin/idiff.exe")
|
|
||||||
add_definitions(-DOIIO_STATIC_BUILD)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_LLVM)
|
|
||||||
set(LLVM_ROOT_DIR ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
|
|
||||||
file(GLOB LLVM_LIBRARY_OPTIMIZED ${LLVM_ROOT_DIR}/lib/*.lib)
|
|
||||||
|
|
||||||
if(EXISTS ${LLVM_ROOT_DIR}/debug/lib)
|
|
||||||
foreach(LLVM_OPTIMIZED_LIB ${LLVM_LIBRARY_OPTIMIZED})
|
|
||||||
get_filename_component(LIBNAME ${LLVM_OPTIMIZED_LIB} ABSOLUTE)
|
|
||||||
list(APPEND LLVM_LIBS optimized ${LIBNAME})
|
|
||||||
endforeach(LLVM_OPTIMIZED_LIB)
|
|
||||||
|
|
||||||
file(GLOB LLVM_LIBRARY_DEBUG ${LLVM_ROOT_DIR}/debug/lib/*.lib)
|
|
||||||
|
|
||||||
foreach(LLVM_DEBUG_LIB ${LLVM_LIBRARY_DEBUG})
|
|
||||||
get_filename_component(LIBNAME ${LLVM_DEBUG_LIB} ABSOLUTE)
|
|
||||||
list(APPEND LLVM_LIBS debug ${LIBNAME})
|
|
||||||
endforeach(LLVM_DEBUG_LIB)
|
|
||||||
|
|
||||||
set(LLVM_LIBRARY ${LLVM_LIBS})
|
|
||||||
else()
|
|
||||||
message(WARNING "LLVM debug libs not present on this system. Using release libs for debug builds.")
|
|
||||||
set(LLVM_LIBRARY ${LLVM_LIBRARY_OPTIMIZED})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_OPENCOLORIO)
|
|
||||||
set(OPENCOLORIO ${LIBDIR}/opencolorio)
|
|
||||||
set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
|
|
||||||
set(OPENCOLORIO_LIBRARIES OpenColorIO)
|
|
||||||
set(OPENCOLORIO_LIBPATH ${LIBDIR}/opencolorio/lib)
|
|
||||||
set(OPENCOLORIO_DEFINITIONS)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_OPENVDB)
|
|
||||||
set(BLOSC_LIBRARIES optimized ${LIBDIR}/blosc/lib/libblosc.lib debug ${LIBDIR}/blosc/lib/libblosc_d.lib)
|
|
||||||
set(TBB_LIBRARIES optimized ${LIBDIR}/tbb/lib/tbb.lib debug ${LIBDIR}/tbb/lib/tbb_debug.lib)
|
|
||||||
set(TBB_INCLUDE_DIR ${LIBDIR}/tbb/include)
|
|
||||||
set(OPENVDB ${LIBDIR}/openvdb)
|
|
||||||
set(OPENVDB_INCLUDE_DIRS ${OPENVDB}/include ${TBB_INCLUDE_DIR})
|
|
||||||
set(OPENVDB_LIBRARIES optimized openvdb debug openvdb_d ${TBB_LIBRARIES} ${BLOSC_LIBRARIES})
|
|
||||||
set(OPENVDB_LIBPATH ${LIBDIR}/openvdb/lib)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_ALEMBIC)
|
|
||||||
set(ALEMBIC ${LIBDIR}/alembic)
|
|
||||||
set(ALEMBIC_INCLUDE_DIR ${ALEMBIC}/include)
|
|
||||||
set(ALEMBIC_INCLUDE_DIRS ${ALEMBIC_INCLUDE_DIR})
|
|
||||||
set(ALEMBIC_LIBPATH ${ALEMBIC}/lib)
|
|
||||||
set(ALEMBIC_LIBRARIES optimized alembic debug alembic_d)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_MOD_CLOTH_ELTOPO)
|
|
||||||
set(LAPACK ${LIBDIR}/lapack)
|
|
||||||
# set(LAPACK_INCLUDE_DIR ${LAPACK}/include)
|
|
||||||
set(LAPACK_LIBPATH ${LAPACK}/lib)
|
|
||||||
set(LAPACK_LIBRARIES
|
|
||||||
${LIBDIR}/lapack/lib/libf2c.lib
|
|
||||||
${LIBDIR}/lapack/lib/clapack_nowrap.lib
|
|
||||||
${LIBDIR}/lapack/lib/BLAS_nowrap.lib
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_OPENSUBDIV)
|
|
||||||
set(OPENSUBDIV_INCLUDE_DIR ${LIBDIR}/opensubdiv/include)
|
|
||||||
set(OPENSUBDIV_LIBPATH ${LIBDIR}/opensubdiv/lib)
|
|
||||||
set(OPENSUBDIV_LIBRARIES ${OPENSUBDIV_LIBPATH}/osdCPU.lib ${OPENSUBDIV_LIBPATH}/osdGPU.lib)
|
|
||||||
find_package(OpenSubdiv)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_SDL)
|
|
||||||
set(SDL ${LIBDIR}/sdl)
|
|
||||||
set(SDL_INCLUDE_DIR ${SDL}/include)
|
|
||||||
set(SDL_LIBPATH ${SDL}/lib)
|
|
||||||
# MinGW TODO: Update MinGW to SDL2
|
|
||||||
if(NOT CMAKE_COMPILER_IS_GNUCC)
|
|
||||||
set(SDL_LIBRARY SDL2)
|
|
||||||
else()
|
|
||||||
set(SDL_LIBRARY SDL)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Audio IO
|
|
||||||
if(WITH_SYSTEM_AUDASPACE)
|
|
||||||
set(AUDASPACE_INCLUDE_DIRS ${LIBDIR}/audaspace/include/audaspace)
|
|
||||||
set(AUDASPACE_LIBRARIES ${LIBDIR}/audaspace/lib/audaspace.lib)
|
|
||||||
set(AUDASPACE_C_INCLUDE_DIRS ${LIBDIR}/audaspace/include/audaspace)
|
|
||||||
set(AUDASPACE_C_LIBRARIES ${LIBDIR}/audaspace/lib/audaspace-c.lib)
|
|
||||||
set(AUDASPACE_PY_INCLUDE_DIRS ${LIBDIR}/audaspace/include/audaspace)
|
|
||||||
set(AUDASPACE_PY_LIBRARIES ${LIBDIR}/audaspace/lib/audaspace-py.lib)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# used in many places so include globally, like OpenGL
|
|
||||||
blender_include_dirs_sys("${PTHREADS_INCLUDE_DIRS}")
|
|
||||||
|
|
||||||
#find signtool
|
|
||||||
SET(ProgramFilesX86_NAME "ProgramFiles(x86)") #env dislikes the ( )
|
|
||||||
find_program(SIGNTOOL_EXE signtool
|
|
||||||
HINTS
|
|
||||||
"$ENV{${ProgramFilesX86_NAME}}/Windows Kits/10/bin/x86/"
|
|
||||||
"$ENV{ProgramFiles}/Windows Kits/10/bin/x86/"
|
|
||||||
"$ENV{${ProgramFilesX86_NAME}}/Windows Kits/8.1/bin/x86/"
|
|
||||||
"$ENV{ProgramFiles}/Windows Kits/8.1/bin/x86/"
|
|
||||||
"$ENV{${ProgramFilesX86_NAME}}/Windows Kits/8.0/bin/x86/"
|
|
||||||
"$ENV{ProgramFiles}/Windows Kits/8.0/bin/x86/"
|
|
||||||
)
|
|
||||||
@@ -23,9 +23,11 @@
|
|||||||
# <pep8 compliant>
|
# <pep8 compliant>
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Module for accessing project file data for Blender.
|
Example Win32 usage:
|
||||||
|
c:\Python32\python.exe c:\blender_dev\blender\build_files\cmake\cmake_qtcreator_project.py c:\blender_dev\cmake_build
|
||||||
|
|
||||||
Before use, call init(cmake_build_dir).
|
Example Linux usage:
|
||||||
|
python ~/blenderSVN/blender/build_files/cmake/cmake_qtcreator_project.py ~/blenderSVN/cmake
|
||||||
"""
|
"""
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
@@ -39,8 +41,7 @@ __all__ = (
|
|||||||
"is_py",
|
"is_py",
|
||||||
"cmake_advanced_info",
|
"cmake_advanced_info",
|
||||||
"cmake_compiler_defines",
|
"cmake_compiler_defines",
|
||||||
"project_name_get",
|
"project_name_get"
|
||||||
"init",
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -60,26 +61,19 @@ SOURCE_DIR = abspath(SOURCE_DIR)
|
|||||||
|
|
||||||
SIMPLE_PROJECTFILE = False
|
SIMPLE_PROJECTFILE = False
|
||||||
|
|
||||||
# must initialize from 'init'
|
# get cmake path
|
||||||
CMAKE_DIR = None
|
CMAKE_DIR = sys.argv[-1]
|
||||||
|
|
||||||
|
if not exists(join(CMAKE_DIR, "CMakeCache.txt")):
|
||||||
|
CMAKE_DIR = os.getcwd()
|
||||||
|
if not exists(join(CMAKE_DIR, "CMakeCache.txt")):
|
||||||
|
print("CMakeCache.txt not found in %r or %r\n Pass CMake build dir as an argument, or run from that dir, aborting" % (CMAKE_DIR, os.getcwd()))
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
def init(cmake_path):
|
# could be either.
|
||||||
global CMAKE_DIR, PROJECT_DIR
|
# PROJECT_DIR = SOURCE_DIR
|
||||||
|
PROJECT_DIR = CMAKE_DIR
|
||||||
# get cmake path
|
|
||||||
cmake_path = cmake_path or ""
|
|
||||||
|
|
||||||
if (not cmake_path) or (not exists(join(cmake_path, "CMakeCache.txt"))):
|
|
||||||
cmake_path = os.getcwd()
|
|
||||||
if not exists(join(cmake_path, "CMakeCache.txt")):
|
|
||||||
print("CMakeCache.txt not found in %r or %r\n"
|
|
||||||
" Pass CMake build dir as an argument, or run from that dir, aborting" %
|
|
||||||
(cmake_path, os.getcwd()))
|
|
||||||
return False
|
|
||||||
|
|
||||||
PROJECT_DIR = CMAKE_DIR = cmake_path
|
|
||||||
return True
|
|
||||||
|
|
||||||
|
|
||||||
def source_list(path, filename_check=None):
|
def source_list(path, filename_check=None):
|
||||||
@@ -136,7 +130,7 @@ def is_project_file(filename):
|
|||||||
|
|
||||||
|
|
||||||
def cmake_advanced_info():
|
def cmake_advanced_info():
|
||||||
""" Extract includes and defines from cmake.
|
""" Extracr includes and defines from cmake.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
make_exe = cmake_cache_var("CMAKE_MAKE_PROGRAM")
|
make_exe = cmake_cache_var("CMAKE_MAKE_PROGRAM")
|
||||||
@@ -214,12 +208,7 @@ def cmake_advanced_info():
|
|||||||
|
|
||||||
def cmake_cache_var(var):
|
def cmake_cache_var(var):
|
||||||
cache_file = open(join(CMAKE_DIR, "CMakeCache.txt"), encoding='utf-8')
|
cache_file = open(join(CMAKE_DIR, "CMakeCache.txt"), encoding='utf-8')
|
||||||
lines = [
|
lines = [l_strip for l in cache_file for l_strip in (l.strip(),) if l_strip if not l_strip.startswith("//") if not l_strip.startswith("#")]
|
||||||
l_strip for l in cache_file
|
|
||||||
for l_strip in (l.strip(),)
|
|
||||||
if l_strip
|
|
||||||
if not l_strip.startswith(("//", "#"))
|
|
||||||
]
|
|
||||||
cache_file.close()
|
cache_file.close()
|
||||||
|
|
||||||
for l in lines:
|
for l in lines:
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
__all__ = (
|
__all__ = (
|
||||||
"build_info",
|
"build_info",
|
||||||
"SOURCE_DIR",
|
"SOURCE_DIR",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
@@ -59,21 +59,14 @@ def is_c_any(filename):
|
|||||||
CMAKE_DIR = "."
|
CMAKE_DIR = "."
|
||||||
|
|
||||||
|
|
||||||
def cmake_cache_var_iter():
|
|
||||||
import re
|
|
||||||
re_cache = re.compile(r'([A-Za-z0-9_\-]+)?:?([A-Za-z0-9_\-]+)?=(.*)$')
|
|
||||||
with open(join(CMAKE_DIR, "CMakeCache.txt"), 'r', encoding='utf-8') as cache_file:
|
|
||||||
for l in cache_file:
|
|
||||||
match = re_cache.match(l.strip())
|
|
||||||
if match is not None:
|
|
||||||
var, type_, val = match.groups()
|
|
||||||
yield (var, type_ or "", val)
|
|
||||||
|
|
||||||
|
|
||||||
def cmake_cache_var(var):
|
def cmake_cache_var(var):
|
||||||
for var_iter, type_iter, value_iter in cmake_cache_var_iter():
|
cache_file = open(join(CMAKE_DIR, "CMakeCache.txt"))
|
||||||
if var == var_iter:
|
lines = [l_strip for l in cache_file for l_strip in (l.strip(),) if l_strip if not l_strip.startswith("//") if not l_strip.startswith("#")]
|
||||||
return value_iter
|
cache_file.close()
|
||||||
|
|
||||||
|
for l in lines:
|
||||||
|
if l.split(":")[0] == var:
|
||||||
|
return l.split("=", 1)[-1]
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python
|
||||||
|
|
||||||
# <pep8 compliant>
|
# <pep8 compliant>
|
||||||
|
|
||||||
|
|||||||
@@ -2,17 +2,19 @@
|
|||||||
|
|
||||||
# custom blender vars
|
# custom blender vars
|
||||||
blender_srcdir=$(dirname $startdir)"/../.."
|
blender_srcdir=$(dirname $startdir)"/../.."
|
||||||
blender_version=$(grep "BLENDER_VERSION\s" $blender_srcdir/source/blender/blenkernel/BKE_blender_version.h | awk '{print $3}')
|
# value may be formatted: 35042:35051M
|
||||||
|
blender_revision=$(svnversion $blender_srcdir | cut -d: -f2 | awk '{print $3}')
|
||||||
|
blender_version=$(grep "BLENDER_VERSION\s" $blender_srcdir/source/blender/blenkernel/BKE_blender.h | awk '{print $3}')
|
||||||
blender_version=$(expr $blender_version / 100).$(expr $blender_version % 100) # 256 -> 2.56
|
blender_version=$(expr $blender_version / 100).$(expr $blender_version % 100) # 256 -> 2.56
|
||||||
blender_version_char=$(sed -ne 's/.*BLENDER_VERSION_CHAR.*\([a-z]\)$/\1/p' $blender_srcdir/source/blender/blenkernel/BKE_blender_version.h)
|
blender_version_char=$(sed -ne 's/.*BLENDER_VERSION_CHAR.*\([a-z]\)$/\1/p' $blender_srcdir/source/blender/blenkernel/BKE_blender.h)
|
||||||
# blender_subversion=$(grep BLENDER_SUBVERSION $blender_srcdir/source/blender/blenkernel/BKE_blender.h | awk '{print $3}')
|
# blender_subversion=$(grep BLENDER_SUBVERSION $blender_srcdir/source/blender/blenkernel/BKE_blender.h | awk '{print $3}')
|
||||||
|
|
||||||
# map the version a -> 1
|
# map the version a -> 1
|
||||||
# not to be confused with blender's internal subversions
|
# not to be confused with blender's internal subversions
|
||||||
if [ "$blender_version_char" ]; then
|
if [ "$blender_version_char" ]; then
|
||||||
blender_version_full=${blender_version}.$(expr index abcdefghijklmnopqrstuvwxyz $blender_version_char)
|
blender_version_full=${blender_version}.$(expr index abcdefghijklmnopqrstuvwxyz $blender_version_char)
|
||||||
else
|
else
|
||||||
blender_version_full=${blender_version}
|
blender_version_full=${blender_version}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
blender_ver_string=$blender_version+git$blender_version_full
|
blender_ver_string=$blender_version+git$blender_version_full
|
||||||
@@ -25,9 +27,7 @@ arch=('i686' 'x86_64')
|
|||||||
url="www.blender.org"
|
url="www.blender.org"
|
||||||
license=('GPL')
|
license=('GPL')
|
||||||
groups=()
|
groups=()
|
||||||
depends=('libjpeg' 'libpng' 'openjpeg' 'libtiff' 'openexr' 'python>=3.5'
|
depends=('libjpeg' 'libpng' 'openjpeg' 'libtiff' 'openexr' 'python>=3.4' 'gettext' 'libxi' 'libxmu' 'mesa' 'freetype2' 'openal' 'sdl' 'libsndfile' 'ffmpeg')
|
||||||
'gettext' 'libxi' 'libxmu' 'mesa' 'freetype2' 'openal' 'sdl'
|
|
||||||
'libsndfile' 'ffmpeg')
|
|
||||||
makedepends=('cmake' 'git')
|
makedepends=('cmake' 'git')
|
||||||
optdepends=()
|
optdepends=()
|
||||||
provides=()
|
provides=()
|
||||||
@@ -60,7 +60,7 @@ package() {
|
|||||||
cd $srcdir/build
|
cd $srcdir/build
|
||||||
make DESTDIR="$pkgdir" install
|
make DESTDIR="$pkgdir" install
|
||||||
python -m compileall \
|
python -m compileall \
|
||||||
$pkgdir/usr/share/blender/$blender_version/scripts/startup \
|
$pkgdir/usr/share/blender/$blender_version/scripts/startup \
|
||||||
$pkgdir/usr/share/blender/$blender_version/scripts/modules \
|
$pkgdir/usr/share/blender/$blender_version/scripts/modules \
|
||||||
$pkgdir/usr/share/blender/$blender_version/scripts/addons
|
$pkgdir/usr/share/blender/$blender_version/scripts/addons
|
||||||
}
|
}
|
||||||
|
|||||||
50
build_files/scons/Modules/FindPython.py
Normal file
50
build_files/scons/Modules/FindPython.py
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
import os
|
||||||
|
import platform
|
||||||
|
|
||||||
|
def FindPython():
|
||||||
|
all_abi_flags = ['m', 'mu', '']
|
||||||
|
|
||||||
|
python = "/usr"
|
||||||
|
abi_flags = "m" # Most common for linux distros
|
||||||
|
version = "3.4"
|
||||||
|
|
||||||
|
_arch = platform.uname()[4] + "-linux-gnu"
|
||||||
|
|
||||||
|
# Determine ABI flags used on this system
|
||||||
|
include = os.path.join(python, "include")
|
||||||
|
for cur_flags in all_abi_flags:
|
||||||
|
inc = os.path.join(include, "python" + version + cur_flags, "Python.h")
|
||||||
|
if os.path.exists(inc):
|
||||||
|
abi_flags = cur_flags
|
||||||
|
break
|
||||||
|
|
||||||
|
# Find config.h. In some distros, such as ubuntu 12.10 they are not in standard include dir.
|
||||||
|
incconf = os.path.join(include, _arch, "python" + version + cur_flags)
|
||||||
|
if not os.path.exists(os.path.join(incconf, "pyconfig.h")):
|
||||||
|
incconf = ''
|
||||||
|
|
||||||
|
# Determine whether python is in /usr/lib or /usr/lib64
|
||||||
|
lib32 = os.path.join(python, "lib", "python" + version, "sysconfig.py")
|
||||||
|
lib64 = os.path.join(python, "lib64", "python" + version, "sysconfig.py")
|
||||||
|
if os.path.exists(lib32):
|
||||||
|
libpath = "${BF_PYTHON}/lib"
|
||||||
|
elif os.path.exists(lib64):
|
||||||
|
libpath = "${BF_PYTHON}/lib64"
|
||||||
|
else:
|
||||||
|
# roll back to default value
|
||||||
|
libpath = "${BF_PYTHON}/lib"
|
||||||
|
|
||||||
|
libpath_arch = libpath
|
||||||
|
_libpath_arch = os.path.join(python, "lib", _arch) # No lib64 stuff with recent deb-like distro afaik...
|
||||||
|
_libs = ["libpython" + version + abi_flags + ext for ext in (".so", ".a")]
|
||||||
|
for l in _libs:
|
||||||
|
if not os.path.exists(os.path.join(libpath, l)) and os.path.exists(os.path.join(_libpath_arch, l)):
|
||||||
|
libpath_arch = os.path.join(libpath, _arch)
|
||||||
|
break
|
||||||
|
|
||||||
|
return {"PYTHON": python,
|
||||||
|
"VERSION": version,
|
||||||
|
"LIBPATH": libpath,
|
||||||
|
"LIBPATH_ARCH": libpath_arch,
|
||||||
|
"ABI_FLAGS": abi_flags,
|
||||||
|
"CONFIG": incconf}
|
||||||
42
build_files/scons/Modules/FindSharedPtr.py
Normal file
42
build_files/scons/Modules/FindSharedPtr.py
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
def FindSharedPtr(conf):
|
||||||
|
"""
|
||||||
|
Detect shared_ptr availability
|
||||||
|
"""
|
||||||
|
|
||||||
|
found = False
|
||||||
|
namespace = None
|
||||||
|
header = None
|
||||||
|
|
||||||
|
if conf.CheckCXXHeader("memory"):
|
||||||
|
# Finding the memory header doesn't mean that shared_ptr is in std
|
||||||
|
# namespace.
|
||||||
|
#
|
||||||
|
# In particular, MSVC 2008 has shared_ptr declared in std::tr1. In
|
||||||
|
# order to support this, we do an extra check to see which namespace
|
||||||
|
# should be used.
|
||||||
|
|
||||||
|
if conf.CheckType('std::shared_ptr<int>', language = 'C++', includes="#include <memory>"):
|
||||||
|
print("-- Found shared_ptr in std namespace using <memory> header.")
|
||||||
|
namespace = 'std'
|
||||||
|
header = 'memory'
|
||||||
|
elif conf.CheckType('std::tr1::shared_ptr<int>', language = 'C++', includes="#include <memory>"):
|
||||||
|
print("-- Found shared_ptr in std::tr1 namespace using <memory> header..")
|
||||||
|
namespace = 'std::tr1'
|
||||||
|
header = 'memory'
|
||||||
|
|
||||||
|
if not namespace and conf.CheckCXXHeader("tr1/memory"):
|
||||||
|
# Further, gcc defines shared_ptr in std::tr1 namespace and
|
||||||
|
# <tr1/memory> is to be included for this. And what makes things
|
||||||
|
# even more tricky is that gcc does have <memory> header, so
|
||||||
|
# all the checks above wouldn't find shared_ptr.
|
||||||
|
if conf.CheckType('std::tr1::shared_ptr<int>', language = 'C++', includes="#include <tr1/memory>"):
|
||||||
|
print("-- Found shared_ptr in std::tr1 namespace using <tr1/memory> header..")
|
||||||
|
namespace = 'std::tr1'
|
||||||
|
header = 'tr1/memory'
|
||||||
|
|
||||||
|
if not namespace:
|
||||||
|
print("-- Unable to find shared_ptrred_map>.")
|
||||||
|
|
||||||
|
conf.env['WITH_SHARED_PTR_SUPPORT'] = namespace and header
|
||||||
|
conf.env['SHARED_PTR_NAMESPACE'] = namespace
|
||||||
|
conf.env['SHARED_PTR_HEADER'] = header
|
||||||
38
build_files/scons/Modules/FindUnorderedMap.py
Normal file
38
build_files/scons/Modules/FindUnorderedMap.py
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
def FindUnorderedMap(conf):
|
||||||
|
"""
|
||||||
|
Detect unordered_map availability
|
||||||
|
"""
|
||||||
|
|
||||||
|
namespace = None
|
||||||
|
header = None
|
||||||
|
|
||||||
|
if conf.CheckCXXHeader("unordered_map"):
|
||||||
|
# Even so we've found unordered_map header file it doesn't
|
||||||
|
# mean unordered_map and unordered_set will be declared in
|
||||||
|
# std namespace.
|
||||||
|
#
|
||||||
|
# Namely, MSVC 2008 have unordered_map header which declares
|
||||||
|
# unordered_map class in std::tr1 namespace. In order to support
|
||||||
|
# this, we do extra check to see which exactly namespace is
|
||||||
|
# to be used.
|
||||||
|
|
||||||
|
if conf.CheckType('std::unordered_map<int, int>', language = 'CXX', includes="#include <unordered_map>"):
|
||||||
|
print("-- Found unordered_map/set in std namespace.")
|
||||||
|
namespace = 'std'
|
||||||
|
header = 'unordered_map'
|
||||||
|
elif conf.CheckType('std::tr1::unordered_map<int, int>', language = 'CXX', includes="#include <unordered_map>"):
|
||||||
|
print("-- Found unordered_map/set in std::tr1 namespace.")
|
||||||
|
namespace = 'std::tr1'
|
||||||
|
header = 'unordered_map'
|
||||||
|
else:
|
||||||
|
print("-- Found <unordered_map> but can not find neither std::unordered_map nor std::tr1::unordered_map.")
|
||||||
|
elif conf.CheckCXXHeader("tr1/unordered_map"):
|
||||||
|
print("-- Found unordered_map/set in std::tr1 namespace.")
|
||||||
|
namespace = 'std::tr1'
|
||||||
|
header = 'tr1/unordered_map'
|
||||||
|
else:
|
||||||
|
print("-- Unable to find <unordered_map> or <tr1/unordered_map>. ")
|
||||||
|
|
||||||
|
conf.env['WITH_UNORDERED_MAP_SUPPORT'] = namespace and header
|
||||||
|
conf.env['UNORDERED_MAP_NAMESPACE'] = namespace
|
||||||
|
conf.env['UNORDERED_MAP_HEADER'] = header
|
||||||
263
build_files/scons/config/darwin-config.py
Normal file
263
build_files/scons/config/darwin-config.py
Normal file
@@ -0,0 +1,263 @@
|
|||||||
|
import commands
|
||||||
|
|
||||||
|
#############################################################################
|
||||||
|
################### Compiler & architecture settings ##################
|
||||||
|
#############################################################################
|
||||||
|
|
||||||
|
MACOSX_ARCHITECTURE = 'x86_64' # valid archs: ppc, i386, ppc64, x86_64
|
||||||
|
MACOSX_SDK='' # set an sdk name like '10.7' or leave empty for automatic choosing highest available
|
||||||
|
MACOSX_DEPLOYMENT_TARGET = '10.6'
|
||||||
|
|
||||||
|
# gcc always defaults to the system standard compiler linked by a shim or symlink
|
||||||
|
CC = 'gcc'
|
||||||
|
CXX = 'g++'
|
||||||
|
LCGDIR = '#../lib/darwin-9.x.universal'
|
||||||
|
LIBDIR = '${LCGDIR}'
|
||||||
|
|
||||||
|
#############################################################################
|
||||||
|
################### Dependency settings ##################
|
||||||
|
#############################################################################
|
||||||
|
|
||||||
|
# enable ffmpeg support
|
||||||
|
WITH_BF_FFMPEG = True
|
||||||
|
BF_FFMPEG = LIBDIR + '/ffmpeg'
|
||||||
|
BF_FFMPEG_INC = "${BF_FFMPEG}/include"
|
||||||
|
BF_FFMPEG_LIBPATH='${BF_FFMPEG}/lib'
|
||||||
|
BF_FFMPEG_LIB = 'avcodec avdevice avformat avutil mp3lame swscale x264 xvidcore theora theoradec theoraenc vorbis vorbisenc vorbisfile ogg bz2'
|
||||||
|
#bz2 is a standard osx dynlib
|
||||||
|
|
||||||
|
BF_PYTHON_VERSION = '3.4'
|
||||||
|
WITH_OSX_STATICPYTHON = True
|
||||||
|
|
||||||
|
# python 3.4 uses precompiled libraries in bf svn /lib by default
|
||||||
|
BF_PYTHON = LIBDIR + '/python'
|
||||||
|
BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}m'
|
||||||
|
# BF_PYTHON_BINARY = '${BF_PYTHON}/bin/python${BF_PYTHON_VERSION}'
|
||||||
|
BF_PYTHON_LIB = 'python${BF_PYTHON_VERSION}m'
|
||||||
|
BF_PYTHON_LIBPATH = '${BF_PYTHON}/lib/python${BF_PYTHON_VERSION}'
|
||||||
|
# BF_PYTHON_LINKFLAGS = ['-u', '_PyMac_Error', '-framework', 'System']
|
||||||
|
|
||||||
|
WITH_BF_OPENAL = True
|
||||||
|
BF_OPENAL = LIBDIR + '/openal'
|
||||||
|
|
||||||
|
WITH_BF_STATICOPENAL = False
|
||||||
|
BF_OPENAL_INC = '${BF_OPENAL}/include' # only headers from libdir needed for proper use of framework !!!!
|
||||||
|
#BF_OPENAL_LIB = 'openal'
|
||||||
|
#BF_OPENAL_LIBPATH = '${BF_OPENAL}/lib'
|
||||||
|
# Warning, this static lib configuration is untested! users of this OS please confirm.
|
||||||
|
#BF_OPENAL_LIB_STATIC = '${BF_OPENAL}/lib/libopenal.a'
|
||||||
|
|
||||||
|
# Warning, this static lib configuration is untested! users of this OS please confirm.
|
||||||
|
BF_CXX = '/usr'
|
||||||
|
WITH_BF_STATICCXX = False
|
||||||
|
BF_CXX_LIB_STATIC = '${BF_CXX}/lib/libstdc++.a'
|
||||||
|
|
||||||
|
# we use simply jack framework
|
||||||
|
WITH_BF_JACK = True
|
||||||
|
BF_JACK = '/Library/Frameworks/Jackmp.framework'
|
||||||
|
BF_JACK_INC = '${BF_JACK}/headers'
|
||||||
|
#BF_JACK_LIB = 'jack' # not used due framework
|
||||||
|
BF_JACK_LIBPATH = '${BF_JACK}'
|
||||||
|
|
||||||
|
WITH_BF_SNDFILE = True
|
||||||
|
BF_SNDFILE = LIBDIR + '/sndfile'
|
||||||
|
BF_SNDFILE_INC = '${BF_SNDFILE}/include'
|
||||||
|
BF_SNDFILE_LIB = 'sndfile FLAC ogg vorbis vorbisenc'
|
||||||
|
BF_SNDFILE_LIBPATH = '${BF_SNDFILE}/lib ${BF_FFMPEG}/lib' #ogg libs are stored in ffmpeg dir
|
||||||
|
|
||||||
|
WITH_BF_SDL = True
|
||||||
|
BF_SDL = LIBDIR + '/sdl' #$(shell sdl-config --prefix)
|
||||||
|
BF_SDL_INC = '${BF_SDL}/include' #$(shell $(BF_SDL)/bin/sdl-config --cflags)
|
||||||
|
BF_SDL_LIB = 'SDL2' #BF_SDL #$(shell $(BF_SDL)/bin/sdl-config --libs) -lSDL_mixer
|
||||||
|
BF_SDL_LIBPATH = '${BF_SDL}/lib'
|
||||||
|
|
||||||
|
WITH_BF_OPENEXR = True
|
||||||
|
WITH_BF_STATICOPENEXR = False
|
||||||
|
BF_OPENEXR = '${LCGDIR}/openexr'
|
||||||
|
BF_OPENEXR_INC = '${BF_OPENEXR}/include ${BF_OPENEXR}/include/OpenEXR'
|
||||||
|
BF_OPENEXR_LIB = ' Iex Half IlmImf Imath IlmThread'
|
||||||
|
BF_OPENEXR_LIBPATH = '${BF_OPENEXR}/lib'
|
||||||
|
# Warning, this static lib configuration is untested! users of this OS please confirm.
|
||||||
|
BF_OPENEXR_LIB_STATIC = '${BF_OPENEXR}/lib/libHalf.a ${BF_OPENEXR}/lib/libIlmImf.a ${BF_OPENEXR}/lib/libIex.a ${BF_OPENEXR}/lib/libImath.a ${BF_OPENEXR}/lib/libIlmThread.a'
|
||||||
|
|
||||||
|
WITH_BF_DDS = True
|
||||||
|
|
||||||
|
WITH_BF_JPEG = True
|
||||||
|
BF_JPEG = LIBDIR + '/jpeg'
|
||||||
|
BF_JPEG_INC = '${BF_JPEG}/include'
|
||||||
|
BF_JPEG_LIB = 'jpeg'
|
||||||
|
BF_JPEG_LIBPATH = '${BF_JPEG}/lib'
|
||||||
|
|
||||||
|
WITH_BF_OPENJPEG = True
|
||||||
|
BF_OPENJPEG = '#extern/libopenjpeg'
|
||||||
|
BF_OPENJPEG_LIB = ''
|
||||||
|
BF_OPENJPEG_INC = '${BF_OPENJPEG}'
|
||||||
|
BF_OPENJPEG_LIBPATH='${BF_OPENJPEG}/lib'
|
||||||
|
|
||||||
|
WITH_BF_PNG = True
|
||||||
|
BF_PNG = LIBDIR + '/png'
|
||||||
|
BF_PNG_INC = '${BF_PNG}/include'
|
||||||
|
BF_PNG_LIB = 'png'
|
||||||
|
BF_PNG_LIBPATH = '${BF_PNG}/lib'
|
||||||
|
|
||||||
|
WITH_BF_TIFF = True
|
||||||
|
BF_TIFF = LIBDIR + '/tiff'
|
||||||
|
BF_TIFF_INC = '${BF_TIFF}/include'
|
||||||
|
BF_TIFF_LIB = 'tiff'
|
||||||
|
BF_TIFF_LIBPATH = '${BF_TIFF}/lib'
|
||||||
|
|
||||||
|
WITH_BF_ZLIB = True
|
||||||
|
BF_ZLIB = '/usr'
|
||||||
|
#BF_ZLIB_INC = '${BF_ZLIB}/include' # don't use this, it breaks -isysroot ${MACOSX_SDK}
|
||||||
|
BF_ZLIB_LIB = 'z'
|
||||||
|
|
||||||
|
WITH_BF_INTERNATIONAL = True
|
||||||
|
|
||||||
|
WITH_BF_GAMEENGINE = True
|
||||||
|
WITH_BF_PLAYER = True
|
||||||
|
WITH_BF_OCEANSIM = True
|
||||||
|
|
||||||
|
WITH_BF_BULLET = True
|
||||||
|
BF_BULLET = '#extern/bullet2/src'
|
||||||
|
BF_BULLET_INC = '${BF_BULLET}'
|
||||||
|
BF_BULLET_LIB = 'extern_bullet'
|
||||||
|
|
||||||
|
WITH_BF_FFTW3 = True
|
||||||
|
BF_FFTW3 = LIBDIR + '/fftw3'
|
||||||
|
BF_FFTW3_INC = '${BF_FFTW3}/include'
|
||||||
|
BF_FFTW3_LIB = 'libfftw3'
|
||||||
|
BF_FFTW3_LIBPATH = '${BF_FFTW3}/lib'
|
||||||
|
|
||||||
|
BF_FREETYPE = LIBDIR + '/freetype'
|
||||||
|
BF_FREETYPE_INC = '${BF_FREETYPE}/include ${BF_FREETYPE}/include/freetype2'
|
||||||
|
BF_FREETYPE_LIB = 'freetype'
|
||||||
|
BF_FREETYPE_LIBPATH = '${BF_FREETYPE}/lib'
|
||||||
|
|
||||||
|
WITH_BF_QUICKTIME = True
|
||||||
|
|
||||||
|
WITH_BF_ICONV = True
|
||||||
|
BF_ICONV = '/usr'
|
||||||
|
BF_ICONV_INC = '${BF_ICONV}/include'
|
||||||
|
BF_ICONV_LIB = 'iconv'
|
||||||
|
#BF_ICONV_LIBPATH = '${BF_ICONV}/lib'
|
||||||
|
|
||||||
|
# Mesa Libs should go here if your using them as well....
|
||||||
|
WITH_BF_STATICOPENGL = True
|
||||||
|
BF_OPENGL_LIB = 'GL GLU'
|
||||||
|
BF_OPENGL_LIBPATH = '/System/Library/Frameworks/OpenGL.framework/Libraries'
|
||||||
|
BF_OPENGL_LINKFLAGS = ['-framework', 'OpenGL']
|
||||||
|
|
||||||
|
#OpenCollada flags
|
||||||
|
WITH_BF_COLLADA = True
|
||||||
|
BF_COLLADA = '#source/blender/collada'
|
||||||
|
BF_COLLADA_INC = '${BF_COLLADA}'
|
||||||
|
BF_COLLADA_LIB = 'bf_collada'
|
||||||
|
BF_OPENCOLLADA = LIBDIR + '/opencollada'
|
||||||
|
BF_OPENCOLLADA_INC = '${BF_OPENCOLLADA}/include'
|
||||||
|
BF_OPENCOLLADA_LIB = 'OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils OpenCOLLADAStreamWriter MathMLSolver GeneratedSaxParser xml2 buffer ftoa'
|
||||||
|
BF_OPENCOLLADA_LIBPATH = LIBDIR + '/opencollada'
|
||||||
|
BF_PCRE = LIBDIR + '/opencollada'
|
||||||
|
BF_PCRE_LIB = 'pcre'
|
||||||
|
BF_PCRE_LIBPATH = '${BF_PCRE}/lib'
|
||||||
|
#BF_EXPAT = '/usr'
|
||||||
|
#BF_EXPAT_LIB = 'expat'
|
||||||
|
#BF_EXPAT_LIBPATH = '/usr/lib'
|
||||||
|
|
||||||
|
# Cycles
|
||||||
|
WITH_BF_CYCLES = True
|
||||||
|
|
||||||
|
#OSL
|
||||||
|
|
||||||
|
WITH_BF_CYCLES_OSL = True
|
||||||
|
BF_OSL = LIBDIR + '/osl'
|
||||||
|
BF_OSL_INC = '${BF_OSL}/include'
|
||||||
|
# note oslexec would passed via program linkflags, which is needed to
|
||||||
|
# make llvm happy with osl_allocate_closure_component
|
||||||
|
#BF_OSL_LIB = 'oslcomp oslquery'
|
||||||
|
BF_OSL_LIBPATH = '${BF_OSL}/lib'
|
||||||
|
BF_OSL_COMPILER = '${BF_OSL}/bin/oslc'
|
||||||
|
|
||||||
|
WITH_BF_LLVM = True
|
||||||
|
BF_LLVM = LIBDIR + '/llvm'
|
||||||
|
BF_LLVM_LIB = 'LLVMBitReader LLVMJIT LLVMipo LLVMVectorize LLVMBitWriter LLVMX86CodeGen LLVMX86Desc LLVMX86Info LLVMX86AsmPrinter ' + \
|
||||||
|
'LLVMX86Utils LLVMSelectionDAG LLVMCodeGen LLVMScalarOpts LLVMInstCombine LLVMTransformUtils LLVMipa LLVMAnalysis LLVMExecutionEngine ' + \
|
||||||
|
'LLVMTarget LLVMMC LLVMCore LLVMSupport LLVMObject'
|
||||||
|
BF_LLVM_LIBPATH = '${BF_LLVM}/lib'
|
||||||
|
|
||||||
|
WITH_BF_OIIO = True
|
||||||
|
BF_OIIO = LIBDIR + '/openimageio'
|
||||||
|
BF_OIIO_INC = '${BF_OIIO}/include'
|
||||||
|
BF_OIIO_LIB = 'OpenImageIO'
|
||||||
|
BF_OIIO_LIBPATH = '${BF_OIIO}/lib'
|
||||||
|
|
||||||
|
WITH_BF_OCIO = True
|
||||||
|
BF_OCIO = LIBDIR + '/opencolorio'
|
||||||
|
BF_OCIO_INC = '${BF_OCIO}/include'
|
||||||
|
BF_OCIO_LIB = 'OpenColorIO tinyxml yaml-cpp'
|
||||||
|
BF_OCIO_LIBPATH = '${BF_OCIO}/lib'
|
||||||
|
|
||||||
|
WITH_BF_BOOST = True
|
||||||
|
BF_BOOST = LIBDIR + '/boost'
|
||||||
|
BF_BOOST_INC = '${BF_BOOST}/include'
|
||||||
|
BF_BOOST_LIB = 'boost_date_time-mt boost_filesystem-mt boost_regex-mt boost_system-mt boost_thread-mt boost_wave-mt'
|
||||||
|
BF_BOOST_LIB_INTERNATIONAL = 'boost_locale-mt'
|
||||||
|
BF_BOOST_LIBPATH = '${BF_BOOST}/lib'
|
||||||
|
|
||||||
|
WITH_BF_CYCLES_CUDA_BINARIES = False
|
||||||
|
BF_CYCLES_CUDA_NVCC = '/usr/local/cuda/bin/nvcc'
|
||||||
|
BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_20', 'sm_21', 'sm_30', 'sm_35', 'sm_50', 'sm_52']
|
||||||
|
|
||||||
|
#Freestyle
|
||||||
|
WITH_BF_FREESTYLE = True
|
||||||
|
|
||||||
|
#OpenMP ( will be checked for compiler support and turned off eventually )
|
||||||
|
WITH_BF_OPENMP = True
|
||||||
|
|
||||||
|
#Ray trace optimization
|
||||||
|
WITH_BF_RAYOPTIMIZATION = True
|
||||||
|
BF_RAYOPTIMIZATION_SSE_FLAGS = []
|
||||||
|
|
||||||
|
# SpaceNavigator and related 3D mice, driver must be 3DxWare 10 Beta 4 (Mac OS X) or later !
|
||||||
|
WITH_BF_3DMOUSE = True
|
||||||
|
|
||||||
|
#############################################################################
|
||||||
|
################### various compile settings and flags ##################
|
||||||
|
#############################################################################
|
||||||
|
|
||||||
|
BF_QUIET = '1' # suppress verbose output
|
||||||
|
|
||||||
|
CFLAGS = []
|
||||||
|
CXXFLAGS = []
|
||||||
|
CCFLAGS = ['-pipe','-funsigned-char']
|
||||||
|
CPPFLAGS = []
|
||||||
|
|
||||||
|
PLATFORM_LINKFLAGS = ['-fexceptions','-framework','CoreServices','-framework','Foundation','-framework','IOKit','-framework','AppKit','-framework','Cocoa','-framework','Carbon','-framework','AudioUnit','-framework','AudioToolbox','-framework','CoreAudio','-framework','OpenAL']
|
||||||
|
|
||||||
|
LLIBS = ['stdc++']
|
||||||
|
|
||||||
|
REL_CFLAGS = []
|
||||||
|
REL_CXXFLAGS = []
|
||||||
|
REL_CCFLAGS = ['-O2']
|
||||||
|
|
||||||
|
CC_WARN = ['-Wall']
|
||||||
|
C_WARN = ['-Wno-char-subscripts', '-Wpointer-arith', '-Wcast-align', '-Wdeclaration-after-statement', '-Wno-unknown-pragmas', '-Wstrict-prototypes']
|
||||||
|
CXX_WARN = ['-Wno-invalid-offsetof', '-Wno-sign-compare']
|
||||||
|
|
||||||
|
##FIX_STUBS_WARNINGS = -Wno-unused
|
||||||
|
|
||||||
|
##LOPTS = --dynamic
|
||||||
|
##DYNLDFLAGS = -shared $(LDFLAGS)
|
||||||
|
|
||||||
|
BF_PROFILE_CCFLAGS = ['-pg', '-g ']
|
||||||
|
BF_PROFILE_LINKFLAGS = ['-pg']
|
||||||
|
BF_PROFILE = False
|
||||||
|
|
||||||
|
BF_DEBUG = False
|
||||||
|
BF_DEBUG_CCFLAGS = ['-g']
|
||||||
|
|
||||||
|
#############################################################################
|
||||||
|
################### Output directories ##################
|
||||||
|
#############################################################################
|
||||||
|
|
||||||
|
BF_BUILDDIR='../build/darwin'
|
||||||
|
BF_INSTALLDIR='../install/darwin'
|
||||||
267
build_files/scons/config/linux-config.py
Normal file
267
build_files/scons/config/linux-config.py
Normal file
@@ -0,0 +1,267 @@
|
|||||||
|
from FindPython import FindPython
|
||||||
|
|
||||||
|
py = FindPython()
|
||||||
|
|
||||||
|
BF_PYTHON_ABI_FLAGS = py['ABI_FLAGS']
|
||||||
|
BF_PYTHON = py['PYTHON']
|
||||||
|
BF_PYTHON_LIBPATH = py['LIBPATH']
|
||||||
|
BF_PYTHON_LIBPATH_ARCH = py['LIBPATH_ARCH']
|
||||||
|
BF_PYTHON_CONFIG = py['CONFIG']
|
||||||
|
BF_PYTHON_VERSION = py['VERSION']
|
||||||
|
WITH_BF_STATICPYTHON = False
|
||||||
|
BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}${BF_PYTHON_ABI_FLAGS} ' + BF_PYTHON_CONFIG
|
||||||
|
BF_PYTHON_BINARY = '${BF_PYTHON}/bin/python${BF_PYTHON_VERSION}'
|
||||||
|
BF_PYTHON_LIB = 'python${BF_PYTHON_VERSION}${BF_PYTHON_ABI_FLAGS}' # BF_PYTHON+'/lib/python'+BF_PYTHON_VERSION+'/config/libpython'+BF_PYTHON_VERSION+'.a'
|
||||||
|
BF_PYTHON_LINKFLAGS = ['-Xlinker', '-export-dynamic']
|
||||||
|
BF_PYTHON_LIB_STATIC = '${BF_PYTHON_LIBPATH_ARCH}/libpython${BF_PYTHON_VERSION}${BF_PYTHON_ABI_FLAGS}.a'
|
||||||
|
|
||||||
|
WITH_BF_OPENAL = True
|
||||||
|
WITH_BF_STATICOPENAL = False
|
||||||
|
BF_OPENAL = '/usr'
|
||||||
|
BF_OPENAL_INC = '${BF_OPENAL}/include'
|
||||||
|
BF_OPENAL_LIB = 'openal'
|
||||||
|
BF_OPENAL_LIB_STATIC = '${BF_OPENAL}/lib/libopenal.a'
|
||||||
|
|
||||||
|
BF_CXX = '/usr'
|
||||||
|
WITH_BF_STATICCXX = False
|
||||||
|
BF_CXX_LIB_STATIC = '${BF_CXX}/lib/libstdc++.a'
|
||||||
|
|
||||||
|
WITH_BF_JACK = False
|
||||||
|
BF_JACK = '/usr'
|
||||||
|
BF_JACK_INC = '${BF_JACK}/include/jack'
|
||||||
|
BF_JACK_LIB = 'jack'
|
||||||
|
BF_JACK_LIBPATH = '${BF_JACK}/lib'
|
||||||
|
|
||||||
|
WITH_BF_SNDFILE = False
|
||||||
|
WITH_BF_STATICSNDFILE = False
|
||||||
|
BF_SNDFILE = '/usr'
|
||||||
|
BF_SNDFILE_INC = '${BF_SNDFILE}/include/sndfile'
|
||||||
|
BF_SNDFILE_LIB = 'sndfile'
|
||||||
|
BF_SNDFILE_LIBPATH = '${BF_SNDFILE}/lib'
|
||||||
|
BF_SNDFILE_LIB_STATIC = '${BF_SNDFILE}/lib/libsndfile.a ${BF_OGG}/lib/libvorbis.a ${BF_OGG}/lib/libFLAC.a ${BF_OGG}/lib/libvorbisenc.a ${BF_OGG}/lib/libogg.a'
|
||||||
|
|
||||||
|
WITH_BF_SDL = True
|
||||||
|
BF_SDL = '/usr' #$(shell sdl-config --prefix)
|
||||||
|
BF_SDL_INC = '${BF_SDL}/include/SDL' #$(shell $(BF_SDL)/bin/sdl-config --cflags)
|
||||||
|
BF_SDL_LIB = 'SDL' #BF_SDL #$(shell $(BF_SDL)/bin/sdl-config --libs) -lSDL_mixer
|
||||||
|
|
||||||
|
WITH_BF_OPENEXR = True
|
||||||
|
WITH_BF_STATICOPENEXR = False
|
||||||
|
BF_OPENEXR = '/usr'
|
||||||
|
# when compiling with your own openexr lib you might need to set...
|
||||||
|
# BF_OPENEXR_INC = '${BF_OPENEXR}/include/OpenEXR ${BF_OPENEXR}/include'
|
||||||
|
|
||||||
|
BF_OPENEXR_INC = '${BF_OPENEXR}/include/OpenEXR'
|
||||||
|
BF_OPENEXR_LIB = 'Half IlmImf Iex Imath '
|
||||||
|
BF_OPENEXR_LIB_STATIC = '${BF_OPENEXR}/lib/libHalf.a ${BF_OPENEXR}/lib/libIlmImf.a ${BF_OPENEXR}/lib/libIex.a ${BF_OPENEXR}/lib/libImath.a ${BF_OPENEXR}/lib/libIlmThread.a'
|
||||||
|
# BF_OPENEXR_LIBPATH = '${BF_OPENEXR}/lib'
|
||||||
|
|
||||||
|
|
||||||
|
WITH_BF_DDS = True
|
||||||
|
|
||||||
|
WITH_BF_JPEG = True
|
||||||
|
BF_JPEG = '/usr'
|
||||||
|
BF_JPEG_INC = '${BF_JPEG}/include'
|
||||||
|
BF_JPEG_LIB = 'jpeg'
|
||||||
|
|
||||||
|
WITH_BF_PNG = True
|
||||||
|
BF_PNG = '/usr'
|
||||||
|
BF_PNG_INC = '${BF_PNG}/include'
|
||||||
|
BF_PNG_LIB = 'png'
|
||||||
|
|
||||||
|
WITH_BF_TIFF = True
|
||||||
|
BF_TIFF = '/usr'
|
||||||
|
BF_TIFF_INC = '${BF_TIFF}/include'
|
||||||
|
BF_TIFF_LIB = 'tiff'
|
||||||
|
|
||||||
|
WITH_BF_ZLIB = True
|
||||||
|
BF_ZLIB = '/usr'
|
||||||
|
BF_ZLIB_INC = '${BF_ZLIB}/include'
|
||||||
|
BF_ZLIB_LIB = 'z'
|
||||||
|
|
||||||
|
WITH_BF_INTERNATIONAL = True
|
||||||
|
|
||||||
|
WITH_BF_GAMEENGINE = True
|
||||||
|
WITH_BF_PLAYER = True
|
||||||
|
WITH_BF_OCEANSIM = True
|
||||||
|
|
||||||
|
WITH_BF_BULLET = True
|
||||||
|
BF_BULLET = '#extern/bullet2/src'
|
||||||
|
BF_BULLET_INC = '${BF_BULLET}'
|
||||||
|
BF_BULLET_LIB = 'extern_bullet'
|
||||||
|
|
||||||
|
WITH_BF_ELTOPO = False
|
||||||
|
BF_LAPACK = '/usr'
|
||||||
|
BF_LAPACK_LIB = 'lapack3gf blas clapack'
|
||||||
|
BF_LAPACK_LIBPATH = '${BF_LAPACK}/lib'
|
||||||
|
|
||||||
|
BF_FREETYPE = '/usr'
|
||||||
|
BF_FREETYPE_INC = '${BF_FREETYPE}/include ${BF_FREETYPE}/include/freetype2'
|
||||||
|
BF_FREETYPE_LIB = 'freetype'
|
||||||
|
#BF_FREETYPE_LIB_STATIC = '${BF_FREETYPE}/lib/libfreetype.a'
|
||||||
|
|
||||||
|
WITH_BF_ICONV = False
|
||||||
|
BF_ICONV = "/usr"
|
||||||
|
BF_ICONV_INC = '${BF_ICONV}/include'
|
||||||
|
BF_ICONV_LIB = 'iconv'
|
||||||
|
BF_ICONV_LIBPATH = '${BF_ICONV}/lib'
|
||||||
|
|
||||||
|
WITH_BF_BINRELOC = True
|
||||||
|
|
||||||
|
# enable ffmpeg support
|
||||||
|
WITH_BF_FFMPEG = True
|
||||||
|
BF_FFMPEG = '/usr'
|
||||||
|
BF_FFMPEG_LIB = 'avformat avcodec swscale avutil avdevice'
|
||||||
|
BF_FFMPEG_INC = '${BF_FFMPEG}/include'
|
||||||
|
BF_FFMPEG_LIBPATH='${BF_FFMPEG}/lib'
|
||||||
|
#WITH_BF_STATICFFMPEG = True
|
||||||
|
#BF_FFMPEG_LIB_STATIC = '${BF_FFMPEG_LIBPATH}/libavformat.a ${BF_FFMPEG_LIBPATH/libavcodec.a ${BF_FFMPEG_LIBPATH}/libswscale.a ${BF_FFMPEG_LIBPATH}/libavutil.a ${BF_FFMPEG_LIBPATH}/libavdevice.a'
|
||||||
|
|
||||||
|
# enable ogg, vorbis and theora in ffmpeg
|
||||||
|
WITH_BF_OGG = False
|
||||||
|
BF_OGG = '/usr'
|
||||||
|
BF_OGG_INC = '${BF_OGG}/include'
|
||||||
|
BF_OGG_LIB = 'ogg vorbis vorbisenc theoraenc theoradec'
|
||||||
|
|
||||||
|
WITH_BF_OPENJPEG = True
|
||||||
|
BF_OPENJPEG = '#extern/libopenjpeg'
|
||||||
|
BF_OPENJPEG_LIB = ''
|
||||||
|
BF_OPENJPEG_INC = '${BF_OPENJPEG}'
|
||||||
|
BF_OPENJPEG_LIBPATH='${BF_OPENJPEG}/lib'
|
||||||
|
|
||||||
|
WITH_BF_FFTW3 = False
|
||||||
|
WITH_BF_STATICFFTW3 = False
|
||||||
|
BF_FFTW3 = '/usr'
|
||||||
|
BF_FFTW3_INC = '${BF_FFTW3}/include'
|
||||||
|
BF_FFTW3_LIB = 'fftw3'
|
||||||
|
BF_FFTW3_LIBPATH = '${BF_FFTW3}/lib'
|
||||||
|
BF_FFTW3_LIB_STATIC = '${BF_FFTW3_LIBPATH}/libfftw3.a'
|
||||||
|
|
||||||
|
WITH_BF_REDCODE = False
|
||||||
|
BF_REDCODE = '#extern/libredcode'
|
||||||
|
BF_REDCODE_LIB = ''
|
||||||
|
# BF_REDCODE_INC = '${BF_REDCODE}/include'
|
||||||
|
BF_REDCODE_INC = '${BF_REDCODE}/../' #C files request "libredcode/format.h" which is in "#extern/libredcode/format.h", stupid but compiles for now.
|
||||||
|
BF_REDCODE_LIBPATH='${BF_REDCODE}/lib'
|
||||||
|
|
||||||
|
# Mesa Libs should go here if you're using them as well....
|
||||||
|
WITH_BF_STATICOPENGL = False
|
||||||
|
BF_OPENGL = '/usr'
|
||||||
|
BF_OPENGL_INC = '${BF_OPENGL}/include'
|
||||||
|
BF_OPENGL_LIB = 'GL GLU X11 Xi Xxf86vm'
|
||||||
|
BF_OPENGL_LIBPATH = '/usr/X11R6/lib'
|
||||||
|
BF_OPENGL_LIB_STATIC = '${BF_OPENGL_LIBPATH}/libGL.a ${BF_OPENGL_LIBPATH}/libGLU.a ${BF_OPENGL_LIBPATH}/libXxf86vm.a ${BF_OPENGL_LIBPATH}/libX11.a ${BF_OPENGL_LIBPATH}/libXi.a ${BF_OPENGL_LIBPATH}/libXext.a ${BF_OPENGL_LIBPATH}/libXxf86vm.a'
|
||||||
|
|
||||||
|
WITH_BF_COLLADA = False
|
||||||
|
BF_COLLADA = '#source/blender/collada'
|
||||||
|
BF_COLLADA_INC = '${BF_COLLADA}'
|
||||||
|
BF_COLLADA_LIB = 'bf_collada'
|
||||||
|
BF_OPENCOLLADA = '/usr'
|
||||||
|
BF_OPENCOLLADA_INC = '${BF_OPENCOLLADA}/include/opencollada'
|
||||||
|
BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver pcre buffer ftoa'
|
||||||
|
BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib/opencollada'
|
||||||
|
BF_PCRE = ''
|
||||||
|
BF_PCRE_LIB = 'pcre'
|
||||||
|
BF_PCRE_LIBPATH = '/usr/lib'
|
||||||
|
BF_EXPAT = '/usr'
|
||||||
|
BF_EXPAT_LIB = 'expat'
|
||||||
|
BF_EXPAT_LIBPATH = '/usr/lib'
|
||||||
|
|
||||||
|
WITH_BF_JEMALLOC = False
|
||||||
|
WITH_BF_STATICJEMALLOC = False
|
||||||
|
BF_JEMALLOC = '/usr'
|
||||||
|
BF_JEMALLOC_INC = '${BF_JEMALLOC}/include'
|
||||||
|
BF_JEMALLOC_LIBPATH = '${BF_JEMALLOC}/lib'
|
||||||
|
BF_JEMALLOC_LIB = 'jemalloc'
|
||||||
|
BF_JEMALLOC_LIB_STATIC = '${BF_JEMALLOC_LIBPATH}/libjemalloc.a'
|
||||||
|
|
||||||
|
WITH_BF_OIIO = False
|
||||||
|
WITH_BF_STATICOIIO = False
|
||||||
|
BF_OIIO = '/usr'
|
||||||
|
BF_OIIO_INC = '${BF_OIIO}/include'
|
||||||
|
BF_OIIO_LIB = 'OpenImageIO'
|
||||||
|
BF_OIIO_LIB_STATIC = '${BF_OIIO_LIBPATH}/libOpenImageIO.a ${BF_OPENEXR}/lib/libIlmImf.a ${BF_JPEG}/lib/libjpeg.a'
|
||||||
|
BF_OIIO_LIBPATH = '${BF_OIIO}/lib'
|
||||||
|
|
||||||
|
WITH_BF_OCIO = False
|
||||||
|
WITH_BF_STATICOCIO = False
|
||||||
|
BF_OCIO = '/usr'
|
||||||
|
BF_OCIO_INC = '${BF_OCIO}/include'
|
||||||
|
BF_OCIO_LIB = 'OpenColorIO yaml-cpp tinyxml'
|
||||||
|
BF_OCIO_LIB_STATIC = '${BF_OCIO_LIBPATH}/libOpenColorIO.a ${BF_OCIO_LIBPATH}/libtinyxml.a ${BF_OCIO_LIBPATH}/libyaml-cpp.a'
|
||||||
|
BF_OCIO_LIBPATH = '${BF_OCIO}/lib'
|
||||||
|
|
||||||
|
WITH_BF_BOOST = True
|
||||||
|
WITH_BF_STATICBOOST = False
|
||||||
|
BF_BOOST = '/usr'
|
||||||
|
BF_BOOST_INC = '${BF_BOOST}/include'
|
||||||
|
BF_BOOST_LIB = 'boost_filesystem boost_regex boost_system boost_thread boost_date_time'
|
||||||
|
BF_BOOST_LIB_STATIC = '${BF_BOOST_LIBPATH}/libboost_filesystem.a ${BF_BOOST_LIBPATH}/libboost_date_time.a ' + \
|
||||||
|
'${BF_BOOST_LIBPATH}/libboost_regex.a ${BF_BOOST_LIBPATH}/libboost_locale.a ${BF_BOOST_LIBPATH}/libboost_system.a ' + \
|
||||||
|
'${BF_BOOST_LIBPATH}/libboost_thread.a'
|
||||||
|
BF_BOOST_LIB_INTERNATIONAL = 'boost_locale'
|
||||||
|
BF_BOOST_LIBPATH = '${BF_BOOST}/lib'
|
||||||
|
|
||||||
|
WITH_BF_CYCLES = WITH_BF_OIIO and WITH_BF_BOOST
|
||||||
|
|
||||||
|
WITH_BF_CYCLES_CUDA_BINARIES = False
|
||||||
|
BF_CYCLES_CUDA_NVCC = '/usr/local/cuda/bin/nvcc'
|
||||||
|
BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_20', 'sm_21', 'sm_30', 'sm_35', 'sm_50']
|
||||||
|
|
||||||
|
WITH_BF_OPENMP = True
|
||||||
|
|
||||||
|
#Ray trace optimization
|
||||||
|
WITH_BF_RAYOPTIMIZATION = True
|
||||||
|
BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse','-pthread']
|
||||||
|
|
||||||
|
#SpaceNavigator and friends
|
||||||
|
WITH_BF_3DMOUSE = True
|
||||||
|
WITH_BF_STATIC3DMOUSE = False
|
||||||
|
BF_3DMOUSE = '/usr'
|
||||||
|
BF_3DMOUSE_INC = '${BF_3DMOUSE}/include'
|
||||||
|
BF_3DMOUSE_LIBPATH = '${BF_3DMOUSE}/lib'
|
||||||
|
BF_3DMOUSE_LIB = 'spnav'
|
||||||
|
BF_3DMOUSE_LIB_STATIC = '${BF_3DMOUSE_LIBPATH}/libspnav.a'
|
||||||
|
|
||||||
|
#Freestyle
|
||||||
|
WITH_BF_FREESTYLE = True
|
||||||
|
|
||||||
|
##
|
||||||
|
CC = 'gcc'
|
||||||
|
CXX = 'g++'
|
||||||
|
|
||||||
|
CCFLAGS = ['-pipe','-fPIC','-funsigned-char','-fno-strict-aliasing','-D_LARGEFILE_SOURCE', '-D_FILE_OFFSET_BITS=64','-D_LARGEFILE64_SOURCE']
|
||||||
|
CXXFLAGS = []
|
||||||
|
|
||||||
|
CPPFLAGS = []
|
||||||
|
# g++ 4.6, only needed for bullet
|
||||||
|
CXXFLAGS += ['-fpermissive']
|
||||||
|
if WITH_BF_FFMPEG:
|
||||||
|
# libavutil needs UINT64_C()
|
||||||
|
CXXFLAGS += ['-D__STDC_CONSTANT_MACROS', ]
|
||||||
|
REL_CFLAGS = []
|
||||||
|
REL_CXXFLAGS = []
|
||||||
|
REL_CCFLAGS = ['-O2']
|
||||||
|
|
||||||
|
C_WARN = ['-Wno-char-subscripts', '-Wdeclaration-after-statement', '-Wunused-parameter', '-Wstrict-prototypes', '-Werror=declaration-after-statement', '-Werror=implicit-function-declaration', '-Werror=return-type']
|
||||||
|
CC_WARN = ['-Wall']
|
||||||
|
CXX_WARN = ['-Wno-invalid-offsetof', '-Wno-sign-compare']
|
||||||
|
|
||||||
|
LLIBS = ['util', 'c', 'm', 'dl', 'pthread']
|
||||||
|
|
||||||
|
BF_PROFILE = False
|
||||||
|
BF_PROFILE_CCFLAGS = ['-pg','-g']
|
||||||
|
BF_PROFILE_LINKFLAGS = ['-pg']
|
||||||
|
|
||||||
|
BF_DEBUG = False
|
||||||
|
BF_DEBUG_CCFLAGS = ['-g']
|
||||||
|
|
||||||
|
BF_BUILDDIR = '../build/linux'
|
||||||
|
BF_INSTALLDIR='../install/linux'
|
||||||
|
|
||||||
|
#Link against pthread
|
||||||
|
PLATFORM_LINKFLAGS = ['-pthread']
|
||||||
|
|
||||||
|
#Fix for LLVM conflict with Mesa llvmpipe, SDL dynload also requires symbols to be hidden.
|
||||||
|
# TODO(sergey): Move this to SConstruct, so we can have this line depended on user config.
|
||||||
|
PLATFORM_LINKFLAGS += ['-Wl,--version-script=source/creator/blender.map']
|
||||||
221
build_files/scons/config/win32-mingw-config.py
Normal file
221
build_files/scons/config/win32-mingw-config.py
Normal file
@@ -0,0 +1,221 @@
|
|||||||
|
LCGDIR = '#../lib/mingw32'
|
||||||
|
LIBDIR = "${LCGDIR}"
|
||||||
|
|
||||||
|
BF_PYTHON = LIBDIR + '/python'
|
||||||
|
BF_PYTHON_VERSION = '3.4'
|
||||||
|
WITH_BF_STATICPYTHON = False
|
||||||
|
BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}'
|
||||||
|
BF_PYTHON_BINARY = 'python'
|
||||||
|
BF_PYTHON_LIB = 'python${BF_PYTHON_VERSION[0]}${BF_PYTHON_VERSION[2]}mw'
|
||||||
|
BF_PYTHON_DLL = 'python${BF_PYTHON_VERSION[0]}${BF_PYTHON_VERSION[2]}'
|
||||||
|
BF_PYTHON_LIBPATH = '${BF_PYTHON}/lib'
|
||||||
|
BF_PYTHON_LIB_STATIC = '${BF_PYTHON}/lib/libpython${BF_PYTHON_VERSION[0]}${BF_PYTHON_VERSION[2]}.a'
|
||||||
|
|
||||||
|
WITH_BF_OPENAL = True
|
||||||
|
BF_OPENAL = LIBDIR + '/openal'
|
||||||
|
BF_OPENAL_INC = '${BF_OPENAL}/include'
|
||||||
|
BF_OPENAL_LIB = 'wrap_oal'
|
||||||
|
BF_OPENAL_LIBPATH = '${BF_OPENAL}/lib'
|
||||||
|
|
||||||
|
WITH_BF_FFMPEG = True
|
||||||
|
BF_FFMPEG_LIB = 'avformat-55 avcodec-55 avdevice-55 avutil-52 swscale-2'
|
||||||
|
BF_FFMPEG_LIBPATH = LIBDIR + '/ffmpeg/lib'
|
||||||
|
BF_FFMPEG_INC = LIBDIR + '/ffmpeg/include'
|
||||||
|
BF_FFMPEG_DLL = '${BF_FFMPEG_LIBPATH}/avformat-55.dll ${BF_FFMPEG_LIBPATH}/avcodec-55.dll ${BF_FFMPEG_LIBPATH}/avdevice-55.dll ${BF_FFMPEG_LIBPATH}/avutil-52.dll ${BF_FFMPEG_LIBPATH}/swscale-2.dll'
|
||||||
|
|
||||||
|
WITH_BF_JACK = False
|
||||||
|
BF_JACK = LIBDIR + '/jack'
|
||||||
|
BF_JACK_INC = '${BF_JACK}/include'
|
||||||
|
BF_JACK_LIB = 'libjack'
|
||||||
|
BF_JACK_LIBPATH = '${BF_JACK}/lib'
|
||||||
|
|
||||||
|
WITH_BF_SNDFILE = False
|
||||||
|
BF_SNDFILE = LIBDIR + '/sndfile'
|
||||||
|
BF_SNDFILE_INC = '${BF_SNDFILE}/include'
|
||||||
|
BF_SNDFILE_LIB = 'libsndfile-1'
|
||||||
|
BF_SNDFILE_LIBPATH = '${BF_SNDFILE}/lib'
|
||||||
|
|
||||||
|
WITH_BF_SDL = True
|
||||||
|
BF_SDL = LIBDIR + '/sdl'
|
||||||
|
BF_SDL_INC = '${BF_SDL}/include'
|
||||||
|
BF_SDL_LIB = 'SDL'
|
||||||
|
BF_SDL_LIBPATH = '${BF_SDL}/lib'
|
||||||
|
|
||||||
|
BF_PTHREADS = LIBDIR + '/pthreads'
|
||||||
|
BF_PTHREADS_INC = '${BF_PTHREADS}/include'
|
||||||
|
BF_PTHREADS_LIB = 'pthreadGC2'
|
||||||
|
BF_PTHREADS_LIBPATH = '${BF_PTHREADS}/lib'
|
||||||
|
|
||||||
|
WITH_BF_OPENEXR = True
|
||||||
|
WITH_BF_STATICOPENEXR = False
|
||||||
|
BF_OPENEXR = LIBDIR + '/openexr'
|
||||||
|
BF_OPENEXR_INC = '${BF_OPENEXR}/include ${BF_OPENEXR}/include/OpenEXR'
|
||||||
|
BF_OPENEXR_LIB = 'Half IlmImf Imath IlmThread Iex'
|
||||||
|
BF_OPENEXR_LIBPATH = '${BF_OPENEXR}/lib'
|
||||||
|
# Warning, this static lib configuration is untested! users of this OS please confirm.
|
||||||
|
BF_OPENEXR_LIB_STATIC = '${BF_OPENEXR}/lib/libHalf.a ${BF_OPENEXR}/lib/libIlmImf.a ${BF_OPENEXR}/lib/libIex.a ${BF_OPENEXR}/lib/libImath.a ${BF_OPENEXR}/lib/libIlmThread.a'
|
||||||
|
|
||||||
|
WITH_BF_DDS = True
|
||||||
|
|
||||||
|
WITH_BF_JPEG = True
|
||||||
|
BF_JPEG = LIBDIR + '/jpeg'
|
||||||
|
BF_JPEG_INC = '${BF_JPEG}/include'
|
||||||
|
BF_JPEG_LIB = 'liblibjpeg'
|
||||||
|
BF_JPEG_LIBPATH = '${BF_JPEG}/lib'
|
||||||
|
|
||||||
|
WITH_BF_PNG = True
|
||||||
|
BF_PNG = LIBDIR + '/png'
|
||||||
|
BF_PNG_INC = '${BF_PNG}/include'
|
||||||
|
BF_PNG_LIB = 'png'
|
||||||
|
BF_PNG_LIBPATH = '${BF_PNG}/lib'
|
||||||
|
|
||||||
|
WITH_BF_TIFF = True
|
||||||
|
BF_TIFF = LIBDIR + '/tiff'
|
||||||
|
BF_TIFF_INC = '${BF_TIFF}/include'
|
||||||
|
BF_TIFF_LIB = 'tiff'
|
||||||
|
BF_TIFF_LIBPATH = '${BF_TIFF}/lib'
|
||||||
|
|
||||||
|
WITH_BF_ZLIB = True
|
||||||
|
BF_ZLIB = LIBDIR + '/zlib'
|
||||||
|
BF_ZLIB_INC = '${BF_ZLIB}/include'
|
||||||
|
BF_ZLIB_LIB = 'z'
|
||||||
|
BF_ZLIB_LIBPATH = '${BF_ZLIB}/lib'
|
||||||
|
|
||||||
|
WITH_BF_INTERNATIONAL = True
|
||||||
|
|
||||||
|
WITH_BF_OPENJPEG = True
|
||||||
|
BF_OPENJPEG = '#extern/libopenjpeg'
|
||||||
|
BF_OPENJPEG_LIB = ''
|
||||||
|
BF_OPENJPEG_INC = '${BF_OPENJPEG}'
|
||||||
|
BF_OPENJPEG_LIBPATH='${BF_OPENJPEG}/lib'
|
||||||
|
|
||||||
|
WITH_BF_FFTW3 = True
|
||||||
|
BF_FFTW3 = LIBDIR + '/fftw3'
|
||||||
|
BF_FFTW3_INC = '${BF_FFTW3}/include'
|
||||||
|
BF_FFTW3_LIB = 'fftw3'
|
||||||
|
BF_FFTW3_LIBPATH = '${BF_FFTW3}/lib'
|
||||||
|
|
||||||
|
WITH_BF_GAMEENGINE = True
|
||||||
|
WITH_BF_PLAYER = True
|
||||||
|
WITH_BF_OCEANSIM = True
|
||||||
|
|
||||||
|
WITH_BF_BULLET = True
|
||||||
|
BF_BULLET = '#extern/bullet2/src'
|
||||||
|
BF_BULLET_INC = '${BF_BULLET}'
|
||||||
|
BF_BULLET_LIB = 'extern_bullet'
|
||||||
|
|
||||||
|
BF_WINTAB = LIBDIR + '/wintab'
|
||||||
|
BF_WINTAB_INC = '${BF_WINTAB}/INCLUDE'
|
||||||
|
|
||||||
|
BF_FREETYPE = LIBDIR + '/freetype'
|
||||||
|
BF_FREETYPE_INC = '${BF_FREETYPE}/include ${BF_FREETYPE}/include/freetype2'
|
||||||
|
BF_FREETYPE_LIB = 'freetype'
|
||||||
|
BF_FREETYPE_LIBPATH = '${BF_FREETYPE}/lib'
|
||||||
|
|
||||||
|
WITH_BF_ICONV = False
|
||||||
|
BF_ICONV = LIBDIR + "/iconv"
|
||||||
|
BF_ICONV_INC = '${BF_ICONV}/include'
|
||||||
|
BF_ICONV_LIB = 'iconv'
|
||||||
|
BF_ICONV_LIBPATH = '${BF_ICONV}/lib'
|
||||||
|
|
||||||
|
WITH_BF_REDCODE = False
|
||||||
|
BF_REDCODE_INC = '#extern'
|
||||||
|
|
||||||
|
# Mesa Libs should go here if your using them as well....
|
||||||
|
WITH_BF_STATICOPENGL = False
|
||||||
|
BF_OPENGL = 'C:\\MingW'
|
||||||
|
BF_OPENGL_INC = '${BF_OPENGL}/include'
|
||||||
|
BF_OPENGL_LIBINC = '${BF_OPENGL}/lib'
|
||||||
|
BF_OPENGL_LIB = 'opengl32 glu32'
|
||||||
|
BF_OPENGL_LIB_STATIC = [ '${BF_OPENGL}/lib/libGL.a', '${BF_OPENGL}/lib/libGLU.a',
|
||||||
|
'${BF_OPENGL}/lib/libXmu.a', '${BF_OPENGL}/lib/libXext.a',
|
||||||
|
'${BF_OPENGL}/lib/libX11.a', '${BF_OPENGL}/lib/libXi.a' ]
|
||||||
|
|
||||||
|
WITH_BF_COLLADA = True
|
||||||
|
BF_COLLADA = '#source/blender/collada'
|
||||||
|
BF_COLLADA_INC = '${BF_COLLADA}'
|
||||||
|
BF_COLLADA_LIB = 'bf_collada'
|
||||||
|
|
||||||
|
BF_OPENCOLLADA = LIBDIR + '/opencollada'
|
||||||
|
BF_OPENCOLLADA_INC = '${BF_OPENCOLLADA}/include/opencollada'
|
||||||
|
BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver pcre buffer ftoa xml'
|
||||||
|
BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib/opencollada'
|
||||||
|
|
||||||
|
#Cycles
|
||||||
|
WITH_BF_CYCLES = True
|
||||||
|
WITH_BF_CYCLES_CUDA_BINARIES = False
|
||||||
|
BF_CYCLES_CUDA_NVCC = "" # Path to the NVIDIA CUDA compiler
|
||||||
|
BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_20', 'sm_21', 'sm_30', 'sm_35', 'sm_50']
|
||||||
|
|
||||||
|
WITH_BF_OIIO = True
|
||||||
|
BF_OIIO = LIBDIR + '/openimageio'
|
||||||
|
BF_OIIO_INC = '${BF_OIIO}/include'
|
||||||
|
BF_OIIO_LIB = 'OpenImageIO'
|
||||||
|
BF_OIIO_LIBPATH = '${BF_OIIO}/lib'
|
||||||
|
|
||||||
|
WITH_BF_OCIO = True
|
||||||
|
BF_OCIO = LIBDIR + '/opencolorio'
|
||||||
|
BF_OCIO_INC = '${BF_OCIO}/include'
|
||||||
|
BF_OCIO_LIB = 'OpenColorIO'
|
||||||
|
BF_OCIO_LIBPATH = '${BF_OCIO}/lib'
|
||||||
|
|
||||||
|
WITH_BF_BOOST = True
|
||||||
|
BF_BOOST = LIBDIR + '/boost'
|
||||||
|
BF_BOOST_INC = '${BF_BOOST}/include'
|
||||||
|
BF_BOOST_LIB = 'boost_date_time-mgw46-mt-s-1_49 boost_filesystem-mgw46-mt-s-1_49 boost_regex-mgw46-mt-s-1_49 boost_system-mgw46-mt-s-1_49 boost_thread-mgw46-mt-s-1_49'
|
||||||
|
BF_BOOST_LIB_INTERNATIONAL = 'boost_locale-mgw46-mt-s-1_49'
|
||||||
|
BF_BOOST_LIBPATH = '${BF_BOOST}/lib'
|
||||||
|
|
||||||
|
#Ray trace optimization
|
||||||
|
WITH_BF_RAYOPTIMIZATION = True
|
||||||
|
BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse']
|
||||||
|
|
||||||
|
WITH_BF_IME = True
|
||||||
|
|
||||||
|
WITH_BF_OPENMP = True
|
||||||
|
|
||||||
|
#CUDA
|
||||||
|
WITH_BF_CYCLES_CUDA_BINARIES = False
|
||||||
|
#BF_CYCLES_CUDA_NVCC = "" # Path to the nvidia compiler
|
||||||
|
BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_20', 'sm_21', 'sm_30', 'sm_35', 'sm_50']
|
||||||
|
|
||||||
|
#Freestyle
|
||||||
|
WITH_BF_FREESTYLE = True
|
||||||
|
|
||||||
|
##
|
||||||
|
CC = 'gcc'
|
||||||
|
CXX = 'g++'
|
||||||
|
|
||||||
|
CCFLAGS = [ '-pipe', '-funsigned-char', '-fno-strict-aliasing' ]
|
||||||
|
CXXFLAGS = []
|
||||||
|
|
||||||
|
CPPFLAGS = ['-DWIN32', '-DFREE_WINDOWS', '-D_LARGEFILE_SOURCE', '-D_FILE_OFFSET_BITS=64', '-D_LARGEFILE64_SOURCE', '-DBOOST_ALL_NO_LIB', '-DBOOST_THREAD_USE_LIB', '-DGLEW_STATIC', '-DOPJ_STATIC']
|
||||||
|
REL_CFLAGS = []
|
||||||
|
REL_CXXFLAGS = []
|
||||||
|
REL_CCFLAGS = ['-O2']
|
||||||
|
|
||||||
|
C_WARN = ['-Wno-char-subscripts', '-Wdeclaration-after-statement', '-Wstrict-prototypes']
|
||||||
|
|
||||||
|
CC_WARN = [ '-Wall' ]
|
||||||
|
|
||||||
|
LLIBS = ['-lshell32', '-lshfolder', '-lgdi32', '-lmsvcrt', '-lwinmm', '-lmingw32', '-lm', '-lws2_32', '-lz', '-lstdc++','-lole32','-luuid', '-lwsock32', '-lpsapi']
|
||||||
|
|
||||||
|
if WITH_BF_IME:
|
||||||
|
LLIBS.append('-limm32')
|
||||||
|
|
||||||
|
PLATFORM_LINKFLAGS = ['-Xlinker', '--stack=2097152']
|
||||||
|
|
||||||
|
## DISABLED, causes linking errors!
|
||||||
|
## for re-distribution, so users dont need mingw installed
|
||||||
|
# PLATFORM_LINKFLAGS += ["-static-libgcc", "-static-libstdc++"]
|
||||||
|
|
||||||
|
BF_DEBUG = False
|
||||||
|
BF_DEBUG_CCFLAGS= ['-g']
|
||||||
|
|
||||||
|
BF_PROFILE_CCFLAGS = ['-pg', '-g']
|
||||||
|
BF_PROFILE_LINKFLAGS = ['-pg']
|
||||||
|
BF_PROFILE_FLAGS = BF_PROFILE_CCFLAGS
|
||||||
|
BF_PROFILE = False
|
||||||
|
|
||||||
|
BF_BUILDDIR = '..\\build\\win32-mingw'
|
||||||
|
BF_INSTALLDIR='..\\install\\win32-mingw'
|
||||||
256
build_files/scons/config/win32-vc-config.py
Normal file
256
build_files/scons/config/win32-vc-config.py
Normal file
@@ -0,0 +1,256 @@
|
|||||||
|
import subprocess
|
||||||
|
|
||||||
|
CL_OUT = subprocess.Popen(["cl.exe"],stdout=subprocess.PIPE,stderr=subprocess.PIPE)
|
||||||
|
CL_STDOUT, CL_STDERR = CL_OUT.communicate()
|
||||||
|
|
||||||
|
if "18.00." in CL_STDERR:
|
||||||
|
VC_VERSION = '12.0'
|
||||||
|
LCGDIR = '#../lib/windows_vc12'
|
||||||
|
else:
|
||||||
|
import sys
|
||||||
|
print("Visual C version not supported {}\n".format(CL_STDERR))
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
LIBDIR = '${LCGDIR}'
|
||||||
|
|
||||||
|
WITH_BF_FFMPEG = True
|
||||||
|
BF_FFMPEG = LIBDIR +'/ffmpeg'
|
||||||
|
BF_FFMPEG_INC = '${BF_FFMPEG}/include ${BF_FFMPEG}/include/msvc'
|
||||||
|
BF_FFMPEG_LIBPATH='${BF_FFMPEG}/lib'
|
||||||
|
BF_FFMPEG_LIB = 'avformat-55.lib avcodec-55.lib avdevice-55.lib avutil-52.lib swscale-2.lib'
|
||||||
|
BF_FFMPEG_DLL = '${BF_FFMPEG_LIBPATH}/avformat-55.dll ${BF_FFMPEG_LIBPATH}/avcodec-55.dll ${BF_FFMPEG_LIBPATH}/avdevice-55.dll ${BF_FFMPEG_LIBPATH}/avutil-52.dll ${BF_FFMPEG_LIBPATH}/swscale-2.dll'
|
||||||
|
|
||||||
|
BF_PYTHON = LIBDIR + '/python'
|
||||||
|
BF_PYTHON_VERSION = '3.4'
|
||||||
|
BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}'
|
||||||
|
BF_PYTHON_BINARY = 'python'
|
||||||
|
BF_PYTHON_LIB = 'python${BF_PYTHON_VERSION[0]}${BF_PYTHON_VERSION[2]}'
|
||||||
|
BF_PYTHON_DLL = '${BF_PYTHON_LIB}'
|
||||||
|
BF_PYTHON_LIBPATH = '${BF_PYTHON}/lib'
|
||||||
|
|
||||||
|
WITH_BF_PYTHON_INSTALL_NUMPY = True
|
||||||
|
|
||||||
|
WITH_BF_OPENAL = True
|
||||||
|
BF_OPENAL = LIBDIR + '/openal'
|
||||||
|
BF_OPENAL_INC = '${BF_OPENAL}/include '
|
||||||
|
BF_OPENAL_LIB = 'OpenAL32'
|
||||||
|
BF_OPENAL_LIBPATH = '${BF_OPENAL}/lib'
|
||||||
|
|
||||||
|
WITH_BF_ICONV = True
|
||||||
|
BF_ICONV = LIBDIR + '/iconv'
|
||||||
|
BF_ICONV_INC = '${BF_ICONV}/include'
|
||||||
|
BF_ICONV_LIB = 'iconv'
|
||||||
|
BF_ICONV_LIBPATH = '${BF_ICONV}/lib'
|
||||||
|
|
||||||
|
WITH_BF_JACK = False
|
||||||
|
BF_JACK = LIBDIR + '/jack'
|
||||||
|
BF_JACK_INC = '${BF_JACK}/include ${BF_FFMPEG}/include/msvc'
|
||||||
|
BF_JACK_LIB = 'libjack'
|
||||||
|
BF_JACK_LIBPATH = '${BF_JACK}/lib'
|
||||||
|
|
||||||
|
WITH_BF_SNDFILE = True
|
||||||
|
BF_SNDFILE = LIBDIR + '/sndfile'
|
||||||
|
BF_SNDFILE_INC = '${BF_SNDFILE}/include'
|
||||||
|
BF_SNDFILE_LIB = 'libsndfile-1'
|
||||||
|
BF_SNDFILE_LIBPATH = '${BF_SNDFILE}/lib'
|
||||||
|
|
||||||
|
WITH_BF_SDL = True
|
||||||
|
BF_SDL = LIBDIR + '/sdl'
|
||||||
|
BF_SDL_INC = '${BF_SDL}/include'
|
||||||
|
BF_SDL_LIB = 'SDL2.lib'
|
||||||
|
BF_SDL_LIBPATH = '${BF_SDL}/lib'
|
||||||
|
|
||||||
|
BF_PTHREADS = LIBDIR + '/pthreads'
|
||||||
|
BF_PTHREADS_INC = '${BF_PTHREADS}/include'
|
||||||
|
BF_PTHREADS_LIB = 'pthreadVC2'
|
||||||
|
BF_PTHREADS_LIBPATH = '${BF_PTHREADS}/lib'
|
||||||
|
|
||||||
|
WITH_BF_OPENEXR = True
|
||||||
|
WITH_BF_STATICOPENEXR = False
|
||||||
|
BF_OPENEXR = LIBDIR + '/openexr'
|
||||||
|
BF_OPENEXR_INC = '${BF_OPENEXR}/include ${BF_OPENEXR}/include/OpenEXR '
|
||||||
|
BF_OPENEXR_LIB = ' Iex-2_2 Half IlmImf-2_2 Imath-2_2 IlmThread-2_2 '
|
||||||
|
BF_OPENEXR_LIBPATH = '${BF_OPENEXR}/lib'
|
||||||
|
BF_OPENEXR_LIB_STATIC = '${BF_OPENEXR}/lib/libHalf.a ${BF_OPENEXR}/lib/libIlmImf.a ${BF_OPENEXR}/lib/libIex.a ${BF_OPENEXR}/lib/libImath.a ${BF_OPENEXR}/lib/libIlmThread.a'
|
||||||
|
|
||||||
|
WITH_BF_DDS = True
|
||||||
|
|
||||||
|
WITH_BF_JPEG = True
|
||||||
|
BF_JPEG = LIBDIR + '/jpeg'
|
||||||
|
BF_JPEG_INC = '${BF_JPEG}/include'
|
||||||
|
BF_JPEG_LIB = 'libjpeg'
|
||||||
|
BF_JPEG_LIBPATH = '${BF_JPEG}/lib'
|
||||||
|
|
||||||
|
WITH_BF_PNG = True
|
||||||
|
BF_PNG = LIBDIR + '/png'
|
||||||
|
BF_PNG_INC = '${BF_PNG}/include'
|
||||||
|
BF_PNG_LIB = 'libpng'
|
||||||
|
BF_PNG_LIBPATH = '${BF_PNG}/lib'
|
||||||
|
|
||||||
|
WITH_BF_TIFF = True
|
||||||
|
BF_TIFF = LIBDIR + '/tiff'
|
||||||
|
BF_TIFF_INC = '${BF_TIFF}/include'
|
||||||
|
BF_TIFF_LIB = 'libtiff'
|
||||||
|
BF_TIFF_LIBPATH = '${BF_TIFF}/lib'
|
||||||
|
|
||||||
|
WITH_BF_ZLIB = True
|
||||||
|
BF_ZLIB = LIBDIR + '/zlib'
|
||||||
|
BF_ZLIB_INC = '${BF_ZLIB}/include'
|
||||||
|
BF_ZLIB_LIB = 'libz_st'
|
||||||
|
BF_ZLIB_LIBPATH = '${BF_ZLIB}/lib'
|
||||||
|
|
||||||
|
WITH_BF_INTERNATIONAL = True
|
||||||
|
|
||||||
|
WITH_BF_GAMEENGINE = True
|
||||||
|
WITH_BF_PLAYER = True
|
||||||
|
WITH_BF_OCEANSIM = True
|
||||||
|
|
||||||
|
WITH_BF_BULLET = True
|
||||||
|
BF_BULLET = '#extern/bullet2/src'
|
||||||
|
BF_BULLET_INC = '${BF_BULLET}'
|
||||||
|
BF_BULLET_LIB = 'extern_bullet'
|
||||||
|
|
||||||
|
WITH_BF_ELTOPO = False
|
||||||
|
BF_LAPACK = LIBDIR + '/lapack'
|
||||||
|
BF_LAPACK_LIB = 'libf2c clapack_nowrap BLAS_nowrap'
|
||||||
|
BF_LAPACK_LIBPATH = '${BF_LAPACK}/lib'
|
||||||
|
|
||||||
|
BF_WINTAB = LIBDIR + '/wintab'
|
||||||
|
BF_WINTAB_INC = '${BF_WINTAB}/INCLUDE'
|
||||||
|
|
||||||
|
WITH_BF_BINRELOC = False
|
||||||
|
|
||||||
|
BF_WITH_FREETYPE = True
|
||||||
|
BF_FREETYPE = LIBDIR + '/freetype'
|
||||||
|
BF_FREETYPE_INC = '${BF_FREETYPE}/include ${BF_FREETYPE}/include/freetype2'
|
||||||
|
BF_FREETYPE_LIB = 'freetype2ST'
|
||||||
|
BF_FREETYPE_LIBPATH = '${BF_FREETYPE}/lib'
|
||||||
|
|
||||||
|
WITH_BF_OPENJPEG = True
|
||||||
|
BF_OPENJPEG = '#extern/libopenjpeg'
|
||||||
|
BF_OPENJPEG_LIB = ''
|
||||||
|
BF_OPENJPEG_INC = '${BF_OPENJPEG}'
|
||||||
|
BF_OPENJPEG_LIBPATH='${BF_OPENJPEG}/lib'
|
||||||
|
|
||||||
|
WITH_BF_FFTW3 = True
|
||||||
|
BF_FFTW3 = LIBDIR + '/fftw3'
|
||||||
|
BF_FFTW3_INC = '${BF_FFTW3}/include'
|
||||||
|
BF_FFTW3_LIB = 'libfftw'
|
||||||
|
BF_FFTW3_LIBPATH = '${BF_FFTW3}/lib'
|
||||||
|
|
||||||
|
WITH_BF_REDCODE = False
|
||||||
|
BF_REDCODE_INC = '#extern'
|
||||||
|
|
||||||
|
WITH_BF_COLLADA = True
|
||||||
|
BF_COLLADA = '#source/blender/collada'
|
||||||
|
BF_COLLADA_INC = '${BF_COLLADA}'
|
||||||
|
BF_COLLADA_LIB = 'bf_collada'
|
||||||
|
|
||||||
|
BF_OPENCOLLADA = LIBDIR + '/opencollada'
|
||||||
|
BF_OPENCOLLADA_INC = '${BF_OPENCOLLADA}/include/opencollada'
|
||||||
|
BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser MathMLSolver xml pcre buffer ftoa'
|
||||||
|
BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib/opencollada'
|
||||||
|
|
||||||
|
WITH_BF_IME = True
|
||||||
|
|
||||||
|
WITH_BF_3DMOUSE = True
|
||||||
|
|
||||||
|
WITH_BF_OPENMP = True
|
||||||
|
|
||||||
|
#Cycles
|
||||||
|
WITH_BF_CYCLES = True
|
||||||
|
|
||||||
|
WITH_BF_CYCLES_OSL = True
|
||||||
|
WITH_BF_STATICOSL = True
|
||||||
|
BF_OSL = '${LIBDIR}/osl'
|
||||||
|
BF_OSL_INC = '${BF_OSL}/include'
|
||||||
|
BF_OSL_LIBPATH = '${BF_OSL}/lib'
|
||||||
|
BF_OSL_LIB_STATIC = '${BF_OSL_LIBPATH}/oslcomp.lib ${BF_OSL_LIBPATH}/oslexec.lib ${BF_OSL_LIBPATH}/oslquery.lib '
|
||||||
|
BF_OSL_COMPILER = '${BF_OSL}/bin/oslc'
|
||||||
|
|
||||||
|
WITH_BF_LLVM = True
|
||||||
|
BF_LLVM = LIBDIR + '/llvm'
|
||||||
|
BF_LLVM_LIB = 'LLVMBitReader LLVMJIT LLVMipo LLVMVectorize LLVMBitWriter LLVMX86CodeGen LLVMX86Desc LLVMX86Info LLVMX86AsmPrinter ' + \
|
||||||
|
'LLVMX86Utils LLVMSelectionDAG LLVMCodeGen LLVMScalarOpts LLVMInstCombine LLVMTransformUtils LLVMipa LLVMAnalysis LLVMExecutionEngine ' + \
|
||||||
|
'LLVMTarget LLVMMC LLVMCore LLVMObject LLVMRuntimeDyld LLVMSupport'
|
||||||
|
BF_LLVM_LIBPATH = '${BF_LLVM}/lib'
|
||||||
|
|
||||||
|
WITH_BF_OIIO = True
|
||||||
|
BF_OIIO = '${LIBDIR}/openimageio'
|
||||||
|
BF_OIIO_INC = '${BF_OIIO}/include'
|
||||||
|
BF_OIIO_LIBPATH = '${BF_OIIO}/lib'
|
||||||
|
BF_OIIO_LIB_STATIC = '${BF_OIIO_LIBPATH}/OpenImageIO.lib'
|
||||||
|
WITH_BF_STATICOIIO = True
|
||||||
|
|
||||||
|
WITH_BF_OCIO = True
|
||||||
|
BF_OCIO = '${LIBDIR}/opencolorio'
|
||||||
|
BF_OCIO_INC = '${BF_OCIO}/include'
|
||||||
|
BF_OCIO_LIBPATH = '${BF_OCIO}/lib'
|
||||||
|
BF_OCIO_LIB_STATIC = '${BF_OCIO_LIBPATH}/OpenColorIO.lib'
|
||||||
|
WITH_BF_STATICOCIO = True
|
||||||
|
|
||||||
|
WITH_BF_BOOST = True
|
||||||
|
BF_BOOST = '${LIBDIR}/boost'
|
||||||
|
BF_BOOST_INC = '${BF_BOOST}/include'
|
||||||
|
BF_BOOST_LIB = 'libboost_date_time-vc120-mt-s-1_55 libboost_filesystem-vc120-mt-s-1_55 libboost_regex-vc120-mt-s-1_55 libboost_system-vc120-mt-s-1_55 libboost_thread-vc120-mt-s-1_55 libboost_wave-vc120-mt-s-1_55'
|
||||||
|
BF_BOOST_LIB_INTERNATIONAL = ' libboost_locale-vc120-mt-s-1_55'
|
||||||
|
BF_BOOST_LIBPATH = '${BF_BOOST}/lib'
|
||||||
|
|
||||||
|
#CUDA
|
||||||
|
WITH_BF_CYCLES_CUDA_BINARIES = False
|
||||||
|
#BF_CYCLES_CUDA_NVCC = "" # Path to the nvidia compiler
|
||||||
|
BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_20', 'sm_21', 'sm_30', 'sm_35', 'sm_50', 'sm_52']
|
||||||
|
|
||||||
|
#Ray trace optimization
|
||||||
|
WITH_BF_RAYOPTIMIZATION = True
|
||||||
|
BF_RAYOPTIMIZATION_SSE_FLAGS = ['/arch:SSE']
|
||||||
|
|
||||||
|
#Freestyle
|
||||||
|
WITH_BF_FREESTYLE = True
|
||||||
|
|
||||||
|
WITH_BF_STATICOPENGL = False
|
||||||
|
BF_OPENGL_INC = '${BF_OPENGL}/include'
|
||||||
|
BF_OPENGL_LIBINC = '${BF_OPENGL}/lib'
|
||||||
|
BF_OPENGL_LIB = 'opengl32 glu32'
|
||||||
|
BF_OPENGL_LIB_STATIC = [ '${BF_OPENGL}/lib/libGL.a', '${BF_OPENGL}/lib/libGLU.a',
|
||||||
|
'${BF_OPENGL}/lib/libXmu.a', '${BF_OPENGL}/lib/libXext.a',
|
||||||
|
'${BF_OPENGL}/lib/libX11.a', '${BF_OPENGL}/lib/libXi.a' ]
|
||||||
|
|
||||||
|
CC = 'cl.exe'
|
||||||
|
CXX = 'cl.exe'
|
||||||
|
|
||||||
|
CCFLAGS = ['/nologo', '/J', '/W3', '/Gd', '/w34062', '/wd4018', '/wd4065', '/wd4127', '/wd4181', '/wd4200', '/wd4244', '/wd4267', '/wd4305', '/wd4800', '/we4013', '/we4431']
|
||||||
|
CXXFLAGS = ['/EHsc']
|
||||||
|
BGE_CXXFLAGS = ['/O2', '/Ob2', '/EHsc', '/GR', '/fp:fast', '/arch:SSE']
|
||||||
|
|
||||||
|
if VC_VERSION == '12.0':
|
||||||
|
CCFLAGS.append('/DOIIO_STATIC_BUILD') # OIIO api changed with 1.4 making this needed
|
||||||
|
|
||||||
|
BF_DEBUG_CCFLAGS = ['/Zi', '/Ob0', '/Od', '/FR${TARGET}.sbr']
|
||||||
|
|
||||||
|
CPPFLAGS = ['-DWIN32','-D_CONSOLE', '-D_LIB', '-D_CRT_SECURE_NO_DEPRECATE', '-DOPJ_STATIC']
|
||||||
|
REL_CFLAGS = []
|
||||||
|
REL_CXXFLAGS = []
|
||||||
|
REL_CCFLAGS = ['-O2', '/Ob2']
|
||||||
|
|
||||||
|
C_WARN = []
|
||||||
|
CC_WARN = []
|
||||||
|
CXX_WARN = []
|
||||||
|
|
||||||
|
LLIBS = ['ws2_32', 'vfw32', 'winmm', 'kernel32', 'user32', 'gdi32', 'comdlg32', 'advapi32', 'shfolder', 'shell32', 'ole32', 'oleaut32', 'uuid', 'psapi']
|
||||||
|
|
||||||
|
if WITH_BF_IME:
|
||||||
|
LLIBS.append('imm32')
|
||||||
|
|
||||||
|
PLATFORM_LINKFLAGS = ['/SUBSYSTEM:CONSOLE','/MACHINE:IX86','/STACK:2097152','/INCREMENTAL:NO', '/LARGEADDRESSAWARE', '/NODEFAULTLIB:msvcrt.lib', '/NODEFAULTLIB:msvcmrt.lib', '/NODEFAULTLIB:msvcurt.lib', '/NODEFAULTLIB:msvcrtd.lib']
|
||||||
|
|
||||||
|
# # Todo
|
||||||
|
# BF_PROFILE_CCFLAGS = ['-pg', '-g ']
|
||||||
|
# BF_PROFILE_LINKFLAGS = ['-pg']
|
||||||
|
# BF_PROFILE = False
|
||||||
|
|
||||||
|
BF_BSC=False
|
||||||
|
|
||||||
|
BF_CYCLES_CUDA_ENV="C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd"
|
||||||
|
BF_BUILDDIR = '..\\build\\win32-vc'
|
||||||
|
BF_INSTALLDIR='..\\install\\win32-vc'
|
||||||
216
build_files/scons/config/win64-mingw-config.py
Normal file
216
build_files/scons/config/win64-mingw-config.py
Normal file
@@ -0,0 +1,216 @@
|
|||||||
|
LCGDIR = '#../lib/mingw64'
|
||||||
|
LIBDIR = "${LCGDIR}"
|
||||||
|
|
||||||
|
BF_PYTHON = LIBDIR + '/python'
|
||||||
|
BF_PYTHON_VERSION = '3.4'
|
||||||
|
WITH_BF_STATICPYTHON = False
|
||||||
|
BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}'
|
||||||
|
BF_PYTHON_BINARY = 'python'
|
||||||
|
BF_PYTHON_LIB = 'python${BF_PYTHON_VERSION[0]}${BF_PYTHON_VERSION[2]}mw'
|
||||||
|
BF_PYTHON_DLL = 'python${BF_PYTHON_VERSION[0]}${BF_PYTHON_VERSION[2]}'
|
||||||
|
BF_PYTHON_LIBPATH = '${BF_PYTHON}/lib'
|
||||||
|
|
||||||
|
WITH_BF_OPENAL = True
|
||||||
|
BF_OPENAL = LIBDIR + '/openal'
|
||||||
|
BF_OPENAL_INC = '${BF_OPENAL}/include'
|
||||||
|
BF_OPENAL_LIB = 'wrap_oal'
|
||||||
|
BF_OPENAL_LIBPATH = '${BF_OPENAL}/lib'
|
||||||
|
|
||||||
|
WITH_BF_FFMPEG = True
|
||||||
|
BF_FFMPEG_LIB = 'avformat.dll avcodec.dll avdevice.dll avutil.dll swscale.dll swresample.dll'
|
||||||
|
BF_FFMPEG_LIBPATH = LIBDIR + '/ffmpeg/lib'
|
||||||
|
BF_FFMPEG_INC = LIBDIR + '/ffmpeg/include'
|
||||||
|
BF_FFMPEG_DLL = '${BF_FFMPEG_LIBPATH}/avformat-53.dll ${BF_FFMPEG_LIBPATH}/avcodec-53.dll ${BF_FFMPEG_LIBPATH}/avdevice-53.dll ${BF_FFMPEG_LIBPATH}/avutil-51.dll ${BF_FFMPEG_LIBPATH}/swscale-2.dll ${BF_FFMPEG_LIBPATH}/swresample-0.dll ${BF_FFMPEG_LIBPATH}/xvidcore.dll'
|
||||||
|
|
||||||
|
WITH_BF_JACK = False
|
||||||
|
BF_JACK = LIBDIR + '/jack'
|
||||||
|
BF_JACK_INC = '${BF_JACK}/include'
|
||||||
|
BF_JACK_LIB = 'libjack'
|
||||||
|
BF_JACK_LIBPATH = '${BF_JACK}/lib'
|
||||||
|
|
||||||
|
WITH_BF_SNDFILE = False
|
||||||
|
BF_SNDFILE = LIBDIR + '/sndfile'
|
||||||
|
BF_SNDFILE_INC = '${BF_SNDFILE}/include'
|
||||||
|
BF_SNDFILE_LIB = 'libsndfile-1'
|
||||||
|
BF_SNDFILE_LIBPATH = '${BF_SNDFILE}/lib'
|
||||||
|
|
||||||
|
WITH_BF_SDL = True
|
||||||
|
BF_SDL = LIBDIR + '/sdl'
|
||||||
|
BF_SDL_INC = '${BF_SDL}/include'
|
||||||
|
BF_SDL_LIB = 'SDL'
|
||||||
|
BF_SDL_LIBPATH = '${BF_SDL}/lib'
|
||||||
|
|
||||||
|
BF_PTHREADS = '' # Part of MinGW-w64
|
||||||
|
BF_PTHREADS_INC = ''
|
||||||
|
BF_PTHREADS_LIB = ''
|
||||||
|
BF_PTHREADS_LIBPATH = ''
|
||||||
|
|
||||||
|
WITH_BF_OPENEXR = True
|
||||||
|
WITH_BF_STATICOPENEXR = False
|
||||||
|
BF_OPENEXR = LIBDIR + '/openexr'
|
||||||
|
BF_OPENEXR_INC = '${BF_OPENEXR}/include ${BF_OPENEXR}/include/OpenEXR'
|
||||||
|
BF_OPENEXR_LIB = 'Half IlmImf Imath IlmThread Iex'
|
||||||
|
BF_OPENEXR_LIBPATH = '${BF_OPENEXR}/lib'
|
||||||
|
|
||||||
|
WITH_BF_DDS = True
|
||||||
|
|
||||||
|
WITH_BF_JPEG = True
|
||||||
|
BF_JPEG = LIBDIR + '/jpeg'
|
||||||
|
BF_JPEG_INC = '${BF_JPEG}/include'
|
||||||
|
BF_JPEG_LIB = 'jpeg'
|
||||||
|
BF_JPEG_LIBPATH = '${BF_JPEG}/lib'
|
||||||
|
|
||||||
|
WITH_BF_PNG = True
|
||||||
|
BF_PNG = LIBDIR + '/png'
|
||||||
|
BF_PNG_INC = '${BF_PNG}/include'
|
||||||
|
BF_PNG_LIB = 'png'
|
||||||
|
BF_PNG_LIBPATH = '${BF_PNG}/lib'
|
||||||
|
|
||||||
|
WITH_BF_TIFF = True
|
||||||
|
BF_TIFF = LIBDIR + '/tiff'
|
||||||
|
BF_TIFF_INC = '${BF_TIFF}/include'
|
||||||
|
BF_TIFF_LIB = 'tiff'
|
||||||
|
BF_TIFF_LIBPATH = '${BF_TIFF}/lib'
|
||||||
|
|
||||||
|
WITH_BF_ZLIB = True
|
||||||
|
BF_ZLIB = LIBDIR + '/zlib'
|
||||||
|
BF_ZLIB_INC = '${BF_ZLIB}/include'
|
||||||
|
BF_ZLIB_LIB = 'z'
|
||||||
|
BF_ZLIB_LIBPATH = '${BF_ZLIB}/lib'
|
||||||
|
|
||||||
|
WITH_BF_INTERNATIONAL = True
|
||||||
|
|
||||||
|
WITH_BF_OPENJPEG = True
|
||||||
|
BF_OPENJPEG = '#extern/libopenjpeg'
|
||||||
|
BF_OPENJPEG_LIB = ''
|
||||||
|
BF_OPENJPEG_INC = '${BF_OPENJPEG}'
|
||||||
|
BF_OPENJPEG_LIBPATH='${BF_OPENJPEG}/lib'
|
||||||
|
|
||||||
|
WITH_BF_FFTW3 = True
|
||||||
|
BF_FFTW3 = LIBDIR + '/fftw3'
|
||||||
|
BF_FFTW3_INC = '${BF_FFTW3}/include'
|
||||||
|
BF_FFTW3_LIB = 'fftw3'
|
||||||
|
BF_FFTW3_LIBPATH = '${BF_FFTW3}/lib'
|
||||||
|
|
||||||
|
WITH_BF_GAMEENGINE = True
|
||||||
|
WITH_BF_OCEANSIM = True
|
||||||
|
WITH_BF_PLAYER = True
|
||||||
|
WITH_BF_LIBMV = True
|
||||||
|
|
||||||
|
WITH_BF_BULLET = True
|
||||||
|
BF_BULLET = '#extern/bullet2/src'
|
||||||
|
BF_BULLET_INC = '${BF_BULLET}'
|
||||||
|
BF_BULLET_LIB = 'extern_bullet'
|
||||||
|
|
||||||
|
BF_WINTAB = LIBDIR + '/wintab'
|
||||||
|
BF_WINTAB_INC = '${BF_WINTAB}/INCLUDE'
|
||||||
|
|
||||||
|
# enable freetype2 support for text objects
|
||||||
|
BF_FREETYPE = LIBDIR + '/freetype'
|
||||||
|
BF_FREETYPE_INC = '${BF_FREETYPE}/include ${BF_FREETYPE}/include/freetype2/'
|
||||||
|
BF_FREETYPE_LIB = 'freetype'
|
||||||
|
BF_FREETYPE_LIBPATH = '${BF_FREETYPE}/lib'
|
||||||
|
|
||||||
|
WITH_BF_ICONV = False
|
||||||
|
BF_ICONV = LIBDIR + "/iconv"
|
||||||
|
BF_ICONV_INC = '${BF_ICONV}/include'
|
||||||
|
BF_ICONV_LIB = 'iconv'
|
||||||
|
BF_ICONV_LIBPATH = '${BF_ICONV}/lib'
|
||||||
|
|
||||||
|
WITH_BF_REDCODE = False
|
||||||
|
BF_REDCODE_INC = '#extern'
|
||||||
|
|
||||||
|
# Mesa Libs should go here if your using them as well....
|
||||||
|
WITH_BF_STATICOPENGL = False
|
||||||
|
BF_OPENGL = 'C:\\MingW'
|
||||||
|
BF_OPENGL_INC = '${BF_OPENGL}/include'
|
||||||
|
BF_OPENGL_LIBINC = '${BF_OPENGL}/lib'
|
||||||
|
BF_OPENGL_LIB = 'opengl32 glu32'
|
||||||
|
BF_OPENGL_LIB_STATIC = [ '${BF_OPENGL}/lib/libGL.a', '${BF_OPENGL}/lib/libGLU.a',
|
||||||
|
'${BF_OPENGL}/lib/libXmu.a', '${BF_OPENGL}/lib/libXext.a',
|
||||||
|
'${BF_OPENGL}/lib/libX11.a', '${BF_OPENGL}/lib/libXi.a' ]
|
||||||
|
|
||||||
|
WITH_BF_COLLADA = True
|
||||||
|
BF_COLLADA = '#source/blender/collada'
|
||||||
|
BF_COLLADA_INC = '${BF_COLLADA}'
|
||||||
|
BF_COLLADA_LIB = 'bf_collada'
|
||||||
|
|
||||||
|
BF_OPENCOLLADA = LIBDIR + '/opencollada'
|
||||||
|
BF_OPENCOLLADA_INC = '${BF_OPENCOLLADA}/include/opencollada'
|
||||||
|
BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver pcre buffer ftoa xml'
|
||||||
|
BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib/opencollada'
|
||||||
|
|
||||||
|
#Cycles
|
||||||
|
WITH_BF_CYCLES = True
|
||||||
|
WITH_BF_CYCLES_CUDA_BINARIES = False
|
||||||
|
BF_CYCLES_CUDA_NVCC = "" # Path to the NVIDIA CUDA compiler
|
||||||
|
BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_20', 'sm_21', 'sm_30', 'sm_35', 'sm_50']
|
||||||
|
|
||||||
|
WITH_BF_OIIO = True
|
||||||
|
BF_OIIO = LIBDIR + '/openimageio'
|
||||||
|
BF_OIIO_INC = '${BF_OIIO}/include'
|
||||||
|
BF_OIIO_LIB = 'OpenImageIO'
|
||||||
|
BF_OIIO_LIBPATH = '${BF_OIIO}/lib'
|
||||||
|
|
||||||
|
WITH_BF_OCIO = True
|
||||||
|
BF_OCIO = LIBDIR + '/opencolorio'
|
||||||
|
BF_OCIO_INC = '${BF_OCIO}/include'
|
||||||
|
BF_OCIO_LIB = 'OpenColorIO'
|
||||||
|
BF_OCIO_LIBPATH = '${BF_OCIO}/lib'
|
||||||
|
|
||||||
|
WITH_BF_BOOST = True
|
||||||
|
BF_BOOST = LIBDIR + '/boost'
|
||||||
|
BF_BOOST_INC = '${BF_BOOST}/include'
|
||||||
|
BF_BOOST_LIB = 'boost_date_time-mgw47-mt-s-1_49 boost_date_time-mgw47-mt-sd-1_49 boost_filesystem-mgw47-mt-s-1_49 boost_filesystem-mgw47-mt-sd-1_49 boost_regex-mgw47-mt-s-1_49 boost_regex-mgw47-mt-sd-1_49 boost_system-mgw47-mt-s-1_49 boost_system-mgw47-mt-sd-1_49 boost_thread-mgw47-mt-s-1_49 boost_thread-mgw47-mt-sd-1_49'
|
||||||
|
BF_BOOST_LIB_INTERNATIONAL = ' boost_locale-mgw47-mt-s-1_49 boost_locale-mgw47-mt-sd-1_49'
|
||||||
|
BF_BOOST_LIBPATH = '${BF_BOOST}/lib'
|
||||||
|
|
||||||
|
#Ray trace optimization
|
||||||
|
WITH_BF_RAYOPTIMIZATION = True
|
||||||
|
BF_RAYOPTIMIZATION_SSE_FLAGS = ['-mmmx', '-msse', '-msse2']
|
||||||
|
|
||||||
|
WITH_BF_IME = True
|
||||||
|
|
||||||
|
WITH_BF_OPENMP = True
|
||||||
|
|
||||||
|
#Freestyle
|
||||||
|
WITH_BF_FREESTYLE = True
|
||||||
|
|
||||||
|
##
|
||||||
|
CC = 'gcc'
|
||||||
|
CXX = 'g++'
|
||||||
|
|
||||||
|
CCFLAGS = [ '-pipe', '-funsigned-char', '-fno-strict-aliasing' ]
|
||||||
|
CXXFLAGS = [ '-fpermissive' ]
|
||||||
|
|
||||||
|
CPPFLAGS = ['-DWIN32', '-DMS_WIN64', '-DFREE_WINDOWS', '-DFREE_WINDOWS64', '-D_LARGEFILE_SOURCE', '-D_FILE_OFFSET_BITS=64', '-D_LARGEFILE64_SOURCE', '-DBOOST_ALL_NO_LIB', '-DBOOST_THREAD_USE_LIB', '-DGLEW_STATIC', '-DOPJ_STATIC']
|
||||||
|
REL_CFLAGS = []
|
||||||
|
REL_CXXFLAGS = []
|
||||||
|
REL_CCFLAGS = ['-O2', '-ftree-vectorize']
|
||||||
|
|
||||||
|
# NOTE: C_WARN seems to get ignored - at least -Wno-char-subscripts doesn't work!
|
||||||
|
C_WARN = ['-Wno-char-subscripts', '-Wdeclaration-after-statement', '-Wstrict-prototypes']
|
||||||
|
|
||||||
|
CC_WARN = [ '-Wall', '-Wno-char-subscripts' ]
|
||||||
|
|
||||||
|
LLIBS = ['-lshell32', '-lshfolder', '-lgdi32', '-lmsvcrt', '-lwinmm', '-lmingw32', '-lm', '-lws2_32', '-lz', '-lstdc++','-lole32','-luuid', '-lwsock32', '-lpsapi', '-lpthread']
|
||||||
|
|
||||||
|
if WITH_BF_IME:
|
||||||
|
LLIBS.append('-limm32')
|
||||||
|
|
||||||
|
PLATFORM_LINKFLAGS = ['-Xlinker', '--stack=2097152']
|
||||||
|
|
||||||
|
## DISABLED, causes linking errors!
|
||||||
|
## for re-distribution, so users dont need mingw installed
|
||||||
|
# PLATFORM_LINKFLAGS += ["-static-libgcc", "-static-libstdc++"]
|
||||||
|
|
||||||
|
BF_DEBUG = False
|
||||||
|
BF_DEBUG_CCFLAGS= ['-g']
|
||||||
|
|
||||||
|
BF_PROFILE_CCFLAGS = ['-pg', '-g']
|
||||||
|
BF_PROFILE_LINKFLAGS = ['-pg']
|
||||||
|
BF_PROFILE_FLAGS = BF_PROFILE_CCFLAGS
|
||||||
|
BF_PROFILE = False
|
||||||
|
|
||||||
|
BF_BUILDDIR = '..\\build\\win64-mingw'
|
||||||
|
BF_INSTALLDIR='..\\install\\win64-mingw'
|
||||||
256
build_files/scons/config/win64-vc-config.py
Normal file
256
build_files/scons/config/win64-vc-config.py
Normal file
@@ -0,0 +1,256 @@
|
|||||||
|
import subprocess
|
||||||
|
|
||||||
|
CL_OUT = subprocess.Popen(["cl.exe"],stdout=subprocess.PIPE,stderr=subprocess.PIPE)
|
||||||
|
CL_STDOUT, CL_STDERR = CL_OUT.communicate()
|
||||||
|
|
||||||
|
if "18.00." in CL_STDERR:
|
||||||
|
VC_VERSION = '12.0'
|
||||||
|
LCGDIR = '#../lib/win64_vc12'
|
||||||
|
else:
|
||||||
|
import sys
|
||||||
|
print("Visual C version not supported {}\n".format(CL_STDERR))
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
LIBDIR = '${LCGDIR}'
|
||||||
|
|
||||||
|
WITH_BF_FFMPEG = True
|
||||||
|
BF_FFMPEG = LIBDIR +'/ffmpeg'
|
||||||
|
BF_FFMPEG_INC = '${BF_FFMPEG}/include ${BF_FFMPEG}/include/msvc '
|
||||||
|
BF_FFMPEG_LIBPATH='${BF_FFMPEG}/lib'
|
||||||
|
BF_FFMPEG_LIB = 'avformat-55.lib avcodec-55.lib avdevice-55.lib avutil-52.lib swscale-2.lib'
|
||||||
|
BF_FFMPEG_DLL = '${BF_FFMPEG_LIBPATH}/avformat-55.dll ${BF_FFMPEG_LIBPATH}/avcodec-55.dll ${BF_FFMPEG_LIBPATH}/avdevice-55.dll ${BF_FFMPEG_LIBPATH}/avutil-52.dll ${BF_FFMPEG_LIBPATH}/swscale-2.dll'
|
||||||
|
|
||||||
|
|
||||||
|
BF_PYTHON = LIBDIR + '/python'
|
||||||
|
BF_PYTHON_VERSION = '3.4'
|
||||||
|
BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}'
|
||||||
|
BF_PYTHON_BINARY = 'python'
|
||||||
|
BF_PYTHON_LIB = 'python${BF_PYTHON_VERSION[0]}${BF_PYTHON_VERSION[2]}'
|
||||||
|
BF_PYTHON_DLL = '${BF_PYTHON_LIB}'
|
||||||
|
BF_PYTHON_LIBPATH = '${BF_PYTHON}/lib'
|
||||||
|
|
||||||
|
WITH_BF_PYTHON_INSTALL_NUMPY = True
|
||||||
|
|
||||||
|
WITH_BF_OPENAL = True
|
||||||
|
BF_OPENAL = LIBDIR + '/openal'
|
||||||
|
BF_OPENAL_INC = '${BF_OPENAL}/include '
|
||||||
|
BF_OPENAL_LIB = 'OpenAL32'
|
||||||
|
BF_OPENAL_LIBPATH = '${BF_OPENAL}/lib'
|
||||||
|
|
||||||
|
WITH_BF_SNDFILE = True
|
||||||
|
BF_SNDFILE = LIBDIR + '/sndfile'
|
||||||
|
BF_SNDFILE_INC = '${BF_SNDFILE}/include'
|
||||||
|
BF_SNDFILE_LIB = 'libsndfile-1'
|
||||||
|
BF_SNDFILE_LIBPATH = '${BF_SNDFILE}/lib'
|
||||||
|
|
||||||
|
WITH_BF_ICONV = True
|
||||||
|
BF_ICONV = LIBDIR + '/iconv'
|
||||||
|
BF_ICONV_INC = '${BF_ICONV}/include'
|
||||||
|
BF_ICONV_LIB = 'iconv'
|
||||||
|
BF_ICONV_LIBPATH = '${BF_ICONV}/lib'
|
||||||
|
|
||||||
|
WITH_BF_SDL = True
|
||||||
|
BF_SDL = LIBDIR + '/sdl'
|
||||||
|
BF_SDL_INC = '${BF_SDL}/include'
|
||||||
|
BF_SDL_LIB = 'SDL2.lib'
|
||||||
|
BF_SDL_LIBPATH = '${BF_SDL}/lib'
|
||||||
|
|
||||||
|
WITH_BF_JACK = False
|
||||||
|
|
||||||
|
BF_PTHREADS = LIBDIR + '/pthreads'
|
||||||
|
BF_PTHREADS_INC = '${BF_PTHREADS}/include'
|
||||||
|
BF_PTHREADS_LIB = 'pthreadVC2'
|
||||||
|
BF_PTHREADS_LIBPATH = '${BF_PTHREADS}/lib'
|
||||||
|
|
||||||
|
WITH_BF_OPENEXR = True
|
||||||
|
WITH_BF_STATICOPENEXR = False
|
||||||
|
BF_OPENEXR = LIBDIR + '/openexr'
|
||||||
|
BF_OPENEXR_INC = '${BF_OPENEXR}/include ${BF_OPENEXR}/include/OpenEXR '
|
||||||
|
BF_OPENEXR_LIB = ' Iex-2_2 Half IlmImf-2_2 Imath-2_2 IlmThread-2_2 '
|
||||||
|
BF_OPENEXR_LIBPATH = '${BF_OPENEXR}/lib'
|
||||||
|
BF_OPENEXR_LIB_STATIC = '${BF_OPENEXR}/lib/libHalf.a ${BF_OPENEXR}/lib/libIlmImf.a ${BF_OPENEXR}/lib/libIex.a ${BF_OPENEXR}/lib/libImath.a ${BF_OPENEXR}/lib/libIlmThread.a'
|
||||||
|
|
||||||
|
WITH_BF_DDS = True
|
||||||
|
|
||||||
|
WITH_BF_JPEG = True
|
||||||
|
BF_JPEG = LIBDIR + '/jpeg'
|
||||||
|
BF_JPEG_INC = '${BF_JPEG}/include'
|
||||||
|
BF_JPEG_LIB = 'libjpeg'
|
||||||
|
BF_JPEG_LIBPATH = '${BF_JPEG}/lib'
|
||||||
|
|
||||||
|
WITH_BF_PNG = True
|
||||||
|
BF_PNG = LIBDIR + '/png'
|
||||||
|
BF_PNG_INC = '${BF_PNG}/include'
|
||||||
|
BF_PNG_LIB = 'libpng'
|
||||||
|
BF_PNG_LIBPATH = '${BF_PNG}/lib'
|
||||||
|
|
||||||
|
WITH_BF_TIFF = True
|
||||||
|
BF_TIFF = LIBDIR + '/tiff'
|
||||||
|
BF_TIFF_INC = '${BF_TIFF}/include'
|
||||||
|
BF_TIFF_LIB = 'libtiff'
|
||||||
|
BF_TIFF_LIBPATH = '${BF_TIFF}/lib'
|
||||||
|
|
||||||
|
WITH_BF_ZLIB = True
|
||||||
|
BF_ZLIB = LIBDIR + '/zlib'
|
||||||
|
BF_ZLIB_INC = '${BF_ZLIB}/include'
|
||||||
|
BF_ZLIB_LIB = 'libz_st'
|
||||||
|
BF_ZLIB_LIBPATH = '${BF_ZLIB}/lib'
|
||||||
|
|
||||||
|
WITH_BF_INTERNATIONAL = True
|
||||||
|
|
||||||
|
WITH_BF_GAMEENGINE = True
|
||||||
|
WITH_BF_PLAYER = True
|
||||||
|
WITH_BF_OCEANSIM = True
|
||||||
|
|
||||||
|
WITH_BF_BULLET = True
|
||||||
|
BF_BULLET = '#extern/bullet2/src'
|
||||||
|
BF_BULLET_INC = '${BF_BULLET}'
|
||||||
|
BF_BULLET_LIB = 'extern_bullet'
|
||||||
|
|
||||||
|
WITH_BF_ELTOPO = False
|
||||||
|
BF_LAPACK = LIBDIR + '/lapack'
|
||||||
|
BF_LAPACK_LIB = 'libf2c clapack_nowrap BLAS_nowrap'
|
||||||
|
BF_LAPACK_LIBPATH = '${BF_LAPACK}/lib'
|
||||||
|
|
||||||
|
BF_WINTAB = LIBDIR + '/wintab'
|
||||||
|
BF_WINTAB_INC = '${BF_WINTAB}/INCLUDE'
|
||||||
|
|
||||||
|
WITH_BF_BINRELOC = False
|
||||||
|
|
||||||
|
BF_WITH_FREETYPE = True
|
||||||
|
BF_FREETYPE = LIBDIR + '/freetype'
|
||||||
|
BF_FREETYPE_INC = '${BF_FREETYPE}/include ${BF_FREETYPE}/include/freetype2'
|
||||||
|
BF_FREETYPE_LIB = 'freetype2ST'
|
||||||
|
BF_FREETYPE_LIBPATH = '${BF_FREETYPE}/lib'
|
||||||
|
|
||||||
|
WITH_BF_QUICKTIME = False
|
||||||
|
BF_QUICKTIME = LIBDIR + '/QTDevWin'
|
||||||
|
BF_QUICKTIME_INC = '${BF_QUICKTIME}/CIncludes'
|
||||||
|
BF_QUICKTIME_LIB = 'qtmlClient'
|
||||||
|
BF_QUICKTIME_LIBPATH = '${BF_QUICKTIME}/Libraries'
|
||||||
|
|
||||||
|
WITH_BF_OPENJPEG = True
|
||||||
|
BF_OPENJPEG = '#extern/libopenjpeg'
|
||||||
|
BF_OPENJPEG_LIB = ''
|
||||||
|
BF_OPENJPEG_INC = '${BF_OPENJPEG}'
|
||||||
|
BF_OPENJPEG_LIBPATH='${BF_OPENJPEG}/lib'
|
||||||
|
|
||||||
|
WITH_BF_FFTW3 = True
|
||||||
|
BF_FFTW3 = LIBDIR + '/fftw3'
|
||||||
|
BF_FFTW3_INC = '${BF_FFTW3}/include'
|
||||||
|
BF_FFTW3_LIB = 'libfftw'
|
||||||
|
BF_FFTW3_LIBPATH = '${BF_FFTW3}/lib'
|
||||||
|
|
||||||
|
WITH_BF_REDCODE = False
|
||||||
|
BF_REDCODE_INC = '#extern'
|
||||||
|
|
||||||
|
WITH_BF_COLLADA = True
|
||||||
|
BF_COLLADA = '#source/blender/collada'
|
||||||
|
BF_COLLADA_INC = '${BF_COLLADA}'
|
||||||
|
BF_COLLADA_LIB = 'bf_collada'
|
||||||
|
|
||||||
|
BF_OPENCOLLADA = LIBDIR + '/opencollada'
|
||||||
|
BF_OPENCOLLADA_INC = '${BF_OPENCOLLADA}/include/opencollada'
|
||||||
|
BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser MathMLSolver xml pcre buffer ftoa'
|
||||||
|
BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib/opencollada'
|
||||||
|
|
||||||
|
WITH_BF_IME = True
|
||||||
|
|
||||||
|
WITH_BF_3DMOUSE = True
|
||||||
|
|
||||||
|
WITH_BF_OPENMP = True
|
||||||
|
|
||||||
|
#Cycles
|
||||||
|
WITH_BF_CYCLES = True
|
||||||
|
|
||||||
|
WITH_BF_CYCLES_OSL = True
|
||||||
|
WITH_BF_STATICOSL = True
|
||||||
|
BF_OSL = '${LIBDIR}/osl'
|
||||||
|
BF_OSL_INC = '${BF_OSL}/include'
|
||||||
|
BF_OSL_LIBPATH = '${BF_OSL}/lib'
|
||||||
|
BF_OSL_LIB_STATIC = '${BF_OSL_LIBPATH}/oslcomp.lib ${BF_OSL_LIBPATH}/oslexec.lib ${BF_OSL_LIBPATH}/oslquery.lib '
|
||||||
|
BF_OSL_COMPILER = '${BF_OSL}/bin/oslc'
|
||||||
|
|
||||||
|
WITH_BF_LLVM = True
|
||||||
|
BF_LLVM = LIBDIR + '/llvm'
|
||||||
|
BF_LLVM_LIB = 'LLVMBitReader LLVMJIT LLVMipo LLVMVectorize LLVMBitWriter LLVMX86CodeGen LLVMX86Desc LLVMX86Info LLVMX86AsmPrinter ' + \
|
||||||
|
'LLVMX86Utils LLVMSelectionDAG LLVMCodeGen LLVMScalarOpts LLVMInstCombine LLVMTransformUtils LLVMipa LLVMAnalysis LLVMExecutionEngine ' + \
|
||||||
|
'LLVMTarget LLVMMC LLVMCore LLVMObject LLVMRuntimeDyld LLVMSupport'
|
||||||
|
BF_LLVM_LIBPATH = '${BF_LLVM}/lib'
|
||||||
|
|
||||||
|
WITH_BF_OIIO = True
|
||||||
|
BF_OIIO = '${LIBDIR}/openimageio'
|
||||||
|
BF_OIIO_INC = '${BF_OIIO}/include'
|
||||||
|
BF_OIIO_LIBPATH = '${BF_OIIO}/lib'
|
||||||
|
BF_OIIO_LIB_STATIC = '${BF_OIIO_LIBPATH}/OpenImageIO.lib ${BF_OIIO_LIBPATH}/OpenImageIO_Util.lib'
|
||||||
|
WITH_BF_STATICOIIO = True
|
||||||
|
|
||||||
|
WITH_BF_OCIO = True
|
||||||
|
BF_OCIO = '${LIBDIR}/opencolorio'
|
||||||
|
BF_OCIO_INC = '${BF_OCIO}/include'
|
||||||
|
BF_OCIO_LIBPATH = '${BF_OCIO}/lib'
|
||||||
|
BF_OCIO_LIB_STATIC = '${BF_OCIO_LIBPATH}/OpenColorIO.lib'
|
||||||
|
WITH_BF_STATICOCIO = True
|
||||||
|
|
||||||
|
WITH_BF_BOOST = True
|
||||||
|
BF_BOOST = '${LIBDIR}/boost'
|
||||||
|
BF_BOOST_INC = '${BF_BOOST}/include'
|
||||||
|
BF_BOOST_LIB = 'libboost_date_time-vc120-mt-s-1_55 libboost_filesystem-vc120-mt-s-1_55 libboost_regex-vc120-mt-s-1_55 libboost_system-vc120-mt-s-1_55 libboost_thread-vc120-mt-s-1_55 libboost_wave-vc120-mt-s-1_55'
|
||||||
|
BF_BOOST_LIB_INTERNATIONAL = ' libboost_locale-vc120-mt-s-1_55'
|
||||||
|
BF_BOOST_LIBPATH = '${BF_BOOST}/lib'
|
||||||
|
|
||||||
|
#CUDA
|
||||||
|
WITH_BF_CYCLES_CUDA_BINARIES = False
|
||||||
|
#BF_CYCLES_CUDA_NVCC = "" # Path to the nvidia compiler
|
||||||
|
BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_20', 'sm_21', 'sm_30', 'sm_35', 'sm_50', 'sm_52']
|
||||||
|
|
||||||
|
#Ray trace optimization
|
||||||
|
WITH_BF_RAYOPTIMIZATION = True
|
||||||
|
# No need to manually specify SSE/SSE2 on x64 systems.
|
||||||
|
BF_RAYOPTIMIZATION_SSE_FLAGS = ['']
|
||||||
|
|
||||||
|
#Freestyle
|
||||||
|
WITH_BF_FREESTYLE = True
|
||||||
|
|
||||||
|
WITH_BF_STATICOPENGL = False
|
||||||
|
BF_OPENGL_INC = '${BF_OPENGL}/include'
|
||||||
|
BF_OPENGL_LIBINC = '${BF_OPENGL}/lib'
|
||||||
|
BF_OPENGL_LIB = 'opengl32 glu32'
|
||||||
|
BF_OPENGL_LIB_STATIC = [ '${BF_OPENGL}/lib/libGL.a', '${BF_OPENGL}/lib/libGLU.a',
|
||||||
|
'${BF_OPENGL}/lib/libXmu.a', '${BF_OPENGL}/lib/libXext.a',
|
||||||
|
'${BF_OPENGL}/lib/libX11.a', '${BF_OPENGL}/lib/libXi.a' ]
|
||||||
|
CC = 'cl.exe'
|
||||||
|
CXX = 'cl.exe'
|
||||||
|
|
||||||
|
CFLAGS = []
|
||||||
|
CCFLAGS = ['/nologo', '/J', '/W3', '/Gd', '/w34062', '/wd4018', '/wd4065', '/wd4127', '/wd4181', '/wd4200', '/wd4244', '/wd4267', '/wd4305', '/wd4800', '/we4013', '/we4431']
|
||||||
|
|
||||||
|
# We want to support Vista level ABI for x64
|
||||||
|
if VC_VERSION == '12.0':
|
||||||
|
CCFLAGS.append('/D_WIN32_WINNT=0x600')
|
||||||
|
CCFLAGS.append('/DOIIO_STATIC_BUILD') # OIIO api changed with 1.4 making this needed
|
||||||
|
|
||||||
|
CXXFLAGS = ['/EHsc']
|
||||||
|
BGE_CXXFLAGS = ['/O2', '/Ob2', '/EHsc', '/GR', '/fp:fast']
|
||||||
|
|
||||||
|
BF_DEBUG_CCFLAGS = ['/Zi', '/FR${TARGET}.sbr', '/Od', '/Ob0']
|
||||||
|
|
||||||
|
CPPFLAGS = ['-DWIN32', '-D_CONSOLE', '-D_LIB', '-D_CRT_SECURE_NO_DEPRECATE', '-DOPJ_STATIC']
|
||||||
|
REL_CFLAGS = []
|
||||||
|
REL_CXXFLAGS = []
|
||||||
|
REL_CCFLAGS = ['-O2', '/Ob2']
|
||||||
|
|
||||||
|
C_WARN = []
|
||||||
|
CC_WARN = []
|
||||||
|
CXX_WARN = []
|
||||||
|
|
||||||
|
LLIBS = ['ws2_32', 'vfw32', 'winmm', 'kernel32', 'user32', 'gdi32', 'comdlg32', 'advapi32', 'shfolder', 'shell32', 'ole32', 'oleaut32', 'uuid', 'psapi']
|
||||||
|
|
||||||
|
if WITH_BF_IME:
|
||||||
|
LLIBS.append('imm32')
|
||||||
|
|
||||||
|
PLATFORM_LINKFLAGS = ['/SUBSYSTEM:CONSOLE','/MACHINE:X64','/STACK:2097152','/OPT:NOREF','/INCREMENTAL:NO', '/NODEFAULTLIB:msvcrt.lib', '/NODEFAULTLIB:msvcmrt.lib', '/NODEFAULTLIB:msvcurt.lib', '/NODEFAULTLIB:msvcrtd.lib']
|
||||||
|
|
||||||
|
BF_CYCLES_CUDA_ENV="C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd"
|
||||||
|
BF_BUILDDIR = '..\\build\\win64-vc'
|
||||||
|
BF_INSTALLDIR='..\\install\\win64-vc'
|
||||||
1122
build_files/scons/tools/Blender.py
Normal file
1122
build_files/scons/tools/Blender.py
Normal file
File diff suppressed because it is too large
Load Diff
16
build_files/scons/tools/bcolors.py
Normal file
16
build_files/scons/tools/bcolors.py
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
class bcolors:
|
||||||
|
HEADER = '\033[95m'
|
||||||
|
OKBLUE = '\033[94m'
|
||||||
|
OKGREEN = '\033[92m'
|
||||||
|
WARNING = '\033[93m'
|
||||||
|
FAIL = '\033[91m'
|
||||||
|
ENDC = '\033[0m'
|
||||||
|
|
||||||
|
def disable(self):
|
||||||
|
self.HEADER = ''
|
||||||
|
self.OKBLUE = ''
|
||||||
|
self.OKGREEN = ''
|
||||||
|
self.WARNING = ''
|
||||||
|
self.FAIL = ''
|
||||||
|
self.ENDC = ''
|
||||||
|
|
||||||
898
build_files/scons/tools/btools.py
Normal file
898
build_files/scons/tools/btools.py
Normal file
@@ -0,0 +1,898 @@
|
|||||||
|
import os
|
||||||
|
import os.path
|
||||||
|
import SCons.Options
|
||||||
|
|
||||||
|
import SCons.Variables
|
||||||
|
try:
|
||||||
|
import subprocess
|
||||||
|
except ImportError:
|
||||||
|
pass
|
||||||
|
import string
|
||||||
|
import shutil
|
||||||
|
import sys
|
||||||
|
|
||||||
|
Variables = SCons.Variables
|
||||||
|
BoolVariable = SCons.Variables.BoolVariable
|
||||||
|
|
||||||
|
def get_command_output(*popenargs, **kwargs):
|
||||||
|
if hasattr(subprocess, "check_output"):
|
||||||
|
return subprocess.check_output(*popenargs, **kwargs)
|
||||||
|
if 'stdout' in kwargs:
|
||||||
|
raise ValueError('stdout argument not allowed, it will be overridden.')
|
||||||
|
process = subprocess.Popen(stdout=subprocess.PIPE, *popenargs, **kwargs)
|
||||||
|
output, unused_err = process.communicate()
|
||||||
|
retcode = process.poll()
|
||||||
|
if retcode:
|
||||||
|
cmd = kwargs.get("args")
|
||||||
|
if cmd is None:
|
||||||
|
cmd = popenargs[0]
|
||||||
|
raise subprocess.CalledProcessError(retcode, cmd)
|
||||||
|
return output
|
||||||
|
|
||||||
|
def get_version():
|
||||||
|
import re
|
||||||
|
|
||||||
|
fname = os.path.join(os.path.dirname(__file__), "..", "..", "..", "source", "blender", "blenkernel", "BKE_blender.h")
|
||||||
|
ver_base = None
|
||||||
|
ver_char = None
|
||||||
|
ver_cycle = None
|
||||||
|
|
||||||
|
re_ver = re.compile("^#\s*define\s+BLENDER_VERSION\s+([0-9]+)")
|
||||||
|
re_ver_char = re.compile("^#\s*define\s+BLENDER_VERSION_CHAR\s*(\S*)") # optional arg
|
||||||
|
re_ver_cycle = re.compile("^#\s*define\s+BLENDER_VERSION_CYCLE\s*(\S*)") # optional arg
|
||||||
|
|
||||||
|
for l in open(fname, "r"):
|
||||||
|
match = re_ver.match(l)
|
||||||
|
if match:
|
||||||
|
ver = int(match.group(1))
|
||||||
|
ver_base = "%d.%d" % (ver / 100, ver % 100)
|
||||||
|
|
||||||
|
match = re_ver_char.match(l)
|
||||||
|
if match:
|
||||||
|
ver_char = match.group(1)
|
||||||
|
if ver_char == "BLENDER_CHAR_VERSION":
|
||||||
|
ver_char = ""
|
||||||
|
|
||||||
|
match = re_ver_cycle.match(l)
|
||||||
|
if match:
|
||||||
|
ver_cycle = match.group(1)
|
||||||
|
if ver_cycle == "BLENDER_CYCLE_VERSION":
|
||||||
|
ver_cycle = ""
|
||||||
|
|
||||||
|
if (ver_base is not None) and (ver_char is not None) and (ver_cycle is not None):
|
||||||
|
# eg '2.56a-beta'
|
||||||
|
if ver_cycle != "release":
|
||||||
|
ver_display = "%s%s-%s" % (ver_base, ver_char, ver_cycle)
|
||||||
|
else:
|
||||||
|
ver_display = "%s%s" % (ver_base, ver_char)
|
||||||
|
|
||||||
|
return ver_base, ver_display, ver_cycle
|
||||||
|
|
||||||
|
raise Exception("%s: missing version string" % fname)
|
||||||
|
|
||||||
|
def get_hash():
|
||||||
|
try:
|
||||||
|
build_hash = get_command_output(['git', 'rev-parse', '--short', 'HEAD']).strip()
|
||||||
|
except OSError:
|
||||||
|
build_hash = None
|
||||||
|
print("WARNING: could not use git to retrieve current Blender repository hash...")
|
||||||
|
except subprocess.CalledProcessError as e:
|
||||||
|
build_hash = None
|
||||||
|
print("WARNING: git errored while retrieving current Blender repository hash (%d)..." % e.returncode)
|
||||||
|
if build_hash == '' or build_hash == None:
|
||||||
|
build_hash = 'UNKNOWN'
|
||||||
|
|
||||||
|
return build_hash
|
||||||
|
|
||||||
|
|
||||||
|
def checkEndian():
|
||||||
|
return sys.byteorder
|
||||||
|
|
||||||
|
|
||||||
|
# This is used in creating the local config directories
|
||||||
|
VERSION, VERSION_DISPLAY, VERSION_RELEASE_CYCLE = get_version()
|
||||||
|
HASH = get_hash()
|
||||||
|
ENDIAN = checkEndian()
|
||||||
|
|
||||||
|
|
||||||
|
def print_arguments(args, bc):
|
||||||
|
if len(args):
|
||||||
|
for k,v in args.iteritems():
|
||||||
|
if type(v)==list:
|
||||||
|
v = ' '.join(v)
|
||||||
|
print '\t'+bc.OKBLUE+k+bc.ENDC+' = '+bc.OKGREEN + v + bc.ENDC
|
||||||
|
else:
|
||||||
|
print '\t'+bc.WARNING+'No command-line arguments given'+bc.ENDC
|
||||||
|
|
||||||
|
def validate_arguments(args, bc):
|
||||||
|
opts_list = [
|
||||||
|
'WITH_BF_FREESTYLE', 'WITH_BF_PYTHON', 'WITH_BF_PYTHON_SAFETY', 'WITH_BF_PYTHON_SECURITY', 'BF_PYTHON', 'BF_PYTHON_VERSION', 'BF_PYTHON_INC', 'BF_PYTHON_BINARY', 'BF_PYTHON_LIB', 'BF_PYTHON_LIBPATH', 'BF_PYTHON_LIBPATH_ARCH', 'WITH_BF_STATICPYTHON', 'WITH_OSX_STATICPYTHON', 'BF_PYTHON_LIB_STATIC', 'BF_PYTHON_DLL', 'BF_PYTHON_ABI_FLAGS',
|
||||||
|
'WITH_BF_OPENAL', 'BF_OPENAL', 'BF_OPENAL_INC', 'BF_OPENAL_LIB', 'BF_OPENAL_LIBPATH', 'WITH_BF_STATICOPENAL', 'BF_OPENAL_LIB_STATIC',
|
||||||
|
'WITH_BF_SDL', 'BF_SDL', 'BF_SDL_INC', 'BF_SDL_LIB', 'BF_SDL_LIBPATH', 'WITH_BF_SDL_DYNLOAD',
|
||||||
|
'WITH_BF_JACK', 'BF_JACK', 'BF_JACK_INC', 'BF_JACK_LIB', 'BF_JACK_LIBPATH', 'WITH_BF_JACK_DYNLOAD',
|
||||||
|
'WITH_BF_SNDFILE', 'BF_SNDFILE', 'BF_SNDFILE_INC', 'BF_SNDFILE_LIB', 'BF_SNDFILE_LIBPATH', 'WITH_BF_STATICSNDFILE', 'BF_SNDFILE_LIB_STATIC',
|
||||||
|
'BF_PTHREADS', 'BF_PTHREADS_INC', 'BF_PTHREADS_LIB', 'BF_PTHREADS_LIBPATH',
|
||||||
|
'WITH_BF_OPENEXR', 'BF_OPENEXR', 'BF_OPENEXR_INC', 'BF_OPENEXR_LIB', 'BF_OPENEXR_LIBPATH', 'WITH_BF_STATICOPENEXR', 'BF_OPENEXR_LIB_STATIC',
|
||||||
|
'WITH_BF_DDS', 'WITH_BF_CINEON', 'WITH_BF_HDR',
|
||||||
|
'WITH_BF_FFMPEG', 'BF_FFMPEG_LIB','BF_FFMPEG_EXTRA', 'BF_FFMPEG', 'BF_FFMPEG_INC', 'BF_FFMPEG_DLL',
|
||||||
|
'WITH_BF_STATICFFMPEG', 'BF_FFMPEG_LIB_STATIC',
|
||||||
|
'WITH_BF_OGG', 'BF_OGG', 'BF_OGG_LIB',
|
||||||
|
'WITH_BF_FRAMESERVER',
|
||||||
|
'WITH_BF_COMPOSITOR',
|
||||||
|
'WITH_BF_JPEG', 'BF_JPEG', 'BF_JPEG_INC', 'BF_JPEG_LIB', 'BF_JPEG_LIBPATH', 'WITH_BF_STATICJPEG', 'BF_JPEG_LIB_STATIC',
|
||||||
|
'WITH_BF_OPENJPEG', 'BF_OPENJPEG', 'BF_OPENJPEG_INC', 'BF_OPENJPEG_LIB', 'BF_OPENJPEG_LIBPATH',
|
||||||
|
'WITH_BF_REDCODE', 'BF_REDCODE', 'BF_REDCODE_INC', 'BF_REDCODE_LIB', 'BF_REDCODE_LIBPATH',
|
||||||
|
'WITH_BF_PNG', 'BF_PNG', 'BF_PNG_INC', 'BF_PNG_LIB', 'BF_PNG_LIBPATH', 'WITH_BF_STATICPNG', 'BF_PNG_LIB_STATIC',
|
||||||
|
'WITH_BF_TIFF', 'BF_TIFF', 'BF_TIFF_INC', 'BF_TIFF_LIB', 'BF_TIFF_LIBPATH', 'WITH_BF_STATICTIFF', 'BF_TIFF_LIB_STATIC',
|
||||||
|
'WITH_BF_ZLIB', 'BF_ZLIB', 'BF_ZLIB_INC', 'BF_ZLIB_LIB', 'BF_ZLIB_LIBPATH', 'WITH_BF_STATICZLIB', 'BF_ZLIB_LIB_STATIC',
|
||||||
|
'WITH_BF_INTERNATIONAL',
|
||||||
|
'WITH_BF_ICONV', 'BF_ICONV', 'BF_ICONV_INC', 'BF_ICONV_LIB', 'BF_ICONV_LIBPATH',
|
||||||
|
'WITH_BF_GAMEENGINE',
|
||||||
|
'WITH_BF_BULLET', 'BF_BULLET', 'BF_BULLET_INC', 'BF_BULLET_LIB',
|
||||||
|
# 'WITH_BF_ELTOPO', # now only available in a branch
|
||||||
|
'BF_LAPACK', 'BF_LAPACK_LIB', 'BF_LAPACK_LIBPATH', 'BF_LAPACK_LIB_STATIC',
|
||||||
|
'BF_WINTAB', 'BF_WINTAB_INC',
|
||||||
|
'BF_FREETYPE', 'BF_FREETYPE_INC', 'BF_FREETYPE_LIB', 'BF_FREETYPE_LIBPATH', 'BF_FREETYPE_LIB_STATIC', 'WITH_BF_FREETYPE_STATIC',
|
||||||
|
'WITH_BF_QUICKTIME', 'BF_QUICKTIME', 'BF_QUICKTIME_INC', 'BF_QUICKTIME_LIB', 'BF_QUICKTIME_LIBPATH',
|
||||||
|
'WITH_BF_FFTW3', 'BF_FFTW3', 'BF_FFTW3_INC', 'BF_FFTW3_LIB', 'BF_FFTW3_LIBPATH', 'WITH_BF_STATICFFTW3', 'BF_FFTW3_LIB_STATIC',
|
||||||
|
'WITH_BF_STATICOPENGL', 'BF_OPENGL', 'BF_OPENGL_INC', 'BF_OPENGL_LIB', 'BF_OPENGL_LIBPATH', 'BF_OPENGL_LIB_STATIC',
|
||||||
|
'WITH_BF_EGL', 'WITH_BF_GLEW_ES', 'BF_GLEW_INC', 'WITH_BF_GL_PROFILE_CORE', 'WITH_BF_GL_PROFILE_COMPAT', 'WITH_BF_GL_PROFILE_ES20',
|
||||||
|
'WITH_BF_GLEW_MX', 'WITH_BF_GL_EGL', 'WITH_BF_GL_ANGLE',
|
||||||
|
|
||||||
|
'WITH_BF_COLLADA', 'BF_COLLADA', 'BF_COLLADA_INC', 'BF_COLLADA_LIB', 'BF_OPENCOLLADA', 'BF_OPENCOLLADA_INC', 'BF_OPENCOLLADA_LIB', 'BF_OPENCOLLADA_LIBPATH', 'BF_PCRE', 'BF_PCRE_LIB', 'BF_PCRE_LIBPATH', 'BF_EXPAT', 'BF_EXPAT_LIB', 'BF_EXPAT_LIBPATH',
|
||||||
|
'WITH_BF_STATICOPENCOLLADA', 'BF_OPENCOLLADA_LIB_STATIC',
|
||||||
|
'WITH_BF_PLAYER',
|
||||||
|
'WITH_BF_NOBLENDER',
|
||||||
|
'WITH_BF_BINRELOC',
|
||||||
|
'WITH_BF_LZO', 'WITH_BF_LZMA',
|
||||||
|
'LCGDIR',
|
||||||
|
'BF_CXX', 'WITH_BF_STATICCXX', 'BF_CXX_LIB_STATIC',
|
||||||
|
'BF_TWEAK_MODE', 'BF_SPLIT_SRC',
|
||||||
|
'WITHOUT_BF_INSTALL',
|
||||||
|
'WITHOUT_BF_PYTHON_INSTALL', 'WITHOUT_BF_PYTHON_UNPACK',
|
||||||
|
'WITH_BF_PYTHON_INSTALL_NUMPY', 'WITH_BF_PYTHON_INSTALL_REQUESTS',
|
||||||
|
'WITHOUT_BF_OVERWRITE_INSTALL',
|
||||||
|
'WITH_BF_OPENMP', 'BF_OPENMP', 'BF_OPENMP_LIBPATH', 'WITH_BF_STATICOPENMP', 'BF_OPENMP_STATIC_STATIC',
|
||||||
|
'WITH_GHOST_SDL',
|
||||||
|
'WITH_GHOST_XDND',
|
||||||
|
'WITH_X11_XINPUT',
|
||||||
|
'WITH_X11_XF86VMODE',
|
||||||
|
'BF_GHOST_DEBUG',
|
||||||
|
'BF_FANCY', 'BF_QUIET', 'BF_LINE_OVERWRITE',
|
||||||
|
'BF_X264_CONFIG',
|
||||||
|
'BF_XVIDCORE_CONFIG',
|
||||||
|
'WITH_BF_DOCS',
|
||||||
|
'BF_NUMJOBS',
|
||||||
|
'BF_MSVS',
|
||||||
|
'WITH_BF_RAYOPTIMIZATION',
|
||||||
|
'BF_RAYOPTIMIZATION_SSE_FLAGS',
|
||||||
|
'WITH_BF_FLUID',
|
||||||
|
'WITH_BF_BOOLEAN',
|
||||||
|
'WITH_BF_REMESH',
|
||||||
|
'WITH_BF_OCEANSIM',
|
||||||
|
'WITH_BF_SMOKE',
|
||||||
|
'WITH_BF_CXX_GUARDEDALLOC',
|
||||||
|
'WITH_BF_JEMALLOC', 'WITH_BF_STATICJEMALLOC', 'BF_JEMALLOC', 'BF_JEMALLOC_INC', 'BF_JEMALLOC_LIBPATH', 'BF_JEMALLOC_LIB', 'BF_JEMALLOC_LIB_STATIC',
|
||||||
|
'BUILDBOT_BRANCH',
|
||||||
|
'WITH_BF_IME',
|
||||||
|
'WITH_BF_3DMOUSE', 'WITH_BF_STATIC3DMOUSE', 'BF_3DMOUSE', 'BF_3DMOUSE_INC', 'BF_3DMOUSE_LIB', 'BF_3DMOUSE_LIBPATH', 'BF_3DMOUSE_LIB_STATIC',
|
||||||
|
'WITH_BF_CYCLES', 'WITH_BF_CYCLES_CUDA_BINARIES', 'BF_CYCLES_CUDA_NVCC', 'BF_CYCLES_CUDA_NVCC', 'WITH_BF_CYCLES_CUDA_THREADED_COMPILE', 'BF_CYCLES_CUDA_ENV',
|
||||||
|
'WITH_BF_OIIO', 'WITH_BF_STATICOIIO', 'BF_OIIO', 'BF_OIIO_INC', 'BF_OIIO_LIB', 'BF_OIIO_LIB_STATIC', 'BF_OIIO_LIBPATH',
|
||||||
|
'WITH_BF_OCIO', 'WITH_BF_STATICOCIO', 'BF_OCIO', 'BF_OCIO_INC', 'BF_OCIO_LIB', 'BF_OCIO_LIB_STATIC', 'BF_OCIO_LIBPATH',
|
||||||
|
'WITH_BF_BOOST', 'WITH_BF_STATICBOOST', 'BF_BOOST', 'BF_BOOST_INC', 'BF_BOOST_LIB', 'BF_BOOST_LIB_INTERNATIONAL', 'BF_BOOST_LIB_STATIC', 'BF_BOOST_LIBPATH',
|
||||||
|
'WITH_BF_LIBMV', 'WITH_BF_LIBMV_SCHUR_SPECIALIZATIONS',
|
||||||
|
'WITH_BF_CYCLES_OSL', 'WITH_BF_STATICOSL', 'BF_OSL', 'BF_OSL_INC', 'BF_OSL_LIB', 'BF_OSL_LIBPATH', 'BF_OSL_LIB_STATIC', 'BF_OSL_COMPILER',
|
||||||
|
'WITH_BF_LLVM', 'WITH_BF_STATICLLVM', 'BF_LLVM', 'BF_LLVM_LIB', 'BF_LLVM_LIBPATH', 'BF_LLVM_LIB_STATIC', 'BF_PROGRAM_LINKFLAGS'
|
||||||
|
]
|
||||||
|
|
||||||
|
# Have options here that scons expects to be lists
|
||||||
|
opts_list_split = [
|
||||||
|
'BF_PYTHON_LINKFLAGS',
|
||||||
|
'BF_OPENGL_LINKFLAGS',
|
||||||
|
'BF_GL_DEFINITIONS',
|
||||||
|
'CFLAGS', 'CCFLAGS', 'CXXFLAGS', 'CPPFLAGS',
|
||||||
|
'REL_CFLAGS', 'REL_CCFLAGS', 'REL_CXXFLAGS',
|
||||||
|
'BGE_CXXFLAGS',
|
||||||
|
'BF_PROFILE_CFLAGS', 'BF_PROFILE_CCFLAGS', 'BF_PROFILE_CXXFLAGS', 'BF_PROFILE_LINKFLAGS',
|
||||||
|
'BF_DEBUG_CFLAGS', 'BF_DEBUG_CCFLAGS', 'BF_DEBUG_CXXFLAGS',
|
||||||
|
'C_WARN', 'CC_WARN', 'CXX_WARN',
|
||||||
|
'LLIBS', 'PLATFORM_LINKFLAGS', 'MACOSX_ARCHITECTURE', 'MACOSX_SDK', 'XCODE_CUR_VER', 'C_COMPILER_ID',
|
||||||
|
'BF_CYCLES_CUDA_BINARIES_ARCH', 'BF_PROGRAM_LINKFLAGS', 'MACOSX_DEPLOYMENT_TARGET',
|
||||||
|
'WITH_BF_CYCLES_DEBUG', 'WITH_BF_CYCLES_LOGGING'
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
arg_list = ['BF_DEBUG', 'BF_QUIET', 'BF_CROSS', 'BF_UPDATE',
|
||||||
|
'BF_INSTALLDIR', 'BF_TOOLSET', 'BF_BINNAME',
|
||||||
|
'BF_BUILDDIR', 'BF_FANCY', 'BF_QUICK', 'BF_PROFILE', 'BF_LINE_OVERWRITE',
|
||||||
|
'BF_BSC', 'BF_CONFIG',
|
||||||
|
'BF_PRIORITYLIST', 'BF_BUILDINFO','CC', 'CXX', 'BF_QUICKDEBUG',
|
||||||
|
'BF_LISTDEBUG', 'LCGDIR', 'BF_X264_CONFIG', 'BF_XVIDCORE_CONFIG',
|
||||||
|
'BF_UNIT_TEST', 'BF_BITNESS', 'MSVS_VERSION']
|
||||||
|
|
||||||
|
okdict = {}
|
||||||
|
|
||||||
|
for k,v in args.iteritems():
|
||||||
|
if (k in opts_list) or (k in arg_list):
|
||||||
|
okdict[k] = v
|
||||||
|
elif k in opts_list_split:
|
||||||
|
okdict[k] = v.split() # "" have already been stripped
|
||||||
|
else:
|
||||||
|
print '\t'+bc.WARNING+'Invalid argument: '+bc.ENDC+k+'='+v
|
||||||
|
|
||||||
|
return okdict
|
||||||
|
|
||||||
|
def print_targets(targs, bc):
|
||||||
|
if len(targs)>0:
|
||||||
|
for t in targs:
|
||||||
|
print '\t'+bc.OKBLUE+t+bc.ENDC
|
||||||
|
else:
|
||||||
|
print '\t'+bc.WARNING+'No targets given, using '+bc.ENDC+bc.OKGREEN+'default'+bc.ENDC
|
||||||
|
|
||||||
|
def validate_targets(targs, bc):
|
||||||
|
valid_list = ['.', 'blender', 'blenderstatic', 'blenderplayer', 'webplugin',
|
||||||
|
'blendernogame', 'blenderstaticnogame', 'blenderlite', 'release',
|
||||||
|
'everything', 'clean', 'install-bin', 'install', 'nsis','buildslave',
|
||||||
|
'cudakernels']
|
||||||
|
oklist = []
|
||||||
|
for t in targs:
|
||||||
|
if t in valid_list:
|
||||||
|
oklist.append(t)
|
||||||
|
else:
|
||||||
|
print '\t'+bc.WARNING+'Invalid target: '+bc.ENDC+t
|
||||||
|
return oklist
|
||||||
|
|
||||||
|
class OurSpawn:
|
||||||
|
def ourspawn(self, sh, escape, cmd, args, env):
|
||||||
|
newargs = " ".join(args[1:])
|
||||||
|
cmdline = cmd + " " + newargs
|
||||||
|
startupinfo = subprocess.STARTUPINFO()
|
||||||
|
proc = subprocess.Popen(cmdline, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
|
||||||
|
stderr=subprocess.PIPE, startupinfo=startupinfo, shell = False, env=env)
|
||||||
|
data, err = proc.communicate()
|
||||||
|
rv = proc.wait()
|
||||||
|
if err:
|
||||||
|
print(err)
|
||||||
|
return rv
|
||||||
|
|
||||||
|
def SetupSpawn( env ):
|
||||||
|
buf = OurSpawn()
|
||||||
|
env['SPAWN'] = buf.ourspawn
|
||||||
|
|
||||||
|
|
||||||
|
def read_opts(env, cfg, args):
|
||||||
|
localopts = Variables.Variables(cfg, args)
|
||||||
|
localopts.AddVariables(
|
||||||
|
('LCGDIR', 'Location of SVN lib dir'),
|
||||||
|
('LIBDIR', 'Root dir of libs'),
|
||||||
|
(BoolVariable('WITH_BF_PYTHON', 'Compile with python', True)),
|
||||||
|
(BoolVariable('WITH_BF_PYTHON_SAFETY', 'Internal API error checking to track invalid data to prevent crash on access (at the expense of some effeciency)', False)),
|
||||||
|
(BoolVariable('WITH_BF_PYTHON_SECURITY', 'Disables execution of scripts within blend files by default', True)),
|
||||||
|
('BF_PYTHON', 'Base path for python', ''),
|
||||||
|
('BF_PYTHON_VERSION', 'Python version to use', ''),
|
||||||
|
('BF_PYTHON_INC', 'Include path for Python headers', ''),
|
||||||
|
('BF_PYTHON_BINARY', 'Path to the Python interpreter', ''),
|
||||||
|
('BF_PYTHON_LIB', 'Python library', ''),
|
||||||
|
('BF_PYTHON_LIBPATH_ARCH', 'Additional Python library under some linux flavors (arch-dependent)', ''),
|
||||||
|
('BF_PYTHON_DLL', 'Python dll - used on Windows only', ''),
|
||||||
|
('BF_PYTHON_LIB_STATIC', 'Python static libraries', ''),
|
||||||
|
('BF_PYTHON_LIBPATH', 'Library path', ''),
|
||||||
|
('BF_PYTHON_LINKFLAGS', 'Python link flags', ''),
|
||||||
|
(BoolVariable('WITH_BF_STATICPYTHON', 'Staticly link to python', False)),
|
||||||
|
(BoolVariable('WITH_OSX_STATICPYTHON', 'Staticly link to python', True)),
|
||||||
|
('BF_PYTHON_ABI_FLAGS', 'Python ABI flags (suffix in library version: m, mu, etc)', ''),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_FLUID', 'Build with Fluid simulation (Elbeem)', True)),
|
||||||
|
(BoolVariable('WITH_BF_BOOLEAN', 'Build with boolean modifier', True)),
|
||||||
|
(BoolVariable('WITH_BF_REMESH', 'Build with remesh modifier', True)),
|
||||||
|
(BoolVariable('WITH_BF_OCEANSIM', 'Build with ocean simulation', False)),
|
||||||
|
(BoolVariable('WITH_BF_SMOKE', 'Build with smoke simulation', True)),
|
||||||
|
('BF_PROFILE_FLAGS', 'Profiling compiler flags', ''),
|
||||||
|
(BoolVariable('WITH_BF_OPENAL', 'Use OpenAL if true', False)),
|
||||||
|
('BF_OPENAL', 'Base path for OpenAL', ''),
|
||||||
|
('BF_OPENAL_INC', 'Include path for python headers', ''),
|
||||||
|
('BF_OPENAL_LIB', 'Path to OpenAL library', ''),
|
||||||
|
('BF_OPENAL_LIB_STATIC', 'Path to OpenAL static library', ''),
|
||||||
|
('BF_OPENAL_LIBPATH', 'Path to OpenAL library', ''),
|
||||||
|
(BoolVariable('WITH_BF_STATICOPENAL', 'Staticly link to openal', False)),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_SDL', 'Use SDL if true', False)),
|
||||||
|
('BF_SDL', 'SDL base path', ''),
|
||||||
|
('BF_SDL_INC', 'SDL include path', ''),
|
||||||
|
('BF_SDL_LIB', 'SDL library', ''),
|
||||||
|
('BF_SDL_LIBPATH', 'SDL library path', ''),
|
||||||
|
(BoolVariable('WITH_BF_SDL_DYNLOAD', 'Enable runtime dynamic SDL libraries loading (works only on Linux)', False)),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_JACK', 'Enable jack support if true', True)),
|
||||||
|
('BF_JACK', 'jack base path', ''),
|
||||||
|
('BF_JACK_INC', 'jack include path', ''),
|
||||||
|
('BF_JACK_LIB', 'jack library', ''),
|
||||||
|
('BF_JACK_LIBPATH', 'jack library path', ''),
|
||||||
|
(BoolVariable('WITH_BF_JACK_DYNLOAD', 'Enable runtime dynamic Jack libraries loading (works only on Linux)', False)),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_SNDFILE', 'Enable sndfile support if true', True)),
|
||||||
|
('BF_SNDFILE', 'sndfile base path', ''),
|
||||||
|
('BF_SNDFILE_INC', 'sndfile include path', ''),
|
||||||
|
('BF_SNDFILE_LIB', 'sndfile library', ''),
|
||||||
|
('BF_SNDFILE_LIB_STATIC', 'Path to sndfile static library', ''),
|
||||||
|
('BF_SNDFILE_LIBPATH', 'sndfile library path', ''),
|
||||||
|
(BoolVariable('WITH_BF_STATICSNDFILE', 'Staticly link to sndfile', False)),
|
||||||
|
|
||||||
|
('BF_PTHREADS', 'Pthreads base path', ''),
|
||||||
|
('BF_PTHREADS_INC', 'Pthreads include path', ''),
|
||||||
|
('BF_PTHREADS_LIB', 'Pthreads library', ''),
|
||||||
|
('BF_PTHREADS_LIBPATH', 'Pthreads library path', ''),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_OPENEXR', 'Use OPENEXR if true', True)),
|
||||||
|
(BoolVariable('WITH_BF_STATICOPENEXR', 'Staticly link to OpenEXR', False)),
|
||||||
|
('BF_OPENEXR', 'OPENEXR base path', ''),
|
||||||
|
('BF_OPENEXR_INC', 'OPENEXR include path', ''),
|
||||||
|
('BF_OPENEXR_LIB', 'OPENEXR library', ''),
|
||||||
|
('BF_OPENEXR_LIBPATH', 'OPENEXR library path', ''),
|
||||||
|
('BF_OPENEXR_LIB_STATIC', 'OPENEXR static library', ''),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_DDS', 'Support DDS image format if true', True)),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_CINEON', 'Support CINEON and DPX image formats if true', True)),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_HDR', 'Support HDR image formats if true', True)),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_FRAMESERVER', 'Support export to a frameserver', True)),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_FFMPEG', 'Use FFMPEG if true', False)),
|
||||||
|
('BF_FFMPEG', 'FFMPEG base path', ''),
|
||||||
|
('BF_FFMPEG_LIB', 'FFMPEG library', ''),
|
||||||
|
('BF_FFMPEG_DLL', 'FFMPEG dll libraries to be installed', ''),
|
||||||
|
('BF_FFMPEG_EXTRA', 'FFMPEG flags that must be preserved', ''),
|
||||||
|
|
||||||
|
('BF_FFMPEG_INC', 'FFMPEG includes', ''),
|
||||||
|
('BF_FFMPEG_LIBPATH', 'FFMPEG library path', ''),
|
||||||
|
(BoolVariable('WITH_BF_STATICFFMPEG', 'Use static FFMPEG if true', False)),
|
||||||
|
('BF_FFMPEG_LIB_STATIC', 'Static FFMPEG libraries', ''),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_OGG', 'Link OGG, THEORA, VORBIS with FFMPEG if true',
|
||||||
|
False)),
|
||||||
|
('BF_OGG', 'OGG base path', ''),
|
||||||
|
('BF_OGG_LIB', 'OGG library', ''),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_JPEG', 'Use JPEG if true', True)),
|
||||||
|
(BoolVariable('WITH_BF_STATICJPEG', 'Staticly link to JPEG', False)),
|
||||||
|
('BF_JPEG', 'JPEG base path', ''),
|
||||||
|
('BF_JPEG_INC', 'JPEG include path', ''),
|
||||||
|
('BF_JPEG_LIB', 'JPEG library', ''),
|
||||||
|
('BF_JPEG_LIBPATH', 'JPEG library path', ''),
|
||||||
|
('BF_JPEG_LIB_STATIC', 'JPEG static library', ''),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_OPENJPEG', 'Use OPENJPEG if true', False)),
|
||||||
|
('BF_OPENJPEG', 'OPENJPEG base path', ''),
|
||||||
|
('BF_OPENJPEG_INC', 'OPENJPEG include path', ''),
|
||||||
|
('BF_OPENJPEG_LIB', 'OPENJPEG library', ''),
|
||||||
|
('BF_OPENJPEG_LIBPATH', 'OPENJPEG library path', ''),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_REDCODE', 'Use REDCODE if true', False)),
|
||||||
|
('BF_REDCODE', 'REDCODE base path', ''),
|
||||||
|
('BF_REDCODE_INC', 'REDCODE include path', ''),
|
||||||
|
('BF_REDCODE_LIB', 'REDCODE library', ''),
|
||||||
|
('BF_REDCODE_LIBPATH', 'REDCODE library path', ''),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_PNG', 'Use PNG if true', True)),
|
||||||
|
(BoolVariable('WITH_BF_STATICPNG', 'Staticly link to PNG', False)),
|
||||||
|
('BF_PNG', 'PNG base path', ''),
|
||||||
|
('BF_PNG_INC', 'PNG include path', ''),
|
||||||
|
('BF_PNG_LIB', 'PNG library', ''),
|
||||||
|
('BF_PNG_LIBPATH', 'PNG library path', ''),
|
||||||
|
('BF_PNG_LIB_STATIC', 'PNG static library', ''),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_TIFF', 'Use TIFF if true', True)),
|
||||||
|
(BoolVariable('WITH_BF_STATICTIFF', 'Staticly link to TIFF', False)),
|
||||||
|
('BF_TIFF', 'TIFF base path', ''),
|
||||||
|
('BF_TIFF_INC', 'TIFF include path', ''),
|
||||||
|
('BF_TIFF_LIB', 'TIFF library', ''),
|
||||||
|
('BF_TIFF_LIBPATH', 'TIFF library path', ''),
|
||||||
|
('BF_TIFF_LIB_STATIC', 'TIFF static library', ''),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_ZLIB', 'Use ZLib if true', True)),
|
||||||
|
(BoolVariable('WITH_BF_STATICZLIB', 'Staticly link to ZLib', False)),
|
||||||
|
('BF_ZLIB', 'ZLib base path', ''),
|
||||||
|
('BF_ZLIB_INC', 'ZLib include path', ''),
|
||||||
|
('BF_ZLIB_LIB', 'ZLib library', ''),
|
||||||
|
('BF_ZLIB_LIBPATH', 'ZLib library path', ''),
|
||||||
|
('BF_ZLIB_LIB_STATIC', 'ZLib static library', ''),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_INTERNATIONAL', 'Use Boost::locale if true', True)),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_ICONV', 'Use iconv if true', True)),
|
||||||
|
('BF_ICONV', 'iconv base path', ''),
|
||||||
|
('BF_ICONV_INC', 'iconv include path', ''),
|
||||||
|
('BF_ICONV_LIB', 'iconv library', ''),
|
||||||
|
('BF_ICONV_LIBPATH', 'iconv library path', ''),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_FREESTYLE', 'Compile with freestyle', True)),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_GAMEENGINE', 'Build with gameengine' , False)),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_BULLET', 'Use Bullet if true', True)),
|
||||||
|
# (BoolVariable('WITH_BF_ELTOPO', 'Use Eltopo collision library if true', False)), # this is now only available in a branch
|
||||||
|
('BF_LAPACK', 'LAPACK base path', ''),
|
||||||
|
('BF_LAPACK_LIB', 'LAPACK library', ''),
|
||||||
|
('BF_LAPACK_LIB_STATIC', 'LAPACK library', ''),
|
||||||
|
('BF_LAPACK_LIBPATH', 'LAPACK library path', ''),
|
||||||
|
(BoolVariable('WITH_BF_STATICLAPACK', 'Staticly link to LAPACK', False)),
|
||||||
|
|
||||||
|
('BF_BULLET', 'Bullet base dir', ''),
|
||||||
|
('BF_BULLET_INC', 'Bullet include path', ''),
|
||||||
|
('BF_BULLET_LIB', 'Bullet library', ''),
|
||||||
|
|
||||||
|
('BF_WINTAB', 'WinTab base dir', ''),
|
||||||
|
('BF_WINTAB_INC', 'WinTab include dir', ''),
|
||||||
|
('BF_CXX', 'c++ base path for libstdc++, only used when static linking', ''),
|
||||||
|
(BoolVariable('WITH_BF_STATICCXX', 'static link to stdc++', False)),
|
||||||
|
('BF_CXX_LIB_STATIC', 'static library path for stdc++', ''),
|
||||||
|
|
||||||
|
('BF_FREETYPE', 'Freetype base path', ''),
|
||||||
|
('BF_FREETYPE_INC', 'Freetype include path', ''),
|
||||||
|
('BF_FREETYPE_LIB', 'Freetype library', ''),
|
||||||
|
('BF_FREETYPE_LIBPATH', 'Freetype library path', ''),
|
||||||
|
(BoolVariable('WITH_BF_FREETYPE_STATIC', 'Use Static Freetype if true', False)),
|
||||||
|
('BF_FREETYPE_LIB_STATIC', 'Static Freetype library', ''),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_OPENMP', 'Use OpenMP if true', False)),
|
||||||
|
(BoolVariable('WITH_BF_STATICOPENMP', 'Staticly link to OpenMP', False)),
|
||||||
|
('BF_OPENMP', 'Base path to OpenMP (used when cross-compiling with older versions of WinGW)', ''),
|
||||||
|
('BF_OPENMP_INC', 'Path to OpenMP includes (used when cross-compiling with older versions of WinGW)', ''),
|
||||||
|
('BF_OPENMP_LIBPATH', 'Path to OpenMP libraries (used when cross-compiling with older versions of WinGW)', ''),
|
||||||
|
(BoolVariable('WITH_GHOST_SDL', 'Enable building blender against SDL for windowing rather then the native APIs', False)),
|
||||||
|
(BoolVariable('WITH_X11_XINPUT', 'Enable X11 Xinput (tablet support and unicode input)', True)),
|
||||||
|
(BoolVariable('WITH_X11_XF86VMODE', 'Enable X11 video mode switching', True)),
|
||||||
|
('BF_OPENMP_LIB_STATIC', 'OpenMP static library', ''),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_QUICKTIME', 'Use QuickTime if true', False)),
|
||||||
|
('BF_QUICKTIME', 'QuickTime base path', ''),
|
||||||
|
('BF_QUICKTIME_INC', 'QuickTime include path', ''),
|
||||||
|
('BF_QUICKTIME_LIB', 'QuickTime library', ''),
|
||||||
|
('BF_QUICKTIME_LIBPATH', 'QuickTime library path', ''),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_FFTW3', 'Use FFTW3 if true', False)),
|
||||||
|
('BF_FFTW3', 'FFTW3 base path', ''),
|
||||||
|
('BF_FFTW3_INC', 'FFTW3 include path', ''),
|
||||||
|
('BF_FFTW3_LIB', 'FFTW3 library', ''),
|
||||||
|
('BF_FFTW3_LIB_STATIC', 'FFTW3 static libraries', ''),
|
||||||
|
('BF_FFTW3_LIBPATH', 'FFTW3 library path', ''),
|
||||||
|
(BoolVariable('WITH_BF_STATICFFTW3', 'Staticly link to FFTW3', False)),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_STATICOPENGL', 'Use MESA if true', True)),
|
||||||
|
('BF_OPENGL', 'OpenGL base path', ''),
|
||||||
|
('BF_OPENGL_INC', 'OpenGL include path', ''),
|
||||||
|
('BF_OPENGL_LIB', 'OpenGL libraries', ''),
|
||||||
|
('BF_OPENGL_LIBPATH', 'OpenGL library path', ''),
|
||||||
|
('BF_OPENGL_LIB_STATIC', 'OpenGL static libraries', ''),
|
||||||
|
('BF_OPENGL_LINKFLAGS', 'OpenGL link flags', ''),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_GLEW_MX', '', False)),
|
||||||
|
(BoolVariable('WITH_BF_GLEW_ES', '', False)),
|
||||||
|
(BoolVariable('WITH_BF_GL_EGL', '', False)),
|
||||||
|
(BoolVariable('WITH_BF_GL_PROFILE_COMPAT', '', True)),
|
||||||
|
(BoolVariable('WITH_BF_GL_PROFILE_CORE', '', False)),
|
||||||
|
(BoolVariable('WITH_BF_GL_PROFILE_ES20', '', False)),
|
||||||
|
(BoolVariable('WITH_BF_GL_ANGLE', '', False)),
|
||||||
|
('BF_GL_DEFINITIONS', '', []),
|
||||||
|
('BF_GLEW_INC', '', ''),
|
||||||
|
) # end of opts.AddVariables()
|
||||||
|
|
||||||
|
localopts.AddVariables(
|
||||||
|
(BoolVariable('WITH_BF_COLLADA', 'Build COLLADA import/export module if true', False)),
|
||||||
|
(BoolVariable('WITH_BF_STATICOPENCOLLADA', 'Staticly link to OpenCollada', False)),
|
||||||
|
('BF_COLLADA', 'COLLADA base path', ''),
|
||||||
|
('BF_COLLADA_INC', 'COLLADA include path', ''),
|
||||||
|
('BF_COLLADA_LIB', 'COLLADA library', ''),
|
||||||
|
('BF_OPENCOLLADA', 'OpenCollada base path', ''),
|
||||||
|
('BF_OPENCOLLADA_INC', 'OpenCollada base include path', ''),
|
||||||
|
('BF_OPENCOLLADA_LIB', 'OpenCollada library', ''),
|
||||||
|
('BF_OPENCOLLADA_LIBPATH', 'OpenCollada library path', ''),
|
||||||
|
('BF_PCRE', 'PCRE base path', ''),
|
||||||
|
('BF_PCRE_LIB', 'PCRE library', ''),
|
||||||
|
('BF_PCRE_LIBPATH', 'PCRE library path', ''),
|
||||||
|
('BF_EXPAT', 'Expat base path', ''),
|
||||||
|
('BF_EXPAT_LIB', 'Expat library', ''),
|
||||||
|
('BF_EXPAT_LIBPATH', 'Expat library path', ''),
|
||||||
|
('BF_OPENCOLLADA_LIB_STATIC', 'OpenCollada static library', ''),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_JEMALLOC', 'Use jemalloc if true', False)),
|
||||||
|
(BoolVariable('WITH_BF_STATICJEMALLOC', 'Staticly link to jemalloc', False)),
|
||||||
|
('BF_JEMALLOC', 'jemalloc base path', ''),
|
||||||
|
('BF_JEMALLOC_INC', 'jemalloc include path', ''),
|
||||||
|
('BF_JEMALLOC_LIB', 'jemalloc library', ''),
|
||||||
|
('BF_JEMALLOC_LIBPATH', 'jemalloc library path', ''),
|
||||||
|
('BF_JEMALLOC_LIB_STATIC', 'jemalloc static library', ''),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_PLAYER', 'Build blenderplayer if true', False)),
|
||||||
|
(BoolVariable('WITH_BF_NOBLENDER', 'Do not build blender if true', False)),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_IME', 'Enable Input Method Editor (IME) for complex Asian character input', False)),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_3DMOUSE', 'Build blender with support of 3D mouses', False)),
|
||||||
|
(BoolVariable('WITH_BF_STATIC3DMOUSE', 'Staticly link to 3d mouse library', False)),
|
||||||
|
('BF_3DMOUSE', '3d mouse library base path', ''),
|
||||||
|
('BF_3DMOUSE_INC', '3d mouse library include path', ''),
|
||||||
|
('BF_3DMOUSE_LIB', '3d mouse library', ''),
|
||||||
|
('BF_3DMOUSE_LIBPATH', '3d mouse library path', ''),
|
||||||
|
('BF_3DMOUSE_LIB_STATIC', '3d mouse static library', ''),
|
||||||
|
|
||||||
|
('CFLAGS', 'C only flags', []),
|
||||||
|
('CCFLAGS', 'Generic C and C++ flags', []),
|
||||||
|
('CXXFLAGS', 'C++ only flags', []),
|
||||||
|
('BGE_CXXFLAGS', 'C++ only flags for BGE', []),
|
||||||
|
('CPPFLAGS', 'Defines', []),
|
||||||
|
('REL_CFLAGS', 'C only release flags', []),
|
||||||
|
('REL_CCFLAGS', 'Generic C and C++ release flags', []),
|
||||||
|
('REL_CXXFLAGS', 'C++ only release flags', []),
|
||||||
|
|
||||||
|
('C_WARN', 'C warning flags', []),
|
||||||
|
('CC_WARN', 'Generic C and C++ warning flags', []),
|
||||||
|
('CXX_WARN', 'C++ only warning flags', []),
|
||||||
|
|
||||||
|
('LLIBS', 'Platform libs', []),
|
||||||
|
('PLATFORM_LINKFLAGS', 'Platform linkflags', []),
|
||||||
|
('MACOSX_ARCHITECTURE', 'python_arch.zip select', ''),
|
||||||
|
('MACOSX_SDK', 'Set OS X SDK', ''),
|
||||||
|
('XCODE_CUR_VER', 'Detect XCode version', ''),
|
||||||
|
('MACOSX_DEPLOYMENT_TARGET', 'Detect OS X target version', ''),
|
||||||
|
('C_COMPILER_ID', 'Detect the resolved compiler', ''),
|
||||||
|
|
||||||
|
(BoolVariable('BF_PROFILE', 'Add profiling information if true', False)),
|
||||||
|
('BF_PROFILE_CFLAGS', 'C only profiling flags', []),
|
||||||
|
('BF_PROFILE_CCFLAGS', 'C and C++ profiling flags', []),
|
||||||
|
('BF_PROFILE_CXXFLAGS', 'C++ only profiling flags', []),
|
||||||
|
('BF_PROFILE_LINKFLAGS', 'Profile linkflags', []),
|
||||||
|
|
||||||
|
(BoolVariable('BF_DEBUG', 'Add debug flags if true', False)),
|
||||||
|
('BF_DEBUG_CFLAGS', 'C only debug flags', []),
|
||||||
|
('BF_DEBUG_CCFLAGS', 'C and C++ debug flags', []),
|
||||||
|
('BF_DEBUG_CXXFLAGS', 'C++ only debug flags', []),
|
||||||
|
|
||||||
|
(BoolVariable('BF_BSC', 'Create .bsc files (msvc only)', False)),
|
||||||
|
|
||||||
|
('BF_BUILDDIR', 'Build dir', ''),
|
||||||
|
('BF_INSTALLDIR', 'Installation dir', ''),
|
||||||
|
|
||||||
|
('CC', 'C compiler to use', env['CC']),
|
||||||
|
('CXX', 'C++ compiler to use', env['CXX']),
|
||||||
|
|
||||||
|
(BoolVariable('BF_BUILDINFO', 'Buildtime in splash if true', True)),
|
||||||
|
|
||||||
|
(BoolVariable('BF_TWEAK_MODE', 'Enable tweak mode if true', False)),
|
||||||
|
(BoolVariable('BF_SPLIT_SRC', 'Split src lib into several chunks if true', False)),
|
||||||
|
(BoolVariable('WITHOUT_BF_INSTALL', 'dont install if true', False)),
|
||||||
|
(BoolVariable('WITHOUT_BF_PYTHON_INSTALL', 'dont install Python modules if true', False)),
|
||||||
|
(BoolVariable('WITH_BF_PYTHON_INSTALL_NUMPY', 'install Python numpy module', False)),
|
||||||
|
(BoolVariable('WITH_BF_PYTHON_INSTALL_REQUESTS', 'install Python requests module', False)),
|
||||||
|
(BoolVariable('WITHOUT_BF_PYTHON_UNPACK', 'dont remove and unpack Python modules everytime if true', False)),
|
||||||
|
(BoolVariable('WITHOUT_BF_OVERWRITE_INSTALL', 'dont remove existing files before breating the new install directory (set to False when making packages for others)', False)),
|
||||||
|
(BoolVariable('BF_FANCY', 'Enable fancy output if true', True)),
|
||||||
|
(BoolVariable('BF_QUIET', 'Enable silent output if true', True)),
|
||||||
|
(BoolVariable('BF_LINE_OVERWRITE', 'Enable overwriting of compile line in BF_QUIET mode if true', False)),
|
||||||
|
(BoolVariable('WITH_BF_BINRELOC', 'Enable relocatable binary (linux only)', False)),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_LZO', 'Enable fast LZO pointcache compression', True)),
|
||||||
|
(BoolVariable('WITH_BF_LZMA', 'Enable best LZMA pointcache compression', True)),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_LIBMV', 'Enable libmv structure from motion library', True)),
|
||||||
|
(BoolVariable('WITH_BF_LIBMV_SCHUR_SPECIALIZATIONS', 'Enable fixed-size schur specializations', True)),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_COMPOSITOR', 'Enable the tile based nodal compositor', True)),
|
||||||
|
) # end of opts.AddOptions()
|
||||||
|
|
||||||
|
localopts.AddVariables(
|
||||||
|
('BF_X264_CONFIG', 'configuration flags for x264', ''),
|
||||||
|
('BF_XVIDCORE_CONFIG', 'configuration flags for xvidcore', ''),
|
||||||
|
# (BoolVariable('WITH_BF_DOCS', 'Generate API documentation', False)),
|
||||||
|
|
||||||
|
('BF_CONFIG', 'SCons python config file used to set default options', 'user_config.py'),
|
||||||
|
('BF_NUMJOBS', 'Number of build processes to spawn', '1'),
|
||||||
|
('BF_MSVS', 'Generate MSVS project files and solution', False),
|
||||||
|
|
||||||
|
(BoolVariable('BF_UNIT_TEST', 'Build with unit test support.', False)),
|
||||||
|
|
||||||
|
(BoolVariable('BF_GHOST_DEBUG', 'Make GHOST print events and info to stdout. (very verbose)', False)),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_RAYOPTIMIZATION', 'Enable raytracer SSE/SIMD optimization.', False)),
|
||||||
|
('BF_RAYOPTIMIZATION_SSE_FLAGS', 'SSE flags', ''),
|
||||||
|
(BoolVariable('WITH_BF_CXX_GUARDEDALLOC', 'Enable GuardedAlloc for C++ memory allocation tracking.', False)),
|
||||||
|
|
||||||
|
('BUILDBOT_BRANCH', 'Buildbot branch name', ''),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_CYCLES', 'Build with the Cycles engine', True)),
|
||||||
|
(BoolVariable('WITH_BF_CYCLES_CUDA_BINARIES', 'Build with precompiled CUDA binaries', False)),
|
||||||
|
(BoolVariable('WITH_BF_CYCLES_CUDA_THREADED_COMPILE', 'Build several render kernels at once (using BF_NUMJOBS)', False)),
|
||||||
|
('BF_CYCLES_CUDA_NVCC', 'CUDA nvcc compiler path', ''),
|
||||||
|
('BF_CYCLES_CUDA_ENV', 'preset environement nvcc will execute in', ''),
|
||||||
|
('BF_CYCLES_CUDA_BINARIES_ARCH', 'CUDA architectures to compile binaries for', []),
|
||||||
|
(BoolVariable('WITH_BF_CYCLES_DEBUG', 'Build Cycles engine with extra debugging capabilities', False)),
|
||||||
|
(BoolVariable('WITH_BF_CYCLES_LOGGING', 'Build Cycles engine with logging support', True)),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_OIIO', 'Build with OpenImageIO', False)),
|
||||||
|
(BoolVariable('WITH_BF_STATICOIIO', 'Statically link to OpenImageIO', False)),
|
||||||
|
('BF_OIIO', 'OIIO root path', ''),
|
||||||
|
('BF_OIIO_INC', 'OIIO include path', ''),
|
||||||
|
('BF_OIIO_LIB', 'OIIO library', ''),
|
||||||
|
('BF_OIIO_LIBPATH', 'OIIO library path', ''),
|
||||||
|
('BF_OIIO_LIB_STATIC', 'OIIO static library', ''),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_OCIO', 'Build with OpenColorIO', False)),
|
||||||
|
(BoolVariable('WITH_BF_STATICOCIO', 'Staticly link to OpenColorIO', False)),
|
||||||
|
('BF_OCIO', 'OCIO root path', ''),
|
||||||
|
('BF_OCIO_INC', 'OCIO include path', ''),
|
||||||
|
('BF_OCIO_LIB', 'OCIO library', ''),
|
||||||
|
('BF_OCIO_LIBPATH', 'OCIO library path', ''),
|
||||||
|
('BF_OCIO_LIB_STATIC', 'OCIO static library', ''),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_BOOST', 'Build with Boost', False)),
|
||||||
|
(BoolVariable('WITH_BF_STATICBOOST', 'Staticly link to boost', False)),
|
||||||
|
('BF_BOOST', 'Boost root path', ''),
|
||||||
|
('BF_BOOST_INC', 'Boost include path', ''),
|
||||||
|
('BF_BOOST_LIB', 'Boost library', ''),
|
||||||
|
('BF_BOOST_LIB_INTERNATIONAL', 'Boost library', ''),
|
||||||
|
('BF_BOOST_LIBPATH', 'Boost library path', ''),
|
||||||
|
('BF_BOOST_LIB_STATIC', 'Boost static library', ''),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_GHOST_XDND', 'Build with drag-n-drop support on Linux platforms using XDND protocol', True)),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_CYCLES_OSL', 'Build with OSL sypport in Cycles', False)),
|
||||||
|
(BoolVariable('WITH_BF_STATICOSL', 'Staticly link to OSL', False)),
|
||||||
|
('BF_OSL', 'OSL root path', ''),
|
||||||
|
('BF_OSL_INC', 'OSL include path', ''),
|
||||||
|
('BF_OSL_LIB', 'OSL library', ''),
|
||||||
|
('BF_OSL_LIBPATH', 'OSL library path', ''),
|
||||||
|
('BF_OSL_LIB_STATIC', 'OSL static library', ''),
|
||||||
|
('BF_OSL_COMPILER', 'OSL compiler', ''),
|
||||||
|
|
||||||
|
(BoolVariable('WITH_BF_LLVM', 'Build with LLVM sypport (required for OSL)', False)),
|
||||||
|
(BoolVariable('WITH_BF_STATICLLVM', 'Staticly link to LLVM', False)),
|
||||||
|
('BF_LLVM', 'LLVM root path', ''),
|
||||||
|
('BF_LLVM_LIB', 'LLVM library', ''),
|
||||||
|
('BF_LLVM_LIBPATH', 'LLVM library path', ''),
|
||||||
|
('BF_LLVM_LIB_STATIC', 'LLVM static library', ''),
|
||||||
|
|
||||||
|
('BF_PROGRAM_LINKFLAGS', 'Link flags applied only to final binaries (blender and blenderplayer, not makesrna/makesdna)', '')
|
||||||
|
) # end of opts.AddOptions()
|
||||||
|
|
||||||
|
return localopts
|
||||||
|
|
||||||
|
def buildbot_zip(src, dest, package_name, extension):
|
||||||
|
import zipfile
|
||||||
|
ln = len(src)+1 # one extra to remove leading os.sep when cleaning root for package_root
|
||||||
|
flist = list()
|
||||||
|
|
||||||
|
# create list of tuples containing file and archive name
|
||||||
|
for root, dirs, files in os.walk(src):
|
||||||
|
package_root = os.path.join(package_name, root[ln:])
|
||||||
|
flist.extend([(os.path.join(root, file), os.path.join(package_root, file)) for file in files])
|
||||||
|
|
||||||
|
if extension == '.zip':
|
||||||
|
package = zipfile.ZipFile(dest, 'w', zipfile.ZIP_DEFLATED)
|
||||||
|
package.comment = package_name + ' is a zip-file containing the Blender software. Visit http://www.blender.org for more information.'
|
||||||
|
for entry in flist:
|
||||||
|
package.write(entry[0], entry[1])
|
||||||
|
package.close()
|
||||||
|
else:
|
||||||
|
import tarfile
|
||||||
|
package = tarfile.open(dest, 'w:bz2')
|
||||||
|
for entry in flist:
|
||||||
|
package.add(entry[0], entry[1], recursive=False)
|
||||||
|
package.close()
|
||||||
|
bb_zip_name = os.path.normpath(src + os.sep + '..' + os.sep + 'buildbot_upload.zip')
|
||||||
|
print("creating %s" % (bb_zip_name))
|
||||||
|
bb_zip = zipfile.ZipFile(bb_zip_name, 'w', zipfile.ZIP_DEFLATED)
|
||||||
|
print("writing %s to %s" % (dest, bb_zip_name))
|
||||||
|
bb_zip.write(dest, os.path.split(dest)[1])
|
||||||
|
bb_zip.close()
|
||||||
|
print("removing unneeded packed file %s (to keep install directory clean)" % (dest))
|
||||||
|
os.remove(dest)
|
||||||
|
print("done.")
|
||||||
|
|
||||||
|
def buildslave_print(target, source, env):
|
||||||
|
return "Running buildslave target"
|
||||||
|
|
||||||
|
def buildslave(target=None, source=None, env=None):
|
||||||
|
"""
|
||||||
|
Builder for buildbot integration. Used by buildslaves of http://builder.blender.org only.
|
||||||
|
"""
|
||||||
|
|
||||||
|
if env['OURPLATFORM'] in ('win32-vc', 'win64-vc', 'win32-mingw', 'darwin', 'win64-mingw'):
|
||||||
|
extension = '.zip'
|
||||||
|
else:
|
||||||
|
extension = '.tar.bz2'
|
||||||
|
|
||||||
|
if env['OURPLATFORM'] == 'win32-mingw':
|
||||||
|
platform = 'mingw32'
|
||||||
|
elif env['OURPLATFORM'] == 'win64-mingw':
|
||||||
|
platform = 'mingw64'
|
||||||
|
else:
|
||||||
|
platform = env['OURPLATFORM'].split('-')[0]
|
||||||
|
|
||||||
|
if platform == 'linux':
|
||||||
|
import platform
|
||||||
|
|
||||||
|
if "glibc27" in env['BF_INSTALLDIR']:
|
||||||
|
glibc = "glibc27"
|
||||||
|
elif "glibc211" in env['BF_INSTALLDIR']:
|
||||||
|
glibc = "glibc211"
|
||||||
|
|
||||||
|
bitness = platform.architecture()[0]
|
||||||
|
if bitness == '64bit':
|
||||||
|
platform = 'linux-' + glibc + '-x86_64'
|
||||||
|
elif bitness == '32bit':
|
||||||
|
platform = 'linux-' + glibc + '-i686'
|
||||||
|
if platform == 'darwin':
|
||||||
|
platform = 'OSX-' + env['MACOSX_DEPLOYMENT_TARGET'] + '-' + env['MACOSX_ARCHITECTURE']
|
||||||
|
|
||||||
|
|
||||||
|
branch = env['BUILDBOT_BRANCH']
|
||||||
|
|
||||||
|
outdir = os.path.abspath(env['BF_INSTALLDIR'])
|
||||||
|
package_name = 'blender-' + VERSION+'-'+HASH + '-' + platform
|
||||||
|
if branch != '':
|
||||||
|
package_name = branch + '-' + package_name
|
||||||
|
package_dir = os.path.normpath(outdir + os.sep + '..' + os.sep + package_name)
|
||||||
|
package_archive = os.path.normpath(outdir + os.sep + '..' + os.sep + package_name + extension)
|
||||||
|
|
||||||
|
try:
|
||||||
|
if os.path.exists(package_archive):
|
||||||
|
os.remove(package_archive)
|
||||||
|
if os.path.exists(package_dir):
|
||||||
|
shutil.rmtree(package_dir)
|
||||||
|
except Exception, ex:
|
||||||
|
sys.stderr.write('Failed to clean up old package files: ' + str(ex) + '\n')
|
||||||
|
return 1
|
||||||
|
|
||||||
|
buildbot_zip(outdir, package_archive, package_name, extension)
|
||||||
|
|
||||||
|
return 0
|
||||||
|
|
||||||
|
def NSIS_print(target, source, env):
|
||||||
|
return "Creating NSIS installer for Blender"
|
||||||
|
|
||||||
|
def NSIS_Installer(target=None, source=None, env=None):
|
||||||
|
print "="*35
|
||||||
|
|
||||||
|
if env['OURPLATFORM'] not in ('win32-vc', 'win32-mingw', 'win64-vc', 'win64-mingw'):
|
||||||
|
print "NSIS installer is only available on Windows."
|
||||||
|
exit()
|
||||||
|
if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw'):
|
||||||
|
bitness = '32'
|
||||||
|
elif env['OURPLATFORM'] in ('win64-vc', 'win64-mingw'):
|
||||||
|
bitness = '64'
|
||||||
|
|
||||||
|
start_dir = os.getcwd()
|
||||||
|
rel_dir = os.path.join(start_dir,'release','windows','installer')
|
||||||
|
install_base_dir = start_dir + os.sep
|
||||||
|
|
||||||
|
bf_installdir = os.path.join(os.getcwd(),env['BF_INSTALLDIR'])
|
||||||
|
bf_installdir = os.path.normpath(bf_installdir)
|
||||||
|
|
||||||
|
doneroot = False
|
||||||
|
rootdirconts = []
|
||||||
|
datafiles = ''
|
||||||
|
deldatafiles = ''
|
||||||
|
deldatadirs = ''
|
||||||
|
l = len(bf_installdir)
|
||||||
|
|
||||||
|
for dp,dn,df in os.walk(bf_installdir):
|
||||||
|
# install
|
||||||
|
if not doneroot:
|
||||||
|
for f in df:
|
||||||
|
rootdirconts.append(os.path.join(dp,f))
|
||||||
|
doneroot = True
|
||||||
|
else:
|
||||||
|
if len(df)>0:
|
||||||
|
datafiles += "\n" +r'SetOutPath $INSTDIR'+dp[l:]+"\n\n"
|
||||||
|
|
||||||
|
for f in df:
|
||||||
|
outfile = os.path.join(dp,f)
|
||||||
|
datafiles += ' File '+outfile + "\n"
|
||||||
|
|
||||||
|
# uninstall
|
||||||
|
deldir = dp[l+1:]
|
||||||
|
|
||||||
|
if len(deldir)>0:
|
||||||
|
deldatadirs = "RMDir $INSTDIR\\" + deldir + "\n" + deldatadirs
|
||||||
|
deldatadirs = "RMDir /r $INSTDIR\\" + deldir + "\\__pycache__\n" + deldatadirs
|
||||||
|
|
||||||
|
for f in df:
|
||||||
|
deldatafiles += 'Delete \"$INSTDIR\\' + os.path.join(deldir, f) + "\"\n"
|
||||||
|
|
||||||
|
#### change to suit install dir ####
|
||||||
|
inst_dir = install_base_dir + env['BF_INSTALLDIR']
|
||||||
|
|
||||||
|
os.chdir(rel_dir)
|
||||||
|
|
||||||
|
ns = open("00.sconsblender.nsi","r")
|
||||||
|
|
||||||
|
ns_cnt = str(ns.read())
|
||||||
|
ns.close()
|
||||||
|
|
||||||
|
# var replacements
|
||||||
|
ns_cnt = string.replace(ns_cnt, "[DISTDIR]", os.path.normpath(inst_dir+os.sep))
|
||||||
|
ns_cnt = string.replace(ns_cnt, "[VERSION]", VERSION_DISPLAY)
|
||||||
|
ns_cnt = string.replace(ns_cnt, "[SHORTVERSION]", VERSION)
|
||||||
|
ns_cnt = string.replace(ns_cnt, "[RELDIR]", os.path.normpath(rel_dir))
|
||||||
|
ns_cnt = string.replace(ns_cnt, "[BITNESS]", bitness)
|
||||||
|
|
||||||
|
# do root
|
||||||
|
rootlist = []
|
||||||
|
for rootitem in rootdirconts:
|
||||||
|
rootlist.append("File \"" + rootitem + "\"")
|
||||||
|
rootstring = string.join(rootlist, "\n ")
|
||||||
|
rootstring = rootstring
|
||||||
|
rootstring += "\n\n"
|
||||||
|
ns_cnt = string.replace(ns_cnt, "[ROOTDIRCONTS]", rootstring)
|
||||||
|
|
||||||
|
|
||||||
|
# do delete items
|
||||||
|
delrootlist = []
|
||||||
|
for rootitem in rootdirconts:
|
||||||
|
delrootlist.append("Delete $INSTDIR\\" + rootitem[l+1:])
|
||||||
|
delrootstring = string.join(delrootlist, "\n ")
|
||||||
|
delrootstring += "\n"
|
||||||
|
ns_cnt = string.replace(ns_cnt, "[DELROOTDIRCONTS]", delrootstring)
|
||||||
|
|
||||||
|
ns_cnt = string.replace(ns_cnt, "[DODATAFILES]", datafiles)
|
||||||
|
ns_cnt = string.replace(ns_cnt, "[DELDATAFILES]", deldatafiles)
|
||||||
|
ns_cnt = string.replace(ns_cnt, "[DELDATADIRS]", deldatadirs)
|
||||||
|
|
||||||
|
tmpnsi = os.path.normpath(install_base_dir+os.sep+env['BF_BUILDDIR']+os.sep+"00.blender_tmp.nsi")
|
||||||
|
new_nsis = open(tmpnsi, 'w')
|
||||||
|
new_nsis.write(ns_cnt)
|
||||||
|
new_nsis.close()
|
||||||
|
print "NSIS Installer script created"
|
||||||
|
|
||||||
|
os.chdir(start_dir)
|
||||||
|
print "Launching 'makensis'"
|
||||||
|
|
||||||
|
cmdline = "makensis " + "\""+tmpnsi+"\""
|
||||||
|
|
||||||
|
startupinfo = subprocess.STARTUPINFO()
|
||||||
|
#startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
|
||||||
|
proc = subprocess.Popen(cmdline, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
|
||||||
|
stderr=subprocess.PIPE, startupinfo=startupinfo, shell = True)
|
||||||
|
data, err = proc.communicate()
|
||||||
|
rv = proc.wait()
|
||||||
|
|
||||||
|
if rv != 0:
|
||||||
|
print
|
||||||
|
print data.strip().split("\n")[-1]
|
||||||
|
return rv
|
||||||
|
|
||||||
|
def cudakernels_print(target, source, env):
|
||||||
|
return "Running cudakernels target"
|
||||||
|
|
||||||
|
def cudakernels(target=None, source=None, env=None):
|
||||||
|
"""
|
||||||
|
Builder for cuda kernels compilation. Used by release build environment only
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Currently nothing to do, everything is handled by a dependency resolver
|
||||||
|
|
||||||
|
pass
|
||||||
|
|
||||||
|
def check_environ():
|
||||||
|
problematic_envvars = ""
|
||||||
|
for i in os.environ:
|
||||||
|
try:
|
||||||
|
os.environ[i].decode('ascii')
|
||||||
|
except UnicodeDecodeError:
|
||||||
|
problematic_envvars = problematic_envvars + "%s = %s\n" % (i, os.environ[i])
|
||||||
|
if len(problematic_envvars)>0:
|
||||||
|
print("================\n\n")
|
||||||
|
print("@@ ABORTING BUILD @@\n")
|
||||||
|
print("PROBLEM DETECTED WITH ENVIRONMENT")
|
||||||
|
print("---------------------------------\n\n")
|
||||||
|
print("A problem with one or more environment variable was found")
|
||||||
|
print("Their value contain non-ascii characters. Check the below")
|
||||||
|
print("list and override them locally to be ASCII-clean by doing")
|
||||||
|
print("'set VARNAME=cleanvalue' on the command-line prior to")
|
||||||
|
print("starting the build process:\n")
|
||||||
|
print(problematic_envvars)
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
return True
|
||||||
184
build_files/scons/tools/crossmingw.py
Normal file
184
build_files/scons/tools/crossmingw.py
Normal file
@@ -0,0 +1,184 @@
|
|||||||
|
"""SCons.Tool.gcc
|
||||||
|
|
||||||
|
Tool-specific initialization for MinGW (http://www.mingw.org/)
|
||||||
|
|
||||||
|
There normally shouldn't be any need to import this module directly.
|
||||||
|
It will usually be imported through the generic SCons.Tool.Tool()
|
||||||
|
selection method.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
#
|
||||||
|
# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The SCons Foundation
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
# a copy of this software and associated documentation files (the
|
||||||
|
# "Software"), to deal in the Software without restriction, including
|
||||||
|
# without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
# distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
|
# permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
# the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included
|
||||||
|
# in all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
|
||||||
|
# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
|
||||||
|
# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||||
|
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
|
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||||
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
|
||||||
|
__revision__ = "src/engine/SCons/Tool/mingw.py 4043 2009/02/23 09:06:45 scons"
|
||||||
|
|
||||||
|
import os
|
||||||
|
import os.path
|
||||||
|
import string
|
||||||
|
|
||||||
|
import SCons.Action
|
||||||
|
import SCons.Builder
|
||||||
|
import SCons.Defaults
|
||||||
|
import SCons.Tool
|
||||||
|
import SCons.Util
|
||||||
|
|
||||||
|
# This is what we search for to find mingw:
|
||||||
|
prefixes = SCons.Util.Split("""
|
||||||
|
mingw32-
|
||||||
|
i386-mingw32msvc-
|
||||||
|
i486-mingw32msvc-
|
||||||
|
i586-mingw32msvc-
|
||||||
|
i686-mingw32msvc-
|
||||||
|
i686-pc-mingw32-
|
||||||
|
""")
|
||||||
|
|
||||||
|
def find(env):
|
||||||
|
for prefix in prefixes:
|
||||||
|
# First search in the SCons path and then the OS path:
|
||||||
|
if env.WhereIs(prefix + 'gcc') or SCons.Util.WhereIs(prefix + 'gcc'):
|
||||||
|
return prefix
|
||||||
|
|
||||||
|
return ''
|
||||||
|
|
||||||
|
def shlib_generator(target, source, env, for_signature):
|
||||||
|
cmd = SCons.Util.CLVar(['$SHLINK'])
|
||||||
|
|
||||||
|
dll = env.FindIxes(target, 'SHLIBPREFIX', 'SHLIBSUFFIX')
|
||||||
|
if dll: cmd.extend(['-o', dll])
|
||||||
|
|
||||||
|
cmd.extend(['$SOURCES', '$SHLINKFLAGS', '$_LIBDIRFLAGS', '$_LIBFLAGS'])
|
||||||
|
|
||||||
|
implib = env.FindIxes(target, 'LIBPREFIX', 'LIBSUFFIX')
|
||||||
|
if implib: cmd.append('-Wl,--out-implib,'+implib.get_string(for_signature))
|
||||||
|
|
||||||
|
def_target = env.FindIxes(target, 'WINDOWSDEFPREFIX', 'WINDOWSDEFSUFFIX')
|
||||||
|
insert_def = env.subst("$WINDOWS_INSERT_DEF")
|
||||||
|
if not insert_def in ['', '0', 0] and def_target: \
|
||||||
|
cmd.append('-Wl,--output-def,'+def_target.get_string(for_signature))
|
||||||
|
|
||||||
|
return [cmd]
|
||||||
|
|
||||||
|
def shlib_emitter(target, source, env):
|
||||||
|
dll = env.FindIxes(target, 'SHLIBPREFIX', 'SHLIBSUFFIX')
|
||||||
|
no_import_lib = env.get('no_import_lib', 0)
|
||||||
|
|
||||||
|
if not dll:
|
||||||
|
raise SCons.Errors.UserError, "A shared library should have exactly one target with the suffix: %s" % env.subst("$SHLIBSUFFIX")
|
||||||
|
|
||||||
|
if not no_import_lib and \
|
||||||
|
not env.FindIxes(target, 'LIBPREFIX', 'LIBSUFFIX'):
|
||||||
|
|
||||||
|
# Append an import library to the list of targets.
|
||||||
|
target.append(env.ReplaceIxes(dll,
|
||||||
|
'SHLIBPREFIX', 'SHLIBSUFFIX',
|
||||||
|
'LIBPREFIX', 'LIBSUFFIX'))
|
||||||
|
|
||||||
|
# Append a def file target if there isn't already a def file target
|
||||||
|
# or a def file source. There is no option to disable def file
|
||||||
|
# target emitting, because I can't figure out why someone would ever
|
||||||
|
# want to turn it off.
|
||||||
|
def_source = env.FindIxes(source, 'WINDOWSDEFPREFIX', 'WINDOWSDEFSUFFIX')
|
||||||
|
def_target = env.FindIxes(target, 'WINDOWSDEFPREFIX', 'WINDOWSDEFSUFFIX')
|
||||||
|
if not def_source and not def_target:
|
||||||
|
target.append(env.ReplaceIxes(dll,
|
||||||
|
'SHLIBPREFIX', 'SHLIBSUFFIX',
|
||||||
|
'WINDOWSDEFPREFIX', 'WINDOWSDEFSUFFIX'))
|
||||||
|
|
||||||
|
return (target, source)
|
||||||
|
|
||||||
|
|
||||||
|
shlib_action = SCons.Action.Action(shlib_generator, generator=1)
|
||||||
|
|
||||||
|
res_action = SCons.Action.Action('$RCCOM', '$RCCOMSTR')
|
||||||
|
|
||||||
|
res_builder = SCons.Builder.Builder(action=res_action, suffix='.o',
|
||||||
|
source_scanner=SCons.Tool.SourceFileScanner)
|
||||||
|
SCons.Tool.SourceFileScanner.add_scanner('.rc', SCons.Defaults.CScan)
|
||||||
|
|
||||||
|
def generate(env):
|
||||||
|
mingw = find(env)
|
||||||
|
if mingw:
|
||||||
|
dir = os.path.dirname(mingw)
|
||||||
|
env.PrependENVPath('PATH', dir )
|
||||||
|
|
||||||
|
|
||||||
|
# Most of mingw is the same as gcc and friends...
|
||||||
|
gnu_tools = ['gcc', 'g++', 'gnulink', 'ar', 'gas', 'm4']
|
||||||
|
for tool in gnu_tools:
|
||||||
|
SCons.Tool.Tool(tool)(env)
|
||||||
|
|
||||||
|
#... but a few things differ:
|
||||||
|
env['CC'] = mingw + 'gcc'
|
||||||
|
env['SHCCFLAGS'] = SCons.Util.CLVar('$CCFLAGS')
|
||||||
|
env['CXX'] = mingw + 'g++'
|
||||||
|
env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS')
|
||||||
|
env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -shared')
|
||||||
|
env['SHLINKCOM'] = shlib_action
|
||||||
|
env['LDMODULECOM'] = shlib_action
|
||||||
|
env.Append(SHLIBEMITTER = [shlib_emitter])
|
||||||
|
env['RANLIB'] = mingw + 'ranlib'
|
||||||
|
env['LINK'] = mingw + 'gcc'
|
||||||
|
env['AS'] = mingw + 'as'
|
||||||
|
env['AR'] = mingw + 'ar'
|
||||||
|
|
||||||
|
env['WIN32DEFPREFIX'] = ''
|
||||||
|
env['WIN32DEFSUFFIX'] = '.def'
|
||||||
|
env['WINDOWSDEFPREFIX'] = '${WIN32DEFPREFIX}'
|
||||||
|
env['WINDOWSDEFSUFFIX'] = '${WIN32DEFSUFFIX}'
|
||||||
|
|
||||||
|
env['SHOBJSUFFIX'] = '.o'
|
||||||
|
env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 1
|
||||||
|
|
||||||
|
env['RC'] = mingw + 'windres'
|
||||||
|
env['RCFLAGS'] = SCons.Util.CLVar('')
|
||||||
|
env['RCINCFLAGS'] = '$( ${_concat(RCINCPREFIX, CPPPATH, RCINCSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)'
|
||||||
|
env['RCINCPREFIX'] = '--include-dir '
|
||||||
|
env['RCINCSUFFIX'] = ''
|
||||||
|
env['RCCOM'] = '$RC $_CPPDEFFLAGS $RCINCFLAGS ${RCINCPREFIX} ${SOURCE.dir} $RCFLAGS -i $SOURCE -o $TARGET'
|
||||||
|
env['BUILDERS']['RES'] = res_builder
|
||||||
|
|
||||||
|
# Some setting from the platform also have to be overridden:
|
||||||
|
env['OBJPREFIX'] = ''
|
||||||
|
env['OBJSUFFIX'] = '.o'
|
||||||
|
env['LIBPREFIX'] = 'lib'
|
||||||
|
env['LIBSUFFIX'] = '.a'
|
||||||
|
env['SHOBJPREFIX'] = '$OBJPREFIX'
|
||||||
|
env['SHOBJSUFFIX'] = '$OBJSUFFIX'
|
||||||
|
env['PROGPREFIX'] = ''
|
||||||
|
env['PROGSUFFIX'] = '.exe'
|
||||||
|
env['LIBPREFIX'] = ''
|
||||||
|
env['LIBSUFFIX'] = '.lib'
|
||||||
|
env['SHLIBPREFIX'] = ''
|
||||||
|
env['SHLIBSUFFIX'] = '.dll'
|
||||||
|
env['LIBPREFIXES'] = [ '$LIBPREFIX' ]
|
||||||
|
env['LIBSUFFIXES'] = [ '$LIBSUFFIX' ]
|
||||||
|
|
||||||
|
def exists(env):
|
||||||
|
return find(env)
|
||||||
|
|
||||||
|
# Local Variables:
|
||||||
|
# tab-width:4
|
||||||
|
# indent-tabs-mode:nil
|
||||||
|
# End:
|
||||||
|
# vim: set expandtab tabstop=4 shiftwidth=4:
|
||||||
353
build_files/scons/tools/mstoolkit.py
Normal file
353
build_files/scons/tools/mstoolkit.py
Normal file
@@ -0,0 +1,353 @@
|
|||||||
|
"""tools.mstoolkit
|
||||||
|
|
||||||
|
Tool-specific initialization for Microsoft Visual C/C++ Toolkit Commandline
|
||||||
|
|
||||||
|
There normally shouldn't be any need to import this module directly.
|
||||||
|
It will usually be imported through the generic SCons.Tool.Tool()
|
||||||
|
selection method.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
#
|
||||||
|
# Copyright (c) 2004 John Connors
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
# a copy of this software and associated documentation files (the
|
||||||
|
# "Software"), to deal in the Software without restriction, including
|
||||||
|
# without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
# distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
|
# permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
# the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included
|
||||||
|
# in all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
|
||||||
|
# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
|
||||||
|
# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||||
|
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
|
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||||
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
import os.path
|
||||||
|
import re
|
||||||
|
import string
|
||||||
|
import types
|
||||||
|
|
||||||
|
import SCons.Action
|
||||||
|
import SCons.Builder
|
||||||
|
import SCons.Errors
|
||||||
|
import SCons.Platform.win32
|
||||||
|
import SCons.Tool
|
||||||
|
import SCons.Util
|
||||||
|
import SCons.Warnings
|
||||||
|
|
||||||
|
CSuffixes = ['.c', '.C']
|
||||||
|
CXXSuffixes = ['.cc', '.cpp', '.cxx', '.c++', '.C++']
|
||||||
|
|
||||||
|
def get_msvctoolkit_paths():
|
||||||
|
"""Return a 4-tuple of (INCLUDE, LIB, PATH, TOOLKIT) as the values of those
|
||||||
|
three environment variables that should be set in order to execute
|
||||||
|
the MSVC .NET tools properly, if the information wasn't available
|
||||||
|
from the registry."""
|
||||||
|
|
||||||
|
MSToolkitDir = None
|
||||||
|
paths = {}
|
||||||
|
exe_path = ''
|
||||||
|
lib_path = ''
|
||||||
|
include_path = ''
|
||||||
|
|
||||||
|
# First, we get the shell folder for this user:
|
||||||
|
if not SCons.Util.can_read_reg:
|
||||||
|
raise SCons.Errors.InternalError, "No Windows registry module was found"
|
||||||
|
|
||||||
|
# look for toolkit
|
||||||
|
if os.environ.has_key('VCToolkitInstallDir'):
|
||||||
|
MSToolkitDir = os.path.normpath(os.environ['VCToolkitInstallDir'])
|
||||||
|
else:
|
||||||
|
# last resort -- default install location
|
||||||
|
MSToolkitDir = r'C:\Program Files\Microsoft Visual C++ Toolkit 2003'
|
||||||
|
|
||||||
|
# look for platform sdk
|
||||||
|
if os.environ.has_key('MSSdk'):
|
||||||
|
PlatformSDKDir = os.path.normpath(os.environ['MSSdk'])
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
PlatformSDKDir = SCons.Util.RegGetValue(SCons.Util.HKEY_LOCAL_MACHINE, r'SOFTWARE\Microsoft\MicrosoftSDK\Directories\Install Dir')[0]
|
||||||
|
PlatformSDKDir = str(PlatformSDKDir)
|
||||||
|
except SCons.Util.RegError:
|
||||||
|
raise SCons.Errors.InternalError, "The Platform SDK directory was not found in the registry or in the `MSSdk` environment variable."
|
||||||
|
|
||||||
|
# look for DX Sdk (expecting DX9)
|
||||||
|
# dxsdk docs have a directory key, look for it, extract path
|
||||||
|
#dxsdkdocs = ""
|
||||||
|
DXsdkDir = ""
|
||||||
|
#try:
|
||||||
|
# dxsdkdocs = SCons.Util.RegGetValue(SCons.Util.HKEY_LOCAL_MACHINE, r'SOFTWARE\Microsoft\DirectX SDK\DX9SDK Doc Path')
|
||||||
|
#except SCons.Util.RegError:
|
||||||
|
# raise SCons.Errors.InternalError, "The DXSDK directory was not found in the registry."
|
||||||
|
if os.environ.has_key('DXSDK_DIR'):
|
||||||
|
DXsdkDir = os.path.normpath(os.environ['DXSDK_DIR'])
|
||||||
|
|
||||||
|
#DXsdkDir = os.path.split(dxsdkdocs[0])[0]
|
||||||
|
DXsdkDir = os.path.split(DXsdkDir)[0]
|
||||||
|
|
||||||
|
include_path = r'%s\include;%s\include;%s\include' % (MSToolkitDir, PlatformSDKDir, DXsdkDir)
|
||||||
|
lib_path = r'%s\lib;%s\lib;%s\lib' % (MSToolkitDir, PlatformSDKDir, DXsdkDir)
|
||||||
|
exe_path = r'%s\bin;%s\bin\win95;%s\bin' % (MSToolkitDir, PlatformSDKDir, PlatformSDKDir)
|
||||||
|
return (include_path, lib_path, exe_path, PlatformSDKDir)
|
||||||
|
|
||||||
|
def validate_vars(env):
|
||||||
|
"""Validate the PDB, PCH, and PCHSTOP construction variables."""
|
||||||
|
if env.has_key('PCH') and env['PCH']:
|
||||||
|
if not env.has_key('PCHSTOP'):
|
||||||
|
raise SCons.Errors.UserError, "The PCHSTOP construction must be defined if PCH is defined."
|
||||||
|
if not SCons.Util.is_String(env['PCHSTOP']):
|
||||||
|
raise SCons.Errors.UserError, "The PCHSTOP construction variable must be a string: %r"%env['PCHSTOP']
|
||||||
|
|
||||||
|
def pch_emitter(target, source, env):
|
||||||
|
"""Sets up the PDB dependencies for a pch file, and adds the object
|
||||||
|
file target."""
|
||||||
|
|
||||||
|
validate_vars(env)
|
||||||
|
|
||||||
|
pch = None
|
||||||
|
obj = None
|
||||||
|
|
||||||
|
for t in target:
|
||||||
|
if SCons.Util.splitext(str(t))[1] == '.pch':
|
||||||
|
pch = t
|
||||||
|
if SCons.Util.splitext(str(t))[1] == '.obj':
|
||||||
|
obj = t
|
||||||
|
|
||||||
|
if not obj:
|
||||||
|
obj = SCons.Util.splitext(str(pch))[0]+'.obj'
|
||||||
|
|
||||||
|
target = [pch, obj] # pch must be first, and obj second for the PCHCOM to work
|
||||||
|
|
||||||
|
if env.has_key('PDB') and env['PDB']:
|
||||||
|
env.SideEffect(env['PDB'], target)
|
||||||
|
env.Precious(env['PDB'])
|
||||||
|
|
||||||
|
return (target, source)
|
||||||
|
|
||||||
|
def object_emitter(target, source, env, parent_emitter):
|
||||||
|
"""Sets up the PDB and PCH dependencies for an object file."""
|
||||||
|
|
||||||
|
validate_vars(env)
|
||||||
|
|
||||||
|
parent_emitter(target, source, env)
|
||||||
|
|
||||||
|
if env.has_key('PDB') and env['PDB']:
|
||||||
|
env.SideEffect(env['PDB'], target)
|
||||||
|
env.Precious(env['PDB'])
|
||||||
|
|
||||||
|
if env.has_key('PCH') and env['PCH']:
|
||||||
|
env.Depends(target, env['PCH'])
|
||||||
|
|
||||||
|
return (target, source)
|
||||||
|
|
||||||
|
def static_object_emitter(target, source, env):
|
||||||
|
return object_emitter(target, source, env,
|
||||||
|
SCons.Defaults.StaticObjectEmitter)
|
||||||
|
|
||||||
|
def shared_object_emitter(target, source, env):
|
||||||
|
return object_emitter(target, source, env,
|
||||||
|
SCons.Defaults.SharedObjectEmitter)
|
||||||
|
|
||||||
|
pch_builder = SCons.Builder.Builder(action='$PCHCOM', suffix='.pch', emitter=pch_emitter)
|
||||||
|
res_builder = SCons.Builder.Builder(action='$RCCOM', suffix='.res')
|
||||||
|
|
||||||
|
def pdbGenerator(env, target, source, for_signature):
|
||||||
|
if target and env.has_key('PDB') and env['PDB']:
|
||||||
|
return ['/PDB:%s'%target[0].File(env['PDB']).get_string(for_signature),
|
||||||
|
'/DEBUG']
|
||||||
|
|
||||||
|
def win32ShlinkTargets(target, source, env, for_signature):
|
||||||
|
listCmd = []
|
||||||
|
dll = env.FindIxes(target, 'SHLIBPREFIX', 'SHLIBSUFFIX')
|
||||||
|
if dll: listCmd.append("/out:%s"%dll.get_string(for_signature))
|
||||||
|
|
||||||
|
implib = env.FindIxes(target, 'LIBPREFIX', 'LIBSUFFIX')
|
||||||
|
if implib: listCmd.append("/implib:%s"%implib.get_string(for_signature))
|
||||||
|
|
||||||
|
return listCmd
|
||||||
|
|
||||||
|
def win32ShlinkSources(target, source, env, for_signature):
|
||||||
|
listCmd = []
|
||||||
|
|
||||||
|
deffile = env.FindIxes(source, "WIN32DEFPREFIX", "WIN32DEFSUFFIX")
|
||||||
|
for src in source:
|
||||||
|
if src == deffile:
|
||||||
|
# Treat this source as a .def file.
|
||||||
|
listCmd.append("/def:%s" % src.get_string(for_signature))
|
||||||
|
else:
|
||||||
|
# Just treat it as a generic source file.
|
||||||
|
listCmd.append(src)
|
||||||
|
return listCmd
|
||||||
|
|
||||||
|
def win32LibEmitter(target, source, env):
|
||||||
|
# SCons.Tool.msvc.validate_vars(env)
|
||||||
|
|
||||||
|
dll = env.FindIxes(target, "SHLIBPREFIX", "SHLIBSUFFIX")
|
||||||
|
no_import_lib = env.get('no_import_lib', 0)
|
||||||
|
|
||||||
|
if not dll:
|
||||||
|
raise SCons.Errors.UserError, "A shared library should have exactly one target with the suffix: %s" % env.subst("$SHLIBSUFFIX")
|
||||||
|
|
||||||
|
if env.get("WIN32_INSERT_DEF", 0) and \
|
||||||
|
not env.FindIxes(source, "WIN32DEFPREFIX", "WIN32DEFSUFFIX"):
|
||||||
|
|
||||||
|
# append a def file to the list of sources
|
||||||
|
source.append(env.ReplaceIxes(dll,
|
||||||
|
"SHLIBPREFIX", "SHLIBSUFFIX",
|
||||||
|
"WIN32DEFPREFIX", "WIN32DEFSUFFIX"))
|
||||||
|
|
||||||
|
if env.has_key('PDB') and env['PDB']:
|
||||||
|
env.SideEffect(env['PDB'], target)
|
||||||
|
env.Precious(env['PDB'])
|
||||||
|
|
||||||
|
if not no_import_lib and \
|
||||||
|
not env.FindIxes(target, "LIBPREFIX", "LIBSUFFIX"):
|
||||||
|
# Append an import library to the list of targets.
|
||||||
|
target.append(env.ReplaceIxes(dll,
|
||||||
|
"SHLIBPREFIX", "SHLIBSUFFIX",
|
||||||
|
"LIBPREFIX", "LIBSUFFIX"))
|
||||||
|
# and .exp file is created if there are exports from a DLL
|
||||||
|
target.append(env.ReplaceIxes(dll,
|
||||||
|
"SHLIBPREFIX", "SHLIBSUFFIX",
|
||||||
|
"WIN32EXPPREFIX", "WIN32EXPSUFFIX"))
|
||||||
|
|
||||||
|
return (target, source)
|
||||||
|
|
||||||
|
def prog_emitter(target, source, env):
|
||||||
|
#SCons.Tool.msvc.validate_vars(env)
|
||||||
|
|
||||||
|
if env.has_key('PDB') and env['PDB']:
|
||||||
|
env.SideEffect(env['PDB'], target)
|
||||||
|
env.Precious(env['PDB'])
|
||||||
|
|
||||||
|
return (target,source)
|
||||||
|
|
||||||
|
def RegServerFunc(target, source, env):
|
||||||
|
if env.has_key('register') and env['register']:
|
||||||
|
ret = regServerAction([target[0]], [source[0]], env)
|
||||||
|
if ret:
|
||||||
|
raise SCons.Errors.UserError, "Unable to register %s" % target[0]
|
||||||
|
else:
|
||||||
|
print "Registered %s sucessfully" % target[0]
|
||||||
|
return ret
|
||||||
|
return 0
|
||||||
|
|
||||||
|
regServerAction = SCons.Action.Action("$REGSVRCOM")
|
||||||
|
regServerCheck = SCons.Action.Action(RegServerFunc, None)
|
||||||
|
shlibLinkAction = SCons.Action.Action('${TEMPFILE("$SHLINK $SHLINKFLAGS $_SHLINK_TARGETS $( $_LIBDIRFLAGS $) $_LIBFLAGS $_PDB $_SHLINK_SOURCES")}')
|
||||||
|
compositeLinkAction = shlibLinkAction + regServerCheck
|
||||||
|
|
||||||
|
def generate(env):
|
||||||
|
"""Add Builders and construction variables for MSVC++ to an Environment."""
|
||||||
|
static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
|
||||||
|
|
||||||
|
for suffix in CSuffixes:
|
||||||
|
static_obj.add_action(suffix, SCons.Defaults.CAction)
|
||||||
|
shared_obj.add_action(suffix, SCons.Defaults.ShCAction)
|
||||||
|
|
||||||
|
for suffix in CXXSuffixes:
|
||||||
|
static_obj.add_action(suffix, SCons.Defaults.CXXAction)
|
||||||
|
shared_obj.add_action(suffix, SCons.Defaults.ShCXXAction)
|
||||||
|
|
||||||
|
SCons.Tool.createStaticLibBuilder(env)
|
||||||
|
SCons.Tool.createSharedLibBuilder(env)
|
||||||
|
SCons.Tool.createProgBuilder(env)
|
||||||
|
|
||||||
|
env['CCPDBFLAGS'] = SCons.Util.CLVar(['${(PDB and "/Zi /Fd%s"%File(PDB)) or ""}'])
|
||||||
|
env['CCPCHFLAGS'] = SCons.Util.CLVar(['${(PCH and "/Yu%s /Fp%s"%(PCHSTOP or "",File(PCH))) or ""}'])
|
||||||
|
env['CCCOMFLAGS'] = '$CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS /c $SOURCES /Fo$TARGET $CCPCHFLAGS $CCPDBFLAGS'
|
||||||
|
env['CC'] = 'cl'
|
||||||
|
env['CCFLAGS'] = SCons.Util.CLVar('/nologo')
|
||||||
|
env['CCCOM'] = '$CC $CCFLAGS $CCCOMFLAGS'
|
||||||
|
env['SHCC'] = '$CC'
|
||||||
|
env['SHCCFLAGS'] = SCons.Util.CLVar('$CCFLAGS')
|
||||||
|
env['SHCCCOM'] = '$SHCC $SHCCFLAGS $CCCOMFLAGS'
|
||||||
|
env['CXX'] = '$CC'
|
||||||
|
env['CXXFLAGS'] = SCons.Util.CLVar('$CCFLAGS $( /TP $)')
|
||||||
|
env['CXXCOM'] = '$CXX $CXXFLAGS $CCCOMFLAGS'
|
||||||
|
env['SHCXX'] = '$CXX'
|
||||||
|
env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS')
|
||||||
|
env['SHCXXCOM'] = '$SHCXX $SHCXXFLAGS $CCCOMFLAGS'
|
||||||
|
env['CPPDEFPREFIX'] = '/D'
|
||||||
|
env['CPPDEFSUFFIX'] = ''
|
||||||
|
env['INCPREFIX'] = '/I'
|
||||||
|
env['INCSUFFIX'] = ''
|
||||||
|
env['OBJEMITTER'] = static_object_emitter
|
||||||
|
env['SHOBJEMITTER'] = shared_object_emitter
|
||||||
|
env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 1
|
||||||
|
|
||||||
|
env['RC'] = 'rc'
|
||||||
|
env['RCFLAGS'] = SCons.Util.CLVar('')
|
||||||
|
env['RCCOM'] = '$RC $_CPPDEFFLAGS $_CPPINCFLAGS $RCFLAGS /fo$TARGET $SOURCES'
|
||||||
|
CScan = env.get_scanner('.c')
|
||||||
|
if CScan:
|
||||||
|
CScan.add_skey('.rc')
|
||||||
|
env['BUILDERS']['RES'] = res_builder
|
||||||
|
|
||||||
|
include_path, lib_path, exe_path, sdk_path = get_msvctoolkit_paths()
|
||||||
|
env.PrependENVPath('INCLUDE', include_path)
|
||||||
|
env.PrependENVPath('LIB', lib_path)
|
||||||
|
env.PrependENVPath('PATH', exe_path)
|
||||||
|
|
||||||
|
env['ENV']['CPU'] = 'i386'
|
||||||
|
env['ENV']['MSSDK'] = sdk_path
|
||||||
|
env['ENV']['BkOffice'] = sdk_path
|
||||||
|
env['ENV']['Basemake'] = sdk_path + "\\Include\\BKOffice.Mak"
|
||||||
|
env['ENV']['INETSDK'] = sdk_path
|
||||||
|
env['ENV']['MSSDK'] = sdk_path
|
||||||
|
env['ENV']['MSTOOLS'] = sdk_path
|
||||||
|
env['ENV']['TARGETOS'] = 'WINNT'
|
||||||
|
env['ENV']['APPVER'] = '5.0'
|
||||||
|
|
||||||
|
env['CFILESUFFIX'] = '.c'
|
||||||
|
env['CXXFILESUFFIX'] = '.cc'
|
||||||
|
|
||||||
|
env['PCHCOM'] = '$CXX $CXXFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS /c $SOURCES /Fo${TARGETS[1]} /Yc$PCHSTOP /Fp${TARGETS[0]} $CCPDBFLAGS'
|
||||||
|
env['BUILDERS']['PCH'] = pch_builder
|
||||||
|
|
||||||
|
env['AR'] = 'lib.exe' #'"' +sdk_path + '\\bin\\Win64\\lib.exe"'
|
||||||
|
env['ARFLAGS'] = SCons.Util.CLVar('/nologo')
|
||||||
|
env['ARCOM'] = "${TEMPFILE('$AR $ARFLAGS /OUT:$TARGET $SOURCES')}"
|
||||||
|
|
||||||
|
env['SHLINK'] = '$LINK'
|
||||||
|
env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS /dll')
|
||||||
|
env['_SHLINK_TARGETS'] = win32ShlinkTargets
|
||||||
|
env['_SHLINK_SOURCES'] = win32ShlinkSources
|
||||||
|
env['SHLINKCOM'] = compositeLinkAction
|
||||||
|
env['SHLIBEMITTER']= win32LibEmitter
|
||||||
|
env['LINK'] = 'link.exe' #'"' +sdk_path + '\\bin\\Win64\\' + 'link.exe"'
|
||||||
|
env['LINKFLAGS'] = SCons.Util.CLVar('/nologo')
|
||||||
|
env['_PDB'] = pdbGenerator
|
||||||
|
env["TEMPFILE"] = SCons.Platform.win32.TempFileMunge
|
||||||
|
env['LINKCOM'] = '${TEMPFILE("$LINK $LINKFLAGS /OUT:$TARGET $( $_LIBDIRFLAGS $) $_LIBFLAGS $_PDB $SOURCES")}'
|
||||||
|
env['PROGEMITTER'] = prog_emitter
|
||||||
|
env['LIBDIRPREFIX']='/LIBPATH:'
|
||||||
|
env['LIBDIRSUFFIX']=''
|
||||||
|
env['LIBLINKPREFIX']=''
|
||||||
|
env['LIBLINKSUFFIX']='$LIBSUFFIX'
|
||||||
|
|
||||||
|
env['WIN32DEFPREFIX'] = ''
|
||||||
|
env['WIN32DEFSUFFIX'] = '.def'
|
||||||
|
env['WIN32_INSERT_DEF'] = 0
|
||||||
|
|
||||||
|
env['WIN32EXPPREFIX'] = ''
|
||||||
|
env['WIN32EXPSUFFIX'] = '.exp'
|
||||||
|
|
||||||
|
env['REGSVRACTION'] = regServerCheck
|
||||||
|
env['REGSVR'] = os.path.join(SCons.Platform.win32.get_system_root(),'System32','regsvr32')
|
||||||
|
env['REGSVRFLAGS'] = '/s '
|
||||||
|
env['REGSVRCOM'] = '$REGSVR $REGSVRFLAGS $TARGET'
|
||||||
|
|
||||||
|
|
||||||
|
def exists(env):
|
||||||
|
return env.Detect('cl')
|
||||||
104
doc/build_systems/cmake.txt
Normal file
104
doc/build_systems/cmake.txt
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
|
||||||
|
Blender CMake build system
|
||||||
|
============================
|
||||||
|
|
||||||
|
Contents
|
||||||
|
---------------
|
||||||
|
|
||||||
|
1. Introduction
|
||||||
|
2. Obtaining CMake
|
||||||
|
3. Building Blender
|
||||||
|
4. Generic Setup
|
||||||
|
5. Configuring the build after SVN updates
|
||||||
|
|
||||||
|
1. Introduction
|
||||||
|
---------------
|
||||||
|
|
||||||
|
This document describes general usage of the new CMake scripts. The
|
||||||
|
inner workings will be described in blender-cmake-dev.txt (TODO).
|
||||||
|
|
||||||
|
2. Obtaining CMake
|
||||||
|
------------------
|
||||||
|
|
||||||
|
CMake for can either be downloaded using your favorite package manager
|
||||||
|
or is also available from the CMake website at http://www.cmake.org
|
||||||
|
The website also contains some documentation on CMake usage but I found
|
||||||
|
the man page alone pretty helpful.
|
||||||
|
|
||||||
|
3. Building Blender
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
Building Blender requires obtaining a compiler, library dependencies,
|
||||||
|
and correct setup depending on the system. For details on how to set
|
||||||
|
up a build on various operating systems, see the wiki documentation:
|
||||||
|
|
||||||
|
http://wiki.blender.org/index.php/Dev:Doc/Building_Blender
|
||||||
|
|
||||||
|
4. Generic Setup
|
||||||
|
----------------
|
||||||
|
|
||||||
|
CMake allows one to generate the build project files and binary objects
|
||||||
|
outside the source tree which can be pretty handy in working and experimenting
|
||||||
|
with different Blender configurations (Audio/NoAudio, GameEngine/NoGameEngine etc.)
|
||||||
|
while maintaining a clean source tree. It also makes it possible to generate files
|
||||||
|
for different build systems on the same source tree. This also has benefits for
|
||||||
|
general SVN management for the developer as patches and submit logs are much cleaner.
|
||||||
|
|
||||||
|
Create a directory outside the blender source tree where you would like to build
|
||||||
|
Blender (from now on called $BLENDERBUILD). On the commandline you can then run
|
||||||
|
the cmake command to generate your initial build files. First just run 'cmake' which
|
||||||
|
will inform you what the available generators are. Thn you can run
|
||||||
|
'cmake -G generator $BLENDERSOURCE' to generate the build files. Here is an example
|
||||||
|
of all this for Xcode:
|
||||||
|
|
||||||
|
% mkdir $BLENDERBUILD
|
||||||
|
% cd $BLENDERBUILD
|
||||||
|
% cmake
|
||||||
|
|
||||||
|
...
|
||||||
|
...
|
||||||
|
--version [file] = Show program name/version banner and exit.
|
||||||
|
|
||||||
|
Generators
|
||||||
|
|
||||||
|
The following generators are available on this platform:
|
||||||
|
KDevelop3 = Generates KDevelop 3 project files.
|
||||||
|
Unix Makefiles = Generates standard UNIX makefiles.
|
||||||
|
Xcode = Generate XCode project files.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
% cmake -G Xcode $BLENDERSOURCE
|
||||||
|
...
|
||||||
|
...
|
||||||
|
-- Configuring blender
|
||||||
|
-- Configuring blenderplayer
|
||||||
|
-- Configuring done
|
||||||
|
-- Generating done
|
||||||
|
-- Build files have been written to: $BLENDERBUILD
|
||||||
|
|
||||||
|
This will generate the build files with default values. Specific features can
|
||||||
|
be enabled or disabled by running the ccmake "GUI" from $BLENDERBUILD as follows:
|
||||||
|
|
||||||
|
% ccmake $BLENDERSOURCE
|
||||||
|
|
||||||
|
A number of options appear which can be changed depending on your needs and
|
||||||
|
available dependencies (e.g. setting WITH_OPENEXR to OFF will disable support
|
||||||
|
for OpenEXR). It will also allow you to override default and detected paths
|
||||||
|
(e.g. Python directories) and compile and link flags. When you are satisfied
|
||||||
|
used ccmake to re-configure the build files and exit.
|
||||||
|
|
||||||
|
It is also possible to use the commandline of 'cmake' to override certain
|
||||||
|
of these settings.
|
||||||
|
|
||||||
|
5. Configuring the build after SVN updates
|
||||||
|
------------------------------------------
|
||||||
|
|
||||||
|
The $BLENDERBUILD directory maintains a file called CMakeCache.txt which
|
||||||
|
remembers the initial run's settings for subsequent generation runs. After
|
||||||
|
SVN updates that contain changes to the build system, rebuilding Blender will
|
||||||
|
automatically invoke CMake to regenerate the CMakeCache.txt and other files
|
||||||
|
as needed.
|
||||||
|
|
||||||
|
/Jacques Beaurain (jbinto)
|
||||||
|
|
||||||
193
doc/build_systems/scons-dev.txt
Normal file
193
doc/build_systems/scons-dev.txt
Normal file
@@ -0,0 +1,193 @@
|
|||||||
|
|
||||||
|
Internals of Blenders SCons scripts
|
||||||
|
===================================
|
||||||
|
|
||||||
|
Scope
|
||||||
|
------
|
||||||
|
This document describes the architecture of the SCons scripts for
|
||||||
|
Blender. An overview of available functionality and how to modify,
|
||||||
|
extend and maintain the system.
|
||||||
|
|
||||||
|
Audience
|
||||||
|
--------
|
||||||
|
This document is for developers who need to modify the system,
|
||||||
|
ie. add or remove new libraries, add new arguments for SCons, etc.
|
||||||
|
|
||||||
|
Files and their meaning
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
The main entry point for the build system is the SConstruct-file in
|
||||||
|
$BLENDERHOME. This file creates the first BlenderEnvironment to work
|
||||||
|
with, reads in options, and sets up some directory structures. Further
|
||||||
|
it defines some targets.
|
||||||
|
|
||||||
|
Platform-specific configurations are in $BLENDERHOME/config. The
|
||||||
|
filenames have the form (platform)-config.py, where platform one of:
|
||||||
|
|
||||||
|
* darwin
|
||||||
|
* linux
|
||||||
|
* win32-mingw
|
||||||
|
* win32-vc
|
||||||
|
|
||||||
|
The user can override options by creating a file
|
||||||
|
$BLENDERHOME/user-config.py. It can have any option from
|
||||||
|
(platform)-config.py. Options in this file will override the platform
|
||||||
|
defaults.
|
||||||
|
|
||||||
|
Much of the actual functionality can be found in the python scripts
|
||||||
|
in the directory $BLENDERHOME/build_files/scons/tools, with
|
||||||
|
Blender.py defining the bulk of the functionality. btools.py has some
|
||||||
|
helper functions, and bcolors.py is for the terminal
|
||||||
|
colors. mstoolkit.py and crossmingw.py are modules which set up SCons
|
||||||
|
for the MS VC++ 2003 toolkit and the cross-compile toolset for
|
||||||
|
compiling Windows binaries on Linux respectively. Note: the
|
||||||
|
cross-compile doesn't work yet for Blender, but is added in
|
||||||
|
preparation for having it work in the distant future.
|
||||||
|
|
||||||
|
BlenderEnvironment
|
||||||
|
------------------
|
||||||
|
|
||||||
|
The module Blender.py implements a BlenderEnvironment class, derived
|
||||||
|
from the SConsEnvironment of SCons. This is done to wrap some often
|
||||||
|
used functionality. The BlenderEnvironment offers two important
|
||||||
|
wrappers: BlenderProg() and BlenderLib(). The first one is used to
|
||||||
|
specify a binary to be built, the second one is used to specify what
|
||||||
|
static library is built from given sources.
|
||||||
|
|
||||||
|
Build a static library called "somelib". The system handles library
|
||||||
|
pre- and suffixes automatically, you don't need to bother yourself
|
||||||
|
with these details:
|
||||||
|
|
||||||
|
env = BlenderEnvironment(ENV = os.environ) # create an environment
|
||||||
|
env.BlenderLib(libname="somelib", sources=['list.c','with.c','sources.c'],
|
||||||
|
includes=['/list/with/include/paths', '.', '..'],
|
||||||
|
defines=['LIST_WITH', 'CPP_DEFINES', 'TO_USE'],
|
||||||
|
libtype=['blender', 'common'] # this is a list with libtypes. Normally you don't
|
||||||
|
# need to specify this, but if you encounter linking
|
||||||
|
# problems you may need this
|
||||||
|
priority=[10, 20] # Priorities, list as long as libtype, priority per type
|
||||||
|
compileflags=['/O2'] # List of compile flags needed for this particular library.
|
||||||
|
# used only in rare cases, like SOLID, qhull and Bullet
|
||||||
|
)
|
||||||
|
|
||||||
|
There should be no need to ever add an extra BlenderProg to the
|
||||||
|
existing ones in SConstruct, see that file for its use, and Blender.py
|
||||||
|
for its implementation.
|
||||||
|
|
||||||
|
The new system works so that using these wrappers, has all libraries
|
||||||
|
(and programs) register with a central repository. This means that
|
||||||
|
adding a new library is as easy as just creating the new SConscript
|
||||||
|
and making sure that it gets called properly. Linking and such will
|
||||||
|
then be handled automatically.
|
||||||
|
|
||||||
|
If you want that adding new source files for a certain library
|
||||||
|
is handled automatically, you can use the Glob() function from
|
||||||
|
the BlenderEnvironment to create lists of needed files. See
|
||||||
|
$BLENDERHOME/source/blender/src/SConscript for an example. Keep in
|
||||||
|
mind that this will add any new file that complies to the rule given
|
||||||
|
to the Glob() function. There are a few (external) libraries with
|
||||||
|
which this can't be used, because it'd take files that shouldn't be
|
||||||
|
compiled, and create subsequentially problems during the linking stage
|
||||||
|
(like SOLID, qhull, Bullet).
|
||||||
|
|
||||||
|
Linking order and priorities
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
As shown above, you can give a library a priority in a certain
|
||||||
|
group. If you need to make sure that a Blender library is linked
|
||||||
|
before or after another one, you can give it a priority. To debug
|
||||||
|
the priorities us BF_PRIORITYLIST=1 on the command-line while running
|
||||||
|
a build.
|
||||||
|
|
||||||
|
% scons BF_PRIORITYLIST=1
|
||||||
|
|
||||||
|
This will give a list with values suggested by the system. Make
|
||||||
|
changes to all SConscripts in question to reflect or change the
|
||||||
|
values given by this command. ALWAYS check this after adding a new
|
||||||
|
internal, external library or core library, and make sure there are
|
||||||
|
sane values. You can use large and negative numbers to test with,
|
||||||
|
but after you've got a working linking order, do change the system
|
||||||
|
to reflect BF_PRIORITYLIST values.
|
||||||
|
|
||||||
|
Also, if you find that a library needs to be given multiple times to
|
||||||
|
the linker, you can do that by giving a python list with the names
|
||||||
|
of the available library types. They are currently:
|
||||||
|
|
||||||
|
B.possible_types = ['core', 'common', 'blender', 'intern',
|
||||||
|
'international', 'game', 'game2',
|
||||||
|
'player', 'player2', 'system']
|
||||||
|
|
||||||
|
More groups can be added, but that should be carefully considered,
|
||||||
|
as it may lead to large-scale changes. The current amount of libraries
|
||||||
|
should suffice.
|
||||||
|
|
||||||
|
The central repository is utilised in the SConstruct in two
|
||||||
|
ways. Firstly, it is used to determine the order of all static
|
||||||
|
libraries to link into the main Blender executable. Secondly, it
|
||||||
|
is used to keep track of all built binaries and their location,
|
||||||
|
so that they can be properly copied to BF_INSTALLDIR.
|
||||||
|
|
||||||
|
The libraries can be fetched in their priority order with
|
||||||
|
create_blender_liblist from Blender.py, see the SConstruct on how
|
||||||
|
it is used.
|
||||||
|
|
||||||
|
The program repository is the global list program_list from
|
||||||
|
Blender.py. See SConstruct for its usage.
|
||||||
|
|
||||||
|
|
||||||
|
Adding a new option and libraries
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
Lets say we want to add WITH_BF_NEWLIB, which will
|
||||||
|
enable or disable a new feature library with sources in
|
||||||
|
$BLENDERHOME/source/blender/newlib. This 'newlib' needs external
|
||||||
|
headers from a 3rd party library '3rdparty'. For this we want to
|
||||||
|
add a set of options BF_3RDPARTY, BF_3RDPARTY_INC, BF_3RDPARTY_LIB,
|
||||||
|
BF_3RDPARTY_LIBPATH:
|
||||||
|
|
||||||
|
1) Add all mentiond options to all (platform)-config.py
|
||||||
|
files. WITH_BF_NEWLIB is a boolean option ('true', 'false'),
|
||||||
|
the rest are strings with paths and library names. See the
|
||||||
|
OpenEXR options for example.
|
||||||
|
|
||||||
|
2) Add all options to the argument checking function
|
||||||
|
validate_arguments() in btools.py. See again OpenEXR options
|
||||||
|
for example.
|
||||||
|
|
||||||
|
3) Add all options to the option reading function read_opts()
|
||||||
|
in btools.py. See again OpenEXR options for example. All default
|
||||||
|
values can be empty, as the actual default values are in the
|
||||||
|
(platform)-config.py files.
|
||||||
|
|
||||||
|
4) Add BF_3RDPARTY_LIB to the function setup_syslibs()
|
||||||
|
and BF_3RDPARTY_LIBPATH to the function setup_staticlibs()
|
||||||
|
in Blender.py
|
||||||
|
|
||||||
|
At this stage we have prepared all option setting and linking needs,
|
||||||
|
but we still need to add in the compiling of the 'newlib'.
|
||||||
|
|
||||||
|
5) Create a SConscript in $BLENDERHOME/source/blender/newlib. Look
|
||||||
|
at ie. $BLENDERHOME/source/blender/src/SConscript for
|
||||||
|
template. The new SConscript will register the new library
|
||||||
|
like so:
|
||||||
|
|
||||||
|
env.BlenderLib(libname='newlib', sources=sourcefiles, includes=incs) # the rest of the arguments get defaults = empty lists and values
|
||||||
|
|
||||||
|
6) Edit $BLENDERHOME/source/blender/SConscript with the following
|
||||||
|
addition:
|
||||||
|
|
||||||
|
if env['WITH_BF_NEWLIB'] == 1:
|
||||||
|
SConscript(['newlib/SConscript'])
|
||||||
|
|
||||||
|
After this you can see if this works by trying to build:
|
||||||
|
|
||||||
|
% scons WITH_BF_NEWLIB=1 # build with newlib
|
||||||
|
% scons WITH_BF_NEWLIB=0 # disable newlib
|
||||||
|
|
||||||
|
This is all what should be needed. Changing the library name doesn't
|
||||||
|
need changes elsewhere in the system, as it is handled automatically
|
||||||
|
with the central library repository.
|
||||||
|
|
||||||
|
Enjoy the new system!!
|
||||||
|
|
||||||
|
/Nathan Letwory (jesterKing)
|
||||||
227
doc/build_systems/scons.txt
Normal file
227
doc/build_systems/scons.txt
Normal file
@@ -0,0 +1,227 @@
|
|||||||
|
|
||||||
|
Blenders SCons build scripts
|
||||||
|
============================
|
||||||
|
|
||||||
|
Introduction
|
||||||
|
------------
|
||||||
|
|
||||||
|
Since the beginning of 2004 Blender has had the SCons system as a
|
||||||
|
build option. SCons is a Python-based, accurate build system. The
|
||||||
|
scripts that were implemented in the first iteration worked, but
|
||||||
|
the system grew quickly into such a state that maintaining it became
|
||||||
|
a nightmare, and adding new features was just horrible, leading to
|
||||||
|
many hacks without much sense in the overall structure.
|
||||||
|
|
||||||
|
The rewrite has been waiting for a long time. Jonathan Jacobs provided
|
||||||
|
a first overhaul of the scripts, which I used in the first phase of
|
||||||
|
the rewrite. To make the system as maintainable as possible I made
|
||||||
|
some radical changes, but thanks go to Jonathan for providing me
|
||||||
|
with the patch to get started.
|
||||||
|
|
||||||
|
This document describes the usage of the new SCons scripts. The
|
||||||
|
inner workings are described in scons-dev.txt.
|
||||||
|
|
||||||
|
Building Blender
|
||||||
|
----------------
|
||||||
|
|
||||||
|
To build Blender with the SCons scripts you need a full Python
|
||||||
|
install, version 2.4 or later (http://www.python.org). We already provide
|
||||||
|
a scons-local installation, which can be found in the scons/ subdirectory.
|
||||||
|
This document uses the scons-local installation for its examples.
|
||||||
|
|
||||||
|
For build instructions, including dependencies, consult the appropriate
|
||||||
|
section for your platform at
|
||||||
|
http://wiki.blender.org/index.php/Dev:Doc/Building_Blender. Note that for
|
||||||
|
windows many of these dependencies already come in the lib/windows module
|
||||||
|
from CVS.
|
||||||
|
|
||||||
|
In the base directory of the sources (from now on called $BLENDERHOME)
|
||||||
|
you'll see a file named SConstruct. This is the entry point for the
|
||||||
|
SCons build system. In a terminal, change to this directory. To just
|
||||||
|
build, start the SCons entry script on Windows (will be used for the remainder
|
||||||
|
of this document):
|
||||||
|
|
||||||
|
% python scons\scons.py
|
||||||
|
|
||||||
|
On a Unix-compatible system it would be
|
||||||
|
|
||||||
|
% python ./scons/scons.py
|
||||||
|
|
||||||
|
This will start the build process with default values. Depending
|
||||||
|
on your platform you may see color in your output (non-Windows
|
||||||
|
machines). In the the beginning an overview of targets and arguments
|
||||||
|
from the command-line is given, then all libraries and binaries to
|
||||||
|
build are configured.
|
||||||
|
|
||||||
|
The build uses BF_BUILDDIR to build into and BF_INSTALLDIR to finally copy
|
||||||
|
all needed files to get a proper setup. The BF_DOCDIR is used to generate
|
||||||
|
Blender Python documentation files to. These variables have default values
|
||||||
|
for every platform in
|
||||||
|
$BLENDERHOME/build_files/scons/config/(platform)-config.py. See the next
|
||||||
|
section of this document for how to customize these paths. After the build
|
||||||
|
successfully completes, you can find everything you need in BF_INSTALLDIR.
|
||||||
|
|
||||||
|
If you want to create the installer package of Blender on Windows you'll
|
||||||
|
need to install nullsoft scriptable install system from http://nsis.sf.net.
|
||||||
|
As an extra dependency, you need the MoreInfo plugin too. The creation of
|
||||||
|
the installer is tied into the build process and can be triggered with:
|
||||||
|
|
||||||
|
% python scons\scons.py nsis
|
||||||
|
|
||||||
|
|
||||||
|
Configuring the build
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
The default values for your platform can be found in the directory
|
||||||
|
$BLENDERHOME/build_files/scons/config. Your platform specific defaults are
|
||||||
|
in (platform)-config.py, where platform is one of:
|
||||||
|
|
||||||
|
- linux, for machines running Linux
|
||||||
|
- win32-vc, for Windows machines, compiling with a Microsoft compiler
|
||||||
|
- win32-mingw, for Windows machines, compiling with the MingW compiler
|
||||||
|
- darwin, for OS X machines
|
||||||
|
(TBD: add cygwin, solaris and freebsd support)
|
||||||
|
|
||||||
|
These files you will normally not change. If you need to override a
|
||||||
|
default value, make a file called $BLENDERHOME/user-config.py, and copy
|
||||||
|
settings from the build_files/scons/config/(platform)-config.py that you
|
||||||
|
want to change. Don't copy the entire file (unless explicitly stated in
|
||||||
|
the configuration file), because you may not get updated options you don't
|
||||||
|
change yourself, which may result in build errors. You should NEVER have
|
||||||
|
to modify $BLENDERHOME/build_files/scons/config/(platform)-config.py.
|
||||||
|
|
||||||
|
You can use BF_CONFIG argument to override the default user-config.py
|
||||||
|
check. This is just like the user-config.py, but just with another name:
|
||||||
|
|
||||||
|
% python scons\scons.py BF_CONFIG=myownsettings
|
||||||
|
|
||||||
|
If you want to quickly test a new setting, you can give the option
|
||||||
|
also on the command-line:
|
||||||
|
|
||||||
|
% python scons\scons.py BF_BUILDDIR=../mybuilddir WITH_BF_OPENEXR=0
|
||||||
|
|
||||||
|
This command sets the build directory to BF_BUILDDIR and disables
|
||||||
|
OpenEXR support.
|
||||||
|
|
||||||
|
If you need to know what can be set through the command-line, run
|
||||||
|
scons with -h:
|
||||||
|
|
||||||
|
% python scons\scons.py -h
|
||||||
|
|
||||||
|
This command will print a long list with settable options and what
|
||||||
|
every option means. Many of the default values will be empty, and
|
||||||
|
from a fresh checkout without a user-config.py the actual values
|
||||||
|
are the defaults as per $BLENDERHOME/config/(platform)-config.py
|
||||||
|
(unless you have overridden any of them in your
|
||||||
|
$BLENDERHOME/user-config.py).
|
||||||
|
|
||||||
|
Configuring the output
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
This rewrite features a cleaner output during the build process. If
|
||||||
|
you need to see the full command-line for compiles, then you can
|
||||||
|
change that behaviour. Also the use of colors can be changed:
|
||||||
|
|
||||||
|
% python scons\scons.py BF_FANCY=0
|
||||||
|
|
||||||
|
This will disable the use of colors.
|
||||||
|
|
||||||
|
% python scons\scons.py BF_QUIET=0
|
||||||
|
|
||||||
|
This will give the old, noisy output. Every command-line per
|
||||||
|
compile is printed out in its full glory. This is very useful when
|
||||||
|
debugging problems with compiling, because you can see what the
|
||||||
|
included paths are, what defines are given on the command-line,
|
||||||
|
what compiler switches are used, etc.
|
||||||
|
|
||||||
|
Compiling Only Some Libraries
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
Our implementation now has support for specifying a list of libraries that are
|
||||||
|
exclusively compiled, ignoring all other libraries. This is invoked
|
||||||
|
with the BF_QUICK arguments; for example:
|
||||||
|
|
||||||
|
% python scons\scons.py BF_QUICK=src,bf_blenkernel
|
||||||
|
|
||||||
|
Note that this not the same as passing a list of folders as in the
|
||||||
|
makefile's "quicky" command. In Scons, all of Blender's code modules
|
||||||
|
are in their own static library; this corresponds to one-lib-per-folder
|
||||||
|
in some cases (especially in blender/source/blender).
|
||||||
|
|
||||||
|
To obtain a list of the libraries, simple fire up scons and CTRL-C out once
|
||||||
|
it finishes configuring (and printing to the console) the library list.
|
||||||
|
|
||||||
|
Compiling Libraries With Debug Profiling
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
|
Scons has support for specifying a list of libraries that are compiled
|
||||||
|
with debug profiling enabled. This is implemented in two commands:
|
||||||
|
BF_QUICKDEBUG which is a command-line argument and BF_DEBUG_LIBS, which goes
|
||||||
|
in your user-config.py
|
||||||
|
|
||||||
|
BF_QUICKDEBUG is similar to BF_QUICK:
|
||||||
|
|
||||||
|
% python scons\scons.py BF_QUICKDEBUG=src,bf_blenkernel,some-other-lib
|
||||||
|
|
||||||
|
To use BF_DEBUG_LIBS, put something like the following in you user-config.py:
|
||||||
|
|
||||||
|
BF_DEBUG_LIBS = ['bf_blenlib', 'src', 'some_lib']
|
||||||
|
|
||||||
|
For instructions on how to find the names of the libraries (folders) you
|
||||||
|
wish to use, see the above section. Note that the command BF_DEBUG
|
||||||
|
(see below) will override these settings and compile ALL of Blender with
|
||||||
|
debug symbols. Also note that BF_QUICKDEBUG and BF_DEBUG_LIBS are combined;
|
||||||
|
for example, setting BF_QUICKDEBUG won't overwrite the contents of BF_DEBUG_LIBS.
|
||||||
|
|
||||||
|
Supported toolset
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
WINDOWS
|
||||||
|
|
||||||
|
* msvc, this is a full install of Microsoft Visual C++. You'll
|
||||||
|
likely have the .NET Framework SDK, Platform SDK and DX9 SDK
|
||||||
|
installed * mstoolkit, this is the free MS VC++ 2003 Toolkit. You
|
||||||
|
need to verify you have also the SDKs installed as mentioned
|
||||||
|
for msvc. * mingw, this is a minimal MingW install. TBD: write
|
||||||
|
proper instructions on getting needed packages.
|
||||||
|
|
||||||
|
On Windows with all of the three toolset installed you need to
|
||||||
|
specify what toolset to use
|
||||||
|
|
||||||
|
% python scons\scons.py BF_TOOLSET=msvc
|
||||||
|
% python scons\scons.py BF_TOOLSET=mingw
|
||||||
|
|
||||||
|
LINUX and OS X
|
||||||
|
|
||||||
|
Currently only the default toolsets are supported for these platforms,
|
||||||
|
so nothing special needs to be told to SCons when building. The
|
||||||
|
defaults should work fine in most cases.
|
||||||
|
|
||||||
|
Examples
|
||||||
|
--------
|
||||||
|
|
||||||
|
Build Blender with the defaults:
|
||||||
|
|
||||||
|
% python scons\scons.py
|
||||||
|
|
||||||
|
Build Blender, but disable OpenEXR support:
|
||||||
|
|
||||||
|
% python scons\scons.py WITH_BF_OPENEXR=0
|
||||||
|
|
||||||
|
Build Blender, enable debug symbols:
|
||||||
|
|
||||||
|
% python scons\scons.py BF_DEBUG=1
|
||||||
|
|
||||||
|
Build Blender, install to different directory:
|
||||||
|
|
||||||
|
% python scons\scons.py BF_INSTALLDIR=../myown/installdir
|
||||||
|
|
||||||
|
Build Blender in ../myown/builddir and install to ../myown/installdir:
|
||||||
|
|
||||||
|
% python scons\scons.py BF_BUILDDIR=../myown/builddir BF_INSTALLDIR=../myown/installdir
|
||||||
|
|
||||||
|
Clean BF_BUILDDIR:
|
||||||
|
|
||||||
|
% python scons\scons.py clean
|
||||||
|
|
||||||
|
/Nathan Letwory (jesterKing)
|
||||||
2428
doc/doxygen/Doxyfile
2428
doc/doxygen/Doxyfile
File diff suppressed because it is too large
Load Diff
@@ -11,10 +11,6 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** \defgroup curve_fit Curve Fitting Library
|
|
||||||
* \ingroup extern
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** \defgroup bullet Bullet Physics Library
|
/** \defgroup bullet Bullet Physics Library
|
||||||
* \ingroup extern
|
* \ingroup extern
|
||||||
* \see \ref bulletdoc
|
* \see \ref bulletdoc
|
||||||
@@ -10,14 +10,26 @@
|
|||||||
* \ingroup intern
|
* \ingroup intern
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \defgroup boolop boolop
|
||||||
|
* \ingroup intern
|
||||||
|
*/
|
||||||
|
|
||||||
/** \defgroup ctr container
|
/** \defgroup ctr container
|
||||||
* \ingroup intern
|
* \ingroup intern
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \defgroup decimation decimation
|
||||||
|
* \ingroup intern
|
||||||
|
*/
|
||||||
|
|
||||||
/** \defgroup elbeem elbeem
|
/** \defgroup elbeem elbeem
|
||||||
* \ingroup intern
|
* \ingroup intern
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \defgroup bsp bsp
|
||||||
|
* \ingroup intern
|
||||||
|
*/
|
||||||
|
|
||||||
/** \defgroup iksolver iksolver
|
/** \defgroup iksolver iksolver
|
||||||
* \ingroup intern
|
* \ingroup intern
|
||||||
*/
|
*/
|
||||||
@@ -38,7 +50,7 @@
|
|||||||
* \ingroup intern
|
* \ingroup intern
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** \defgroup eigen eigen
|
/** \defgroup opennl opennl
|
||||||
* \ingroup intern
|
* \ingroup intern
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
* These pages document the source code of blender.
|
* These pages document the source code of blender.
|
||||||
*
|
*
|
||||||
* \subsection implinks Important Links
|
* \subsection implinks Important Links
|
||||||
* - <a href="http://developer.blender.org">developer.blender.org</a> with bug tracker.
|
* - <a href="http://projects.blender.org">projects.blender.org</a> with <a href="http://projects.blender.org/tracker/index.php?group_id=9&atid=498">bug tracker</a>
|
||||||
* - <a href="http://wiki.blender.org/index.php/Dev:Contents">Development documents</a> on our wiki.
|
* - <a href="http://wiki.blender.org/index.php/Dev:Contents">Development documents</a> on our wiki.
|
||||||
*
|
*
|
||||||
* \subsection blother Other
|
* \subsection blother Other
|
||||||
@@ -11,6 +11,7 @@
|
|||||||
/** \defgroup bmesh BMesh
|
/** \defgroup bmesh BMesh
|
||||||
* \ingroup blender
|
* \ingroup blender
|
||||||
*/
|
*/
|
||||||
|
/** \defgroup texture Texturing */
|
||||||
/** \defgroup compositor Compositing */
|
/** \defgroup compositor Compositing */
|
||||||
|
|
||||||
/** \defgroup python Python
|
/** \defgroup python Python
|
||||||
@@ -92,48 +93,36 @@
|
|||||||
|
|
||||||
/* ================================ */
|
/* ================================ */
|
||||||
|
|
||||||
/** \defgroup blender Blender */
|
/** \defgroup blender blender */
|
||||||
|
|
||||||
/** \defgroup blt BlenTranslation
|
/** \defgroup blf blenfont
|
||||||
* \ingroup blender
|
* \ingroup blender
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** \defgroup blf BlenFont
|
/** \defgroup bke blenkernel
|
||||||
* \ingroup blender
|
* \ingroup blender
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** \defgroup bke BlenKernel
|
/** \defgroup bli blenlib
|
||||||
* \ingroup blender
|
* \ingroup blender
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** \defgroup bli BlenLib
|
/** \defgroup nodes nodes
|
||||||
* \ingroup blender
|
* \ingroup blender
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** \defgroup depsgraph Dependency Graph
|
/** \defgroup cmpnodes cmpnodes
|
||||||
* \ingroup blender
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** \defgroup bph Physics
|
|
||||||
* \ingroup blender
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** \defgroup nodes Nodes
|
|
||||||
* \ingroup blender
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** \defgroup cmpnodes Nodes (Compositor)
|
|
||||||
* \ingroup nodes
|
* \ingroup nodes
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** \defgroup shdnodes Nodes (Shader)
|
/** \defgroup shdnodes shdnodes
|
||||||
* \ingroup nodes
|
* \ingroup nodes
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** \defgroup texnodes Nodes (Texture)
|
/** \defgroup texnodes texnodes
|
||||||
* \ingroup nodes
|
* \ingroup nodes
|
||||||
*/
|
*/
|
||||||
/** \defgroup modifiers Object Modifiers
|
/** \defgroup modifiers modifiers
|
||||||
* \ingroup blender
|
* \ingroup blender
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -143,29 +132,29 @@
|
|||||||
* \ingroup blender
|
* \ingroup blender
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** \defgroup ikplugin IK Plugin
|
/** \defgroup ikplugin ikplugin
|
||||||
* \ingroup blender
|
* \ingroup blender
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** \defgroup DNA Struct DNA (File Format)
|
/** \defgroup DNA sDNA
|
||||||
* \ingroup blender data
|
* \ingroup blender data
|
||||||
*/
|
*/
|
||||||
/** \defgroup RNA RNA (Data API)
|
/** \defgroup RNA RNA
|
||||||
* \ingroup blender data
|
* \ingroup blender data
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** \defgroup blenloader Blend file IO
|
/** \defgroup blenloader .blend read and write functions
|
||||||
* \ingroup blender data
|
* \ingroup blender data
|
||||||
* \todo check if \ref blo and \ref blenloader groups can be
|
* \todo check if \ref blo and \ref blenloader groups can be
|
||||||
* merged in docs.
|
* merged in docs.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** \defgroup quicktime QuickTime
|
/** \defgroup quicktime quicktime
|
||||||
* \ingroup blender
|
* \ingroup blender
|
||||||
|
|
||||||
/** \defgroup gui GUI */
|
/** \defgroup gui GUI */
|
||||||
|
|
||||||
/** \defgroup wm Window Manager
|
/** \defgroup wm windowmanager
|
||||||
* \ingroup blender gui
|
* \ingroup blender gui
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -325,7 +314,7 @@
|
|||||||
* \ingroup gui
|
* \ingroup gui
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** \defgroup externformats External Formats */
|
/** \defgroup externformats external formats */
|
||||||
|
|
||||||
/** \defgroup collada COLLADA
|
/** \defgroup collada COLLADA
|
||||||
* \ingroup externformats
|
* \ingroup externformats
|
||||||
@@ -335,7 +324,7 @@
|
|||||||
* \ingroup externformats
|
* \ingroup externformats
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** \defgroup imbuf Image Buffer (ImBuf)
|
/** \defgroup imbuf IMage Buffer
|
||||||
* \ingroup blender
|
* \ingroup blender
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python
|
||||||
|
|
||||||
# ##### BEGIN GPL LICENSE BLOCK #####
|
# ##### BEGIN GPL LICENSE BLOCK #####
|
||||||
#
|
#
|
||||||
|
|||||||
132
doc/python_api/epy/IDProp.py
Normal file
132
doc/python_api/epy/IDProp.py
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
class IDGroup:
|
||||||
|
"""
|
||||||
|
The IDGroup Type
|
||||||
|
================
|
||||||
|
This type supports both iteration and the []
|
||||||
|
operator to get child ID properties.
|
||||||
|
|
||||||
|
You can also add new properties using the [] operator.
|
||||||
|
For example::
|
||||||
|
|
||||||
|
group['a float!'] = 0.0
|
||||||
|
group['an int!'] = 0
|
||||||
|
group['a string!'] = "hi!"
|
||||||
|
group['an array!'] = [0, 0, 1.0, 0]
|
||||||
|
|
||||||
|
group['a subgroup!] = {"float": 0.0, "an int": 1.0, "an array": [1, 2],
|
||||||
|
"another subgroup": {"a": 0.0, "str": "bleh"}}
|
||||||
|
|
||||||
|
Note that for arrays, the array type defaults to int unless a float is found
|
||||||
|
while scanning the template list; if any floats are found, then the whole
|
||||||
|
array is float. Note that double-precision floating point numbers are used for
|
||||||
|
python-created float ID properties and arrays (though the internal C api does
|
||||||
|
support single-precision floats, and the python code will read them).
|
||||||
|
|
||||||
|
You can also delete properties with the del operator. For example:
|
||||||
|
|
||||||
|
del group['property']
|
||||||
|
|
||||||
|
To get the type of a property, use the type() operator, for example::
|
||||||
|
|
||||||
|
if type(group['bleh']) == str: pass
|
||||||
|
|
||||||
|
To tell if the property is a group or array type, import the Blender.Types module and test
|
||||||
|
against IDGroupType and IDArrayType, like so::
|
||||||
|
|
||||||
|
from Blender.Types import IDGroupType, IDArrayType.
|
||||||
|
|
||||||
|
if type(group['bleghr']) == IDGroupType:
|
||||||
|
(do something)
|
||||||
|
|
||||||
|
@ivar name: The name of the property
|
||||||
|
@type name: string
|
||||||
|
"""
|
||||||
|
|
||||||
|
def pop(item):
|
||||||
|
"""
|
||||||
|
Pop an item from the group property.
|
||||||
|
@type item: string
|
||||||
|
@param item: The item name.
|
||||||
|
@rtype: can be dict, list, int, float or string.
|
||||||
|
@return: The removed property.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def update(updatedict):
|
||||||
|
"""
|
||||||
|
Updates items in the dict, similar to normal python
|
||||||
|
dictionary method .update().
|
||||||
|
@type updatedict: dict
|
||||||
|
@param updatedict: A dict of simple types to derive updated/new IDProperties from.
|
||||||
|
@rtype: None
|
||||||
|
@return: None
|
||||||
|
"""
|
||||||
|
|
||||||
|
def keys():
|
||||||
|
"""
|
||||||
|
Returns a list of the keys in this property group.
|
||||||
|
@rtype: list of strings.
|
||||||
|
@return: a list of the keys in this property group.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def values():
|
||||||
|
"""
|
||||||
|
Returns a list of the values in this property group.
|
||||||
|
|
||||||
|
Note that unless a value is itself a property group or an array, you
|
||||||
|
cannot change it by changing the values in this list, you must change them
|
||||||
|
in the parent property group.
|
||||||
|
|
||||||
|
For example,
|
||||||
|
|
||||||
|
group['some_property'] = new_value
|
||||||
|
|
||||||
|
. . .is correct, while,
|
||||||
|
|
||||||
|
values = group.values()
|
||||||
|
values[0] = new_value
|
||||||
|
|
||||||
|
. . .is wrong.
|
||||||
|
|
||||||
|
@rtype: list of strings.
|
||||||
|
@return: a list of the values in this property group.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def iteritems():
|
||||||
|
"""
|
||||||
|
Implements the python dictionary iteritmes method.
|
||||||
|
|
||||||
|
For example::
|
||||||
|
|
||||||
|
for k, v in group.iteritems():
|
||||||
|
print "Property name: " + k
|
||||||
|
print "Property value: " + str(v)
|
||||||
|
|
||||||
|
@rtype: an iterator that spits out items of the form [key, value]
|
||||||
|
@return: an iterator.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def convert_to_pyobject():
|
||||||
|
"""
|
||||||
|
Converts the entire property group to a purely python form.
|
||||||
|
|
||||||
|
@rtype: dict
|
||||||
|
@return: A python dictionary representing the property group
|
||||||
|
"""
|
||||||
|
|
||||||
|
class IDArray:
|
||||||
|
"""
|
||||||
|
The IDArray Type
|
||||||
|
================
|
||||||
|
|
||||||
|
@ivar type: returns the type of the array, can be either IDP_Int or IDP_Float
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __getitem__(index):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def __setitem__(index, value):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def __len__():
|
||||||
|
pass
|
||||||
|
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
"""
|
"""
|
||||||
Basic Sound Playback
|
Basic Sound Playback
|
||||||
++++++++++++++++++++
|
++++++++++++++++++++
|
||||||
|
|
||||||
This script shows how to use the classes: :class:`Device`, :class:`Factory` and
|
This script shows how to use the classes: :class:`Device`, :class:`Factory` and
|
||||||
:class:`Handle`.
|
:class:`Handle`.
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -20,15 +20,15 @@ constraint_type = 2
|
|||||||
physics_id_1 = object_1.getPhysicsId()
|
physics_id_1 = object_1.getPhysicsId()
|
||||||
physics_id_2 = object_2.getPhysicsId()
|
physics_id_2 = object_2.getPhysicsId()
|
||||||
|
|
||||||
# use bottom right edge of Object1 for hinge position
|
# Use bottom right edge of Object1 for hinge position
|
||||||
edge_position_x = 1.0
|
edge_position_x = 1.0
|
||||||
edge_position_y = 0.0
|
edge_position_y = 0.0
|
||||||
edge_position_z = -1.0
|
edge_position_z = -1.0
|
||||||
|
|
||||||
# rotate the pivot z axis about 90 degrees
|
# use Object1 y axis for angle to point hinge
|
||||||
edge_angle_x = 0.0
|
edge_angle_x = 0.0
|
||||||
edge_angle_y = 0.0
|
edge_angle_y = 1.0
|
||||||
edge_angle_z = 90.0
|
edge_angle_z = 0.0
|
||||||
|
|
||||||
# create an edge constraint
|
# create an edge constraint
|
||||||
constraints.createConstraint(physics_id_1, physics_id_2,
|
constraints.createConstraint(physics_id_1, physics_id_2,
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
"""
|
"""
|
||||||
Texture Replacement
|
Texture Replacement
|
||||||
+++++++++++++++++++
|
+++++++++++++++++++
|
||||||
|
|
||||||
Example of how to replace a texture in game with an external image.
|
Example of how to replace a texture in game with an external image.
|
||||||
``createTexture()`` and ``removeTexture()`` are to be called from a
|
createTexture() and removeTexture() are to be called from a module Python
|
||||||
module Python Controller.
|
Controller.
|
||||||
"""
|
"""
|
||||||
from bge import logic
|
from bge import logic
|
||||||
from bge import texture
|
from bge import texture
|
||||||
|
|||||||
@@ -1,237 +0,0 @@
|
|||||||
"""
|
|
||||||
Video Capture with DeckLink
|
|
||||||
+++++++++++++++++++++++++++
|
|
||||||
Video frames captured with DeckLink cards have pixel formats that are generally not directly
|
|
||||||
usable by OpenGL, they must be processed by a shader. The three shaders presented here should
|
|
||||||
cover all common video capture cases.
|
|
||||||
|
|
||||||
This file reflects the current video transfer method implemented in the Decklink module:
|
|
||||||
whenever possible the video images are transferred as float texture because this is more
|
|
||||||
compatible with GPUs. Of course, only the pixel formats that have a correspondant GL format
|
|
||||||
can be transferred as float. Look for fg_shaders in this file for an exhaustive list.
|
|
||||||
|
|
||||||
Other pixel formats will be transferred as 32 bits integer red-channel texture but this
|
|
||||||
won't work with certain GPU (Intel GMA); the corresponding shaders are not shown here.
|
|
||||||
However, it should not be necessary to use any of them as the list below covers all practical
|
|
||||||
cases of video capture with all types of Decklink product.
|
|
||||||
|
|
||||||
In other words, only use one of the pixel format below and you will be fine. Note that depending
|
|
||||||
on the video stream, only certain pixel formats will be allowed (others will throw an exception).
|
|
||||||
For example, to capture a PAL video stream, you must use one of the YUV formats.
|
|
||||||
|
|
||||||
To find which pixel format is suitable for a particular video stream, use the 'Media Express'
|
|
||||||
utility that comes with the Decklink software : if you see the video in the 'Log and Capture'
|
|
||||||
Window, you have selected the right pixel format and you can use the same in Blender.
|
|
||||||
|
|
||||||
Notes: * these shaders only decode the RGB channel and set the alpha channel to a fixed
|
|
||||||
value (look for color.a = ). It's up to you to add postprocessing to the color.
|
|
||||||
* these shaders are compatible with 2D and 3D video stream
|
|
||||||
"""
|
|
||||||
import bge
|
|
||||||
from bge import logic
|
|
||||||
from bge import texture as vt
|
|
||||||
|
|
||||||
# The default vertex shader, because we need one
|
|
||||||
#
|
|
||||||
VertexShader = """
|
|
||||||
#version 130
|
|
||||||
void main()
|
|
||||||
{
|
|
||||||
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
|
|
||||||
gl_TexCoord[0] = gl_MultiTexCoord0;
|
|
||||||
}
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
||||||
# For use with RGB video stream: the pixel is directly usable
|
|
||||||
#
|
|
||||||
FragmentShader_R10l = """
|
|
||||||
#version 130
|
|
||||||
uniform sampler2D tex;
|
|
||||||
// stereo = 1.0 if 2D image, =0.5 if 3D (left eye below, right eye above)
|
|
||||||
uniform float stereo;
|
|
||||||
// eye = 0.0 for the left eye, 0.5 for the right eye
|
|
||||||
uniform float eye;
|
|
||||||
|
|
||||||
void main(void)
|
|
||||||
{
|
|
||||||
vec4 color;
|
|
||||||
float tx, ty;
|
|
||||||
tx = gl_TexCoord[0].x;
|
|
||||||
ty = eye+gl_TexCoord[0].y*stereo;
|
|
||||||
color = texture(tex, vec2(tx,ty));
|
|
||||||
color.a = 0.7;
|
|
||||||
gl_FragColor = color;
|
|
||||||
}
|
|
||||||
"""
|
|
||||||
|
|
||||||
# For use with YUV video stream
|
|
||||||
#
|
|
||||||
FragmentShader_2vuy = """
|
|
||||||
#version 130
|
|
||||||
uniform sampler2D tex;
|
|
||||||
// stereo = 1.0 if 2D image, =0.5 if 3D (left eye below, right eye above)
|
|
||||||
uniform float stereo;
|
|
||||||
// eye = 0.0 for the left eye, 0.5 for the right eye
|
|
||||||
uniform float eye;
|
|
||||||
|
|
||||||
void main(void)
|
|
||||||
{
|
|
||||||
vec4 color;
|
|
||||||
float tx, ty, width, Y, Cb, Cr;
|
|
||||||
int px;
|
|
||||||
tx = gl_TexCoord[0].x;
|
|
||||||
ty = eye+gl_TexCoord[0].y*stereo;
|
|
||||||
width = float(textureSize(tex, 0).x);
|
|
||||||
color = texture(tex, vec2(tx, ty));
|
|
||||||
px = int(floor(fract(tx*width)*2.0));
|
|
||||||
switch (px) {
|
|
||||||
case 0:
|
|
||||||
Y = color.g;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
Y = color.a;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
Y = (Y - 0.0625) * 1.168949772;
|
|
||||||
Cb = (color.b - 0.0625) * 1.142857143 - 0.5;
|
|
||||||
Cr = (color.r - 0.0625) * 1.142857143 - 0.5;
|
|
||||||
color.r = Y + 1.5748 * Cr;
|
|
||||||
color.g = Y - 0.1873 * Cb - 0.4681 * Cr;
|
|
||||||
color.b = Y + 1.8556 * Cb;
|
|
||||||
color.a = 0.7;
|
|
||||||
gl_FragColor = color;
|
|
||||||
}
|
|
||||||
"""
|
|
||||||
|
|
||||||
# For use with high resolution YUV
|
|
||||||
#
|
|
||||||
FragmentShader_v210 = """
|
|
||||||
#version 130
|
|
||||||
uniform sampler2D tex;
|
|
||||||
// stereo = 1.0 if 2D image, =0.5 if 3D (left eye below, right eye above)
|
|
||||||
uniform float stereo;
|
|
||||||
// eye = 0.0 for the left eye, 0.5 for the right eye
|
|
||||||
uniform float eye;
|
|
||||||
|
|
||||||
void main(void)
|
|
||||||
{
|
|
||||||
vec4 color, color1, color2, color3;
|
|
||||||
int px;
|
|
||||||
float tx, ty, width, sx, dx, bx, Y, Cb, Cr;
|
|
||||||
tx = gl_TexCoord[0].x;
|
|
||||||
ty = eye+gl_TexCoord[0].y*stereo;
|
|
||||||
width = float(textureSize(tex, 0).x);
|
|
||||||
// to sample macro pixels (6 pixels in 4 words)
|
|
||||||
sx = tx*width*0.25+0.01;
|
|
||||||
// index of display pixel in the macro pixel 0..5
|
|
||||||
px = int(floor(fract(sx)*6.0));
|
|
||||||
// increment as we sample the macro pixel
|
|
||||||
dx = 1.0/width;
|
|
||||||
// base x coord of macro pixel
|
|
||||||
bx = (floor(sx)+0.01)*dx*4.0;
|
|
||||||
color = texture(tex, vec2(bx, ty));
|
|
||||||
color1 = texture(tex, vec2(bx+dx, ty));
|
|
||||||
color2 = texture(tex, vec2(bx+dx*2.0, ty));
|
|
||||||
color3 = texture(tex, vec2(bx+dx*3.0, ty));
|
|
||||||
switch (px) {
|
|
||||||
case 0:
|
|
||||||
case 1:
|
|
||||||
Cb = color.b;
|
|
||||||
Cr = color.r;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
case 3:
|
|
||||||
Cb = color1.g;
|
|
||||||
Cr = color2.b;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
Cb = color2.r;
|
|
||||||
Cr = color3.g;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
switch (px) {
|
|
||||||
case 0:
|
|
||||||
Y = color.g;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
Y = color1.b;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
Y = color1.r;
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
Y = color2.g;
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
Y = color3.b;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
Y = color3.r;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
Y = (Y - 0.0625) * 1.168949772;
|
|
||||||
Cb = (Cb - 0.0625) * 1.142857143 - 0.5;
|
|
||||||
Cr = (Cr - 0.0625) * 1.142857143 - 0.5;
|
|
||||||
color.r = Y + 1.5748 * Cr;
|
|
||||||
color.g = Y - 0.1873 * Cb - 0.4681 * Cr;
|
|
||||||
color.b = Y + 1.8556 * Cb;
|
|
||||||
color.a = 0.7;
|
|
||||||
gl_FragColor = color;
|
|
||||||
}
|
|
||||||
"""
|
|
||||||
|
|
||||||
# The exhausitve list of pixel formats that are transferred as float texture
|
|
||||||
# Only use those for greater efficiency and compatiblity.
|
|
||||||
#
|
|
||||||
fg_shaders = {
|
|
||||||
'2vuy' :FragmentShader_2vuy,
|
|
||||||
'8BitYUV' :FragmentShader_2vuy,
|
|
||||||
'v210' :FragmentShader_v210,
|
|
||||||
'10BitYUV' :FragmentShader_v210,
|
|
||||||
'8BitBGRA' :FragmentShader_R10l,
|
|
||||||
'BGRA' :FragmentShader_R10l,
|
|
||||||
'8BitARGB' :FragmentShader_R10l,
|
|
||||||
'10BitRGBXLE':FragmentShader_R10l,
|
|
||||||
'R10l' :FragmentShader_R10l
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# Helper function to attach a pixel shader to the material that receives the video frame.
|
|
||||||
#
|
|
||||||
|
|
||||||
def config_video(obj, format, pixel, is3D=False, mat=0, card=0):
|
|
||||||
if pixel not in fg_shaders:
|
|
||||||
raise('Unsuported shader')
|
|
||||||
shader = obj.meshes[0].materials[mat].getShader()
|
|
||||||
if shader is not None and not shader.isValid():
|
|
||||||
shader.setSource(VertexShader, fg_shaders[pixel], True)
|
|
||||||
shader.setSampler('tex', 0)
|
|
||||||
shader.setUniformEyef("eye")
|
|
||||||
shader.setUniform1f("stereo", 0.5 if is3D else 1.0)
|
|
||||||
tex = vt.Texture(obj, mat)
|
|
||||||
tex.source = vt.VideoDeckLink(format + "/" + pixel + ("/3D" if is3D else ""), card)
|
|
||||||
print("frame rate: ", tex.source.framerate)
|
|
||||||
tex.source.play()
|
|
||||||
obj["video"] = tex
|
|
||||||
|
|
||||||
#
|
|
||||||
# Attach this function to an object that has a material with texture
|
|
||||||
# and call it once to initialize the object
|
|
||||||
#
|
|
||||||
def init(cont):
|
|
||||||
# config_video(cont.owner, 'HD720p5994', '8BitBGRA')
|
|
||||||
# config_video(cont.owner, 'HD720p5994', '8BitYUV')
|
|
||||||
# config_video(cont.owner, 'pal ', '10BitYUV')
|
|
||||||
config_video(cont.owner, 'pal ', '8BitYUV')
|
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# To be called on every frame
|
|
||||||
#
|
|
||||||
def play(cont):
|
|
||||||
obj = cont.owner
|
|
||||||
video = obj.get("video")
|
|
||||||
if video is not None:
|
|
||||||
video.refresh(True)
|
|
||||||
@@ -1,8 +1,7 @@
|
|||||||
"""
|
"""
|
||||||
Basic Video Playback
|
Basic Video Playback
|
||||||
++++++++++++++++++++
|
++++++++++++++++++++
|
||||||
Example of how to replace a texture in game with a video. It needs to run
|
Example of how to replace a texture in game with a video. It needs to run everyframe
|
||||||
everyframe.
|
|
||||||
"""
|
"""
|
||||||
import bge
|
import bge
|
||||||
from bge import texture
|
from bge import texture
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
"""
|
"""
|
||||||
Basic Handler Example
|
Basic Handler Example
|
||||||
+++++++++++++++++++++
|
+++++++++++++++++++++
|
||||||
|
|
||||||
This script shows the most simple example of adding a handler.
|
This script shows the most simple example of adding a handler.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ Intro
|
|||||||
-----
|
-----
|
||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
|
|
||||||
Most of this object should only be useful if you actually manipulate i18n stuff from Python.
|
Most of this object should only be useful if you actually manipulate i18n stuff from Python.
|
||||||
If you are a regular addon, you should only bother about :const:`contexts` member,
|
If you are a regular addon, you should only bother about :const:`contexts` member,
|
||||||
and the :func:`register`/:func:`unregister` functions! The :func:`pgettext` family of functions
|
and the :func:`register`/:func:`unregister` functions! The :func:`pgettext` family of functions
|
||||||
@@ -13,12 +12,12 @@ Intro
|
|||||||
| ``{locale: {msg_key: msg_translation, ...}, ...}``
|
| ``{locale: {msg_key: msg_translation, ...}, ...}``
|
||||||
| where:
|
| where:
|
||||||
|
|
||||||
- locale is either a lang iso code (e.g. ``fr``), a lang+country code (e.g. ``pt_BR``),
|
* locale is either a lang iso code (e.g. ``fr``), a lang+country code (e.g. ``pt_BR``),
|
||||||
a lang+variant code (e.g. ``sr@latin``), or a full code (e.g. ``uz_UZ@cyrilic``).
|
a lang+variant code (e.g. ``sr@latin``), or a full code (e.g. ``uz_UZ@cyrilic``).
|
||||||
- msg_key is a tuple (context, org message) - use, as much as possible, the predefined :const:`contexts`.
|
* msg_key is a tuple (context, org message) - use, as much as possible, the predefined :const:`contexts`.
|
||||||
- msg_translation is the translated message in given language!
|
* msg_translation is the translated message in given language!
|
||||||
|
|
||||||
Then, call ``bpy.app.translations.register(__name__, your_dict)`` in your ``register()`` function, and
|
Then, call ``bpy.app.translations.register(__name__, your_dict)`` in your ``register()`` function, and \n"
|
||||||
``bpy.app.translations.unregister(__name__)`` in your ``unregister()`` one.
|
``bpy.app.translations.unregister(__name__)`` in your ``unregister()`` one.
|
||||||
|
|
||||||
The ``Manage UI translations`` addon has several functions to help you collect strings to translate, and
|
The ``Manage UI translations`` addon has several functions to help you collect strings to translate, and
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user