Compare commits

..

86 Commits

Author SHA1 Message Date
189c2e9277 Merge branch 'master' into soc-2014-viewport_context 2014-10-07 10:39:17 -05:00
771bad9c6a Merge branch 'master' into soc-2014-viewport_context 2014-09-17 09:54:33 +10:00
3cdfea119d Minor fix in GLX logic 2014-09-01 17:12:03 +02:00
f0653c3d3f Merge branch 'master' into soc-2014-viewport_context
Also fix scons issues with SDL. There is still a linking problem
somewhere but i expect this is an issue in master as well.

Conflicts:
	intern/cycles/SConscript
	intern/ghost/CMakeLists.txt
	intern/ghost/intern/GHOST_WindowX11.cpp
	source/blender/nodes/CMakeLists.txt
2014-09-01 15:38:22 +02:00
a8d2a6faf3 GLX and WGL should now build when using WITH_SYSTEM_GLEW=ON or WITH_GLEW_ES=OFF 2014-08-03 13:38:08 -05:00
da426c10ee Merge branch 'master' into soc-2014-viewport_context 2014-08-03 11:38:02 -05:00
563b07fd93 Updated extern/glew GLEW to the latest (1.10.0) 2014-08-02 08:24:16 -05:00
5b7d72a81a missing semicolon 2014-08-02 07:05:10 -05:00
0e0dd33e4c Revert "missing semicolon"
This reverts commit 1053539f4d.
2014-08-02 07:03:15 -05:00
1053539f4d missing semicolon 2014-08-02 06:38:47 -05:00
110f686560 added GPU_glew.h to CMakeLists.txt 2014-08-02 06:32:18 -05:00
5907b59138 made GLEW_CHK extern again (ContextWGL wasn't using it and for some reason I assumed the other contexts didn't need it either) 2014-08-02 06:27:04 -05:00
cafeb1923b Merge branch 'master' into soc-2014-viewport_context
Conflicts:
	intern/ghost/intern/GHOST_WindowWin32.cpp
2014-08-02 18:54:54 +10:00
f6ebc9835e Remove GLEW_CHK - its not defined 2014-08-02 15:56:02 +10:00
cf8a196672 GLEW_CHK doesn't need to be extern 2014-08-01 10:22:02 -05:00
835fa5e001 * added new headers to CMakeLists
* shouldn't be a need actually to disable deprecated name mangling
2014-08-01 10:01:26 -05:00
c5fd08803b * moving the glew symbolic constant stuff from GPU_glew.h to glew-mx
* added header that catches deprecated OpenGL function names
2014-08-01 07:59:30 -05:00
bd7623f197 replaced mx macros with stubs (like previous commits in this area it is meant to reduce the noise in the next big patch review) 2014-07-31 09:16:19 -05:00
29edd88f37 this solves a couple of missing symbols when linking cycles standalong WITH_GL_EGL, but unless it is linked with a GLUT that uses EGL it isn't likely to actually work... 2014-07-31 09:14:52 -05:00
72acb1ea30 Merge branch 'soc-2014-viewport_context' of git.blender.org:blender into soc-2014-viewport_context 2014-07-31 06:10:31 -05:00
77b4eb667b moved bf_intern_glew_mx to setup_linklibs 2014-07-31 06:09:58 -05:00
2369de1d62 Quiet compile warning 2014-07-31 20:29:34 +10:00
07c3d98196 fixes linking problems with cycles standalone 2014-07-31 05:13:59 -05:00
70df122693 this should fix linking errors when trying to use EGL 2014-07-31 05:13:22 -05:00
0c05f6eee3 Made glew-mx more easily extendable by creating a MXContext struct to put additional data in.
Renamed the mx functions to more closely match their analogs in other systems.
mxCreateContext now also calls glewInit
2014-07-31 05:11:25 -05:00
8628d008be Add Opengl include (same as master)
without this freebsd fails since OpenGL is in /usr/local/include
2014-07-30 21:05:49 +10:00
4d35731bcb Minor improvements to finding opengles libs 2014-07-30 20:48:28 +10:00
7fe4b23a98 Add c++ guarded alloc define to GHOST_Context 2014-07-29 13:46:32 +10:00
c36fb0f4dc Warning cleanup and remove unused function 2014-07-29 06:57:39 +10:00
c8625b8ea4 Merge branch 'soc-2014-viewport_context' of git.blender.org:blender into soc-2014-viewport_context 2014-07-28 15:37:44 -05:00
034c724987 added ifdefs for WITH_GLEW_MX to ContextWGL 2014-07-28 15:35:36 -05:00
1fb9cff6d0 fixed some errors caught by gcc and clang and added ifdefs for WITH_GLEW_MX 2014-07-28 15:35:13 -05:00
9e2fa35dea fixes to some misplaced ifdefs in GHOST_ContextGLX 2014-07-28 15:34:23 -05:00
f53801306e basic EGL types so that glew-es compiles on OSX 2014-07-28 15:32:42 -05:00
e241976632 fixed so that linking with libGLESv2 or libGL is based on WITH_GL_PROFILE_* and linking with libEGL is determined by WITH_GL_EGL 2014-07-28 15:32:06 -05:00
532d9a64e5 Fix for tests in X11 2014-07-29 04:57:56 +10:00
f72aa2c64b Merge branch 'soc-2014-viewport_context' of git.blender.org:blender into soc-2014-viewport_context 2014-07-28 13:45:08 -05:00
8b96d6a542 removed support for building with GLX on OSX 2014-07-28 13:44:48 -05:00
9f3f5cb03e Support for building without glew-mx on X11 2014-07-29 04:32:12 +10:00
13cfd0f607 Fix for building with system glew 2014-07-29 04:00:22 +10:00
8cbfc4f370 Merge branch 'master' into soc-2014-viewport_context
Conflicts:
	CMakeLists.txt
2014-07-29 03:58:04 +10:00
9add165373 Add glew-mx defines 2014-07-28 03:16:51 +10:00
3538836028 Remove direct glew include 2014-07-28 03:01:44 +10:00
ded4f115cf Error in last commit 2014-07-28 02:56:57 +10:00
37d5163d87 revert changes to external glew-mx defines 2014-07-28 02:51:10 +10:00
229761accd Merge branch 'soc-2014-viewport_context' of git.blender.org:blender into soc-2014-viewport_context 2014-07-27 11:33:14 -05:00
360dc0f0c2 fix for disabling WITH_GLEW_MX 2014-07-27 11:30:52 -05:00
df2fa56861 fix for 64-bit windows 2014-07-27 11:30:24 -05:00
fbbeaebe47 Style edits 2014-07-28 01:10:45 +10:00
29c7f17e50 Merge branch 'master' into soc-2014-viewport_context
Conflicts:
	intern/ghost/intern/GHOST_SystemWin32.cpp
	intern/ghost/intern/GHOST_WindowWin32.cpp
2014-07-27 13:59:41 +10:00
e134cff6ae Rename GLEW_MX -> WITH_GLEW_MX define to match similar defines
Also minor edits for glew-mx docstring.
2014-07-27 06:18:26 +10:00
66d81bd0da edited glew-mx documentation (this history is going to get squashed anyway right?) 2014-07-26 13:38:41 -05:00
744cac932c cleaned up and simplified glew-mx.c 2014-07-26 13:29:44 -05:00
49479f4840 added documentation explaining purpose of glew-mx 2014-07-26 13:26:30 -05:00
028fca8ba3 some cleanup of SDL context 2014-07-26 02:43:35 -05:00
a55b71b437 Style cleanup & no need for static vars here 2014-07-26 15:07:51 +10:00
633dbd01d7 Initial GHOST_ContextSDL
Works with multiple windows & shared context, but may need some further changes to be considered finished.
2014-07-26 15:00:22 +10:00
9c9efe7a36 Move private functions into own header (not to be used outside of GPU code). 2014-07-26 12:36:56 +10:00
e2522f46e8 Cleanup: minor edits 2014-07-26 12:27:21 +10:00
d72bbd3365 Merge branch 'master' into soc-2014-viewport_context 2014-07-25 21:07:12 -05:00
3ff7b8fd9c SCons support for Ghost context refactor
Tested on OSX
Only tested the default options and did not implement code needed to link with EGL, but that can be done later
2014-07-25 20:57:33 -05:00
b57ef11e3d there is no reason to not release native handles on OSX, so releaseNativeHandles should always succeed 2014-07-25 20:54:57 -05:00
9c6f1bbcde removed functionally dead GHOST_HACK_getFirstFile from GPG_ghost 2014-07-25 20:53:05 -05:00
31d6ffcef8 Merge branch 'soc-2014-viewport_context' of git.blender.org:blender into soc-2014-viewport_context
Conflicts:
	source/blender/gpu/intern/gpu_select.c
2014-07-25 01:10:26 -05:00
c2e01bb8dd Merge branch 'master' into soc-2014-viewport_context
Conflicts:
	CMakeLists.txt
2014-07-25 14:39:56 +10:00
d86efb2cef Merge branch 'master' into soc-2014-viewport_context 2014-07-25 14:13:57 +10:00
2c2e88ef47 changed glew.h include to GPU_glew.h include in GPU_select.c 2014-07-24 22:26:09 -05:00
36f2284a9e removed a duplicate gpu include directory in editor/armature/CMakeLists.txt that was added by a merge 2014-07-24 12:27:25 -05:00
ff179051db Cleanup: whitespace, also only keep file descriptions in cpp files 2014-07-25 02:42:59 +10:00
21a992150a Remove _ from _CASE_CODE_RETURN_STR, keep that for internal defines 2014-07-24 22:58:34 +10:00
6c450f57db Cleanup: whitespace 2014-07-24 22:56:58 +10:00
64f9559115 Cleanup: line-length and header guards 2014-07-24 22:37:29 +10:00
c005ef9fe7 Cleanup: style 2014-07-24 22:19:29 +10:00
9cdc6c75f3 Merge branch 'master' into soc-2014-viewport_context
Conflicts:
	intern/ghost/intern/GHOST_Window.cpp
	intern/ghost/intern/GHOST_WindowX11.cpp
2014-07-24 21:46:16 +10:00
e9b092ce1e Cleanup: sync with master 2014-07-24 19:03:08 +10:00
e9196291be Cleanup (sync edits with master) 2014-07-24 18:53:48 +10:00
b477e670c2 Replace if -> ifdef, also some code-style 2014-07-24 18:35:30 +10:00
60cef1a6cb remove stdlib include from glew-mx & ensure bad args aren't passed into mxSetContext, mxDestroyContext 2014-07-24 18:23:00 +10:00
dac03fce6e Cleanup and some changes needed to build on linux 2014-07-24 18:20:11 +10:00
abf52c8a8c Merge branch 'master' into soc-2014-viewport_context 2014-07-24 18:06:19 +10:00
007738cddc Merge branch 'master' into soc-2014-viewport_context 2014-07-24 02:17:18 -05:00
e7c6245489 setTitle should not be called until the window is valid
note: X11 and WGL do not do as extensive assertions to check if window is valid, so this only caused a problem on OSX
2014-07-24 02:10:59 -05:00
446fa8e097 clearing the screen is not visible unless there is a buffer swap. also factored out the GL clear code into a single function 2014-07-24 02:07:59 -05:00
93de165f5d removed options for XInput and XF86Vidmode on OSX because they are not available for XQuartz 2014-07-24 02:05:00 -05:00
8387bfd9c6 fix X11 error where current context was not set for window before calling swap buffers 2014-07-24 02:03:29 -05:00
5f2ce2cd51 [Ghost Context Refactor] initial commit based on code review of https://developer.blender.org/D643 2014-07-22 20:29:44 -05:00
3066 changed files with 94378 additions and 252582 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -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
@@ -57,10 +52,6 @@ ifneq "$(findstring debug, $(MAKECMDGOALS))" ""
BUILD_DIR:=$(BUILD_DIR)_debug BUILD_DIR:=$(BUILD_DIR)_debug
BUILD_TYPE:=Debug BUILD_TYPE:=Debug
endif endif
ifneq "$(findstring full, $(MAKECMDGOALS))" ""
BUILD_DIR:=$(BUILD_DIR)_full
BUILD_CMAKE_ARGS:=$(BUILD_CMAKE_ARGS) -C"$(BLENDER_DIR)/build_files/cmake/config/blender_full.cmake"
endif
ifneq "$(findstring lite, $(MAKECMDGOALS))" "" ifneq "$(findstring lite, $(MAKECMDGOALS))" ""
BUILD_DIR:=$(BUILD_DIR)_lite BUILD_DIR:=$(BUILD_DIR)_lite
BUILD_CMAKE_ARGS:=$(BUILD_CMAKE_ARGS) -C"$(BLENDER_DIR)/build_files/cmake/config/blender_lite.cmake" BUILD_CMAKE_ARGS:=$(BUILD_CMAKE_ARGS) -C"$(BLENDER_DIR)/build_files/cmake/config/blender_lite.cmake"
@@ -70,7 +61,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 +72,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 -a | grep "hw.ncpu" | cut -d" " -f3) endif
endif ifeq ($(OS), FreeBSD)
ifeq ($(OS), FreeBSD) NPROCS:=$(shell sysctl -a | grep "hw.ncpu" | cut -d" " -f2 )
NPROCS:=$(shell sysctl -a | grep "hw.ncpu" | cut -d" " -f2 ) endif
endif ifeq ($(OS), NetBSD)
ifeq ($(OS), NetBSD) NPROCS:=$(shell sysctl -a | grep "hw.ncpu" | cut -d" " -f2 )
NPROCS:=$(shell sysctl -a | grep "hw.ncpu" | cut -d" " -f2 )
endif
endif endif
@@ -120,16 +109,16 @@ endif
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Build Blender # Build Blender
all: FORCE all:
@echo @echo
@echo Configuring Blender ... @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 ...
@@ -140,7 +129,6 @@ all: FORCE
@echo @echo
debug: all debug: all
full: all
lite: all lite: all
cycles: all cycles: all
headless: all headless: all
@@ -149,17 +137,16 @@ bpy: all
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Configuration (save some cd'ing around) # Configuration (save some cd'ing around)
config: FORCE config:
$(CMAKE_CONFIG_TOOL) "$(BUILD_DIR)" $(CMAKE_CONFIG_TOOL) "$(BUILD_DIR)"
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Help for build targets # Help for build targets
help: FORCE help:
@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"
@echo " * full - enable all supported dependencies & options"
@echo " * lite - disable non essential features for a smaller binary and faster build" @echo " * lite - disable non essential features for a smaller binary and faster build"
@echo " * headless - build without an interface (renderfarm or server automation)" @echo " * headless - build without an interface (renderfarm or server automation)"
@echo " * cycles - build Cycles standalone only, without Blender" @echo " * cycles - build Cycles standalone only, without Blender"
@@ -178,7 +165,7 @@ 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)"
@@ -208,33 +195,23 @@ 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"
@echo " * doc_dna - generate blender file format reference" @echo " * doc_dna - generate blender file format reference"
@echo " * doc_man - generate manpage" @echo " * doc_man - generate manpage"
@echo "" @echo ""
@echo "Information"
@echo " * help - this help message"
@echo " * help_features - show a list of optional features when building"
@echo ""
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Packages # Packages
# #
package_debian: FORCE package_debian:
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:
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:
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"
@@ -242,35 +219,35 @@ package_archive: FORCE
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Tests # Tests
# #
test: FORCE test:
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:
$(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:
$(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:
$(PYTHON) tests/check_deprecated.py python3 tests/check_deprecated.py
test_style_c: FORCE test_style_c:
# 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:
# 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" \
@@ -280,18 +257,18 @@ test_style_c_qtc: FORCE
@echo "written: test_style.tasks" @echo "written: test_style.tasks"
test_style_osl: FORCE test_style_osl:
# 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:
# 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" \
@@ -303,13 +280,13 @@ test_style_osl_qtc: FORCE
# Project Files # Project Files
# #
project_qtcreator: FORCE project_qtcreator:
$(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:
$(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:
cmake -G"Eclipse CDT4 - Unix Makefiles" -H"$(BLENDER_DIR)" -B"$(BUILD_DIR)" cmake -G"Eclipse CDT4 - Unix Makefiles" -H"$(BLENDER_DIR)" -B"$(BUILD_DIR)"
@@ -317,51 +294,51 @@ project_eclipse: FORCE
# Static Checking # Static Checking
# #
check_cppcheck: FORCE check_cppcheck:
$(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:
$(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:
$(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:
$(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:
$(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:
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:
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:
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" \
@@ -370,13 +347,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:
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:
"$(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"
@@ -384,14 +361,14 @@ check_descriptions: FORCE
# Utilities # Utilities
# #
tgz: FORCE tgz:
./build_files/utils/build_tgz.sh ./build_files/utils/build_tgz.sh
icons: FORCE icons:
"$(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:
if [ -d "../lib" ]; then \ if [ -d "../lib" ]; then \
svn update ../lib/* ; \ svn update ../lib/* ; \
fi fi
@@ -404,36 +381,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:
"$(BUILD_DIR)/bin/blender" --background -noaudio --factory-startup --python doc/python_api/sphinx_doc_gen.py "$(BUILD_DIR)/bin/blender" --background -noaudio --factory-startup --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:
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:
"$(BUILD_DIR)/bin/blender" --background -noaudio --factory-startup --python doc/blender_file_format/BlendFileDnaExporter_25.py "$(BUILD_DIR)/bin/blender" --background -noaudio --factory-startup --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:
$(PYTHON) doc/manpage/blender.1.py "$(BUILD_DIR)/bin/blender" python3 doc/manpage/blender.1.py "$(BUILD_DIR)/bin/blender"
help_features: FORCE
@$(PYTHON) -c \
"import re; \
print('\n'.join([ \
w for l in open('"$(BLENDER_DIR)"/CMakeLists.txt', 'r').readlines() \
if not l.lstrip().startswith('#') \
for w in (re.sub(\
r'.*\boption\s*\(\s*(WITH_[a-zA-Z0-9_]+)\s+(\".*\")\s*.*', r'\g<1> - \g<2>', l).strip('() \n'),) \
if w.startswith('WITH_')]))" | uniq
clean: FORCE clean:
$(MAKE) -C "$(BUILD_DIR)" clean $(MAKE) -C "$(BUILD_DIR)" clean
.PHONY: all .PHONY: all
FORCE:

View File

@@ -218,8 +218,6 @@ else:
if not env['BF_FANCY']: if not env['BF_FANCY']:
B.bc.disable() B.bc.disable()
if env['WITH_BF_SDL_DYNLOAD']:
env['BF_SDL_INC'] = '#extern/sdlew/include/SDL2'
# remove install dir so old and new files are not mixed. # remove install dir so old and new files are not mixed.
# NOTE: only do the scripts directory for now, otherwise is too disruptive for developers # NOTE: only do the scripts directory for now, otherwise is too disruptive for developers
@@ -266,7 +264,6 @@ if 'blenderlite' in B.targets:
target_env_defs['WITH_BF_BOOLEAN'] = False target_env_defs['WITH_BF_BOOLEAN'] = False
target_env_defs['WITH_BF_REMESH'] = False target_env_defs['WITH_BF_REMESH'] = False
target_env_defs['WITH_BF_PYTHON'] = False target_env_defs['WITH_BF_PYTHON'] = False
target_env_defs['WITH_BF_IME'] = False
target_env_defs['WITH_BF_3DMOUSE'] = False target_env_defs['WITH_BF_3DMOUSE'] = False
target_env_defs['WITH_BF_LIBMV'] = False target_env_defs['WITH_BF_LIBMV'] = False
target_env_defs['WITH_BF_FREESTYLE'] = False target_env_defs['WITH_BF_FREESTYLE'] = False
@@ -423,9 +420,6 @@ if env['OURPLATFORM']=='darwin':
env.Append(LINKFLAGS=['-F/Library/Frameworks','-Xlinker','-weak_framework','-Xlinker','Jackmp']) env.Append(LINKFLAGS=['-F/Library/Frameworks','-Xlinker','-weak_framework','-Xlinker','Jackmp'])
print B.bc.OKGREEN + "Using Jack" print B.bc.OKGREEN + "Using Jack"
if env['WITH_BF_SDL']:
env.Append(LINKFLAGS=['-lazy_framework','ForceFeedback'])
if env['WITH_BF_QUICKTIME'] == 1: if env['WITH_BF_QUICKTIME'] == 1:
env['PLATFORM_LINKFLAGS'] = env['PLATFORM_LINKFLAGS']+['-framework','QTKit'] env['PLATFORM_LINKFLAGS'] = env['PLATFORM_LINKFLAGS']+['-framework','QTKit']
@@ -470,14 +464,6 @@ if env['OURPLATFORM']=='darwin':
################### End Automatic configuration for OSX ################## ################### End Automatic configuration for OSX ##################
############################################################################# #############################################################################
if env['OURPLATFORM'] == 'linux' and not env['C_COMPILER_ID']:
command = ["%s"%env['CC'], "--version"]
line = btools.get_command_output(command)
if line.startswith('gcc'):
env['C_COMPILER_ID'] = 'gcc'
elif 'clang' in line[0]:
env['C_COMPILER_ID'] = 'clang'
if env['WITH_BF_OPENMP'] == 1: if env['WITH_BF_OPENMP'] == 1:
if env['OURPLATFORM'] in ('win32-vc', 'win64-vc'): if env['OURPLATFORM'] in ('win32-vc', 'win64-vc'):
env['CCFLAGS'].append('/openmp') env['CCFLAGS'].append('/openmp')
@@ -488,13 +474,6 @@ if env['WITH_BF_OPENMP'] == 1:
else: else:
env.Append(CCFLAGS=['-fopenmp']) env.Append(CCFLAGS=['-fopenmp'])
if env['WITH_BF_CPP11']:
if env['OURPLATFORM'] in ('win32-vc', 'win64-vc'):
# Nothing special is needed, C++11 features are available by default.
pass
else:
env['CXXFLAGS'].append('-std=c++11')
#check for additional debug libnames #check for additional debug libnames
if env.has_key('BF_DEBUG_LIBS'): if env.has_key('BF_DEBUG_LIBS'):
@@ -514,10 +493,6 @@ if env['WITH_BF_STATICCXX']:
else: else:
print '\tcould not remove stdc++ library from LLIBS, WITH_BF_STATICCXX may not work for your platform' print '\tcould not remove stdc++ library from LLIBS, WITH_BF_STATICCXX may not work for your platform'
# audaspace is needed for the game engine
if not env['WITH_BF_AUDASPACE']:
env['WITH_BF_GAMEENGINE'] = False
# check target for blenderplayer. Set WITH_BF_PLAYER if found on cmdline # check target for blenderplayer. Set WITH_BF_PLAYER if found on cmdline
if 'blenderplayer' in B.targets: if 'blenderplayer' in B.targets:
env['WITH_BF_PLAYER'] = True env['WITH_BF_PLAYER'] = True
@@ -544,25 +519,13 @@ else:
env['CPPFLAGS'].append('-D__LITTLE_ENDIAN__') env['CPPFLAGS'].append('-D__LITTLE_ENDIAN__')
# TODO, make optional (as with CMake) # TODO, make optional (as with CMake)
env['CPPFLAGS'].append('-DWITH_AUDASPACE')
env['CPPFLAGS'].append('-DWITH_AVI') env['CPPFLAGS'].append('-DWITH_AVI')
env['CPPFLAGS'].append('-DWITH_OPENNL') env['CPPFLAGS'].append('-DWITH_OPENNL')
if env['OURPLATFORM'] not in ('win32-vc', 'win64-vc'): if env['OURPLATFORM'] not in ('win32-vc', 'win64-vc'):
env['CPPFLAGS'].append('-DHAVE_STDBOOL_H') env['CPPFLAGS'].append('-DHAVE_STDBOOL_H')
# Audaspace
if env['WITH_BF_AUDASPACE']:
env['BF_AUDASPACE_C_INC'] = '#intern/audaspace/intern'
env['BF_AUDASPACE_PY_INC'] = '#intern/audaspace/intern'
env['BF_AUDASPACE_DEF'] = ['WITH_AUDASPACE']
env['BF_AUDASPACE_DEF'].append('AUD_DEVICE_H="<AUD_C-API.h>"')
env['BF_AUDASPACE_DEF'].append('AUD_SPECIAL_H="<AUD_C-API.h>"')
env['BF_AUDASPACE_DEF'].append('AUD_SOUND_H="<AUD_C-API.h>"')
env['BF_AUDASPACE_DEF'].append('AUD_HANDLE_H="<AUD_C-API.h>"')
env['BF_AUDASPACE_DEF'].append('AUD_SEQUENCE_H="<AUD_C-API.h>"')
env['BF_AUDASPACE_DEF'].append('AUD_TYPES_H="<AUD_Space.h>"')
# OpenGL # OpenGL
if env['WITH_BF_GL_PROFILE_COMPAT']: if env['WITH_BF_GL_PROFILE_COMPAT']:
@@ -782,11 +745,6 @@ if B.targets != ['cudakernels']:
data_to_c_simple("release/datafiles/preview_cycles.blend") data_to_c_simple("release/datafiles/preview_cycles.blend")
# --- glsl --- # --- glsl ---
data_to_c_simple("source/blender/gpu/shaders/gpu_shader_geometry.glsl")
data_to_c_simple("source/blender/gpu/shaders/gpu_program_smoke_frag.glsl")
data_to_c_simple("source/blender/gpu/shaders/gpu_program_smoke_color_frag.glsl")
data_to_c_simple("source/blender/gpu/shaders/gpu_shader_simple_frag.glsl") data_to_c_simple("source/blender/gpu/shaders/gpu_shader_simple_frag.glsl")
data_to_c_simple("source/blender/gpu/shaders/gpu_shader_simple_vert.glsl") data_to_c_simple("source/blender/gpu/shaders/gpu_shader_simple_vert.glsl")
data_to_c_simple("source/blender/gpu/shaders/gpu_shader_material.glsl") data_to_c_simple("source/blender/gpu/shaders/gpu_shader_material.glsl")
@@ -794,20 +752,9 @@ if B.targets != ['cudakernels']:
data_to_c_simple("source/blender/gpu/shaders/gpu_shader_sep_gaussian_blur_frag.glsl") data_to_c_simple("source/blender/gpu/shaders/gpu_shader_sep_gaussian_blur_frag.glsl")
data_to_c_simple("source/blender/gpu/shaders/gpu_shader_sep_gaussian_blur_vert.glsl") data_to_c_simple("source/blender/gpu/shaders/gpu_shader_sep_gaussian_blur_vert.glsl")
data_to_c_simple("source/blender/gpu/shaders/gpu_shader_vertex.glsl") data_to_c_simple("source/blender/gpu/shaders/gpu_shader_vertex.glsl")
data_to_c_simple("source/blender/gpu/shaders/gpu_shader_vertex_world.glsl")
data_to_c_simple("source/blender/gpu/shaders/gpu_shader_vsm_store_frag.glsl") data_to_c_simple("source/blender/gpu/shaders/gpu_shader_vsm_store_frag.glsl")
data_to_c_simple("source/blender/gpu/shaders/gpu_shader_vsm_store_vert.glsl") data_to_c_simple("source/blender/gpu/shaders/gpu_shader_vsm_store_vert.glsl")
data_to_c_simple("source/blender/gpu/shaders/gpu_shader_fx_ssao_frag.glsl")
data_to_c_simple("source/blender/gpu/shaders/gpu_shader_fx_dof_frag.glsl")
data_to_c_simple("source/blender/gpu/shaders/gpu_shader_fx_dof_vert.glsl")
data_to_c_simple("source/blender/gpu/shaders/gpu_shader_fx_dof_hq_frag.glsl")
data_to_c_simple("source/blender/gpu/shaders/gpu_shader_fx_dof_hq_vert.glsl")
data_to_c_simple("source/blender/gpu/shaders/gpu_shader_fx_dof_hq_geo.glsl")
data_to_c_simple("source/blender/gpu/shaders/gpu_shader_fx_lib.glsl")
data_to_c_simple("source/blender/gpu/shaders/gpu_shader_fx_depth_resolve.glsl")
data_to_c_simple("source/blender/gpu/shaders/gpu_shader_fx_vert.glsl")
data_to_c_simple("intern/opencolorio/gpu_shader_display_transform.glsl") data_to_c_simple("intern/opencolorio/gpu_shader_display_transform.glsl")
data_to_c_simple("intern/opensubdiv/gpu_shader_opensubd_display.glsl")
# --- blender --- # --- blender ---
data_to_c_simple("release/datafiles/bfont.pfb") data_to_c_simple("release/datafiles/bfont.pfb")
@@ -901,21 +848,17 @@ B.init_lib_dict()
##### END SETUP ########## ##### END SETUP ##########
## Auto-configuration run-time tests if B.targets != ['cudakernels']:
# Put all auto configuration run-time tests here
from FindSharedPtr import FindSharedPtr from FindSharedPtr import FindSharedPtr
from FindUnorderedMap import FindUnorderedMap from FindUnorderedMap import FindUnorderedMap
conf = Configure(env) conf = Configure(env)
old_linkflags = conf.env['LINKFLAGS'] conf.env.Append(LINKFLAGS=env['PLATFORM_LINKFLAGS'])
conf.env.Append(LINKFLAGS=env['PLATFORM_LINKFLAGS']) FindSharedPtr(conf)
FindUnorderedMap(conf)
# Put all tests here env = conf.Finish()
FindSharedPtr(conf)
FindUnorderedMap(conf)
conf.env['LINKFLAGS'] = old_linkflags
env = conf.Finish()
# End of auto configuration # End of auto configuration
@@ -1047,20 +990,17 @@ if env['OURPLATFORM']!='darwin':
dir=os.path.join(env['BF_INSTALLDIR'], VERSION, 'scripts', 'addons','cycles', 'kernel') dir=os.path.join(env['BF_INSTALLDIR'], VERSION, 'scripts', 'addons','cycles', 'kernel')
source=os.listdir('intern/cycles/kernel') source=os.listdir('intern/cycles/kernel')
if '__pycache__' in source: source.remove('__pycache__') if '__pycache__' in source: source.remove('__pycache__')
source.remove('kernel.cpp')
source.remove('CMakeLists.txt') source.remove('CMakeLists.txt')
source.remove('SConscript')
source.remove('svm') source.remove('svm')
source.remove('closure') source.remove('closure')
source.remove('geom') source.remove('geom')
source.remove('shaders') source.remove('shaders')
source.remove('osl') source.remove('osl')
source.remove('split')
source=['intern/cycles/kernel/'+s for s in source] source=['intern/cycles/kernel/'+s for s in source]
source.append('intern/cycles/util/util_atomic.h')
source.append('intern/cycles/util/util_color.h') source.append('intern/cycles/util/util_color.h')
source.append('intern/cycles/util/util_half.h') source.append('intern/cycles/util/util_half.h')
source.append('intern/cycles/util/util_math.h') source.append('intern/cycles/util/util_math.h')
source.append('intern/cycles/util/util_math_fast.h')
source.append('intern/cycles/util/util_transform.h') source.append('intern/cycles/util/util_transform.h')
source.append('intern/cycles/util/util_types.h') source.append('intern/cycles/util/util_types.h')
scriptinstall.append(env.Install(dir=dir,source=source)) scriptinstall.append(env.Install(dir=dir,source=source))
@@ -1082,12 +1022,6 @@ if env['OURPLATFORM']!='darwin':
if '__pycache__' in source: source.remove('__pycache__') if '__pycache__' in source: source.remove('__pycache__')
source=['intern/cycles/kernel/geom/'+s for s in source] source=['intern/cycles/kernel/geom/'+s for s in source]
scriptinstall.append(env.Install(dir=dir,source=source)) scriptinstall.append(env.Install(dir=dir,source=source))
# split
dir=os.path.join(env['BF_INSTALLDIR'], VERSION, 'scripts', 'addons','cycles', 'kernel', 'split')
source=os.listdir('intern/cycles/kernel/split')
if '__pycache__' in source: source.remove('__pycache__')
source=['intern/cycles/kernel/split/'+s for s in source]
scriptinstall.append(env.Install(dir=dir,source=source))
# licenses # licenses
dir=os.path.join(env['BF_INSTALLDIR'], VERSION, 'scripts', 'addons','cycles', 'license') dir=os.path.join(env['BF_INSTALLDIR'], VERSION, 'scripts', 'addons','cycles', 'license')
@@ -1217,37 +1151,9 @@ if env['OURPLATFORM']=='linuxcross':
textlist = [] textlist = []
texttargetlist = [] texttargetlist = []
for tp, tn, tf in os.walk('release/text'): for tp, tn, tf in os.walk('release/text'):
tf.remove("readme.html")
for f in tf: for f in tf:
textlist.append(tp+os.sep+f) textlist.append(tp+os.sep+f)
def readme_version_patch():
readme_src = "release/text/readme.html"
readme_dst = os.path.abspath(os.path.normpath(os.path.join(env['BF_BUILDDIR'], "readme.html")))
if not os.path.exists(readme_dst) or (os.path.getmtime(readme_dst) < os.path.getmtime(readme_src)):
f = open(readme_src, "r")
data = f.read()
f.close()
data = data.replace("BLENDER_VERSION", VERSION)
f = open(readme_dst, "w")
f.write(data)
f.close()
textlist.append(readme_dst)
readme_version_patch()
del readme_version_patch
'''Command(
"release/text/readme.html"
)
Command("file.out", "file.in", Copy(env['BF_INSTALLDIR'], "release/text/readme.html"))
'''
# Font licenses # Font licenses
textlist.append('release/datafiles/LICENSE-bfont.ttf.txt') textlist.append('release/datafiles/LICENSE-bfont.ttf.txt')
if env['WITH_BF_INTERNATIONAL']: if env['WITH_BF_INTERNATIONAL']:
@@ -1274,7 +1180,7 @@ if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'win64-vc', 'linuxcross'):
dllsources += ['${BF_PTHREADS_LIBPATH}/${BF_PTHREADS_LIB}.dll'] dllsources += ['${BF_PTHREADS_LIBPATH}/${BF_PTHREADS_LIB}.dll']
if env['WITH_BF_SDL']: if env['WITH_BF_SDL']:
dllsources.append('${BF_SDL_LIBPATH}/SDL2.dll') dllsources.append('${BF_SDL_LIBPATH}/SDL.dll')
if env['WITH_BF_PYTHON']: if env['WITH_BF_PYTHON']:
if env['BF_DEBUG']: if env['BF_DEBUG']:
@@ -1293,6 +1199,7 @@ if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'win64-vc', 'linuxcross'):
if env['WITH_BF_OPENAL']: if env['WITH_BF_OPENAL']:
dllsources.append('${LCGDIR}/openal/lib/OpenAL32.dll') dllsources.append('${LCGDIR}/openal/lib/OpenAL32.dll')
dllsources.append('${LCGDIR}/openal/lib/wrap_oal.dll')
if env['WITH_BF_SNDFILE']: if env['WITH_BF_SNDFILE']:
dllsources.append('${LCGDIR}/sndfile/lib/libsndfile-1.dll') dllsources.append('${LCGDIR}/sndfile/lib/libsndfile-1.dll')
@@ -1319,15 +1226,6 @@ if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'win64-vc', 'linuxcross'):
windlls = env.Install(dir=env['BF_INSTALLDIR'], source = dllsources) windlls = env.Install(dir=env['BF_INSTALLDIR'], source = dllsources)
allinstall += windlls allinstall += windlls
# TODO(sergey): For unti we've got better way to deal with python binary
if env['WITH_BF_PYTHON']:
py_target = os.path.join(env['BF_INSTALLDIR'], VERSION, 'python', 'bin')
if env['BF_DEBUG']:
allinstall += env.Install(dir=py_target, source = ['${BF_PYTHON_LIBPATH}/${BF_PYTHON_DLL}_d.dll'])
else:
allinstall += env.Install(dir=py_target, source = ['${BF_PYTHON_LIBPATH}/${BF_PYTHON_DLL}.dll'])
if env['OURPLATFORM'] == 'win64-mingw': if env['OURPLATFORM'] == 'win64-mingw':
dllsources = [] dllsources = []

View File

@@ -27,10 +27,9 @@ getopt \
-o s:i:t:h \ -o s:i:t:h \
--long source:,install:,tmp:,info:,threads:,help,no-sudo,with-all,with-opencollada,\ --long source:,install:,tmp:,info:,threads:,help,no-sudo,with-all,with-opencollada,\
ver-ocio:,ver-oiio:,ver-llvm:,ver-osl:,\ ver-ocio:,ver-oiio:,ver-llvm:,ver-osl:,\
force-all,force-python,force-numpy,force-boost,force-ocio,force-oiio,force-llvm,force-osl,force-osd,\ force-all,force-python,force-numpy,force-boost,force-ocio,force-oiio,force-llvm,force-osl,force-opencollada,\
force-ffmpeg,force-opencollada,\ force-ffmpeg,\
skip-python,skip-numpy,skip-boost,skip-ocio,skip-openexr,skip-oiio,skip-llvm,skip-osl,skip-osd,\ skip-python,skip-numpy,skip-boost,skip-ocio,skip-openexr,skip-oiio,skip-llvm,skip-osl,skip-ffmpeg,skip-opencollada,\
skip-ffmpeg,skip-opencollada,\
required-numpy: \ required-numpy: \
-- "$@" \ -- "$@" \
) )
@@ -84,7 +83,7 @@ ARGUMENTS_INFO="\"COMMAND LINE ARGUMENTS:
-t n, --threads=n -t n, --threads=n
Use a specific number of threads when building the libraries (auto-detected as '\$THREADS'). Use a specific number of threads when building the libraries (auto-detected as '\$THREADS').
--no-sudo --no_sudo
Disable use of sudo (this script won't be able to do much though, will just print needed packages...). Disable use of sudo (this script won't be able to do much though, will just print needed packages...).
--with-all --with-all
@@ -139,9 +138,6 @@ ARGUMENTS_INFO="\"COMMAND LINE ARGUMENTS:
--force-osl --force-osl
Force the rebuild of OpenShadingLanguage. Force the rebuild of OpenShadingLanguage.
--force-osd
Force the rebuild of OpenSubdiv.
--force-opencollada --force-opencollada
Force the rebuild of OpenCOLLADA. Force the rebuild of OpenCOLLADA.
@@ -178,9 +174,6 @@ ARGUMENTS_INFO="\"COMMAND LINE ARGUMENTS:
--skip-osl --skip-osl
Unconditionally skip OpenShadingLanguage installation/building. Unconditionally skip OpenShadingLanguage installation/building.
--skip-osd
Unconditionally skip OpenSubdiv installation/building.
--skip-opencollada --skip-opencollada
Unconditionally skip OpenCOLLADA installation/building. Unconditionally skip OpenCOLLADA installation/building.
@@ -216,14 +209,14 @@ OCIO_VERSION_MIN="1.0"
OCIO_FORCE_REBUILD=false OCIO_FORCE_REBUILD=false
OCIO_SKIP=false OCIO_SKIP=false
OPENEXR_VERSION="2.2.0" OPENEXR_VERSION="2.1.0"
OPENEXR_VERSION_MIN="2.0.1" OPENEXR_VERSION_MIN="2.0.1"
ILMBASE_VERSION="2.2.0" ILMBASE_VERSION="2.1.0"
OPENEXR_FORCE_REBUILD=false OPENEXR_FORCE_REBUILD=false
OPENEXR_SKIP=false OPENEXR_SKIP=false
_with_built_openexr=false _with_built_openexr=false
OIIO_VERSION="1.4.16" OIIO_VERSION="1.4.11"
OIIO_VERSION_MIN="1.4.0" OIIO_VERSION_MIN="1.4.0"
OIIO_FORCE_REBUILD=false OIIO_FORCE_REBUILD=false
OIIO_SKIP=false OIIO_SKIP=false
@@ -235,17 +228,11 @@ LLVM_FORCE_REBUILD=false
LLVM_SKIP=false LLVM_SKIP=false
# OSL needs to be compiled for now! # OSL needs to be compiled for now!
OSL_VERSION="1.5.11" OSL_VERSION="1.5.0"
OSL_VERSION_MIN=$OSL_VERSION OSL_VERSION_MIN=$OSL_VERSION
OSL_FORCE_REBUILD=false OSL_FORCE_REBUILD=false
OSL_SKIP=false OSL_SKIP=false
# OpenSubdiv needs to be compiled for now
OSD_VERSION="3.0.2"
OSD_VERSION_MIN=$OSD_VERSION
OSD_FORCE_REBUILD=false
OSD_SKIP=false
# Version?? # Version??
OPENCOLLADA_VERSION="1.3" OPENCOLLADA_VERSION="1.3"
OPENCOLLADA_FORCE_REBUILD=false OPENCOLLADA_FORCE_REBUILD=false
@@ -388,11 +375,6 @@ while true; do
OSL_VERSION_MIN=$OSL_VERSION OSL_VERSION_MIN=$OSL_VERSION
shift; shift; continue shift; shift; continue
;; ;;
--ver-osd)
OSD_VERSION="$2"
OSD_VERSION_MIN=$OSD_VERSION
shift; shift; continue
;;
--force-all) --force-all)
PYTHON_FORCE_REBUILD=true PYTHON_FORCE_REBUILD=true
NUMPY_FORCE_REBUILD=true NUMPY_FORCE_REBUILD=true
@@ -402,7 +384,6 @@ while true; do
OIIO_FORCE_REBUILD=true OIIO_FORCE_REBUILD=true
LLVM_FORCE_REBUILD=true LLVM_FORCE_REBUILD=true
OSL_FORCE_REBUILD=true OSL_FORCE_REBUILD=true
OSD_FORCE_REBUILD=true
OPENCOLLADA_FORCE_REBUILD=true OPENCOLLADA_FORCE_REBUILD=true
FFMPEG_FORCE_REBUILD=true FFMPEG_FORCE_REBUILD=true
shift; continue shift; continue
@@ -436,9 +417,6 @@ while true; do
--force-osl) --force-osl)
OSL_FORCE_REBUILD=true; shift; continue OSL_FORCE_REBUILD=true; shift; continue
;; ;;
--force-osd)
OSD_FORCE_REBUILD=true; shift; continue
;;
--force-opencollada) --force-opencollada)
OPENCOLLADA_FORCE_REBUILD=true; shift; continue OPENCOLLADA_FORCE_REBUILD=true; shift; continue
;; ;;
@@ -469,9 +447,6 @@ while true; do
--skip-osl) --skip-osl)
OSL_SKIP=true; shift; continue OSL_SKIP=true; shift; continue
;; ;;
--skip-osd)
OSD_SKIP=true; shift; continue
;;
--skip-opencollada) --skip-opencollada)
OPENCOLLADA_SKIP=true; shift; continue OPENCOLLADA_SKIP=true; shift; continue
;; ;;
@@ -496,12 +471,11 @@ while true; do
esac esac
done done
if [ $WITH_ALL == true -a $OPENCOLLADA_SKIP == false ]; then if $WITH_ALL; then
WITH_OPENCOLLADA=true WITH_OPENCOLLADA=true
fi fi
# This has to be done here, because user might force some versions... # This has to be done here, because user might force some versions...
PYTHON_SOURCE=( "http://python.org/ftp/python/$PYTHON_VERSION/Python-$PYTHON_VERSION.tgz" ) PYTHON_SOURCE=( "http://python.org/ftp/python/$PYTHON_VERSION/Python-$PYTHON_VERSION.tgz" )
NUMPY_SOURCE=( "http://sourceforge.net/projects/numpy/files/NumPy/$NUMPY_VERSION/numpy-$NUMPY_VERSION.tar.gz" ) NUMPY_SOURCE=( "http://sourceforge.net/projects/numpy/files/NumPy/$NUMPY_VERSION/numpy-$NUMPY_VERSION.tar.gz" )
@@ -510,40 +484,24 @@ BOOST_SOURCE=( "http://sourceforge.net/projects/boost/files/boost/$BOOST_VERSION
OCIO_SOURCE=( "https://github.com/imageworks/OpenColorIO/tarball/v$OCIO_VERSION" ) OCIO_SOURCE=( "https://github.com/imageworks/OpenColorIO/tarball/v$OCIO_VERSION" )
OPENEXR_USE_REPO=false #OPENEXR_SOURCE=( "http://download.savannah.nongnu.org/releases/openexr/openexr-$OPENEXR_VERSION.tar.gz" )
OPENEXR_SOURCE=( "http://download.savannah.nongnu.org/releases/openexr/openexr-$OPENEXR_VERSION.tar.gz" ) OPENEXR_SOURCE=( "https://github.com/mont29/openexr.git" )
OPENEXR_SOURCE_REPO=( "https://github.com/mont29/openexr.git" ) OPENEXR_REPO_UID="2787aa1cf652d244ed45ae124eb1553f6cff11ee"
OPENEXR_SOURCE_REPO_UID="2787aa1cf652d244ed45ae124eb1553f6cff11ee"
ILMBASE_SOURCE=( "http://download.savannah.nongnu.org/releases/openexr/ilmbase-$ILMBASE_VERSION.tar.gz" ) ILMBASE_SOURCE=( "http://download.savannah.nongnu.org/releases/openexr/ilmbase-$ILMBASE_VERSION.tar.gz" )
OIIO_USE_REPO=false #OIIO_SOURCE=( "https://github.com/OpenImageIO/oiio/archive/Release-$OIIO_VERSION.tar.gz" )
OIIO_SOURCE=( "https://github.com/OpenImageIO/oiio/archive/Release-$OIIO_VERSION.tar.gz" ) OIIO_SOURCE=( "https://github.com/OpenImageIO/oiio.git" )
OIIO_SOURCE_REPO=( "https://github.com/OpenImageIO/oiio.git" ) OIIO_REPO_UID="c9e67275a0b248ead96152f6d2221cc0c0f278a4"
OIIO_SOURCE_REPO_UID="c9e67275a0b248ead96152f6d2221cc0c0f278a4"
LLVM_SOURCE=( "http://llvm.org/releases/$LLVM_VERSION/llvm-$LLVM_VERSION.src.tar.gz" ) LLVM_SOURCE=( "http://llvm.org/releases/$LLVM_VERSION/llvm-$LLVM_VERSION.src.tar.gz" )
LLVM_CLANG_SOURCE=( "http://llvm.org/releases/$LLVM_VERSION/clang-$LLVM_VERSION.src.tar.gz" "http://llvm.org/releases/$LLVM_VERSION/cfe-$LLVM_VERSION.src.tar.gz" ) LLVM_CLANG_SOURCE=( "http://llvm.org/releases/$LLVM_VERSION/clang-$LLVM_VERSION.src.tar.gz" "http://llvm.org/releases/$LLVM_VERSION/cfe-$LLVM_VERSION.src.tar.gz" )
OSL_USE_REPO=true #OSL_SOURCE=( "https://github.com/imageworks/OpenShadingLanguage/archive/Release-$OSL_VERSION.tar.gz" )
#~ OSL_SOURCE=( "https://github.com/imageworks/OpenShadingLanguage/archive/Release-$OSL_VERSION.tar.gz" ) #OSL_SOURCE=( "https://github.com/imageworks/OpenShadingLanguage.git" )
OSL_SOURCE=( "https://github.com/Nazg-Gul/OpenShadingLanguage/archive/Release-1.5.11.tar.gz" ) OSL_SOURCE=( "https://github.com/mont29/OpenShadingLanguage.git" )
#~ OSL_SOURCE_REPO=( "https://github.com/imageworks/OpenShadingLanguage.git" ) OSL_REPO_UID="85179714e1bc69cd25ecb6bb711c1a156685d395"
#~ OSL_SOURCE_REPO=( "https://github.com/mont29/OpenShadingLanguage.git" )
#~ OSL_SOURCE_REPO_UID="85179714e1bc69cd25ecb6bb711c1a156685d395"
#~ OSL_SOURCE_REPO_BRANCH="master"
OSL_SOURCE_REPO=( "https://github.com/Nazg-Gul/OpenShadingLanguage.git" )
OSL_SOURCE_REPO_UID="22ee5ea298fd215430dfbd160b5aefd507f06db0"
OSL_SOURCE_REPO_BRANCH="blender-fixes"
OSD_USE_REPO=true
# Script foo to make the version string compliant with the archive name:
# ${Varname//SearchForThisChar/ReplaceWithThisChar}
OSD_SOURCE=( "https://github.com/PixarAnimationStudios/OpenSubdiv/archive/v${OSD_VERSION//./_}.tar.gz" )
OSD_SOURCE_REPO=( "https://github.com/PixarAnimationStudios/OpenSubdiv.git" )
OSD_SOURCE_REPO_UID="404659fffa659da075d1c9416e4fc939139a84ee"
OSD_SOURCE_REPO_BRANCH="dev"
OPENCOLLADA_SOURCE=( "https://github.com/KhronosGroup/OpenCOLLADA.git" ) OPENCOLLADA_SOURCE=( "https://github.com/KhronosGroup/OpenCOLLADA.git" )
OPENCOLLADA_REPO_UID="3335ac164e68b2512a40914b14c74db260e6ff7d" OPENCOLLADA_REPO_UID="18da7f4109a8eafaa290a33f5550501cc4c8bae8"
FFMPEG_SOURCE=( "http://ffmpeg.org/releases/ffmpeg-$FFMPEG_VERSION.tar.bz2" ) FFMPEG_SOURCE=( "http://ffmpeg.org/releases/ffmpeg-$FFMPEG_VERSION.tar.bz2" )
@@ -1016,7 +974,7 @@ clean_ILMBASE() {
compile_ILMBASE() { compile_ILMBASE() {
# To be changed each time we make edits that would modify the compiled result! # To be changed each time we make edits that would modify the compiled result!
ilmbase_magic=10 ilmbase_magic=9
_init_ilmbase _init_ilmbase
# Clean install if needed! # Clean install if needed!
@@ -1040,7 +998,8 @@ compile_ILMBASE() {
download ILMBASE_SOURCE[@] $_src.tar.gz download ILMBASE_SOURCE[@] $_src.tar.gz
INFO "Unpacking ILMBase-$ILMBASE_VERSION" INFO "Unpacking ILMBase-$ILMBASE_VERSION"
tar -C $SRC --transform "s,(.*/?)ilmbase-[^/]*(.*),\1ILMBase-$ILMBASE_VERSION\2,x" -xf $_src.tar.gz tar -C $SRC --transform "s,(.*/?)ilmbase-[^/]*(.*),\1ILMBase-$ILMBASE_VERSION\2,x" \
-xf $_src.tar.gz
fi fi
@@ -1056,7 +1015,6 @@ compile_ILMBASE() {
cmake_d="$cmake_d -D CMAKE_PREFIX_PATH=$_inst" cmake_d="$cmake_d -D CMAKE_PREFIX_PATH=$_inst"
cmake_d="$cmake_d -D CMAKE_INSTALL_PREFIX=$_inst" cmake_d="$cmake_d -D CMAKE_INSTALL_PREFIX=$_inst"
cmake_d="$cmake_d -D BUILD_SHARED_LIBS=ON" cmake_d="$cmake_d -D BUILD_SHARED_LIBS=ON"
cmake_d="$cmake_d -D NAMESPACE_VERSIONING=OFF" # VERY IMPORTANT!!!
if file /bin/cp | grep -q '32-bit'; then if file /bin/cp | grep -q '32-bit'; then
cflags="-fPIC -m32 -march=i686" cflags="-fPIC -m32 -march=i686"
@@ -1129,28 +1087,24 @@ compile_OPENEXR() {
INFO "Downloading OpenEXR-$OPENEXR_VERSION" INFO "Downloading OpenEXR-$OPENEXR_VERSION"
mkdir -p $SRC mkdir -p $SRC
if [ $OPENEXR_USE_REPO == true ]; then # download OPENEXR_SOURCE[@] $_src.tar.gz
git clone ${OPENEXR_SOURCE_REPO[0]} $_src
else # INFO "Unpacking OpenEXR-$OPENEXR_VERSION"
download OPENEXR_SOURCE[@] $_src.tar.gz # tar -C $SRC --transform "s,(.*/?)openexr[^/]*(.*),\1OpenEXR-$OPENEXR_VERSION\2,x" \
INFO "Unpacking OpenEXR-$OPENEXR_VERSION" # -xf $_src.tar.gz
tar -C $SRC --transform "s,(.*/?)openexr[^/]*(.*),\1OpenEXR-$OPENEXR_VERSION\2,x" -xf $_src.tar.gz
fi git clone ${OPENEXR_SOURCE[0]} $_src
fi fi
cd $_src cd $_src
if [ $OPENEXR_USE_REPO == true ]; then # XXX For now, always update from latest repo...
# XXX For now, always update from latest repo... git pull origin master
git pull origin master
# Stick to same rev as windows' libs... # Stick to same rev as windows' libs...
git checkout $OPENEXR_SOURCE_REPO_UID git checkout $OPENEXR_REPO_UID
git reset --hard git reset --hard
oiio_src_path="../OpenEXR"
else
oiio_src_path=".."
fi
# Always refresh the whole build! # Always refresh the whole build!
if [ -d build ]; then if [ -d build ]; then
@@ -1164,7 +1118,6 @@ compile_OPENEXR() {
cmake_d="$cmake_d -D CMAKE_INSTALL_PREFIX=$_inst" cmake_d="$cmake_d -D CMAKE_INSTALL_PREFIX=$_inst"
cmake_d="$cmake_d -D ILMBASE_PACKAGE_PREFIX=$_ilmbase_inst" cmake_d="$cmake_d -D ILMBASE_PACKAGE_PREFIX=$_ilmbase_inst"
cmake_d="$cmake_d -D BUILD_SHARED_LIBS=ON" cmake_d="$cmake_d -D BUILD_SHARED_LIBS=ON"
cmake_d="$cmake_d -D NAMESPACE_VERSIONING=OFF" # VERY IMPORTANT!!!
if file /bin/cp | grep -q '32-bit'; then if file /bin/cp | grep -q '32-bit'; then
cflags="-fPIC -m32 -march=i686" cflags="-fPIC -m32 -march=i686"
@@ -1172,7 +1125,7 @@ compile_OPENEXR() {
cflags="-fPIC" cflags="-fPIC"
fi fi
cmake $cmake_d -D CMAKE_CXX_FLAGS="$cflags" -D CMAKE_EXE_LINKER_FLAGS="-lgcc_s -lgcc" $oiio_src_path cmake $cmake_d -D CMAKE_CXX_FLAGS="$cflags" -D CMAKE_EXE_LINKER_FLAGS="-lgcc_s -lgcc" ../OpenEXR
make -j$THREADS && make install make -j$THREADS && make install
@@ -1236,25 +1189,24 @@ compile_OIIO() {
if [ ! -d $_src ]; then if [ ! -d $_src ]; then
mkdir -p $SRC mkdir -p $SRC
#download OIIO_SOURCE[@] "$_src.tar.gz"
#
#INFO "Unpacking OpenImageIO-$OIIO_VERSION"
#tar -C $SRC --transform "s,(.*/?)oiio-Release-[^/]*(.*),\1OpenImageIO-$OIIO_VERSION\2,x" \
#-xf $_src.tar.gz
git clone ${OIIO_SOURCE[0]} $_src
if [ $OIIO_USE_REPO == true ]; then
git clone ${OIIO_SOURCE_REPO[0]} $_src
else
download OIIO_SOURCE[@] "$_src.tar.gz"
INFO "Unpacking OpenImageIO-$OIIO_VERSION"
tar -C $SRC --transform "s,(.*/?)oiio-Release-[^/]*(.*),\1OpenImageIO-$OIIO_VERSION\2,x" -xf $_src.tar.gz
fi
fi fi
cd $_src cd $_src
if [ $OIIO_USE_REPO == true ]; then # XXX For now, always update from latest repo...
# XXX For now, always update from latest repo... git pull origin master
git pull origin master
# Stick to same rev as windows' libs... # Stick to same rev as windows' libs...
git checkout $OIIO_SOURCE_REPO_UID git checkout $OIIO_REPO_UID
git reset --hard git reset --hard
fi
# Always refresh the whole build! # Always refresh the whole build!
if [ -d build ]; then if [ -d build ]; then
@@ -1276,7 +1228,6 @@ compile_OIIO() {
if [ $_with_built_openexr == true ]; then if [ $_with_built_openexr == true ]; then
cmake_d="$cmake_d -D ILMBASE_HOME=$INST/openexr" cmake_d="$cmake_d -D ILMBASE_HOME=$INST/openexr"
cmake_d="$cmake_d -D OPENEXR_HOME=$INST/openexr" cmake_d="$cmake_d -D OPENEXR_HOME=$INST/openexr"
INFO "ILMBASE_HOME=$INST/openexr"
fi fi
# Optional tests and cmd tools # Optional tests and cmd tools
@@ -1407,7 +1358,7 @@ EOF
cmake_d="$cmake_d -D CMAKE_INSTALL_PREFIX=$_inst" cmake_d="$cmake_d -D CMAKE_INSTALL_PREFIX=$_inst"
cmake_d="$cmake_d -D LLVM_ENABLE_FFI=ON" cmake_d="$cmake_d -D LLVM_ENABLE_FFI=ON"
cmake_d="$cmake_d -D LLVM_TARGETS_TO_BUILD=X86" cmake_d="$cmake_d -D LLVM_TARGETS_TO_BUILD=X86"
cmake_d="$cmake_d -D LLVM_ENABLE_TERMINFO=OFF" cmake_d="$cmake_d -D -DLLVM_ENABLE_TERMINFO=OFF"
if [ -d $_FFI_INCLUDE_DIR ]; then if [ -d $_FFI_INCLUDE_DIR ]; then
cmake_d="$cmake_d -D FFI_INCLUDE_DIR=$_FFI_INCLUDE_DIR" cmake_d="$cmake_d -D FFI_INCLUDE_DIR=$_FFI_INCLUDE_DIR"
@@ -1453,15 +1404,14 @@ clean_OSL() {
compile_OSL() { compile_OSL() {
# To be changed each time we make edits that would modify the compiled result! # To be changed each time we make edits that would modify the compiled result!
osl_magic=17 osl_magic=15
_init_osl _init_osl
# Clean install if needed! # Clean install if needed!
magic_compile_check osl-$OSL_VERSION $osl_magic magic_compile_check osl-$OSL_VERSION $osl_magic
#~ if [ $? -eq 1 -o $OSL_FORCE_REBUILD == true ]; then if [ $? -eq 1 -o $OSL_FORCE_REBUILD == true ]; then
#~ rm -Rf $_src # XXX Radical, but not easy to change remote repo fully automatically clean_OSL
#~ clean_OSL fi
#~ fi
if [ ! -d $_inst ]; then if [ ! -d $_inst ]; then
INFO "Building OpenShadingLanguage-$OSL_VERSION" INFO "Building OpenShadingLanguage-$OSL_VERSION"
@@ -1471,26 +1421,26 @@ compile_OSL() {
if [ ! -d $_src ]; then if [ ! -d $_src ]; then
mkdir -p $SRC mkdir -p $SRC
if [ $OSL_USE_REPO == true ]; then #download OSL_SOURCE[@] "$_src.tar.gz"
git clone ${OSL_SOURCE_REPO[0]} $_src
else #INFO "Unpacking OpenShadingLanguage-$OSL_VERSION"
download OSL_SOURCE[@] "$_src.tar.gz" #tar -C $SRC --transform "s,(.*/?)OpenShadingLanguage-[^/]*(.*),\1OpenShadingLanguage-$OSL_VERSION\2,x" \
INFO "Unpacking OpenShadingLanguage-$OSL_VERSION" #-xf $_src.tar.gz
tar -C $SRC --transform "s,(.*/?)OpenShadingLanguage-[^/]*(.*),\1OpenShadingLanguage-$OSL_VERSION\2,x" \
-xf $_src.tar.gz git clone ${OSL_SOURCE[0]} $_src
fi
fi fi
cd $_src cd $_src
if [ $OSL_USE_REPO == true ]; then git remote set-url origin $OSL_SOURCE
git remote set-url origin ${OSL_SOURCE_REPO[0]}
# XXX For now, always update from latest repo... # XXX For now, always update from latest repo...
git pull --no-edit -X theirs origin $OSL_SOURCE_REPO_BRANCH git pull -X theirs origin master
# Stick to same rev as windows' libs...
git checkout $OSL_SOURCE_REPO_UID # Stick to same rev as windows' libs...
git reset --hard git checkout $OSL_REPO_UID
fi git reset --hard
# Always refresh the whole build! # Always refresh the whole build!
if [ -d build ]; then if [ -d build ]; then
@@ -1505,14 +1455,11 @@ compile_OSL() {
cmake_d="$cmake_d -D STOP_ON_WARNING=OFF" cmake_d="$cmake_d -D STOP_ON_WARNING=OFF"
cmake_d="$cmake_d -D BUILDSTATIC=OFF" cmake_d="$cmake_d -D BUILDSTATIC=OFF"
#~ cmake_d="$cmake_d -D ILMBASE_VERSION=$ILMBASE_VERSION" cmake_d="$cmake_d -D ILMBASE_VERSION=$ILMBASE_VERSION"
if [ $_with_built_openexr == true ]; then if [ $_with_built_openexr == true ]; then
INFO "ILMBASE_HOME=$INST/openexr" INFO "ILMBASE_HOME=$INST/openexr"
cmake_d="$cmake_d -D ILMBASE_HOME=$INST/openexr" cmake_d="$cmake_d -D ILMBASE_HOME=$INST/openexr"
# XXX Temp workaround... sigh, ILMBase really messed the things up by defining their custom names ON by default :(
cmake_d="$cmake_d -D ILMBASE_CUSTOM=ON"
cmake_d="$cmake_d -D ILMBASE_CUSTOM_LIBRARIES='Half;Iex;Imath;IlmThread'"
fi fi
if [ -d $INST/boost ]; then if [ -d $INST/boost ]; then
@@ -1526,7 +1473,7 @@ compile_OSL() {
if [ ! -z $LLVM_VERSION_FOUND ]; then if [ ! -z $LLVM_VERSION_FOUND ]; then
cmake_d="$cmake_d -D LLVM_VERSION=$LLVM_VERSION_FOUND" cmake_d="$cmake_d -D LLVM_VERSION=$LLVM_VERSION_FOUND"
if [ -d $INST/llvm ]; then if [ -d $INST/llvm ]; then
cmake_d="$cmake_d -D LLVM_ROOT_DIR=$INST/llvm" cmake_d="$cmake_d -D LLVM_DIRECTORY=$INST/llvm"
cmake_d="$cmake_d -D LLVM_STATIC=ON" cmake_d="$cmake_d -D LLVM_STATIC=ON"
fi fi
fi fi
@@ -1555,99 +1502,6 @@ compile_OSL() {
run_ldconfig "osl" run_ldconfig "osl"
} }
#### Build OSD ####
_init_osd() {
_src=$SRC/OpenSubdiv-$OSD_VERSION
_git=true
_inst=$INST/osd-$OSD_VERSION
_inst_shortcut=$INST/osd
}
clean_OSD() {
_init_osd
_clean
}
compile_OSD() {
# To be changed each time we make edits that would modify the compiled result!
osd_magic=0
_init_osd
# Clean install if needed!
magic_compile_check osd-$OSD_VERSION $osd_magic
if [ $? -eq 1 -o $OSD_FORCE_REBUILD == true ]; then
clean_OSD
fi
if [ ! -d $_inst ]; then
INFO "Building OpenSubdiv-$OSD_VERSION"
prepare_opt
if [ ! -d $_src ]; then
mkdir -p $SRC
if [ $OSD_USE_REPO == true ]; then
git clone ${OSD_SOURCE_REPO[0]} $_src
else
download OSD_SOURCE[@] "$_src.tar.gz"
INFO "Unpacking OpenSubdiv-$OSD_VERSION"
tar -C $SRC --transform "s,(.*/?)OpenSubdiv-[^/]*(.*),\1OpenSubdiv-$OSD_VERSION\2,x" \
-xf $_src.tar.gz
fi
fi
cd $_src
if [ $OSD_USE_REPO == true ]; then
git remote set-url origin ${OSD_SOURCE_REPO[0]}
# XXX For now, always update from latest repo...
git pull --no-edit -X theirs origin $OSD_SOURCE_REPO_BRANCH
# Stick to same rev as windows' libs...
git checkout $OSD_SOURCE_REPO_UID
git reset --hard
fi
# Always refresh the whole build!
if [ -d build ]; then
rm -rf build
fi
mkdir build
cd build
cmake_d="-D CMAKE_BUILD_TYPE=Release"
cmake_d="$cmake_d -D CMAKE_INSTALL_PREFIX=$_inst"
# ptex is only needed when nicholas bishop is ready
cmake_d="$cmake_d -D NO_PTEX=1"
cmake_d="$cmake_d -D NO_CLEW=1"
# maya plugin, docs, tutorials, regression tests and examples are not needed
cmake_d="$cmake_d -D NO_MAYA=1 -D NO_DOC=1 -D NO_TUTORIALS=1 -D NO_REGRESSION=1 -DNO_EXAMPLES=1"
cmake $cmake_d ..
make -j$THREADS && make install
make clean
if [ -d $_inst ]; then
_create_inst_shortcut
else
ERROR "OpenSubdiv-$OSD_VERSION failed to compile, exiting"
exit 1
fi
magic_compile_set osd-$OSD_VERSION $osd_magic
cd $CWD
INFO "Done compiling OpenSubdiv-$OSD_VERSION!"
else
INFO "Own OpenSubdiv-$OSD_VERSION is up to date, nothing to do!"
INFO "If you want to force rebuild of this lib, use the --force-osd option."
fi
run_ldconfig "osd"
}
#### Build OpenCOLLADA #### #### Build OpenCOLLADA ####
_init_opencollada() { _init_opencollada() {
_src=$SRC/OpenCOLLADA-$OPENCOLLADA_VERSION _src=$SRC/OpenCOLLADA-$OPENCOLLADA_VERSION
@@ -1663,7 +1517,7 @@ clean_OpenCOLLADA() {
compile_OpenCOLLADA() { compile_OpenCOLLADA() {
# To be changed each time we make edits that would modify the compiled results! # To be changed each time we make edits that would modify the compiled results!
opencollada_magic=9 opencollada_magic=8
_init_opencollada _init_opencollada
# Clean install if needed! # Clean install if needed!
@@ -1939,10 +1793,9 @@ install_DEB() {
THEORA_DEV="libtheora-dev" THEORA_DEV="libtheora-dev"
_packages="gawk cmake cmake-curses-gui scons build-essential libjpeg-dev libpng-dev \ _packages="gawk cmake cmake-curses-gui scons build-essential libjpeg-dev libpng-dev \
libfreetype6-dev libx11-dev \ libfreetype6-dev libx11-dev libxi-dev wget libsqlite3-dev libbz2-dev \
libxcursor-dev libxi-dev wget libsqlite3-dev libxrandr-dev libxinerama-dev \ libncurses5-dev libssl-dev liblzma-dev libreadline-dev $OPENJPEG_DEV \
libbz2-dev libncurses5-dev libssl-dev liblzma-dev libreadline-dev $OPENJPEG_DEV \ libopenal-dev libglew-dev yasm $THEORA_DEV $VORBIS_DEV $OGG_DEV \
libopenal-dev libglew-dev libglewmx-dev yasm $THEORA_DEV $VORBIS_DEV $OGG_DEV \
libsdl1.2-dev libfftw3-dev patch bzip2 libxml2-dev libtinyxml-dev" libsdl1.2-dev libfftw3-dev patch bzip2 libxml2-dev libtinyxml-dev"
OPENJPEG_USE=true OPENJPEG_USE=true
@@ -2119,7 +1972,7 @@ install_DEB() {
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
install_packages_DEB libboost-locale$boost_version-dev libboost-filesystem$boost_version-dev \ install_packages_DEB libboost-locale$boost_version-dev libboost-filesystem$boost_version-dev \
libboost-regex$boost_version-dev libboost-system$boost_version-dev \ libboost-regex$boost_version-dev libboost-system$boost_version-dev \
libboost-thread$boost_version-dev libboost-wave$boost_version-dev libboost-thread$boost_version-dev
clean_Boost clean_Boost
else else
compile_Boost compile_Boost
@@ -2216,20 +2069,6 @@ install_DEB() {
fi fi
fi fi
PRINT ""
if $OSD_SKIP; then
WARNING "Skipping OpenSubdiv installation, as requested..."
else
if $have_llvm; then
install_packages_DEB flex bison libtbb-dev
# No package currently!
PRINT ""
compile_OSD
else
WARNING "No LLVM available, cannot build OSD!"
fi
fi
if $WITH_OPENCOLLADA; then if $WITH_OPENCOLLADA; then
PRINT "" PRINT ""
if $OPENCOLLADA_SKIP; then if $OPENCOLLADA_SKIP; then
@@ -2428,9 +2267,9 @@ install_RPM() {
OGG_DEV="libogg-devel" OGG_DEV="libogg-devel"
THEORA_DEV="libtheora-devel" THEORA_DEV="libtheora-devel"
_packages="gcc gcc-c++ git make cmake scons libtiff-devel libjpeg-devel\ _packages="gcc gcc-c++ make scons libtiff-devel freetype-devel libjpeg-devel\
libpng-devel libX11-devel libXi-devel libXcursor-devel libXrandr-devel libXinerama-devel \ libpng-devel libX11-devel libXi-devel wget ncurses-devel \
wget ncurses-devel readline-devel $OPENJPEG_DEV openal-soft-devel \ readline-devel $OPENJPEG_DEV openal-soft-devel \
glew-devel yasm $THEORA_DEV $VORBIS_DEV $OGG_DEV patch \ glew-devel yasm $THEORA_DEV $VORBIS_DEV $OGG_DEV patch \
libxml2-devel yaml-cpp-devel tinyxml-devel" libxml2-devel yaml-cpp-devel tinyxml-devel"
@@ -2442,7 +2281,7 @@ install_RPM() {
if [ $RPM = "FEDORA" -o $RPM = "RHEL" ]; then if [ $RPM = "FEDORA" -o $RPM = "RHEL" ]; then
OPENEXR_DEV="openexr-devel" OPENEXR_DEV="openexr-devel"
_packages="$_packages freetype-devel libsqlite3x-devel fftw-devel SDL-devel" _packages="$_packages libsqlite3x-devel fftw-devel SDL-devel"
if $WITH_ALL; then if $WITH_ALL; then
_packages="$_packages jack-audio-connection-kit-devel" _packages="$_packages jack-audio-connection-kit-devel"
@@ -2480,7 +2319,7 @@ install_RPM() {
elif [ $RPM = "SUSE" ]; then elif [ $RPM = "SUSE" ]; then
OPENEXR_DEV="libopenexr-devel" OPENEXR_DEV="libopenexr-devel"
_packages="$_packages cmake freetype2-devel sqlite3-devel fftw3-devel libSDL-devel" _packages="$_packages cmake sqlite3-devel fftw3-devel libSDL-devel"
PRINT "" PRINT ""
install_packages_RPM $_packages install_packages_RPM $_packages
@@ -2657,7 +2496,7 @@ install_RPM() {
else else
if $have_llvm; then if $have_llvm; then
# No package currently! # No package currently!
install_packages_RPM flex bison install_packages_RPM flex bison git
if [ $RPM = "FEDORA" -o $RPM = "RHEL" ]; then if [ $RPM = "FEDORA" -o $RPM = "RHEL" ]; then
install_packages_RPM tbb-devel install_packages_RPM tbb-devel
fi fi
@@ -2668,29 +2507,12 @@ install_RPM() {
fi fi
fi fi
PRINT ""
if $OSD_SKIP; then
WARNING "Skipping OpenSubdiv installation, as requested..."
else
if $have_llvm; then
# No package currently!
install_packages_RPM flex bison
if [ $RPM = "FEDORA" -o $RPM = "RHEL" ]; then
install_packages_RPM tbb-devel
fi
PRINT ""
compile_OSD
else
WARNING "No LLVM available, cannot build OSD!"
fi
fi
if $WITH_OPENCOLLADA; then if $WITH_OPENCOLLADA; then
PRINT "" PRINT ""
if $OPENCOLLADA_SKIP; then if $OPENCOLLADA_SKIP; then
WARNING "Skipping OpenCOLLADA installation, as requested..." WARNING "Skipping OpenCOLLADA installation, as requested..."
else else
install_packages_RPM pcre-devel install_packages_RPM pcre-devel git
# Find path to libxml shared lib... # Find path to libxml shared lib...
_XML2_LIB=`rpm -ql libxml2-devel | grep -e ".*/libxml2.so"` _XML2_LIB=`rpm -ql libxml2-devel | grep -e ".*/libxml2.so"`
# No package... # No package...
@@ -2798,8 +2620,7 @@ install_ARCH() {
OGG_DEV="libogg" OGG_DEV="libogg"
THEORA_DEV="libtheora" THEORA_DEV="libtheora"
_packages="base-devel git scons cmake \ _packages="base-devel scons cmake libxi glew libpng libtiff wget openal \
libxi libxcursor libxrandr libxinerama glew libpng libtiff wget openal \
$OPENJPEG_DEV $VORBIS_DEV $OGG_DEV $THEORA_DEV yasm sdl fftw \ $OPENJPEG_DEV $VORBIS_DEV $OGG_DEV $THEORA_DEV yasm sdl fftw \
libxml2 yaml-cpp tinyxml" libxml2 yaml-cpp tinyxml"
@@ -2986,7 +2807,7 @@ install_ARCH() {
clean_OSL clean_OSL
else else
#XXX Note: will fail to build with LLVM 3.2! #XXX Note: will fail to build with LLVM 3.2!
install_packages_ARCH intel-tbb install_packages_ARCH git intel-tbb
PRINT "" PRINT ""
compile_OSL compile_OSL
fi fi
@@ -2995,20 +2816,6 @@ install_ARCH() {
fi fi
fi fi
PRINT ""
if $OSD_SKIP; then
WARNING "Skipping OpenSubdiv installation, as requested..."
else
if $have_llvm; then
# No package currently? Just build for now!
install_packages_ARCH intel-tbb
PRINT ""
compile_OSD
else
WARNING "No LLVM available, cannot build OSD!"
fi
fi
if $WITH_OPENCOLLADA; then if $WITH_OPENCOLLADA; then
PRINT "" PRINT ""
if $OPENCOLLADA_SKIP; then if $OPENCOLLADA_SKIP; then
@@ -3019,7 +2826,7 @@ install_ARCH() {
install_packages_ARCH opencollada install_packages_ARCH opencollada
clean_OpenCOLLADA clean_OpenCOLLADA
else else
install_packages_ARCH pcre install_packages_ARCH pcre git
PRINT "" PRINT ""
compile_OpenCOLLADA compile_OpenCOLLADA
fi fi
@@ -3170,7 +2977,7 @@ print_info() {
_buildargs="$_buildargs $_1" _buildargs="$_buildargs $_1"
fi fi
if [ -d $INST/llvm ]; then if [ -d $INST/llvm ]; then
_1="-D LLVM_ROOT_DIR=$INST/llvm" _1="-D LLVM_DIRECTORY=$INST/llvm"
_2="-D LLVM_STATIC=ON" _2="-D LLVM_STATIC=ON"
PRINT " $_1" PRINT " $_1"
PRINT " $_2" PRINT " $_2"
@@ -3184,14 +2991,6 @@ print_info() {
_buildargs="$_buildargs $_1 $_2" _buildargs="$_buildargs $_1 $_2"
fi fi
if [ -d $INST/osd ]; then
_1="-D WITH_OPENSUBDIV=ON"
_2="-D OPENSUBDIV_ROOT_DIR=$INST/osd"
PRINT " $_1"
PRINT " $_2"
_buildargs="$_buildargs $_1 $_2"
fi
if $WITH_OPENCOLLADA; then if $WITH_OPENCOLLADA; then
_1="-D WITH_OPENCOLLADA=ON" _1="-D WITH_OPENCOLLADA=ON"
PRINT " $_1" PRINT " $_1"
@@ -3234,10 +3033,10 @@ print_info() {
PRINT "BF_OPENEXR = '$INST/openexr'" PRINT "BF_OPENEXR = '$INST/openexr'"
_ilm_libs_ext="" _ilm_libs_ext=""
#~ version_ge $OPENEXR_VERSION "2.1.0" version_ge $OPENEXR_VERSION "2.1.0"
#~ if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
#~ _ilm_libs_ext=`echo $OPENEXR_VERSION | sed -r 's/([0-9]+)\.([0-9]+).*/-\1_\2/'` _ilm_libs_ext=`echo $OPENEXR_VERSION | sed -r 's/([0-9]+)\.([0-9]+).*/-\1_\2/'`
#~ fi fi
PRINT "BF_OPENEXR_LIB = 'Half IlmImf$_ilm_libs_ext Iex$_ilm_libs_ext Imath$_ilm_libs_ext '" PRINT "BF_OPENEXR_LIB = 'Half IlmImf$_ilm_libs_ext Iex$_ilm_libs_ext Imath$_ilm_libs_ext '"
# BF_OPENEXR_LIB does not work, things like '-lIlmImf-2_1' do not suit ld. # BF_OPENEXR_LIB does not work, things like '-lIlmImf-2_1' do not suit ld.
# For now, hack around!!! # For now, hack around!!!
@@ -3258,13 +3057,6 @@ print_info() {
PRINT "BF_OSL = '$INST/osl'" PRINT "BF_OSL = '$INST/osl'"
fi fi
if [ "$OSD_SKIP" = false ]; then
PRINT "WITH_BF_OPENSUBDIV = True"
if [ -d $INST/osd ]; then
PRINT "BF_OPENSUBDIV = '$INST/osd'"
fi
fi
if [ "$BOOST_SKIP" = false ]; then if [ "$BOOST_SKIP" = false ]; then
PRINT "WITH_BF_BOOST = True" PRINT "WITH_BF_BOOST = True"
if [ -d $INST/boost ]; then if [ -d $INST/boost ]; then
@@ -3311,27 +3103,7 @@ elif [ -f /etc/redhat-release -o /etc/SuSE-release ]; then
DISTRO="RPM" DISTRO="RPM"
install_RPM install_RPM
else else
ERROR "Failed to detect distribution type." ERROR "Failed to detect distribution type"
PRINT ""
PRINT "Your distribution is not supported by this script, you'll have to install dependencies and"
PRINT "dev packages yourself (list non-exhaustive, but should cover most needs):"
PRINT " * Basics of dev environment (cmake or scons, gcc, svn , git, ...)."
PRINT " * Python$PYTHON_VERSION_MIN, numpy."
PRINT " * libboost$BOOST_VERSION_MIN (locale, filesystem, regex, system, thread, wave)."
PRINT " * libjpeg, libpng, libtiff, libopenjpeg, libopenal."
PRINT " * ffmpeg (with libvorbis, libogg, libtheora, libx264, libmp3lame, libxvidcore, libvpx, ...)."
PRINT " * libx11, libxcursor, libxi, libxrandr, libxinerama (and other libx... as needed)."
PRINT " * libsqlite3, libbz2, libssl, libfftw3, libxml2, libtinyxml, yasm, libyaml-cpp."
PRINT " * libsdl1.2, libglew, libglewmx."
PRINT " * libopencolorio$OCIO_VERSION_MIN, libopenexr$OPENEXR_VERSION_MIN, libopenimageio$OIIO_VERSION_MIN."
PRINT " * llvm-$LLVM_VERSION (with clang)."
PRINT ""
PRINT "Most of up-listed packages are available in recent distributions. The following are likely not,"
PRINT "you'll have to build them (they are all optional, though):"
PRINT " * OpenShadingLanguage (from https://github.com/Nazg-Gul/OpenShadingLanguage.git, branch blender-fixes, commit 22ee5ea298fd215430dfbd160b5aefd507f06db0)."
PRINT " * OpenSubDiv (from https://github.com/PixarAnimationStudios/OpenSubdiv.git, branch dev, commit 404659fffa659da075d1c9416e4fc939139a84ee)."
PRINT " * OpenCollada (from https://github.com/KhronosGroup/OpenCOLLADA.git, branch master, commit 3335ac164e68b2512a40914b14c74db260e6ff7d)."
PRINT ""
exit 1 exit 1
fi fi

View File

@@ -2,5 +2,4 @@ BF_BUILDDIR = '../blender-build/linux-glibc211-i686'
BF_INSTALLDIR = '../blender-install/linux-glibc211-i686' BF_INSTALLDIR = '../blender-install/linux-glibc211-i686'
BF_NUMJOBS = 1 BF_NUMJOBS = 1
#BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_20', 'sm_21', 'sm_30', 'sm_35', 'sm_50', 'sm_52'] BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_20', 'sm_21', 'sm_30', 'sm_35', 'sm_50']
BF_CYCLES_CUDA_BINARIES_ARCH = []

View File

@@ -2,4 +2,4 @@ BF_BUILDDIR = '../blender-build/linux-glibc211-x86_64'
BF_INSTALLDIR = '../blender-install/linux-glibc211-x86_64' BF_INSTALLDIR = '../blender-install/linux-glibc211-x86_64'
BF_NUMJOBS = 1 BF_NUMJOBS = 1
BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_20', 'sm_21', 'sm_30', 'sm_35', 'sm_50', 'sm_52'] BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_20', 'sm_21', 'sm_30', 'sm_35', 'sm_50']

View File

@@ -79,8 +79,6 @@ WITH_BF_STATICZLIB = True
BF_ZLIB_LIB_STATIC = '${BF_ZLIB}/lib/libz.a' BF_ZLIB_LIB_STATIC = '${BF_ZLIB}/lib/libz.a'
WITH_BF_SDL = True WITH_BF_SDL = True
WITH_BF_SDL_DYNLOAD = True
WITH_BF_OGG = True WITH_BF_OGG = True
WITH_BF_OPENMP = True WITH_BF_OPENMP = True
@@ -124,15 +122,13 @@ 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_LIB_STATIC = '${BF_OIIO_LIBPATH}/libOpenImageIO.a ${BF_OPENEXR}/lib/libIlmImf.a ${BF_JPEG}/lib/libjpeg.a'
BF_OIIO_LIBPATH = '${BF_OIIO}/lib' BF_OIIO_LIBPATH = '${BF_OIIO}/lib'
BF_IS_NEW_OSL = False
WITH_BF_CYCLES_OSL = True WITH_BF_CYCLES_OSL = True
WITH_BF_STATICOSL = BF_IS_NEW_OSL WITH_BF_STATICOSL = False
BF_OSL = '/opt/lib/osl' BF_OSL = '/opt/lib/osl'
BF_OSL_INC = '${BF_OSL}/include' BF_OSL_INC = '${BF_OSL}/include'
# note oslexec would passed via program linkflags, which is needed to # note oslexec would passed via program linkflags, which is needed to
# make llvm happy with osl_allocate_closure_component # make llvm happy with osl_allocate_closure_component
BF_OSL_LIB = 'oslcomp oslexec oslquery' 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_LIBPATH = '${BF_OSL}/lib'
BF_OSL_COMPILER = '${BF_OSL}/bin/oslc' BF_OSL_COMPILER = '${BF_OSL}/bin/oslc'
@@ -159,27 +155,13 @@ 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_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_regex.a ${BF_BOOST_LIBPATH}/libboost_locale.a ${BF_BOOST_LIBPATH}/libboost_system.a \
${BF_BOOST_LIBPATH}/libboost_thread.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' BF_BOOST_LIBPATH = '${BF_BOOST}/lib'
# Ocean Simulation # Ocean Simulation
WITH_BF_OCEANSIM = True WITH_BF_OCEANSIM = True
# OpenSubdiv
WITH_BF_OPENSUBDIV = True
WITH_BF_STATICOPENSUBDIV = True
BF_OPENSUBDIV = '/opt/lib/opensubdiv'
BF_OPENSUBDIV_INC = '${BF_OPENSUBDIV}/include'
BF_OPENSUBDIV_LIB = 'osdCPU osdGPU'
BF_OPENSUBDIV_LIBPATH = '${BF_OPENSUBDIV}/lib'
BF_OPENSUBDIV_LIB_STATIC = '${BF_OPENSUBDIV}/lib/libosdCPU.a ${BF_OPENSUBDIV}/lib/libosdGPU.a'
# Compilation and optimization # Compilation and optimization
BF_DEBUG = False BF_DEBUG = False
REL_CCFLAGS = ['-DNDEBUG', '-O2', '-msse', '-msse2'] # C & C++ REL_CCFLAGS = ['-DNDEBUG', '-O2', '-msse', '-msse2'] # C & C++
PLATFORM_LINKFLAGS = ['-lrt'] PLATFORM_LINKFLAGS = ['-lrt']
if BF_IS_NEW_OSL: BF_PROGRAM_LINKFLAGS = ['-Wl,--whole-archive', '-loslexec', '-Wl,--no-whole-archive', '-Wl,--version-script=source/creator/blender.map']
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']

View File

@@ -79,8 +79,6 @@ WITH_BF_STATICZLIB = True
BF_ZLIB_LIB_STATIC = '${BF_ZLIB}/lib/libz.a' BF_ZLIB_LIB_STATIC = '${BF_ZLIB}/lib/libz.a'
WITH_BF_SDL = True WITH_BF_SDL = True
WITH_BF_SDL_DYNLOAD = True
WITH_BF_OGG = True WITH_BF_OGG = True
WITH_BF_OPENMP = True WITH_BF_OPENMP = True
@@ -124,15 +122,13 @@ 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_LIB_STATIC = '${BF_OIIO_LIBPATH}/libOpenImageIO.a ${BF_OPENEXR}/lib/libIlmImf.a ${BF_JPEG}/lib/libjpeg.a'
BF_OIIO_LIBPATH = '${BF_OIIO}/lib' BF_OIIO_LIBPATH = '${BF_OIIO}/lib'
BF_IS_NEW_OSL = False
WITH_BF_CYCLES_OSL = True WITH_BF_CYCLES_OSL = True
WITH_BF_STATICOSL = BF_IS_NEW_OSL WITH_BF_STATICOSL = False
BF_OSL = '/opt/lib/osl' BF_OSL = '/opt/lib/osl'
BF_OSL_INC = '${BF_OSL}/include' BF_OSL_INC = '${BF_OSL}/include'
# note oslexec would passed via program linkflags, which is needed to # note oslexec would passed via program linkflags, which is needed to
# make llvm happy with osl_allocate_closure_component # make llvm happy with osl_allocate_closure_component
BF_OSL_LIB = 'oslcomp oslexec oslquery' 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_LIBPATH = '${BF_OSL}/lib'
BF_OSL_COMPILER = '${BF_OSL}/bin/oslc' BF_OSL_COMPILER = '${BF_OSL}/bin/oslc'
@@ -159,27 +155,13 @@ 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_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_regex.a ${BF_BOOST_LIBPATH}/libboost_locale.a ${BF_BOOST_LIBPATH}/libboost_system.a \
${BF_BOOST_LIBPATH}/libboost_thread.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' BF_BOOST_LIBPATH = '${BF_BOOST}/lib'
# Ocean Simulation # Ocean Simulation
WITH_BF_OCEANSIM = True WITH_BF_OCEANSIM = True
# OpenSubdiv
WITH_BF_OPENSUBDIV = True
WITH_BF_STATICOPENSUBDIV = True
BF_OPENSUBDIV = '/opt/lib/opensubdiv'
BF_OPENSUBDIV_INC = '${BF_OPENSUBDIV}/include'
BF_OPENSUBDIV_LIB = 'osdCPU osdGPU'
BF_OPENSUBDIV_LIBPATH = '${BF_OPENSUBDIV}/lib'
BF_OPENSUBDIV_LIB_STATIC = '${BF_OPENSUBDIV}/lib/libosdCPU.a ${BF_OPENSUBDIV}/lib/libosdGPU.a'
# Compilation and optimization # Compilation and optimization
BF_DEBUG = False BF_DEBUG = False
REL_CCFLAGS = ['-DNDEBUG', '-O2', '-msse', '-msse2'] # C & C++ REL_CCFLAGS = ['-DNDEBUG', '-O2', '-msse', '-msse2'] # C & C++
PLATFORM_LINKFLAGS = ['-lrt'] PLATFORM_LINKFLAGS = ['-lrt']
if BF_IS_NEW_OSL: BF_PROGRAM_LINKFLAGS = ['-Wl,--whole-archive', '-loslexec', '-Wl,--no-whole-archive', '-Wl,--version-script=source/creator/blender.map']
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']

View File

@@ -5,5 +5,3 @@ WITH_BF_CYCLES_CUDA_BINARIES = True
WITH_BF_CYCLES_OSL = False # OSL never worked on OSX 32bit ! WITH_BF_CYCLES_OSL = False # OSL never worked on OSX 32bit !
WITH_BF_COLLADA = False # we drop 32bit, newest collada is only x86_64 !

View File

@@ -1,6 +1,5 @@
CC = "../lib/darwin-9.x.universal/clang-omp-3.5/bin/clang"
CXX = "../lib/darwin-9.x.universal/clang-omp-3.5/bin/clang++"
MACOSX_ARCHITECTURE = 'x86_64' # valid archs: ppc, i386, ppc64, x86_64 MACOSX_ARCHITECTURE = 'x86_64' # valid archs: ppc, i386, ppc64, x86_64
WITH_BF_CYCLES_CUDA_BINARIES = True WITH_BF_CYCLES_CUDA_BINARIES = True

View File

@@ -64,8 +64,6 @@ WITH_BF_STATICZLIB = True
BF_ZLIB_LIB_STATIC = '${BF_ZLIB}/lib/libz.a' BF_ZLIB_LIB_STATIC = '${BF_ZLIB}/lib/libz.a'
WITH_BF_SDL = True WITH_BF_SDL = True
WITH_BF_SDL_DYNLOAD = True
WITH_BF_OGG = False WITH_BF_OGG = False
WITH_BF_OPENMP = True WITH_BF_OPENMP = True

View File

@@ -64,8 +64,6 @@ WITH_BF_STATICZLIB = True
BF_ZLIB_LIB_STATIC = '${BF_ZLIB}/lib/libz.a' BF_ZLIB_LIB_STATIC = '${BF_ZLIB}/lib/libz.a'
WITH_BF_SDL = True WITH_BF_SDL = True
WITH_BF_SDL_DYNLOAD = True
WITH_BF_OGG = False WITH_BF_OGG = False
WITH_BF_OPENMP = True WITH_BF_OPENMP = True

View File

@@ -3,12 +3,6 @@
# <pep8 compliant> # <pep8 compliant>
# List of the branches being built automatically overnight
NIGHT_SCHEDULE_BRANCHES = [None]
# List of the branches available for force build
FORCE_SCHEDULE_BRANCHES = ["master", "gooseberry", "experimental-build"]
""" """
Stock Twisted directory lister doesn't provide any information about last file Stock Twisted directory lister doesn't provide any information about last file
modification time, we hack the class a bit in order to have such functionaliity modification time, we hack the class a bit in order to have such functionaliity
@@ -98,7 +92,6 @@ all_repositories = {
r'https://svn.blender.org/svnroot/bf-blender/': 'lib svn', r'https://svn.blender.org/svnroot/bf-blender/': 'lib svn',
} }
def codebaseGenerator(chdict): def codebaseGenerator(chdict):
return all_repositories[chdict['repository']] return all_repositories[chdict['repository']]
@@ -114,14 +107,13 @@ from buildbot.schedulers import timed, forcesched
c['schedulers'] = [] c['schedulers'] = []
def schedule_force_build(name): def schedule_force_build(name):
c['schedulers'].append(forcesched.ForceScheduler(name='force ' + name, c['schedulers'].append(forcesched.ForceScheduler(name='force ' + name,
builderNames=[name], builderNames=[name],
codebases=[forcesched.CodebaseParameter( codebases=[forcesched.CodebaseParameter(
codebase="blender", codebase="blender",
branch=forcesched.ChoiceStringParameter( branch=forcesched.ChoiceStringParameter(
name="branch", choices=FORCE_SCHEDULE_BRANCHES, default="master"), name="branch", choices=["master", "testbuild"], default="master"),
# Do not hide revision, can be handy! # Do not hide revision, can be handy!
repository=forcesched.FixedParameter(name="repository", default="", hide=True), repository=forcesched.FixedParameter(name="repository", default="", hide=True),
project=forcesched.FixedParameter(name="project", default="", hide=True)), project=forcesched.FixedParameter(name="project", default="", hide=True)),
@@ -135,22 +127,18 @@ def schedule_force_build(name):
def schedule_build(name, hour, minute=0): def schedule_build(name, hour, minute=0):
for current_branch in NIGHT_SCHEDULE_BRANCHES: c['schedulers'].append(timed.Nightly(name='nightly ' + name,
scheduler_name = "nightly " + name codebases={
if current_branch: "blender": {"repository": ""},
scheduler_name += ' ' + current_branch "blender-translations": {"repository": ""},
c['schedulers'].append(timed.Nightly(name=scheduler_name, "blender-addons": {"repository": ""},
codebases={ "blender-addons-contrib": {"repository": ""},
"blender": {"repository": ""}, "scons": {"repository": ""},
"blender-translations": {"repository": "", "branch": "master"}, "lib svn": {"repository": ""}},
"blender-addons": {"repository": "", "branch": "master"}, branch=None,
"blender-addons-contrib": {"repository": "", "branch": "master"}, builderNames=[name],
"scons": {"repository": "", "branch": "master"}, hour=hour,
"lib svn": {"repository": "", "branch": "trunk"}}, minute=minute))
branch=current_branch,
builderNames=[name],
hour=hour,
minute=minute))
# BUILDERS # BUILDERS
@@ -305,12 +293,10 @@ add_builder(c, 'mac_x86_64_10_6_scons', 'darwin-9.x.universal', generic_builder,
add_builder(c, 'mac_i386_10_6_scons', 'darwin-9.x.universal', generic_builder, hour=11) add_builder(c, 'mac_i386_10_6_scons', 'darwin-9.x.universal', generic_builder, hour=11)
add_builder(c, 'linux_glibc211_i386_scons', '', generic_builder, hour=1) add_builder(c, 'linux_glibc211_i386_scons', '', generic_builder, hour=1)
add_builder(c, 'linux_glibc211_x86_64_scons', '', generic_builder, hour=2) add_builder(c, 'linux_glibc211_x86_64_scons', '', generic_builder, hour=2)
#add_builder(c, 'win32_scons_vc2013', 'windows_vc12', generic_builder, hour=1) 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, 'win64_scons_vc2013', 'win64_vc12', generic_builder, hour=2)
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, 'mingw_win32_scons', 'mingw32', generic_builder, hour=4) #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, 'mingw_win64_scons', 'mingw64', generic_builder, hour=3)
#add_builder(c, 'freebsd_i386_cmake', '', generic_builder, hour=1) #add_builder(c, 'freebsd_i386_cmake', '', generic_builder, hour=1)
#add_builder(c, 'freebsd_x86_64_cmake', '', generic_builder, hour=2) #add_builder(c, 'freebsd_x86_64_cmake', '', generic_builder, hour=2)

View File

@@ -30,12 +30,11 @@ import zipfile
# extension stripping # extension stripping
def strip_extension(filename): def strip_extension(filename):
extensions = '.zip', '.tar', '.bz2', '.gz', '.tgz', '.tbz', '.exe' extensions = '.zip', '.tar', '.bz2', '.gz', '.tgz', '.tbz', '.exe'
filename_noext, ext = os.path.splitext(filename)
for ext in extensions: if ext in extensions:
if filename.endswith(ext): return strip_extension(filename_noext) # may have .tar.bz2
filename = filename[:-len(ext)] else:
return filename
return filename
# extract platform from package name # extract platform from package name
@@ -49,11 +48,12 @@ def get_platform(filename):
tokens = filename.split("-") tokens = filename.split("-")
platforms = ('osx', 'mac', 'bsd', platforms = ('osx', 'mac', 'bsd',
'win', 'linux', 'source', 'win', 'linux', 'source',
'irix', 'solaris', 'mingw') 'solaris',
'mingw')
platform_tokens = [] platform_tokens = []
found = False found = False
for i, token in enumerate(tokens): for token in tokens:
if not found: if not found:
for platform in platforms: for platform in platforms:
if platform in token.lower(): if platform in token.lower():
@@ -71,14 +71,14 @@ def get_branch(filename):
branch = "" branch = ""
for token in tokens: for token in tokens:
if token == "blender":
return branch
if branch == "": if branch == "":
branch = token branch = token
else: else:
branch = branch + "-" + token branch = branch + "-" + token
if token == "blender":
return branch
return "" return ""
# get filename # get filename
@@ -95,7 +95,7 @@ if not os.path.exists(filename):
try: try:
z = zipfile.ZipFile(filename, "r") z = zipfile.ZipFile(filename, "r")
except Exception as ex: except Exception, ex:
sys.stderr.write('Failed to open zip file: %s\n' % str(ex)) sys.stderr.write('Failed to open zip file: %s\n' % str(ex))
sys.exit(1) sys.exit(1)
@@ -112,28 +112,23 @@ branch = get_branch(packagename)
if platform == '': if platform == '':
sys.stderr.write('Failed to detect platform ' + sys.stderr.write('Failed to detect platform ' +
'from package: %r\n' % packagename) 'from package: %r\n' % packagename)
sys.exit(1) sys.exit(1)
# extract # extract
if not branch or branch == 'master': directory = 'public_html/download'
directory = 'public_html/download'
elif branch == 'experimental-build':
directory = 'public_html/download/experimental'
else:
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()
except Exception as ex:
os.remove(filename)
except Exception, ex:
sys.stderr.write('Failed to unzip package: %s\n' % str(ex)) sys.stderr.write('Failed to unzip package: %s\n' % str(ex))
sys.exit(1) sys.exit(1)
@@ -143,6 +138,6 @@ try:
if get_platform(f) == platform and get_branch(f) == branch: if get_platform(f) == platform and get_branch(f) == branch:
if f != packagename: if f != packagename:
os.remove(os.path.join(directory, f)) os.remove(os.path.join(directory, f))
except Exception as ex: except Exception, ex:
sys.stderr.write('Failed to remove old packages: %s\n' % str(ex)) sys.stderr.write('Failed to remove old packages: %s\n' % str(ex))
sys.exit(1) sys.exit(1)

View File

@@ -33,7 +33,7 @@ builder = sys.argv[1]
# we run from build/ directory # we run from build/ directory
blender_dir = '../blender.git' blender_dir = '../blender.git'
if 'cmake' in builder: if builder.find('cmake') != -1:
# cmake # cmake
# set build options # set build options
@@ -46,24 +46,11 @@ if 'cmake' in builder:
elif builder.endswith('mac_ppc_cmake'): elif builder.endswith('mac_ppc_cmake'):
cmake_options.append('-DCMAKE_OSX_ARCHITECTURES:STRING=ppc') cmake_options.append('-DCMAKE_OSX_ARCHITECTURES:STRING=ppc')
if 'win64' in builder:
cmake_options.append(['-G', '"Visual Studio 12 2013 Win64"'])
elif 'win32' in builder:
cmake_options.append(['-G', '"Visual Studio 12 2013"'])
cmake_options.append("-C../blender.git/build_files/cmake/config/blender_full.cmake")
cmake_options.append("-DWITH_CYCLES_CUDA_BINARIES=1")
# configure and make # configure and make
retcode = subprocess.call(['cmake', blender_dir] + cmake_options) retcode = subprocess.call(['cmake', blender_dir] + cmake_options)
if retcode != 0: if retcode != 0:
sys.exit(retcode) sys.exit(retcode)
retcode = subprocess.call(['make', '-s', '-j4', 'install'])
if 'win32' in builder:
retcode = subprocess.call(['msbuild', 'INSTALL.vcxproj', '/Property:PlatformToolset=v120_xp', '/p:Configuration=Release'])
elif 'win64' in builder:
retcode = subprocess.call(['msbuild', 'INSTALL.vcxproj', '/p:Configuration=Release'])
else:
retcode = subprocess.call(['make', '-s', '-j4', 'install'])
sys.exit(retcode) sys.exit(retcode)
else: else:
python_bin = 'python' python_bin = 'python'
@@ -119,8 +106,6 @@ else:
if config.find('player') != -1: if config.find('player') != -1:
scons_options.append('BF_BUILDDIR=%s_player' % (build_dir)) scons_options.append('BF_BUILDDIR=%s_player' % (build_dir))
elif config.find('cuda') != -1:
scons_options.append('BF_BUILDDIR=%s_cuda' % (build_dir))
else: else:
scons_options.append('BF_BUILDDIR=%s' % (build_dir)) scons_options.append('BF_BUILDDIR=%s' % (build_dir))
@@ -145,7 +130,7 @@ else:
retcode = subprocess.call(cur_scons_cmd + scons_options) retcode = subprocess.call(cur_scons_cmd + scons_options)
if retcode != 0: if retcode != 0:
print('Error building rules with config ' + config) print('Error building rules wuth config ' + config)
sys.exit(retcode) sys.exit(retcode)
sys.exit(0) sys.exit(0)

View File

@@ -115,40 +115,6 @@ if builder.find('scons') != -1:
retcode = subprocess.call([python_bin, 'scons/scons.py'] + scons_options) retcode = subprocess.call([python_bin, 'scons/scons.py'] + scons_options)
sys.exit(retcode) sys.exit(retcode)
else:
# CMake
if 'win' in builder:
files = [f for f in os.listdir('.') if os.path.isfile(f) and f.endswith('.zip')]
for f in files:
os.remove(f)
retcode = subprocess.call(['cpack', '-G', 'ZIP'])
result_file = [f for f in os.listdir('.') if os.path.isfile(f) and f.endswith('.zip')][0]
# TODO(sergey): Such magic usually happens in SCon's packaging bu 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]
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
try:
upload_zip = "buildbot_upload.zip"
if os.path.exists(upload_zip):
os.remove(upload_zip)
z = zipfile.ZipFile(upload_zip, "w", compression=zipfile.ZIP_STORED)
z.write("{}.zip".format(builderified_name))
z.close()
sys.exit(retcode)
except Exception as ex:
sys.stderr.write('Create buildbot_upload.zip failed' + str(ex) + '\n')
sys.exit(1)
# clean release directory if it already exists # clean release directory if it already exists
release_dir = 'release' release_dir = 'release'
@@ -161,7 +127,7 @@ if os.path.exists(release_dir):
# create release package # create release package
try: try:
subprocess.call(['make', 'package_archive']) subprocess.call(['make', 'package_archive'])
except Exception as ex: except Exception, ex:
sys.stderr.write('Make package release failed' + str(ex) + '\n') sys.stderr.write('Make package release failed' + str(ex) + '\n')
sys.exit(1) sys.exit(1)
@@ -192,6 +158,6 @@ try:
z = zipfile.ZipFile(upload_zip, "w", compression=zipfile.ZIP_STORED) z = zipfile.ZipFile(upload_zip, "w", compression=zipfile.ZIP_STORED)
z.write(filepath, arcname=file) z.write(filepath, arcname=file)
z.close() z.close()
except Exception as ex: except Exception, 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)

View File

@@ -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
)

View File

@@ -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
)

View File

@@ -75,5 +75,3 @@ MARK_AS_ADVANCED(
GLEW_LIBRARY GLEW_LIBRARY
GLEW_MX_LIBRARY GLEW_MX_LIBRARY
) )
UNSET(_glew_SEARCH_DIRS)

View File

@@ -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

View File

@@ -1,94 +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}
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
)

View File

@@ -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
)

View File

@@ -140,8 +140,3 @@ IF(OPENCOLLADA_FOUND)
SET(OPENCOLLADA_LIBRARIES ${_opencollada_LIBRARIES}) SET(OPENCOLLADA_LIBRARIES ${_opencollada_LIBRARIES})
SET(OPENCOLLADA_INCLUDE_DIRS ${_opencollada_INCLUDES}) SET(OPENCOLLADA_INCLUDE_DIRS ${_opencollada_INCLUDES})
ENDIF(OPENCOLLADA_FOUND) ENDIF(OPENCOLLADA_FOUND)
UNSET(COMPONENT)
UNSET(UPPERCOMPONENT)
UNSET(_opencollada_LIBRARIES)
UNSET(_opencollada_INCLUDES)

View File

@@ -63,12 +63,11 @@ FOREACH(COMPONENT ${_opencolorio_FIND_COMPONENTS})
PATH_SUFFIXES PATH_SUFFIXES
lib64 lib lib64 lib
) )
IF(OPENCOLORIO_${UPPERCOMPONENT}_LIBRARY) if(OPENCOLORIO_${UPPERCOMPONENT}_LIBRARY)
LIST(APPEND _opencolorio_LIBRARIES "${OPENCOLORIO_${UPPERCOMPONENT}_LIBRARY}") LIST(APPEND _opencolorio_LIBRARIES "${OPENCOLORIO_${UPPERCOMPONENT}_LIBRARY}")
ENDIF() endif()
ENDFOREACH() ENDFOREACH()
# handle the QUIETLY and REQUIRED arguments and set OPENCOLORIO_FOUND to TRUE if # handle the QUIETLY and REQUIRED arguments and set OPENCOLORIO_FOUND to TRUE if
# all listed variables are TRUE # all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs) INCLUDE(FindPackageHandleStandardArgs)
@@ -83,13 +82,5 @@ ENDIF(OPENCOLORIO_FOUND)
MARK_AS_ADVANCED( MARK_AS_ADVANCED(
OPENCOLORIO_INCLUDE_DIR OPENCOLORIO_INCLUDE_DIR
OPENCOLORIO_LIBRARY OPENCOLORIO_LIBRARY
OPENCOLORIO_OPENCOLORIO_LIBRARY
OPENCOLORIO_TINYXML_LIBRARY
OPENCOLORIO_YAML-CPP_LIBRARY
) )
UNSET(COMPONENT)
UNSET(UPPERCOMPONENT)
UNSET(_opencolorio_FIND_COMPONENTS)
UNSET(_opencolorio_LIBRARIES)
UNSET(_opencolorio_SEARCH_DIRS)

View File

@@ -51,7 +51,6 @@ SET(_openexr_SEARCH_DIRS
/sw # Fink /sw # Fink
/opt/local # DarwinPorts /opt/local # DarwinPorts
/opt/csw # Blastwave /opt/csw # Blastwave
/opt/lib/openexr
) )
FIND_PATH(OPENEXR_INCLUDE_DIR FIND_PATH(OPENEXR_INCLUDE_DIR
@@ -138,9 +137,3 @@ FOREACH(COMPONENT ${_openexr_FIND_COMPONENTS})
STRING(TOUPPER ${COMPONENT} UPPERCOMPONENT) STRING(TOUPPER ${COMPONENT} UPPERCOMPONENT)
MARK_AS_ADVANCED(OPENEXR_${UPPERCOMPONENT}_LIBRARY) MARK_AS_ADVANCED(OPENEXR_${UPPERCOMPONENT}_LIBRARY)
ENDFOREACH() ENDFOREACH()
UNSET(COMPONENT)
UNSET(UPPERCOMPONENT)
UNSET(_openexr_FIND_COMPONENTS)
UNSET(_openexr_LIBRARIES)
UNSET(_openexr_SEARCH_DIRS)

View File

@@ -71,8 +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
) )
UNSET(_opengles_SEARCH_DIRS)

View File

@@ -7,8 +7,6 @@
# OPENIMAGEIO_ROOT_DIR, The base directory to search for OpenImageIO. # OPENIMAGEIO_ROOT_DIR, The base directory to search for OpenImageIO.
# This can also be an environment variable. # This can also be an environment variable.
# OPENIMAGEIO_FOUND, If false, do not try to use OpenImageIO. # OPENIMAGEIO_FOUND, If false, do not try to use OpenImageIO.
# OPENIMAGEIO_PUGIXML_FOUND, Indicates whether OIIO has biltin PuguXML parser.
# OPENIMAGEIO_IDIFF, full path to idiff application if found.
# #
# also defined, but not for general use are # also defined, but not for general use are
# OPENIMAGEIO_LIBRARY, where to find the OpenImageIO library. # OPENIMAGEIO_LIBRARY, where to find the OpenImageIO library.
@@ -56,15 +54,6 @@ FIND_LIBRARY(OPENIMAGEIO_LIBRARY
lib64 lib lib64 lib
) )
FIND_FILE(OPENIMAGEIO_IDIFF
NAMES
idiff
HINTS
${OPENIMAGEIO_ROOT_DIR}
PATH_SUFFIXES
bin
)
# handle the QUIETLY and REQUIRED arguments and set OPENIMAGEIO_FOUND to TRUE if # handle the QUIETLY and REQUIRED arguments and set OPENIMAGEIO_FOUND to TRUE if
# all listed variables are TRUE # all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs) INCLUDE(FindPackageHandleStandardArgs)
@@ -74,17 +63,9 @@ FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenImageIO DEFAULT_MSG
IF(OPENIMAGEIO_FOUND) IF(OPENIMAGEIO_FOUND)
SET(OPENIMAGEIO_LIBRARIES ${OPENIMAGEIO_LIBRARY}) SET(OPENIMAGEIO_LIBRARIES ${OPENIMAGEIO_LIBRARY})
SET(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO_INCLUDE_DIR}) SET(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO_INCLUDE_DIR})
IF(EXISTS ${OPENIMAGEIO_INCLUDE_DIR}/OpenImageIO/pugixml.hpp) ENDIF(OPENIMAGEIO_FOUND)
SET(OPENIMAGEIO_PUGIXML_FOUND TRUE)
ENDIF()
ELSE()
SET(OPENIMAGEIO_PUGIXML_FOUND FALSE)
ENDIF()
MARK_AS_ADVANCED( MARK_AS_ADVANCED(
OPENIMAGEIO_INCLUDE_DIR OPENIMAGEIO_INCLUDE_DIR
OPENIMAGEIO_LIBRARY OPENIMAGEIO_LIBRARY
OPENIMAGEIO_IDIFF
) )
UNSET(_openimageio_SEARCH_DIRS)

View File

@@ -69,5 +69,3 @@ MARK_AS_ADVANCED(
OPENJPEG_INCLUDE_DIR OPENJPEG_INCLUDE_DIR
OPENJPEG_LIBRARY OPENJPEG_LIBRARY
) )
UNSET(_openjpeg_SEARCH_DIRS)

View File

@@ -1,98 +0,0 @@
# - Find OpenShadingLanguage library
# Find the native OpenShadingLanguage includes and library
# This module defines
# OSL_INCLUDE_DIRS, where to find OSL headers, Set when
# OSL_INCLUDE_DIR is found.
# OSL_LIBRARIES, libraries to link against to use OSL.
# OSL_ROOT_DIR, the base directory to search for OSL.
# This can also be an environment variable.
# OSL_COMPILER, full path to OSL script compiler.
# OSL_FOUND, if false, do not try to use OSL.
# OSL_LIBRARY_VERSION_MAJOR, OSL_LIBRARY_VERSION_MINOR, the major
# and minor versions of OSL library if found.
#
#=============================================================================
# Copyright 2014 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 OSL_ROOT_DIR was defined in the environment, use it.
IF(NOT OSL_ROOT_DIR AND NOT $ENV{OSL_ROOT_DIR} STREQUAL "")
SET(OSL_ROOT_DIR $ENV{OSL_ROOT_DIR})
ENDIF()
SET(_osl_FIND_COMPONENTS
oslcomp
oslexec
oslquery
)
SET(_osl_SEARCH_DIRS
${OSL_ROOT_DIR}
/usr/local
/sw # Fink
/opt/local # DarwinPorts
/opt/csw # Blastwave
/opt/lib/osl
)
FIND_PATH(OSL_INCLUDE_DIR
NAMES
OSL/oslversion.h
HINTS
${_osl_SEARCH_DIRS}
PATH_SUFFIXES
include
)
SET(_osl_LIBRARIES)
FOREACH(COMPONENT ${_osl_FIND_COMPONENTS})
STRING(TOUPPER ${COMPONENT} UPPERCOMPONENT)
FIND_LIBRARY(OSL_${UPPERCOMPONENT}_LIBRARY
NAMES
${COMPONENT}
HINTS
${_osl_SEARCH_DIRS}
PATH_SUFFIXES
lib64 lib
)
LIST(APPEND _osl_LIBRARIES "${OSL_${UPPERCOMPONENT}_LIBRARY}")
ENDFOREACH()
FIND_PROGRAM(OSL_COMPILER oslc
HINTS ${_osl_SEARCH_DIRS}
PATH_SUFFIXES bin)
# handle the QUIETLY and REQUIRED arguments and set OSL_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(OSL DEFAULT_MSG _osl_LIBRARIES OSL_INCLUDE_DIR OSL_COMPILER)
IF(OSL_FOUND)
SET(OSL_LIBRARIES ${_osl_LIBRARIES})
SET(OSL_INCLUDE_DIRS ${OSL_INCLUDE_DIR})
FILE(STRINGS "${OSL_INCLUDE_DIR}/OSL/oslversion.h" OSL_LIBRARY_VERSION_MAJOR
REGEX "^[ \t]*#define[ \t]+OSL_LIBRARY_VERSION_MAJOR[ \t]+[0-9]+.*$")
FILE(STRINGS "${OSL_INCLUDE_DIR}/OSL/oslversion.h" OSL_LIBRARY_VERSION_MINOR
REGEX "^[ \t]*#define[ \t]+OSL_LIBRARY_VERSION_MINOR[ \t]+[0-9]+.*$")
STRING(REGEX REPLACE ".*#define[ \t]+OSL_LIBRARY_VERSION_MAJOR[ \t]+([.0-9]+).*"
"\\1" OSL_LIBRARY_VERSION_MAJOR ${OSL_LIBRARY_VERSION_MAJOR})
STRING(REGEX REPLACE ".*#define[ \t]+OSL_LIBRARY_VERSION_MINOR[ \t]+([.0-9]+).*"
"\\1" OSL_LIBRARY_VERSION_MINOR ${OSL_LIBRARY_VERSION_MINOR})
ENDIF(OSL_FOUND)
MARK_AS_ADVANCED(
OSL_INCLUDE_DIR
)
FOREACH(COMPONENT ${_osl_FIND_COMPONENTS})
STRING(TOUPPER ${COMPONENT} UPPERCOMPONENT)
MARK_AS_ADVANCED(OSL_${UPPERCOMPONENT}_LIBRARY)
ENDFOREACH()

View File

@@ -1,111 +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
)
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()

View File

@@ -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

View File

@@ -1,73 +0,0 @@
# - Find PugiXML library
# Find the native PugiXML includes and library
# This module defines
# PUGIXML_INCLUDE_DIRS, where to find pugixml.hpp, Set when
# PugiXML is found.
# PUGIXML_LIBRARIES, libraries to link against to use PugiiXML.
# PUGIXML_ROOT_DIR, The base directory to search for PugiXML.
# This can also be an environment variable.
# PUGIXML_FOUND, If false, do not try to use PugiXML.
#
# also defined, but not for general use are
# PUGIXML_LIBRARY, where to find the PugiXML library.
#=============================================================================
# Copyright 2014 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 PUGIXML_ROOT_DIR was defined in the environment, use it.
IF(NOT PUGIXML_ROOT_DIR AND NOT $ENV{PUGIXML_ROOT_DIR} STREQUAL "")
SET(PUGIXML_ROOT_DIR $ENV{PUGIXML_ROOT_DIR})
ENDIF()
SET(_pugixml_SEARCH_DIRS
${PUGIXML_ROOT_DIR}
/usr/local
/sw # Fink
/opt/local # DarwinPorts
/opt/csw # Blastwave
/opt/lib/oiio
)
FIND_PATH(PUGIXML_INCLUDE_DIR
NAMES
pugixml.hpp
HINTS
${_pugixml_SEARCH_DIRS}
PATH_SUFFIXES
include
)
FIND_LIBRARY(PUGIXML_LIBRARY
NAMES
pugixml
HINTS
${_pugixml_SEARCH_DIRS}
PATH_SUFFIXES
lib64 lib
)
# handle the QUIETLY and REQUIRED arguments and set PUGIXML_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(PUGIXML DEFAULT_MSG
PUGIXML_LIBRARY PUGIXML_INCLUDE_DIR)
IF(PUGIXML_FOUND)
SET(PUGIXML_LIBRARIES ${PUGIXML_LIBRARY})
SET(PUGIXML_INCLUDE_DIRS ${PUGIXML_INCLUDE_DIR})
ELSE()
SET(PUGIXML_PUGIXML_FOUND FALSE)
ENDIF()
MARK_AS_ADVANCED(
PUGIXML_INCLUDE_DIR
PUGIXML_LIBRARY
)

View File

@@ -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.
@@ -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.4 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
) )

View File

@@ -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
)

View File

@@ -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}
@@ -32,28 +32,16 @@ macro(BLENDER_SRC_GTEST_EX NAME SRC EXTRA_LIBS DO_ADD_TEST)
bf_testing_main bf_testing_main
bf_intern_guardedalloc bf_intern_guardedalloc
extern_gtest extern_gtest
# needed for glog
${PTHREADS_LIBRARIES}
extern_glog) extern_glog)
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()

View File

@@ -60,8 +60,7 @@ if(EXISTS ${SOURCE_DIR}/.git)
execute_process(COMMAND git log HEAD..@{u} execute_process(COMMAND git log HEAD..@{u}
WORKING_DIRECTORY ${SOURCE_DIR} WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE _git_below_check OUTPUT_VARIABLE _git_below_check
OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_STRIP_TRAILING_WHITESPACE)
ERROR_QUIET)
if(NOT _git_below_check STREQUAL "") if(NOT _git_below_check STREQUAL "")
# If there're commits between HEAD and upstream this means # If there're commits between HEAD and upstream this means
# that we're reset-ed to older revision. Use it's hash then. # that we're reset-ed to older revision. Use it's hash then.
@@ -97,10 +96,6 @@ if(EXISTS ${SOURCE_DIR}/.git)
WORKING_DIRECTORY ${SOURCE_DIR} WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE MY_WC_COMMIT_TIMESTAMP OUTPUT_VARIABLE MY_WC_COMMIT_TIMESTAMP
OUTPUT_STRIP_TRAILING_WHITESPACE) 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 # Update GIT index before getting dirty files
execute_process(COMMAND git update-index -q --refresh execute_process(COMMAND git update-index -q --refresh
@@ -151,14 +146,6 @@ file(WRITE buildinfo.h.txt
"#define BUILD_TIME \"${BUILD_TIME}\"\n" "#define BUILD_TIME \"${BUILD_TIME}\"\n"
) )
# cleanup
unset(MY_WC_HASH)
unset(MY_WC_COMMIT_TIMESTAMP)
unset(MY_WC_BRANCH)
unset(BUILD_DATE)
unset(BUILD_TIME)
# Copy the file to the final header only if the version changes # Copy the file to the final header only if the version changes
# and avoid needless rebuilds # and avoid needless rebuilds
# TODO: verify this comment is true, as BUILD_TIME probably changes # TODO: verify this comment is true, as BUILD_TIME probably changes

View File

@@ -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,26 +187,21 @@ 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:
raise Exception("non existent include %s:%d -> %s" % (f, i, new_file)) raise Exception("non existant include %s:%d -> %s" % (f, i, new_file))
# print(new_file) # print(new_file)
@@ -240,6 +228,10 @@ def cmake_get_src(f):
filen.close() filen.close()
for cmake in source_list(SOURCE_DIR, is_cmake):
cmake_get_src(cmake)
def is_ignore(f): def is_ignore(f):
for ig in IGNORE: for ig in IGNORE:
if ig in f: if ig in f:
@@ -247,83 +239,73 @@ def is_ignore(f):
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: if is_err:
raise Exception("CMake referenecs missing files, aborting!") raise Exception("CMake referenecs missing files, aborting!")
del is_err del is_err
del errs del errs
# now check on files not accounted for. # now check on files not accounted for.
print("\nC/C++ Files CMake doesnt know about...") print("\nC/C++ Files CMake doesnt know about...")
for cf in sorted(source_list(SOURCE_DIR, is_c)): for cf in sorted(source_list(SOURCE_DIR, is_c)):
if not is_ignore(cf): if not is_ignore(cf):
if cf not in global_c: if cf not in global_c:
print("missing_c: ", cf) print("missing_c: ", cf)
# check if automake builds a corrasponding .o file. # check if automake builds a corrasponding .o file.
''' '''
if cf in global_c: if cf in global_c:
out1 = os.path.splitext(cf)[0] + ".o" out1 = os.path.splitext(cf)[0] + ".o"
out2 = os.path.splitext(cf)[0] + ".Po" out2 = os.path.splitext(cf)[0] + ".Po"
out2_dir, out2_file = out2 = os.path.split(out2) out2_dir, out2_file = out2 = os.path.split(out2)
out2 = os.path.join(out2_dir, ".deps", out2_file) out2 = os.path.join(out2_dir, ".deps", out2_file)
if not os.path.exists(out1) and not os.path.exists(out2): if not os.path.exists(out1) and not os.path.exists(out2):
print("bad_c: ", cf) print("bad_c: ", cf)
''' '''
print("\nC/C++ Headers CMake doesnt know about...") print("\nC/C++ Headers CMake doesnt know about...")
for hf in sorted(source_list(SOURCE_DIR, is_c_header)): for hf in sorted(source_list(SOURCE_DIR, is_c_header)):
if not is_ignore(hf): if not is_ignore(hf):
if hf not in global_h: if hf not in global_h:
print("missing_h: ", hf) print("missing_h: ", hf)
if UTF8_CHECK: if UTF8_CHECK:
# test encoding # test encoding
import traceback import traceback
for files in (global_c, global_h): for files in (global_c, global_h):
for f in sorted(files): for f in sorted(files):
if os.path.exists(f): if os.path.exists(f):
# ignore outside of our source tree # ignore outside of our source tree
if "extern" not in f: if "extern" not in f:
i = 1 i = 1
try: try:
for l in open(f, "r", encoding="utf8"): for l in open(f, "r", encoding="utf8"):
i += 1 i += 1
except UnicodeDecodeError: except:
print("Non utf8: %s:%d" % (f, i)) print("Non utf8: %s:%d" % (f, i))
if i > 1: if i > 1:
traceback.print_exc() traceback.print_exc()
if __name__ == "__main__":
main()

View File

@@ -74,6 +74,3 @@ IGNORE = (
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"))))

View File

@@ -29,20 +29,18 @@ Example linux usage
Windows not supported so far Windows not supported so far
""" """
from project_info import ( from project_info import (SIMPLE_PROJECTFILE,
SIMPLE_PROJECTFILE, SOURCE_DIR,
SOURCE_DIR, CMAKE_DIR,
CMAKE_DIR, PROJECT_DIR,
PROJECT_DIR, source_list,
source_list, is_project_file,
is_project_file, is_c_header,
is_c_header, # is_py,
# is_py, cmake_advanced_info,
cmake_advanced_info, cmake_compiler_defines,
cmake_compiler_defines, project_name_get,
cmake_cache_var, )
project_name_get,
)
import os import os
@@ -72,10 +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()]
@@ -131,14 +125,12 @@ def create_nb_project_main():
f.write(' </configuration>\n') f.write(' </configuration>\n')
f.write('</project>\n') f.write('</project>\n')
f.close()
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]
@@ -190,27 +182,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' % build_cmd)
f.write(' <cleanCommand>%s</cleanCommand>\n' % 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')
@@ -237,11 +218,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')
@@ -263,8 +243,6 @@ def create_nb_project_main():
f.write('</configurationDescriptor>\n') f.write('</configurationDescriptor>\n')
f.close()
def main(): def main():
create_nb_project_main() create_nb_project_main()

View File

@@ -22,27 +22,26 @@
# <pep8 compliant> # <pep8 compliant>
r""" """
Example Linux usage:
python ~/blender-git/blender/build_files/cmake/cmake_qtcreator_project.py ~/blender-git/cmake
Example Win32 usage: Example Win32 usage:
c:\Python32\python.exe c:\blender_dev\blender\build_files\cmake\cmake_qtcreator_project.py 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 ( from project_info import (SIMPLE_PROJECTFILE,
SIMPLE_PROJECTFILE, SOURCE_DIR,
SOURCE_DIR, # CMAKE_DIR,
# CMAKE_DIR, PROJECT_DIR,
PROJECT_DIR, source_list,
source_list, is_project_file,
is_project_file, is_c_header,
is_c_header, is_py,
is_py, cmake_advanced_info,
cmake_advanced_info, cmake_compiler_defines,
cmake_compiler_defines, project_name_get,
project_name_get, )
)
import os import os
import sys import sys
@@ -64,22 +63,21 @@ def create_qtc_project_main():
if SIMPLE_PROJECTFILE: if SIMPLE_PROJECTFILE:
# --- qtcreator specific, simple format # --- qtcreator specific, simple format
PROJECT_NAME = "Blender" PROJECT_NAME = "Blender"
FILE_NAME = PROJECT_NAME.lower() f = open(os.path.join(PROJECT_DIR, "%s.files" % PROJECT_NAME), 'w')
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: f = open(os.path.join(PROJECT_DIR, "%s.includes" % PROJECT_NAME), 'w')
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: f = open(qtc_prj, 'w')
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: f = open(qtc_cfg, 'w')
f.write("// ADD PREDEFINED MACROS HERE!\n") f.write("// ADD PREDEFINED MACROS HERE!\n")
else: else:
includes, defines = cmake_advanced_info() includes, defines = cmake_advanced_info()
@@ -98,30 +96,29 @@ def create_qtc_project_main():
PROJECT_NAME = project_name_get() 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: f = open(os.path.join(PROJECT_DIR, "%s.files" % FILE_NAME), 'w')
f.write("\n".join(files_rel)) f.write("\n".join(files_rel))
with open(os.path.join(PROJECT_DIR, "%s.includes" % FILE_NAME), 'w', encoding='utf-8') as f: f = open(os.path.join(PROJECT_DIR, "%s.includes" % FILE_NAME), 'w', encoding='utf-8')
f.write("\n".join(sorted(includes))) f.write("\n".join(sorted(includes)))
qtc_prj = os.path.join(PROJECT_DIR, "%s.creator" % FILE_NAME) qtc_prj = os.path.join(PROJECT_DIR, "%s.creator" % FILE_NAME)
with open(qtc_prj, 'w') as f: f = open(qtc_prj, 'w')
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" % FILE_NAME)
with open(qtc_cfg, 'w') as f: f = open(qtc_cfg, 'w')
f.write("// ADD PREDEFINED MACROS TO %s_custom.config!\n" % FILE_NAME) f.write("// ADD PREDEFINED MACROS TO %s_custom.config!\n" % FILE_NAME)
qtc_custom_cfg = os.path.join(PROJECT_DIR, "%s_custom.config" % FILE_NAME)
qtc_custom_cfg = os.path.join(PROJECT_DIR, "%s_custom.config" % FILE_NAME) if os.path.exists(qtc_custom_cfg):
if os.path.exists(qtc_custom_cfg): fc = open(qtc_custom_cfg, 'r')
with open(qtc_custom_cfg, 'r') as fc: f.write(fc.read())
f.write(fc.read()) fc.close()
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 sys.platform != "win32":
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))
print("Blender project file written to: %r" % qtc_prj) print("Blender project file written to: %r" % qtc_prj)
# --- end # --- end
@@ -140,17 +137,17 @@ def create_qtc_project_python():
PROJECT_NAME = project_name_get() + "_Python" 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: f = open(os.path.join(PROJECT_DIR, "%s.files" % FILE_NAME), 'w')
f.write("\n".join(files_rel)) f.write("\n".join(files_rel))
qtc_prj = os.path.join(PROJECT_DIR, "%s.creator" % FILE_NAME) qtc_prj = os.path.join(PROJECT_DIR, "%s.creator" % FILE_NAME)
with open(qtc_prj, 'w') as f: f = open(qtc_prj, 'w')
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" % FILE_NAME)
if not os.path.exists(qtc_cfg): if not os.path.exists(qtc_cfg):
with open(qtc_cfg, 'w') as f: f = open(qtc_cfg, 'w')
f.write("// ADD PREDEFINED MACROS HERE!\n") f.write("// ADD PREDEFINED MACROS HERE!\n")
print("Python project file written to: %r" % qtc_prj) print("Python project file written to: %r" % qtc_prj)

View File

@@ -1,69 +0,0 @@
# Turn everything ON thats expected for an official release builds.
#
# Example usage:
# cmake -C../blender/build_files/cmake/config/blender_full.cmake ../blender
#
set(WITH_BUILDINFO ON CACHE BOOL "" FORCE)
set(WITH_BULLET ON CACHE BOOL "" FORCE)
set(WITH_CODEC_AVI ON CACHE BOOL "" FORCE)
set(WITH_CODEC_FFMPEG ON CACHE BOOL "" FORCE)
set(WITH_CODEC_SNDFILE ON CACHE BOOL "" FORCE)
set(WITH_CYCLES ON CACHE BOOL "" FORCE)
set(WITH_FFTW3 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_COMPOSITOR ON CACHE BOOL "" FORCE)
set(WITH_FREESTYLE ON CACHE BOOL "" FORCE)
set(WITH_GHOST_XDND ON CACHE BOOL "" FORCE)
set(WITH_IK_SOLVER ON CACHE BOOL "" FORCE)
set(WITH_IK_ITASC ON CACHE BOOL "" FORCE)
set(WITH_IMAGE_CINEON ON CACHE BOOL "" FORCE)
set(WITH_IMAGE_DDS ON CACHE BOOL "" FORCE)
set(WITH_IMAGE_FRAMESERVER ON CACHE BOOL "" FORCE)
set(WITH_IMAGE_HDR ON CACHE BOOL "" FORCE)
set(WITH_IMAGE_OPENEXR 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_INPUT_NDOF ON CACHE BOOL "" FORCE)
set(WITH_INTERNATIONAL ON CACHE BOOL "" FORCE)
set(WITH_JACK ON CACHE BOOL "" FORCE)
set(WITH_LZMA ON CACHE BOOL "" FORCE)
set(WITH_LZO ON CACHE BOOL "" FORCE)
set(WITH_MOD_BOOLEAN ON CACHE BOOL "" FORCE)
set(WITH_MOD_FLUID ON CACHE BOOL "" FORCE)
set(WITH_MOD_REMESH ON CACHE BOOL "" FORCE)
set(WITH_MOD_SMOKE ON CACHE BOOL "" FORCE)
set(WITH_MOD_OCEANSIM ON CACHE BOOL "" FORCE)
set(WITH_AUDASPACE ON CACHE BOOL "" FORCE)
set(WITH_OPENAL ON CACHE BOOL "" FORCE)
set(WITH_OPENCOLLADA ON CACHE BOOL "" FORCE)
set(WITH_OPENCOLORIO ON CACHE BOOL "" FORCE)
set(WITH_OPENMP ON CACHE BOOL "" FORCE)
set(WITH_OPENNL ON CACHE BOOL "" FORCE)
set(WITH_PYTHON_INSTALL ON CACHE BOOL "" FORCE)
set(WITH_RAYOPTIMIZATION ON CACHE BOOL "" FORCE)
set(WITH_SDL ON CACHE BOOL "" FORCE)
set(WITH_X11_XINPUT ON CACHE BOOL "" FORCE)
set(WITH_X11_XF86VMODE ON CACHE BOOL "" FORCE)
set(WITH_PLAYER ON CACHE BOOL "" FORCE)
set(WITH_MEM_JEMALLOC ON CACHE BOOL "" FORCE)
# platform dependant options
if(UNIX AND NOT APPLE)
set(WITH_JACK 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)
set(WITH_OPENSUBDIV ON CACHE BOOL "" FORCE)
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()

View File

@@ -16,7 +16,6 @@ set(WITH_CODEC_SNDFILE OFF CACHE BOOL "" FORCE)
set(WITH_CYCLES OFF CACHE BOOL "" FORCE) set(WITH_CYCLES 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)
@@ -45,7 +44,6 @@ set(WITH_AUDASPACE OFF CACHE BOOL "" FORCE)
set(WITH_OPENAL OFF CACHE BOOL "" FORCE) set(WITH_OPENAL OFF CACHE BOOL "" FORCE)
set(WITH_OPENCOLLADA OFF CACHE BOOL "" FORCE) 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_OPENMP OFF CACHE BOOL "" FORCE) set(WITH_OPENMP OFF CACHE BOOL "" FORCE)
set(WITH_OPENNL OFF CACHE BOOL "" FORCE) set(WITH_OPENNL OFF CACHE BOOL "" FORCE)
set(WITH_PYTHON_INSTALL OFF CACHE BOOL "" FORCE) set(WITH_PYTHON_INSTALL OFF CACHE BOOL "" FORCE)

View File

@@ -48,7 +48,7 @@ macro(list_insert_before
unset(_index) unset(_index)
endmacro() endmacro()
function(list_assert_duplicates function (list_assert_duplicates
list_id list_id
) )
@@ -104,48 +104,24 @@ macro(file_list_suffix
endmacro() endmacro()
function(target_link_libraries_optimized macro(target_link_libraries_optimized TARGET LIBS)
TARGET
LIBS
)
foreach(_LIB ${LIBS}) foreach(_LIB ${LIBS})
target_link_libraries(${TARGET} optimized "${_LIB}") target_link_libraries(${TARGET} optimized "${_LIB}")
endforeach() endforeach()
endfunction() unset(_LIB)
endmacro()
function(target_link_libraries_debug
TARGET
LIBS
)
macro(target_link_libraries_debug TARGET LIBS)
foreach(_LIB ${LIBS}) foreach(_LIB ${LIBS})
target_link_libraries(${TARGET} debug "${_LIB}") target_link_libraries(${TARGET} debug "${_LIB}")
endforeach() endforeach()
endfunction() unset(_LIB)
endmacro()
function(target_link_libraries_decoupled
target
libraries_var
)
if(NOT MSVC)
target_link_libraries(${target} ${${libraries_var}})
else()
# For MSVC we link to different libraries depending whether
# release or debug target is being built.
file_list_suffix(_libraries_debug "${${libraries_var}}" "_d")
target_link_libraries_debug(${target} "${_libraries_debug}")
target_link_libraries_optimized(${target} "${${libraries_var}}")
endif()
endfunction()
# Nicer makefiles with -I/1/foo/ instead of -I/1/2/3/../../foo/ # Nicer makefiles with -I/1/foo/ instead of -I/1/2/3/../../foo/
# use it instead of include_directories() # use it instead of include_directories()
function(blender_include_dirs macro(blender_include_dirs
includes includes)
)
set(_ALL_INCS "") set(_ALL_INCS "")
foreach(_INC ${ARGV}) foreach(_INC ${ARGV})
get_filename_component(_ABS_INC ${_INC} ABSOLUTE) get_filename_component(_ABS_INC ${_INC} ABSOLUTE)
@@ -156,12 +132,13 @@ function(blender_include_dirs
##endif() ##endif()
endforeach() endforeach()
include_directories(${_ALL_INCS}) include_directories(${_ALL_INCS})
endfunction() unset(_INC)
unset(_ABS_INC)
function(blender_include_dirs_sys unset(_ALL_INCS)
includes endmacro()
)
macro(blender_include_dirs_sys
includes)
set(_ALL_INCS "") set(_ALL_INCS "")
foreach(_INC ${ARGV}) foreach(_INC ${ARGV})
get_filename_component(_ABS_INC ${_INC} ABSOLUTE) get_filename_component(_ABS_INC ${_INC} ABSOLUTE)
@@ -171,11 +148,13 @@ function(blender_include_dirs_sys
##endif() ##endif()
endforeach() endforeach()
include_directories(SYSTEM ${_ALL_INCS}) include_directories(SYSTEM ${_ALL_INCS})
endfunction() unset(_INC)
unset(_ABS_INC)
unset(_ALL_INCS)
endmacro()
function(blender_source_group macro(blender_source_group
sources sources)
)
# Group by location on disk # Group by location on disk
source_group("Source Files" FILES CMakeLists.txt) source_group("Source Files" FILES CMakeLists.txt)
@@ -185,23 +164,23 @@ function(blender_source_group
if((${_SRC_EXT} MATCHES ".h") OR if((${_SRC_EXT} MATCHES ".h") OR
(${_SRC_EXT} MATCHES ".hpp") OR (${_SRC_EXT} MATCHES ".hpp") OR
(${_SRC_EXT} MATCHES ".hh")) (${_SRC_EXT} MATCHES ".hh"))
source_group("Header Files" FILES ${_SRC})
set(GROUP_ID "Header Files")
else() else()
set(GROUP_ID "Source Files") source_group("Source Files" FILES ${_SRC})
endif() endif()
source_group("${GROUP_ID}" FILES ${_SRC})
endforeach() endforeach()
endfunction()
unset(_SRC)
unset(_SRC_EXT)
endmacro()
# only MSVC uses SOURCE_GROUP # only MSVC uses SOURCE_GROUP
function(blender_add_lib_nolist macro(blender_add_lib_nolist
name name
sources sources
includes includes
includes_sys includes_sys)
)
# message(STATUS "Configuring library ${name}") # message(STATUS "Configuring library ${name}")
@@ -221,30 +200,28 @@ function(blender_add_lib_nolist
# Not for system includes because they can resolve to the same path # Not for system includes because they can resolve to the same path
# list_assert_duplicates("${includes_sys}") # list_assert_duplicates("${includes_sys}")
endfunction() endmacro()
function(blender_add_lib macro(blender_add_lib
name name
sources sources
includes includes
includes_sys includes_sys)
)
blender_add_lib_nolist(${name} "${sources}" "${includes}" "${includes_sys}") blender_add_lib_nolist(${name} "${sources}" "${includes}" "${includes_sys}")
set_property(GLOBAL APPEND PROPERTY BLENDER_LINK_LIBS ${name}) set_property(GLOBAL APPEND PROPERTY BLENDER_LINK_LIBS ${name})
endfunction() endmacro()
function(SETUP_LIBDIRS) macro(SETUP_LIBDIRS)
link_directories(${JPEG_LIBPATH} ${PNG_LIBPATH} ${ZLIB_LIBPATH} ${FREETYPE_LIBPATH}) link_directories(${JPEG_LIBPATH} ${PNG_LIBPATH} ${ZLIB_LIBPATH} ${FREETYPE_LIBPATH})
if(WITH_PYTHON) # AND NOT WITH_PYTHON_MODULE # WIN32 needs if(WITH_PYTHON) # AND NOT WITH_PYTHON_MODULE # WIN32 needs
link_directories(${PYTHON_LIBPATH}) link_directories(${PYTHON_LIBPATH})
endif() endif()
if(WITH_SDL AND NOT WITH_SDL_DYNLOAD) if(WITH_SDL)
link_directories(${SDL_LIBPATH}) link_directories(${SDL_LIBPATH})
endif() endif()
if(WITH_CODEC_FFMPEG) if(WITH_CODEC_FFMPEG)
@@ -298,27 +275,19 @@ function(SETUP_LIBDIRS)
if(WIN32 AND NOT UNIX) if(WIN32 AND NOT UNIX)
link_directories(${PTHREADS_LIBPATH}) link_directories(${PTHREADS_LIBPATH})
endif() endif()
endfunction() endmacro()
function(setup_liblinks macro(setup_liblinks
target target)
)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${PLATFORM_LINKFLAGS}" PARENT_SCOPE) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${PLATFORM_LINKFLAGS}")
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${PLATFORM_LINKFLAGS_DEBUG}" PARENT_SCOPE) set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${PLATFORM_LINKFLAGS_DEBUG}")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${PLATFORM_LINKFLAGS}" PARENT_SCOPE) target_link_libraries(${target}
set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} ${PLATFORM_LINKFLAGS_DEBUG}" PARENT_SCOPE) ${BLENDER_GL_LIBRARIES}
${PNG_LIBRARIES}
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${PLATFORM_LINKFLAGS}" PARENT_SCOPE) ${ZLIB_LIBRARIES}
set(CMAKE_MODULE_LINKER_FLAGS_DEBUG "${CMAKE_MODULE_LINKER_FLAGS_DEBUG} ${PLATFORM_LINKFLAGS_DEBUG}" PARENT_SCOPE) ${FREETYPE_LIBRARY})
target_link_libraries(
${target}
${PNG_LIBRARIES}
${ZLIB_LIBRARIES}
${FREETYPE_LIBRARY}
)
# since we are using the local libs for python when compiling msvc projects, we need to add _d when compiling debug versions # since we are using the local libs for python when compiling msvc projects, we need to add _d when compiling debug versions
if(WITH_PYTHON) # AND NOT WITH_PYTHON_MODULE # WIN32 needs if(WITH_PYTHON) # AND NOT WITH_PYTHON_MODULE # WIN32 needs
@@ -334,18 +303,12 @@ function(setup_liblinks
endif() endif()
endif() endif()
if(WITH_LZO AND WITH_SYSTEM_LZO)
target_link_libraries(${target} ${LZO_LIBRARIES})
endif()
if(WITH_SYSTEM_GLEW) if(WITH_SYSTEM_GLEW)
target_link_libraries(${target} ${BLENDER_GLEW_LIBRARIES}) target_link_libraries(${target} ${BLENDER_GLEW_LIBRARIES})
endif() endif()
if(WITH_BULLET AND WITH_SYSTEM_BULLET) if(WITH_BULLET AND WITH_SYSTEM_BULLET)
target_link_libraries(${target} ${BULLET_LIBRARIES}) target_link_libraries(${target} ${BULLET_LIBRARIES})
endif() endif()
if(WITH_AUDASPACE AND WITH_SYSTEM_AUDASPACE)
target_link_libraries(${target} ${AUDASPACE_C_LIBRARIES} ${AUDASPACE_PY_LIBRARIES})
endif()
if(WITH_OPENAL) if(WITH_OPENAL)
target_link_libraries(${target} ${OPENAL_LIBRARY}) target_link_libraries(${target} ${OPENAL_LIBRARY})
endif() endif()
@@ -358,7 +321,7 @@ function(setup_liblinks
if(WITH_CODEC_SNDFILE) if(WITH_CODEC_SNDFILE)
target_link_libraries(${target} ${SNDFILE_LIBRARIES}) target_link_libraries(${target} ${SNDFILE_LIBRARIES})
endif() endif()
if(WITH_SDL AND NOT WITH_SDL_DYNLOAD) if(WITH_SDL)
target_link_libraries(${target} ${SDL_LIBRARY}) target_link_libraries(${target} ${SDL_LIBRARY})
endif() endif()
if(WITH_CODEC_QUICKTIME) if(WITH_CODEC_QUICKTIME)
@@ -373,19 +336,6 @@ function(setup_liblinks
if(WITH_OPENCOLORIO) if(WITH_OPENCOLORIO)
target_link_libraries(${target} ${OPENCOLORIO_LIBRARIES}) target_link_libraries(${target} ${OPENCOLORIO_LIBRARIES})
endif() endif()
if(WITH_OPENSUBDIV)
if(WIN32 AND NOT UNIX)
file_list_suffix(OPENSUBDIV_LIBRARIES_DEBUG "${OPENSUBDIV_LIBRARIES}" "_d")
target_link_libraries_debug(${target} "${OPENSUBDIV_LIBRARIES_DEBUG}")
target_link_libraries_optimized(${target} "${OPENSUBDIV_LIBRARIES}")
unset(OPENSUBDIV_LIBRARIES_DEBUG)
else()
target_link_libraries(${target} ${OPENSUBDIV_LIBRARIES})
endif()
endif()
if(WITH_CYCLES_OSL)
target_link_libraries(${target} ${OSL_LIBRARIES})
endif()
if(WITH_BOOST) if(WITH_BOOST)
target_link_libraries(${target} ${BOOST_LIBRARIES}) target_link_libraries(${target} ${BOOST_LIBRARIES})
if(Boost_USE_STATIC_LIBS AND Boost_USE_ICU) if(Boost_USE_STATIC_LIBS AND Boost_USE_ICU)
@@ -407,6 +357,14 @@ function(setup_liblinks
target_link_libraries(${target} ${OPENJPEG_LIBRARIES}) target_link_libraries(${target} ${OPENJPEG_LIBRARIES})
endif() endif()
if(WITH_CODEC_FFMPEG) if(WITH_CODEC_FFMPEG)
# Strange! Without this ffmpeg gives linking errors (on linux),
# even though it's linked above.
# XXX: Does FFMPEG depend on GLU?
if(WITH_GLU)
target_link_libraries(${target} ${OPENGL_glu_LIBRARY})
endif()
target_link_libraries(${target} ${FFMPEG_LIBRARIES}) target_link_libraries(${target} ${FFMPEG_LIBRARIES})
endif() endif()
if(WITH_OPENCOLLADA) if(WITH_OPENCOLLADA)
@@ -428,13 +386,11 @@ function(setup_liblinks
unset(EXPAT_LIB_DEBUG) unset(EXPAT_LIB_DEBUG)
endif() endif()
else() else()
target_link_libraries( target_link_libraries(${target}
${target} ${OPENCOLLADA_LIBRARIES}
${OPENCOLLADA_LIBRARIES} ${PCRE_LIBRARIES}
${PCRE_LIBRARIES} ${XML2_LIBRARIES}
${XML2_LIBRARIES} ${EXPAT_LIB})
${EXPAT_LIB}
)
endif() endif()
endif() endif()
if(WITH_MEM_JEMALLOC) if(WITH_MEM_JEMALLOC)
@@ -446,6 +402,9 @@ function(setup_liblinks
if(WITH_MOD_CLOTH_ELTOPO) if(WITH_MOD_CLOTH_ELTOPO)
target_link_libraries(${target} ${LAPACK_LIBRARIES}) target_link_libraries(${target} ${LAPACK_LIBRARIES})
endif() endif()
if(WITH_CYCLES_OSL)
target_link_libraries(${target} ${OSL_LIBRARIES})
endif()
if(WITH_LLVM) if(WITH_LLVM)
target_link_libraries(${target} ${LLVM_LIBRARY}) target_link_libraries(${target} ${LLVM_LIBRARY})
endif() endif()
@@ -453,22 +412,16 @@ function(setup_liblinks
target_link_libraries(${target} ${PTHREADS_LIBRARIES}) target_link_libraries(${target} ${PTHREADS_LIBRARIES})
endif() endif()
target_link_libraries(${target} ${PLATFORM_LINKLIBS} ${CMAKE_DL_LIBS})
# We put CLEW and CUEW here because OPENSUBDIV_LIBRARIES dpeends on them.. # We put CLEW and CUEW here because OPENSUBDIV_LIBRARIES dpeends on them..
if(WITH_CYCLES OR WITH_COMPOSITOR OR WITH_OPENSUBDIV) if(WITH_CYCLES OR WITH_COMPOSITOR OR WITH_OPENSUBDIV)
target_link_libraries(${target} "extern_clew") target_link_libraries(${target} "extern_clew")
target_link_libraries(${target} "extern_cuew") target_link_libraries(${target} "extern_cuew")
endif() endif()
endmacro()
#system libraries with no dependencies such as platform link libs or opengl should go last macro(SETUP_BLENDER_SORTED_LIBS)
target_link_libraries(${target}
${BLENDER_GL_LIBRARIES})
target_link_libraries(${target} ${PLATFORM_LINKLIBS} ${CMAKE_DL_LIBS})
endfunction()
function(SETUP_BLENDER_SORTED_LIBS)
get_property(BLENDER_LINK_LIBS GLOBAL PROPERTY BLENDER_LINK_LIBS) get_property(BLENDER_LINK_LIBS GLOBAL PROPERTY BLENDER_LINK_LIBS)
list(APPEND BLENDER_LINK_LIBS list(APPEND BLENDER_LINK_LIBS
@@ -546,15 +499,13 @@ function(SETUP_BLENDER_SORTED_LIBS)
bf_ikplugin bf_ikplugin
bf_modifiers bf_modifiers
bf_bmesh bf_bmesh
bf_gpu
bf_blenkernel bf_blenkernel
bf_physics
bf_nodes bf_nodes
bf_rna bf_rna
bf_gpu
bf_blenloader bf_blenloader
bf_imbuf bf_imbuf
bf_blenlib bf_blenlib
bf_depsgraph
bf_intern_ghost bf_intern_ghost
bf_intern_string bf_intern_string
bf_avi bf_avi
@@ -573,6 +524,7 @@ function(SETUP_BLENDER_SORTED_LIBS)
ge_phys_dummy ge_phys_dummy
ge_phys_bullet ge_phys_bullet
bf_intern_smoke bf_intern_smoke
extern_minilzo
extern_lzma extern_lzma
extern_colamd extern_colamd
ge_logic_ketsji ge_logic_ketsji
@@ -607,8 +559,6 @@ function(SETUP_BLENDER_SORTED_LIBS)
extern_wcwidth extern_wcwidth
extern_libmv extern_libmv
extern_glog extern_glog
extern_sdlew
extern_eigen3
bf_intern_glew_mx bf_intern_glew_mx
) )
@@ -627,10 +577,6 @@ function(SETUP_BLENDER_SORTED_LIBS)
list(APPEND BLENDER_SORTED_LIBS extern_eltopo) list(APPEND BLENDER_SORTED_LIBS extern_eltopo)
endif() endif()
if(NOT WITH_SYSTEM_LZO)
list(APPEND BLENDER_SORTED_LIBS extern_minilzo)
endif()
if(NOT WITH_SYSTEM_GLEW) if(NOT WITH_SYSTEM_GLEW)
list(APPEND BLENDER_SORTED_LIBS ${BLENDER_GLEW_LIBRARIES}) list(APPEND BLENDER_SORTED_LIBS ${BLENDER_GLEW_LIBRARIES})
endif() endif()
@@ -687,10 +633,6 @@ function(SETUP_BLENDER_SORTED_LIBS)
list_insert_after(BLENDER_SORTED_LIBS "ge_logic_ngnetwork" "extern_bullet") list_insert_after(BLENDER_SORTED_LIBS "ge_logic_ngnetwork" "extern_bullet")
endif() endif()
if(WITH_OPENSUBDIV)
list(APPEND BLENDER_SORTED_LIBS bf_intern_opensubdiv)
endif()
foreach(SORTLIB ${BLENDER_SORTED_LIBS}) foreach(SORTLIB ${BLENDER_SORTED_LIBS})
set(REMLIB ${SORTLIB}) set(REMLIB ${SORTLIB})
foreach(SEARCHLIB ${BLENDER_LINK_LIBS}) foreach(SEARCHLIB ${BLENDER_LINK_LIBS})
@@ -709,12 +651,14 @@ function(SETUP_BLENDER_SORTED_LIBS)
message(STATUS "Blender Skipping: (${REM_MSG})") message(STATUS "Blender Skipping: (${REM_MSG})")
endif() endif()
unset(SEARCHLIB)
set(BLENDER_SORTED_LIBS ${BLENDER_SORTED_LIBS} PARENT_SCOPE) unset(SORTLIB)
unset(REMLIB)
unset(REM_MSG)
# for top-level tests # for top-level tests
set_property(GLOBAL PROPERTY BLENDER_SORTED_LIBS_PROP ${BLENDER_SORTED_LIBS}) set_property(GLOBAL PROPERTY BLENDER_SORTED_LIBS_PROP ${BLENDER_SORTED_LIBS})
endfunction() endmacro()
macro(TEST_SSE_SUPPORT macro(TEST_SSE_SUPPORT
_sse_flags _sse_flags
@@ -778,8 +722,6 @@ macro(TEST_SSE_SUPPORT
endmacro() endmacro()
macro(TEST_STDBOOL_SUPPORT) macro(TEST_STDBOOL_SUPPORT)
include(CheckCSourceRuns)
# This program will compile correctly if and only if # This program will compile correctly if and only if
# this C compiler supports C99 stdbool. # this C compiler supports C99 stdbool.
check_c_source_runs(" check_c_source_runs("
@@ -936,22 +878,19 @@ endmacro()
# utility macro # utility macro
macro(remove_cc_flag macro(remove_cc_flag
_flag) flag)
foreach(flag ${ARGV}) string(REGEX REPLACE ${flag} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
string(REGEX REPLACE ${flag} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") string(REGEX REPLACE ${flag} "" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
string(REGEX REPLACE ${flag} "" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}") string(REGEX REPLACE ${flag} "" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
string(REGEX REPLACE ${flag} "" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") string(REGEX REPLACE ${flag} "" CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL}")
string(REGEX REPLACE ${flag} "" CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL}") string(REGEX REPLACE ${flag} "" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
string(REGEX REPLACE ${flag} "" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
string(REGEX REPLACE ${flag} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") string(REGEX REPLACE ${flag} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
string(REGEX REPLACE ${flag} "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") string(REGEX REPLACE ${flag} "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
string(REGEX REPLACE ${flag} "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") string(REGEX REPLACE ${flag} "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
string(REGEX REPLACE ${flag} "" CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL}") string(REGEX REPLACE ${flag} "" CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL}")
string(REGEX REPLACE ${flag} "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") string(REGEX REPLACE ${flag} "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
endforeach()
unset(flag)
endmacro() endmacro()
@@ -965,34 +904,27 @@ endmacro()
macro(remove_strict_flags) macro(remove_strict_flags)
if(CMAKE_COMPILER_IS_GNUCC) if(CMAKE_COMPILER_IS_GNUCC)
remove_cc_flag( remove_cc_flag("-Wstrict-prototypes")
"-Wstrict-prototypes" remove_cc_flag("-Wmissing-prototypes")
"-Wmissing-prototypes" remove_cc_flag("-Wunused-parameter")
"-Wmissing-format-attribute" remove_cc_flag("-Wwrite-strings")
"-Wunused-local-typedefs" remove_cc_flag("-Wredundant-decls")
"-Wunused-macros" remove_cc_flag("-Wundef")
"-Wunused-parameter" remove_cc_flag("-Wshadow")
"-Wwrite-strings" remove_cc_flag("-Wdouble-promotion")
"-Wredundant-decls" remove_cc_flag("-Wold-style-definition")
"-Wundef" remove_cc_flag("-Werror=[^ ]+")
"-Wshadow" remove_cc_flag("-Werror")
"-Wdouble-promotion"
"-Wold-style-definition"
"-Werror=[^ ]+"
"-Werror"
)
# negate flags implied by '-Wall' # negate flags implied by '-Wall'
add_cc_flag("${CC_REMOVE_STRICT_FLAGS}") add_cc_flag("${CC_REMOVE_STRICT_FLAGS}")
endif() endif()
if(CMAKE_C_COMPILER_ID MATCHES "Clang") if(CMAKE_C_COMPILER_ID MATCHES "Clang")
remove_cc_flag( remove_cc_flag("-Wunused-parameter")
"-Wunused-parameter" remove_cc_flag("-Wunused-variable")
"-Wunused-variable" remove_cc_flag("-Werror=[^ ]+")
"-Werror=[^ ]+" remove_cc_flag("-Werror")
"-Werror"
)
# negate flags implied by '-Wall' # negate flags implied by '-Wall'
add_cc_flag("${CC_REMOVE_STRICT_FLAGS}") add_cc_flag("${CC_REMOVE_STRICT_FLAGS}")
@@ -1004,24 +936,6 @@ macro(remove_strict_flags)
endmacro() endmacro()
macro(remove_extra_strict_flags)
if(CMAKE_COMPILER_IS_GNUCC)
remove_cc_flag(
"-Wunused-parameter"
)
endif()
if(CMAKE_C_COMPILER_ID MATCHES "Clang")
remove_cc_flag(
"-Wunused-parameter"
)
endif()
if(MSVC)
# TODO
endif()
endmacro()
# note, we can only append flags on a single file so we need to negate the options. # note, we can only append flags on a single file so we need to negate the options.
# at the moment we cant shut up ffmpeg deprecations, so use this, but will # at the moment we cant shut up ffmpeg deprecations, so use this, but will
# probably add more removals here. # probably add more removals here.
@@ -1050,50 +964,39 @@ macro(remove_strict_flags_file
endmacro() endmacro()
function(ADD_CHECK_C_COMPILER_FLAG macro(ADD_CHECK_C_COMPILER_FLAG
_CFLAGS _CFLAGS
_CACHE_VAR _CACHE_VAR
_FLAG _FLAG)
)
include(CheckCCompilerFlag) include(CheckCCompilerFlag)
CHECK_C_COMPILER_FLAG("${_FLAG}" "${_CACHE_VAR}") CHECK_C_COMPILER_FLAG("${_FLAG}" "${_CACHE_VAR}")
if(${_CACHE_VAR}) if(${_CACHE_VAR})
# message(STATUS "Using CFLAG: ${_FLAG}") # message(STATUS "Using CFLAG: ${_FLAG}")
set(${_CFLAGS} "${${_CFLAGS}} ${_FLAG}" PARENT_SCOPE) set(${_CFLAGS} "${${_CFLAGS}} ${_FLAG}")
else() else()
message(STATUS "Unsupported CFLAG: ${_FLAG}") message(STATUS "Unsupported CFLAG: ${_FLAG}")
endif() endif()
endfunction() endmacro()
function(ADD_CHECK_CXX_COMPILER_FLAG macro(ADD_CHECK_CXX_COMPILER_FLAG
_CXXFLAGS _CXXFLAGS
_CACHE_VAR _CACHE_VAR
_FLAG _FLAG)
)
include(CheckCXXCompilerFlag) include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("${_FLAG}" "${_CACHE_VAR}") CHECK_CXX_COMPILER_FLAG("${_FLAG}" "${_CACHE_VAR}")
if(${_CACHE_VAR}) if(${_CACHE_VAR})
# message(STATUS "Using CXXFLAG: ${_FLAG}") # message(STATUS "Using CXXFLAG: ${_FLAG}")
set(${_CXXFLAGS} "${${_CXXFLAGS}} ${_FLAG}" PARENT_SCOPE) set(${_CXXFLAGS} "${${_CXXFLAGS}} ${_FLAG}")
else() else()
message(STATUS "Unsupported CXXFLAG: ${_FLAG}") message(STATUS "Unsupported CXXFLAG: ${_FLAG}")
endif() endif()
endfunction() endmacro()
function(get_blender_version)
# extracts header vars and defines them in the parent scope:
#
# - BLENDER_VERSION (major.minor)
# - BLENDER_VERSION_MAJOR
# - BLENDER_VERSION_MINOR
# - BLENDER_SUBVERSION (used for internal versioning mainly)
# - BLENDER_VERSION_CHAR (a, b, c, ...or empty string)
# - BLENDER_VERSION_CYCLE (alpha, beta, rc, release)
macro(get_blender_version)
# So cmake depends on BKE_blender.h, beware of inf-loops! # So cmake depends on BKE_blender.h, beware of inf-loops!
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/source/blender/blenkernel/BKE_blender.h CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/source/blender/blenkernel/BKE_blender.h
${CMAKE_BINARY_DIR}/source/blender/blenkernel/BKE_blender.h.done) ${CMAKE_BINARY_DIR}/source/blender/blenkernel/BKE_blender.h.done)
@@ -1126,29 +1029,33 @@ function(get_blender_version)
message(FATAL_ERROR "Version parsing failed for BLENDER_VERSION_CYCLE") message(FATAL_ERROR "Version parsing failed for BLENDER_VERSION_CYCLE")
endif() endif()
math(EXPR _out_version_major "${_out_version} / 100") math(EXPR BLENDER_VERSION_MAJOR "${_out_version} / 100")
math(EXPR _out_version_minor "${_out_version} % 100") math(EXPR BLENDER_VERSION_MINOR "${_out_version} % 100")
set(BLENDER_VERSION "${BLENDER_VERSION_MAJOR}.${BLENDER_VERSION_MINOR}")
set(BLENDER_SUBVERSION ${_out_subversion})
set(BLENDER_VERSION_CHAR ${_out_version_char})
set(BLENDER_VERSION_CYCLE ${_out_version_cycle})
# for packaging, alpha to numbers # for packaging, alpha to numbers
string(COMPARE EQUAL "${_out_version_char}" "" _out_version_char_empty) string(COMPARE EQUAL "${BLENDER_VERSION_CHAR}" "" _out_version_char_empty)
if(${_out_version_char_empty}) if(${_out_version_char_empty})
set(_out_version_char_index "0") set(BLENDER_VERSION_CHAR_INDEX "0")
else() else()
set(_char_ls a b c d e f g h i j k l m n o p q r s t u v w x y z) set(_char_ls a b c d e f g h i j k l m n o p q r s t u v w x y z)
list(FIND _char_ls ${_out_version_char} _out_version_char_index) list(FIND _char_ls ${BLENDER_VERSION_CHAR} _out_version_char_index)
math(EXPR _out_version_char_index "${_out_version_char_index} + 1") math(EXPR BLENDER_VERSION_CHAR_INDEX "${_out_version_char_index} + 1")
unset(_char_ls)
unset(_out_version_char_index)
endif() endif()
# output vars unset(_out_subversion)
set(BLENDER_VERSION "${_out_version_major}.${_out_version_minor}" PARENT_SCOPE) unset(_out_version_char)
set(BLENDER_VERSION_MAJOR "${_out_version_major}" PARENT_SCOPE) unset(_out_version_char_empty)
set(BLENDER_VERSION_MINOR "${_out_version_minor}" PARENT_SCOPE) unset(_out_version_cycle)
set(BLENDER_SUBVERSION "${_out_subversion}" PARENT_SCOPE)
set(BLENDER_VERSION_CHAR "${_out_version_char}" PARENT_SCOPE)
set(BLENDER_VERSION_CHAR_INDEX "${_out_version_char_index}" PARENT_SCOPE)
set(BLENDER_VERSION_CYCLE "${_out_version_cycle}" PARENT_SCOPE)
endfunction() # message(STATUS "Version (Internal): ${BLENDER_VERSION}.${BLENDER_SUBVERSION}, Version (external): ${BLENDER_VERSION}${BLENDER_VERSION_CHAR}-${BLENDER_VERSION_CYCLE}")
endmacro()
# hacks to override initial project settings # hacks to override initial project settings
@@ -1185,7 +1092,7 @@ endmacro()
macro(blender_project_hack_post) macro(blender_project_hack_post)
# -------------- # --------------
# MINGW HACK END # MINGW HACK END
if(_reset_standard_libraries) if (_reset_standard_libraries)
# Must come after projecINCt(...) # Must come after projecINCt(...)
# #
# MINGW workaround for -ladvapi32 being included which surprisingly causes # MINGW workaround for -ladvapi32 being included which surprisingly causes
@@ -1232,7 +1139,7 @@ endmacro()
# pair of macros to allow libraries to be specify files to install, but to # pair of macros to allow libraries to be specify files to install, but to
# only install them at the end so the directories don't get cleared with # only install them at the end so the directories don't get cleared with
# the files in them. used by cycles to install addon. # the files in them. used by cycles to install addon.
function(delayed_install macro(delayed_install
base base
files files
destination) destination)
@@ -1245,7 +1152,7 @@ function(delayed_install
endif() endif()
set_property(GLOBAL APPEND PROPERTY DELAYED_INSTALL_DESTINATIONS ${destination}) set_property(GLOBAL APPEND PROPERTY DELAYED_INSTALL_DESTINATIONS ${destination})
endforeach() endforeach()
endfunction() endmacro()
# note this is a function instead of a macro so that ${BUILD_TYPE} in targetdir # note this is a function instead of a macro so that ${BUILD_TYPE} in targetdir
# does not get expanded in calling but is preserved # does not get expanded in calling but is preserved
@@ -1268,13 +1175,11 @@ function(delayed_do_install
endfunction() endfunction()
function(data_to_c macro(data_to_c
file_from file_to file_from file_to
list_to_add list_to_add)
)
list(APPEND ${list_to_add} ${file_to}) list(APPEND ${list_to_add} ${file_to})
set(${list_to_add} ${${list_to_add}} PARENT_SCOPE)
get_filename_component(_file_to_path ${file_to} PATH) get_filename_component(_file_to_path ${file_to} PATH)
@@ -1285,21 +1190,21 @@ function(data_to_c
DEPENDS ${file_from} datatoc) DEPENDS ${file_from} datatoc)
set_source_files_properties(${file_to} PROPERTIES GENERATED TRUE) set_source_files_properties(${file_to} PROPERTIES GENERATED TRUE)
endfunction()
unset(_file_to_path)
endmacro()
# same as above but generates the var name and output automatic. # same as above but generates the var name and output automatic.
function(data_to_c_simple macro(data_to_c_simple
file_from file_from
list_to_add list_to_add)
)
# remove ../'s # remove ../'s
get_filename_component(_file_from ${CMAKE_CURRENT_SOURCE_DIR}/${file_from} REALPATH) get_filename_component(_file_from ${CMAKE_CURRENT_SOURCE_DIR}/${file_from} REALPATH)
get_filename_component(_file_to ${CMAKE_CURRENT_BINARY_DIR}/${file_from}.c REALPATH) get_filename_component(_file_to ${CMAKE_CURRENT_BINARY_DIR}/${file_from}.c REALPATH)
list(APPEND ${list_to_add} ${_file_to}) list(APPEND ${list_to_add} ${_file_to})
set(${list_to_add} ${${list_to_add}} PARENT_SCOPE)
get_filename_component(_file_to_path ${_file_to} PATH) get_filename_component(_file_to_path ${_file_to} PATH)
@@ -1310,13 +1215,17 @@ function(data_to_c_simple
DEPENDS ${_file_from} datatoc) DEPENDS ${_file_from} datatoc)
set_source_files_properties(${_file_to} PROPERTIES GENERATED TRUE) set_source_files_properties(${_file_to} PROPERTIES GENERATED TRUE)
endfunction()
unset(_file_from)
unset(_file_to)
unset(_file_to_path)
endmacro()
# macro for converting pixmap directory to a png and then a c file # macro for converting pixmap directory to a png and then a c file
function(data_to_c_simple_icons macro(data_to_c_simple_icons
path_from path_from
list_to_add list_to_add
) )
# Conversion steps # Conversion steps
# path_from -> _file_from -> _file_to # path_from -> _file_from -> _file_to
@@ -1328,7 +1237,6 @@ function(data_to_c_simple_icons
get_filename_component(_file_to ${CMAKE_CURRENT_BINARY_DIR}/${path_from}.png.c REALPATH) get_filename_component(_file_to ${CMAKE_CURRENT_BINARY_DIR}/${path_from}.png.c REALPATH)
list(APPEND ${list_to_add} ${_file_to}) list(APPEND ${list_to_add} ${_file_to})
set(${list_to_add} ${${list_to_add}} PARENT_SCOPE)
get_filename_component(_file_to_path ${_file_to} PATH) get_filename_component(_file_to_path ${_file_to} PATH)
@@ -1350,22 +1258,27 @@ function(data_to_c_simple_icons
) )
set_source_files_properties(${_file_from} ${_file_to} PROPERTIES GENERATED TRUE) set_source_files_properties(${_file_from} ${_file_to} PROPERTIES GENERATED TRUE)
endfunction()
unset(_path_from_abs)
unset(_file_from)
unset(_file_to)
unset(_file_to_path)
unset(_icon_files)
endmacro()
# XXX Not used for now... # XXX Not used for now...
function(svg_to_png macro(svg_to_png
file_from file_from
file_to file_to
dpi dpi
list_to_add list_to_add)
)
# remove ../'s # remove ../'s
get_filename_component(_file_from ${CMAKE_CURRENT_SOURCE_DIR}/${file_from} REALPATH) get_filename_component(_file_from ${CMAKE_CURRENT_SOURCE_DIR}/${file_from} REALPATH)
get_filename_component(_file_to ${CMAKE_CURRENT_SOURCE_DIR}/${file_to} REALPATH) get_filename_component(_file_to ${CMAKE_CURRENT_SOURCE_DIR}/${file_to} REALPATH)
list(APPEND ${list_to_add} ${_file_to}) list(APPEND ${list_to_add} ${_file_to})
set(${list_to_add} ${${list_to_add}} PARENT_SCOPE)
find_program(INKSCAPE_EXE inkscape) find_program(INKSCAPE_EXE inkscape)
mark_as_advanced(INKSCAPE_EXE) mark_as_advanced(INKSCAPE_EXE)
@@ -1388,12 +1301,15 @@ function(svg_to_png
else() else()
message(WARNING "Inkscape not found, could not re-generate ${_file_to} from ${_file_from}!") message(WARNING "Inkscape not found, could not re-generate ${_file_to} from ${_file_from}!")
endif() endif()
endfunction()
function(msgfmt_simple unset(_file_from)
file_from unset(_file_to)
list_to_add
) endmacro()
macro(msgfmt_simple
file_from
list_to_add)
# remove ../'s # remove ../'s
get_filename_component(_file_from_we ${file_from} NAME_WE) get_filename_component(_file_from_we ${file_from} NAME_WE)
@@ -1402,7 +1318,6 @@ function(msgfmt_simple
get_filename_component(_file_to ${CMAKE_CURRENT_BINARY_DIR}/${_file_from_we}.mo REALPATH) get_filename_component(_file_to ${CMAKE_CURRENT_BINARY_DIR}/${_file_from_we}.mo REALPATH)
list(APPEND ${list_to_add} ${_file_to}) list(APPEND ${list_to_add} ${_file_to})
set(${list_to_add} ${${list_to_add}} PARENT_SCOPE)
get_filename_component(_file_to_path ${_file_to} PATH) get_filename_component(_file_to_path ${_file_to} PATH)
@@ -1413,11 +1328,15 @@ function(msgfmt_simple
DEPENDS msgfmt ${_file_from}) DEPENDS msgfmt ${_file_from})
set_source_files_properties(${_file_to} PROPERTIES GENERATED TRUE) set_source_files_properties(${_file_to} PROPERTIES GENERATED TRUE)
endfunction()
function(find_python_package unset(_file_from_we)
package unset(_file_from)
) unset(_file_to)
unset(_file_to_path)
endmacro()
macro(find_python_package
package)
string(TOUPPER ${package} _upper_package) string(TOUPPER ${package} _upper_package)
@@ -1455,17 +1374,14 @@ function(find_python_package
"'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/dist-packages/${package}', " "'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/dist-packages/${package}', "
"'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/dist-packages/${package}', " "'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/dist-packages/${package}', "
"WITH_PYTHON_INSTALL_${_upper_package} option will be ignored when installing python") "WITH_PYTHON_INSTALL_${_upper_package} option will be ignored when installing python")
set(WITH_PYTHON_INSTALL_${_upper_package} OFF PARENT_SCOPE) set(WITH_PYTHON_INSTALL_${_upper_package} OFF)
else() else()
message(STATUS "${package} found at '${PYTHON_${_upper_package}_PATH}'") message(STATUS "${package} found at '${PYTHON_${_upper_package}_PATH}'")
endif() endif()
endif()
endfunction()
# like Python's 'print(dir())' unset(_PY_VER_SPLIT)
function(print_all_vars) unset(_PY_VER_MAJOR)
get_cmake_property(_vars VARIABLES) endif()
foreach(_var ${_vars})
message("${_var}=${${_var}}") unset(_upper_package)
endforeach() endmacro()
endfunction()

View File

@@ -2,6 +2,7 @@ set(PROJECT_DESCRIPTION "Blender is a very fast and versatile 3D modeller/rende
set(PROJECT_COPYRIGHT "Copyright (C) 2001-2012 Blender Foundation") set(PROJECT_COPYRIGHT "Copyright (C) 2001-2012 Blender Foundation")
set(PROJECT_CONTACT "foundation@blender.org") set(PROJECT_CONTACT "foundation@blender.org")
set(PROJECT_VENDOR "Blender Foundation") set(PROJECT_VENDOR "Blender Foundation")
set(ORG_WEBSITE "www.blender.org")
set(MAJOR_VERSION ${BLENDER_VERSION_MAJOR}) set(MAJOR_VERSION ${BLENDER_VERSION_MAJOR})
set(MINOR_VERSION ${BLENDER_VERSION_MINOR}) set(MINOR_VERSION ${BLENDER_VERSION_MINOR})
@@ -24,15 +25,13 @@ if(EXISTS ${CMAKE_SOURCE_DIR}/.git/)
include(FindGit) 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})
unset(MY_WC_HASH)
# Force Package Name # Force Package Name
@@ -42,7 +41,7 @@ set(CPACK_PACKAGE_FILE_NAME ${PROJECT_NAME}-${MAJOR_VERSION}.${MINOR_VERSION}.${
if(CMAKE_SYSTEM_NAME MATCHES "Linux") if(CMAKE_SYSTEM_NAME MATCHES "Linux")
# RPM packages # RPM packages
include(build_files/cmake/RpmBuild.cmake) include(build_files/cmake/RpmBuild.cmake)
if(RPMBUILD_FOUND) if(RPMBUILD_FOUND AND NOT WIN32)
set(CPACK_GENERATOR "RPM") set(CPACK_GENERATOR "RPM")
set(CPACK_RPM_PACKAGE_RELEASE "git${CPACK_DATE}.${BUILD_REV}") set(CPACK_RPM_PACKAGE_RELEASE "git${CPACK_DATE}.${BUILD_REV}")
set(CPACK_SET_DESTDIR "true") set(CPACK_SET_DESTDIR "true")
@@ -62,25 +61,7 @@ if(APPLE)
set(CPACK_COMPONENT_LIBRARIES_HIDDEN TRUE) set(CPACK_COMPONENT_LIBRARIES_HIDDEN TRUE)
endif() endif()
if(WIN32) set(CPACK_PACKAGE_EXECUTABLES "blender")
set(CPACK_PACKAGE_INSTALL_DIRECTORY "Blender Foundation/Blender")
set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "Blender Foundation/Blender")
set(CPACK_NSIS_MUI_ICON ${CMAKE_SOURCE_DIR}/source/icons/winblender.ico)
set(CPACK_NSIS_COMPRESSOR "/SOLID lzma")
set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/release/text/GPL-license.txt)
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_UI_BANNER ${LIBDIR}/package/installer_wix/WIX_UI_BANNER.bmp)
set(CPACK_WIX_UI_DIALOG ${LIBDIR}/package/installer_wix/WIX_UI_DIALOG.bmp)
#force lzma instead of deflate
set(CPACK_WIX_LIGHT_EXTRA_FLAGS -dcl:high)
endif()
set(CPACK_PACKAGE_EXECUTABLES "blender" "blender")
include(CPack) include(CPack)
# Target for build_archive.py script, to automatically pass along # Target for build_archive.py script, to automatically pass along
@@ -95,8 +76,6 @@ macro(add_package_archive packagename extension)
OUTPUT ${package_output} OUTPUT ${package_output}
COMMAND ${build_archive} ${packagename} ${extension} bin release COMMAND ${build_archive} ${packagename} ${extension} bin release
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
unset(build_archive)
unset(package_output)
endmacro() endmacro()
if(APPLE) if(APPLE)
@@ -112,9 +91,3 @@ elseif(UNIX)
"tar.bz2") "tar.bz2")
endif() endif()
unset(MAJOR_VERSION)
unset(MINOR_VERSION)
unset(PATCH_VERSION)
unset(BUILD_REV)

View File

@@ -130,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")

View File

@@ -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

View File

@@ -1,4 +1,4 @@
#!/usr/bin/env python #!/usr/bin/python
# <pep8 compliant> # <pep8 compliant>

View File

@@ -12,12 +12,12 @@ blender_version_char=$(sed -ne 's/.*BLENDER_VERSION_CHAR.*\([a-z]\)$/\1/p' $blen
# 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+svn$blender_version_full
pkgname=blender-snapshot pkgname=blender-snapshot
pkgver=$blender_ver_string pkgver=$blender_ver_string
@@ -27,8 +27,8 @@ 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.4' 'gettext' 'libxi' 'libxmu' 'mesa' 'freetype2' 'openal' 'sdl' 'libsndfile' 'ffmpeg') depends=('libjpeg' 'libpng' 'openjpeg' 'libtiff' 'openexr' 'python>=3.2' 'gettext' 'libxi' 'libxmu' 'mesa' 'freetype2' 'openal' 'sdl' 'libsndfile' 'ffmpeg')
makedepends=('cmake' 'git') makedepends=('cmake' 'svn')
optdepends=() optdepends=()
provides=() provides=()
conflicts=('blender') conflicts=('blender')
@@ -36,7 +36,7 @@ replaces=('blender')
backup=() backup=()
options=() options=()
install=blender.install install=blender.install
# use current git to make the package. # use current svn to make the package.
# source=(http://download.blender.org/source/$pkgname-$pkgver.tar.gz) # source=(http://download.blender.org/source/$pkgname-$pkgver.tar.gz)
# md5sums=('27edb80c82c25252d43d6a01980d953a') #generate with 'makepkg -g' # md5sums=('27edb80c82c25252d43d6a01980d953a') #generate with 'makepkg -g'
source=() source=()
@@ -51,7 +51,11 @@ build() {
-DCMAKE_BUILD_TYPE:STRING=Release \ -DCMAKE_BUILD_TYPE:STRING=Release \
-DWITH_INSTALL_PORTABLE:BOOL=OFF \ -DWITH_INSTALL_PORTABLE:BOOL=OFF \
-DWITH_PYTHON_INSTALL:BOOL=OFF \ -DWITH_PYTHON_INSTALL:BOOL=OFF \
-DWITH_OPENCOLLADA:BOOL=OFF -DWITH_OPENCOLLADA:BOOL=OFF \
-DPYTHON_VERSION:STRING=3.2 \
-DPYTHON_LIBPATH:STRING=/usr/lib \
-DPYTHON_LIBRARY:STRING=python3.2mu \
-DPYTHON_INCLUDE_DIRS:STRING=/usr/include/python3.2mu
make $MAKEFLAGS make $MAKEFLAGS
} }
@@ -60,7 +64,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
} }

View File

@@ -52,8 +52,6 @@ BF_CXX = '/usr'
WITH_BF_STATICCXX = False WITH_BF_STATICCXX = False
BF_CXX_LIB_STATIC = '${BF_CXX}/lib/libstdc++.a' BF_CXX_LIB_STATIC = '${BF_CXX}/lib/libstdc++.a'
WITH_BF_AUDASPACE = True
# we use simply jack framework # we use simply jack framework
WITH_BF_JACK = True WITH_BF_JACK = True
BF_JACK = '/Library/Frameworks/Jackmp.framework' BF_JACK = '/Library/Frameworks/Jackmp.framework'
@@ -70,7 +68,7 @@ BF_SNDFILE_LIBPATH = '${BF_SNDFILE}/lib ${BF_FFMPEG}/lib' #ogg libs are stored i
WITH_BF_SDL = True WITH_BF_SDL = True
BF_SDL = LIBDIR + '/sdl' #$(shell sdl-config --prefix) BF_SDL = LIBDIR + '/sdl' #$(shell sdl-config --prefix)
BF_SDL_INC = '${BF_SDL}/include' #$(shell $(BF_SDL)/bin/sdl-config --cflags) 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_LIB = 'SDL' #BF_SDL #$(shell $(BF_SDL)/bin/sdl-config --libs) -lSDL_mixer
BF_SDL_LIBPATH = '${BF_SDL}/lib' BF_SDL_LIBPATH = '${BF_SDL}/lib'
WITH_BF_OPENEXR = True WITH_BF_OPENEXR = True
@@ -207,7 +205,7 @@ BF_BOOST_LIBPATH = '${BF_BOOST}/lib'
WITH_BF_CYCLES_CUDA_BINARIES = False WITH_BF_CYCLES_CUDA_BINARIES = False
BF_CYCLES_CUDA_NVCC = '/usr/local/cuda/bin/nvcc' 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'] BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_20', 'sm_21', 'sm_30', 'sm_35', 'sm_50']
#Freestyle #Freestyle
WITH_BF_FREESTYLE = True WITH_BF_FREESTYLE = True
@@ -215,12 +213,6 @@ WITH_BF_FREESTYLE = True
#OpenMP ( will be checked for compiler support and turned off eventually ) #OpenMP ( will be checked for compiler support and turned off eventually )
WITH_BF_OPENMP = True WITH_BF_OPENMP = True
WITH_BF_OPENSUBDIV = False
BF_OPENSUBDIV = LIBDIR + '/opensubdiv'
BF_OPENSUBDIV_INC = '${BF_OPENSUBDIV}/include'
BF_OPENSUBDIV_LIB = 'osdCPU osdGPU'
BF_OPENSUBDIV_LIBPATH = '${BF_OPENSUBDIV}/lib'
#Ray trace optimization #Ray trace optimization
WITH_BF_RAYOPTIMIZATION = True WITH_BF_RAYOPTIMIZATION = True
BF_RAYOPTIMIZATION_SSE_FLAGS = [] BF_RAYOPTIMIZATION_SSE_FLAGS = []

View File

@@ -26,8 +26,6 @@ BF_CXX = '/usr'
WITH_BF_STATICCXX = False WITH_BF_STATICCXX = False
BF_CXX_LIB_STATIC = '${BF_CXX}/lib/libstdc++.a' BF_CXX_LIB_STATIC = '${BF_CXX}/lib/libstdc++.a'
WITH_BF_AUDASPACE = True
WITH_BF_JACK = False WITH_BF_JACK = False
BF_JACK = '/usr' BF_JACK = '/usr'
BF_JACK_INC = '${BF_JACK}/include/jack' BF_JACK_INC = '${BF_JACK}/include/jack'
@@ -146,7 +144,7 @@ BF_REDCODE_LIB = ''
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_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' BF_REDCODE_LIBPATH='${BF_REDCODE}/lib'
# Mesa Libs should go here if you're using them as well.... # Mesa Libs should go here if your using them as well....
WITH_BF_STATICOPENGL = False WITH_BF_STATICOPENGL = False
BF_OPENGL = '/usr' BF_OPENGL = '/usr'
BF_OPENGL_INC = '${BF_OPENGL}/include' BF_OPENGL_INC = '${BF_OPENGL}/include'
@@ -199,7 +197,7 @@ BF_BOOST = '/usr'
BF_BOOST_INC = '${BF_BOOST}/include' BF_BOOST_INC = '${BF_BOOST}/include'
BF_BOOST_LIB = 'boost_filesystem boost_regex boost_system boost_thread boost_date_time' 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_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_regex.a ${BF_BOOST_LIBPATH}/libboost_locale.a ${BF_BOOST_LIBPATH}/libboost_system.a' + \
'${BF_BOOST_LIBPATH}/libboost_thread.a' '${BF_BOOST_LIBPATH}/libboost_thread.a'
BF_BOOST_LIB_INTERNATIONAL = 'boost_locale' BF_BOOST_LIB_INTERNATIONAL = 'boost_locale'
BF_BOOST_LIBPATH = '${BF_BOOST}/lib' BF_BOOST_LIBPATH = '${BF_BOOST}/lib'
@@ -208,7 +206,7 @@ WITH_BF_CYCLES = WITH_BF_OIIO and WITH_BF_BOOST
WITH_BF_CYCLES_CUDA_BINARIES = False WITH_BF_CYCLES_CUDA_BINARIES = False
BF_CYCLES_CUDA_NVCC = '/usr/local/cuda/bin/nvcc' 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'] BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_20', 'sm_21', 'sm_30', 'sm_35', 'sm_50']
WITH_BF_OPENMP = True WITH_BF_OPENMP = True
@@ -228,20 +226,11 @@ BF_3DMOUSE_LIB_STATIC = '${BF_3DMOUSE_LIBPATH}/libspnav.a'
#Freestyle #Freestyle
WITH_BF_FREESTYLE = True WITH_BF_FREESTYLE = True
WITH_BF_OPENSUBDIV = False
WITH_BF_STATICOPENSUBDIV = False
BF_OPENSUBDIV = '/usr'
BF_OPENSUBDIV_INC = '${BF_OPENSUBDIV}/include'
BF_OPENSUBDIV_LIB = 'osdCPU osdGPU'
BF_OPENSUBDIV_LIB_STATIC = '${BF_OPENSUBDIV_LIBPATH}/libosdGPU.a ${BF_OPENSUBDIV_LIBPATH}/libosdCPU.a'
BF_OPENSUBDIV_LIBPATH = '${BF_OPENSUBDIV}/lib'
## ##
CC = 'gcc' CC = 'gcc'
CXX = 'g++' CXX = 'g++'
CCFLAGS = ['-pipe','-fPIC','-funsigned-char','-fno-strict-aliasing', '-D_LARGEFILE_SOURCE', '-D_FILE_OFFSET_BITS=64','-D_LARGEFILE64_SOURCE'] CCFLAGS = ['-pipe','-fPIC','-funsigned-char','-fno-strict-aliasing','-D_LARGEFILE_SOURCE', '-D_FILE_OFFSET_BITS=64','-D_LARGEFILE64_SOURCE']
CFLAGS = ['-std=gnu89']
CXXFLAGS = [] CXXFLAGS = []
CPPFLAGS = [] CPPFLAGS = []
@@ -273,6 +262,6 @@ BF_INSTALLDIR='../install/linux'
#Link against pthread #Link against pthread
PLATFORM_LINKFLAGS = ['-pthread'] PLATFORM_LINKFLAGS = ['-pthread']
#Fix for LLVM conflict with Mesa llvmpipe, SDL dynload also requires symbols to be hidden. #Fix for LLVM conflict with Mesa llvmpipe
# TODO(sergey): Move this to SConstruct, so we can have this line depended on user config. if WITH_BF_LLVM:
PLATFORM_LINKFLAGS += ['-Wl,--version-script=source/creator/blender.map'] PLATFORM_LINKFLAGS += ['-Wl,--version-script=source/creator/blender.map']

View File

@@ -23,8 +23,6 @@ BF_FFMPEG_LIBPATH = LIBDIR + '/ffmpeg/lib'
BF_FFMPEG_INC = LIBDIR + '/ffmpeg/include' 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' 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_AUDASPACE = True
WITH_BF_JACK = False WITH_BF_JACK = False
BF_JACK = LIBDIR + '/jack' BF_JACK = LIBDIR + '/jack'
BF_JACK_INC = '${BF_JACK}/include' BF_JACK_INC = '${BF_JACK}/include'
@@ -147,7 +145,7 @@ BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib/opencollada'
WITH_BF_CYCLES = True WITH_BF_CYCLES = True
WITH_BF_CYCLES_CUDA_BINARIES = False WITH_BF_CYCLES_CUDA_BINARIES = False
BF_CYCLES_CUDA_NVCC = "" # Path to the NVIDIA CUDA compiler 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', 'sm_52'] BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_20', 'sm_21', 'sm_30', 'sm_35', 'sm_50']
WITH_BF_OIIO = True WITH_BF_OIIO = True
BF_OIIO = LIBDIR + '/openimageio' BF_OIIO = LIBDIR + '/openimageio'
@@ -168,18 +166,10 @@ BF_BOOST_LIB = 'boost_date_time-mgw46-mt-s-1_49 boost_filesystem-mgw46-mt-s-1_49
BF_BOOST_LIB_INTERNATIONAL = 'boost_locale-mgw46-mt-s-1_49' BF_BOOST_LIB_INTERNATIONAL = 'boost_locale-mgw46-mt-s-1_49'
BF_BOOST_LIBPATH = '${BF_BOOST}/lib' BF_BOOST_LIBPATH = '${BF_BOOST}/lib'
WITH_BF_OPENSUBDIV = False
BF_OPENSUBDIV = LIBDIR + '/opensubdiv'
BF_OPENSUBDIV_INC = '${BF_OPENSUBDIV}/include'
BF_OPENSUBDIV_LIB = 'osdCPU osdGPU'
BF_OPENSUBDIV_LIBPATH = '${BF_OPENSUBDIV}/lib'
#Ray trace optimization #Ray trace optimization
WITH_BF_RAYOPTIMIZATION = True WITH_BF_RAYOPTIMIZATION = True
BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse'] BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse']
WITH_BF_IME = True
WITH_BF_OPENMP = True WITH_BF_OPENMP = True
#CUDA #CUDA
@@ -206,10 +196,7 @@ C_WARN = ['-Wno-char-subscripts', '-Wdeclaration-after-statement', '-Wstrict-pro
CC_WARN = [ '-Wall' ] CC_WARN = [ '-Wall' ]
LLIBS = ['-lshell32', '-lshfolder', '-lgdi32', '-lmsvcrt', '-lwinmm', '-lmingw32', '-lm', '-lws2_32', '-lz', '-lstdc++','-lole32','-luuid', '-lwsock32', '-lpsapi', '-ldbghelp'] 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'] PLATFORM_LINKFLAGS = ['-Xlinker', '--stack=2097152']

View File

@@ -33,7 +33,7 @@ WITH_BF_PYTHON_INSTALL_NUMPY = True
WITH_BF_OPENAL = True WITH_BF_OPENAL = True
BF_OPENAL = LIBDIR + '/openal' BF_OPENAL = LIBDIR + '/openal'
BF_OPENAL_INC = '${BF_OPENAL}/include ' BF_OPENAL_INC = '${BF_OPENAL}/include '
BF_OPENAL_LIB = 'OpenAL32' BF_OPENAL_LIB = 'wrap_oal'
BF_OPENAL_LIBPATH = '${BF_OPENAL}/lib' BF_OPENAL_LIBPATH = '${BF_OPENAL}/lib'
WITH_BF_ICONV = True WITH_BF_ICONV = True
@@ -42,8 +42,6 @@ BF_ICONV_INC = '${BF_ICONV}/include'
BF_ICONV_LIB = 'iconv' BF_ICONV_LIB = 'iconv'
BF_ICONV_LIBPATH = '${BF_ICONV}/lib' BF_ICONV_LIBPATH = '${BF_ICONV}/lib'
WITH_BF_AUDASPACE = True
WITH_BF_JACK = False WITH_BF_JACK = False
BF_JACK = LIBDIR + '/jack' BF_JACK = LIBDIR + '/jack'
BF_JACK_INC = '${BF_JACK}/include ${BF_FFMPEG}/include/msvc' BF_JACK_INC = '${BF_JACK}/include ${BF_FFMPEG}/include/msvc'
@@ -59,7 +57,7 @@ BF_SNDFILE_LIBPATH = '${BF_SNDFILE}/lib'
WITH_BF_SDL = True WITH_BF_SDL = True
BF_SDL = LIBDIR + '/sdl' BF_SDL = LIBDIR + '/sdl'
BF_SDL_INC = '${BF_SDL}/include' BF_SDL_INC = '${BF_SDL}/include'
BF_SDL_LIB = 'SDL2.lib' BF_SDL_LIB = 'SDL.lib'
BF_SDL_LIBPATH = '${BF_SDL}/lib' BF_SDL_LIBPATH = '${BF_SDL}/lib'
BF_PTHREADS = LIBDIR + '/pthreads' BF_PTHREADS = LIBDIR + '/pthreads'
@@ -71,7 +69,7 @@ WITH_BF_OPENEXR = True
WITH_BF_STATICOPENEXR = False WITH_BF_STATICOPENEXR = False
BF_OPENEXR = LIBDIR + '/openexr' BF_OPENEXR = LIBDIR + '/openexr'
BF_OPENEXR_INC = '${BF_OPENEXR}/include ${BF_OPENEXR}/include/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_LIB = ' Iex-2_1 Half IlmImf-2_1 Imath-2_1 IlmThread-2_1 '
BF_OPENEXR_LIBPATH = '${BF_OPENEXR}/lib' 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' 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'
@@ -153,8 +151,6 @@ BF_OPENCOLLADA_INC = '${BF_OPENCOLLADA}/include/opencollada'
BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser MathMLSolver xml pcre buffer ftoa' BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser MathMLSolver xml pcre buffer ftoa'
BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib/opencollada' BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib/opencollada'
WITH_BF_IME = True
WITH_BF_3DMOUSE = True WITH_BF_3DMOUSE = True
WITH_BF_OPENMP = True WITH_BF_OPENMP = True
@@ -201,7 +197,7 @@ BF_BOOST_LIBPATH = '${BF_BOOST}/lib'
#CUDA #CUDA
WITH_BF_CYCLES_CUDA_BINARIES = False WITH_BF_CYCLES_CUDA_BINARIES = False
#BF_CYCLES_CUDA_NVCC = "" # Path to the nvidia compiler #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'] BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_20', 'sm_21', 'sm_30', 'sm_35', 'sm_50']
#Ray trace optimization #Ray trace optimization
WITH_BF_RAYOPTIMIZATION = True WITH_BF_RAYOPTIMIZATION = True
@@ -210,12 +206,6 @@ BF_RAYOPTIMIZATION_SSE_FLAGS = ['/arch:SSE']
#Freestyle #Freestyle
WITH_BF_FREESTYLE = True WITH_BF_FREESTYLE = True
WITH_BF_OPENSUBDIV = True
BF_OPENSUBDIV = LIBDIR + '/opensubdiv'
BF_OPENSUBDIV_INC = '${BF_OPENSUBDIV}/include'
BF_OPENSUBDIV_LIB = 'osdCPU osdGPU'
BF_OPENSUBDIV_LIBPATH = '${BF_OPENSUBDIV}/lib'
WITH_BF_STATICOPENGL = False WITH_BF_STATICOPENGL = False
BF_OPENGL_INC = '${BF_OPENGL}/include' BF_OPENGL_INC = '${BF_OPENGL}/include'
BF_OPENGL_LIBINC = '${BF_OPENGL}/lib' BF_OPENGL_LIBINC = '${BF_OPENGL}/lib'
@@ -245,10 +235,7 @@ C_WARN = []
CC_WARN = [] CC_WARN = []
CXX_WARN = [] CXX_WARN = []
LLIBS = ['ws2_32', 'vfw32', 'winmm', 'kernel32', 'user32', 'gdi32', 'comdlg32', 'advapi32', 'shfolder', 'shell32', 'ole32', 'oleaut32', 'uuid', 'psapi', 'Dbghelp'] 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'] PLATFORM_LINKFLAGS = ['/SUBSYSTEM:CONSOLE','/MACHINE:IX86','/STACK:2097152','/INCREMENTAL:NO', '/LARGEADDRESSAWARE', '/NODEFAULTLIB:msvcrt.lib', '/NODEFAULTLIB:msvcmrt.lib', '/NODEFAULTLIB:msvcurt.lib', '/NODEFAULTLIB:msvcrtd.lib']

View File

@@ -22,8 +22,6 @@ BF_FFMPEG_LIBPATH = LIBDIR + '/ffmpeg/lib'
BF_FFMPEG_INC = LIBDIR + '/ffmpeg/include' 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' 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_AUDASPACE = True
WITH_BF_JACK = False WITH_BF_JACK = False
BF_JACK = LIBDIR + '/jack' BF_JACK = LIBDIR + '/jack'
BF_JACK_INC = '${BF_JACK}/include' BF_JACK_INC = '${BF_JACK}/include'
@@ -146,7 +144,7 @@ BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib/opencollada'
WITH_BF_CYCLES = True WITH_BF_CYCLES = True
WITH_BF_CYCLES_CUDA_BINARIES = False WITH_BF_CYCLES_CUDA_BINARIES = False
BF_CYCLES_CUDA_NVCC = "" # Path to the NVIDIA CUDA compiler 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', 'sm_52'] BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_20', 'sm_21', 'sm_30', 'sm_35', 'sm_50']
WITH_BF_OIIO = True WITH_BF_OIIO = True
BF_OIIO = LIBDIR + '/openimageio' BF_OIIO = LIBDIR + '/openimageio'
@@ -167,18 +165,10 @@ BF_BOOST_LIB = 'boost_date_time-mgw47-mt-s-1_49 boost_date_time-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_LIB_INTERNATIONAL = ' boost_locale-mgw47-mt-s-1_49 boost_locale-mgw47-mt-sd-1_49'
BF_BOOST_LIBPATH = '${BF_BOOST}/lib' BF_BOOST_LIBPATH = '${BF_BOOST}/lib'
WITH_BF_OPENSUBDIV = False
BF_OPENSUBDIV = LIBDIR + '/opensubdiv'
BF_OPENSUBDIV_INC = '${BF_OPENSUBDIV}/include'
BF_OPENSUBDIV_LIB = 'osdCPU osdGPU'
BF_OPENSUBDIV_LIBPATH = '${BF_OPENSUBDIV}/lib'
#Ray trace optimization #Ray trace optimization
WITH_BF_RAYOPTIMIZATION = True WITH_BF_RAYOPTIMIZATION = True
BF_RAYOPTIMIZATION_SSE_FLAGS = ['-mmmx', '-msse', '-msse2'] BF_RAYOPTIMIZATION_SSE_FLAGS = ['-mmmx', '-msse', '-msse2']
WITH_BF_IME = True
WITH_BF_OPENMP = True WITH_BF_OPENMP = True
#Freestyle #Freestyle
@@ -196,15 +186,11 @@ REL_CFLAGS = []
REL_CXXFLAGS = [] REL_CXXFLAGS = []
REL_CCFLAGS = ['-O2', '-ftree-vectorize'] 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'] C_WARN = ['-Wno-char-subscripts', '-Wdeclaration-after-statement', '-Wstrict-prototypes']
CC_WARN = [ '-Wall', '-Wno-char-subscripts' ] CC_WARN = [ '-Wall' ]
LLIBS = ['-lshell32', '-lshfolder', '-lgdi32', '-lmsvcrt', '-lwinmm', '-lmingw32', '-lm', '-lws2_32', '-lz', '-lstdc++','-lole32','-luuid', '-lwsock32', '-lpsapi', '-lpthread', '-ldbghelp'] 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'] PLATFORM_LINKFLAGS = ['-Xlinker', '--stack=2097152']

View File

@@ -34,7 +34,7 @@ WITH_BF_PYTHON_INSTALL_NUMPY = True
WITH_BF_OPENAL = True WITH_BF_OPENAL = True
BF_OPENAL = LIBDIR + '/openal' BF_OPENAL = LIBDIR + '/openal'
BF_OPENAL_INC = '${BF_OPENAL}/include ' BF_OPENAL_INC = '${BF_OPENAL}/include '
BF_OPENAL_LIB = 'OpenAL32' BF_OPENAL_LIB = 'wrap_oal'
BF_OPENAL_LIBPATH = '${BF_OPENAL}/lib' BF_OPENAL_LIBPATH = '${BF_OPENAL}/lib'
WITH_BF_SNDFILE = True WITH_BF_SNDFILE = True
@@ -52,11 +52,9 @@ BF_ICONV_LIBPATH = '${BF_ICONV}/lib'
WITH_BF_SDL = True WITH_BF_SDL = True
BF_SDL = LIBDIR + '/sdl' BF_SDL = LIBDIR + '/sdl'
BF_SDL_INC = '${BF_SDL}/include' BF_SDL_INC = '${BF_SDL}/include'
BF_SDL_LIB = 'SDL2.lib' BF_SDL_LIB = 'SDL.lib'
BF_SDL_LIBPATH = '${BF_SDL}/lib' BF_SDL_LIBPATH = '${BF_SDL}/lib'
WITH_BF_AUDASPACE = True
WITH_BF_JACK = False WITH_BF_JACK = False
BF_PTHREADS = LIBDIR + '/pthreads' BF_PTHREADS = LIBDIR + '/pthreads'
@@ -68,7 +66,7 @@ WITH_BF_OPENEXR = True
WITH_BF_STATICOPENEXR = False WITH_BF_STATICOPENEXR = False
BF_OPENEXR = LIBDIR + '/openexr' BF_OPENEXR = LIBDIR + '/openexr'
BF_OPENEXR_INC = '${BF_OPENEXR}/include ${BF_OPENEXR}/include/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_LIB = ' Iex-2_1 Half IlmImf-2_1 Imath-2_1 IlmThread-2_1 '
BF_OPENEXR_LIBPATH = '${BF_OPENEXR}/lib' 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' 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'
@@ -156,8 +154,6 @@ BF_OPENCOLLADA_INC = '${BF_OPENCOLLADA}/include/opencollada'
BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser MathMLSolver xml pcre buffer ftoa' BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser MathMLSolver xml pcre buffer ftoa'
BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib/opencollada' BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib/opencollada'
WITH_BF_IME = True
WITH_BF_3DMOUSE = True WITH_BF_3DMOUSE = True
WITH_BF_OPENMP = True WITH_BF_OPENMP = True
@@ -204,7 +200,7 @@ BF_BOOST_LIBPATH = '${BF_BOOST}/lib'
#CUDA #CUDA
WITH_BF_CYCLES_CUDA_BINARIES = False WITH_BF_CYCLES_CUDA_BINARIES = False
#BF_CYCLES_CUDA_NVCC = "" # Path to the nvidia compiler #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'] BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_20', 'sm_21', 'sm_30', 'sm_35', 'sm_50']
#Ray trace optimization #Ray trace optimization
WITH_BF_RAYOPTIMIZATION = True WITH_BF_RAYOPTIMIZATION = True
@@ -214,12 +210,6 @@ BF_RAYOPTIMIZATION_SSE_FLAGS = ['']
#Freestyle #Freestyle
WITH_BF_FREESTYLE = True WITH_BF_FREESTYLE = True
WITH_BF_OPENSUBDIV = True
BF_OPENSUBDIV = LIBDIR + '/opensubdiv'
BF_OPENSUBDIV_INC = '${BF_OPENSUBDIV}/include'
BF_OPENSUBDIV_LIB = 'osdCPU osdGPU'
BF_OPENSUBDIV_LIBPATH = '${BF_OPENSUBDIV}/lib'
WITH_BF_STATICOPENGL = False WITH_BF_STATICOPENGL = False
BF_OPENGL_INC = '${BF_OPENGL}/include' BF_OPENGL_INC = '${BF_OPENGL}/include'
BF_OPENGL_LIBINC = '${BF_OPENGL}/lib' BF_OPENGL_LIBINC = '${BF_OPENGL}/lib'
@@ -252,10 +242,7 @@ C_WARN = []
CC_WARN = [] CC_WARN = []
CXX_WARN = [] CXX_WARN = []
LLIBS = ['ws2_32', 'vfw32', 'winmm', 'kernel32', 'user32', 'gdi32', 'comdlg32', 'advapi32', 'shfolder', 'shell32', 'ole32', 'oleaut32', 'uuid', 'psapi', 'Dbghelp'] 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'] PLATFORM_LINKFLAGS = ['/SUBSYSTEM:CONSOLE','/MACHINE:X64','/STACK:2097152','/OPT:NOREF','/INCREMENTAL:NO', '/NODEFAULTLIB:msvcrt.lib', '/NODEFAULTLIB:msvcmrt.lib', '/NODEFAULTLIB:msvcurt.lib', '/NODEFAULTLIB:msvcrtd.lib']

67
build_files/scons/tools/Blender.py Normal file → Executable file
View File

@@ -143,7 +143,7 @@ def setup_staticlibs(lenv):
libincs += Split(lenv['BF_FREETYPE_LIBPATH']) libincs += Split(lenv['BF_FREETYPE_LIBPATH'])
if lenv['WITH_BF_PYTHON']: if lenv['WITH_BF_PYTHON']:
libincs += Split(lenv['BF_PYTHON_LIBPATH']) libincs += Split(lenv['BF_PYTHON_LIBPATH'])
if lenv['WITH_BF_SDL'] and not lenv['WITH_BF_SDL_DYNLOAD']: if lenv['WITH_BF_SDL']:
libincs += Split(lenv['BF_SDL_LIBPATH']) libincs += Split(lenv['BF_SDL_LIBPATH'])
if lenv['WITH_BF_JACK'] and not lenv['WITH_BF_JACK_DYNLOAD']: if lenv['WITH_BF_JACK'] and not lenv['WITH_BF_JACK_DYNLOAD']:
libincs += Split(lenv['BF_JACK_LIBPATH']) libincs += Split(lenv['BF_JACK_LIBPATH'])
@@ -216,16 +216,16 @@ def setup_staticlibs(lenv):
if lenv['WITH_BF_STATICOCIO']: if lenv['WITH_BF_STATICOCIO']:
statlibs += Split(lenv['BF_OCIO_LIB_STATIC']) statlibs += Split(lenv['BF_OCIO_LIB_STATIC'])
if lenv['WITH_BF_CYCLES_OSL']:
libincs += Split(lenv['BF_OSL_LIBPATH'])
if lenv['WITH_BF_STATICOSL']:
statlibs += Split(lenv['BF_OSL_LIB_STATIC'])
if lenv['WITH_BF_BOOST']: if lenv['WITH_BF_BOOST']:
libincs += Split(lenv['BF_BOOST_LIBPATH']) libincs += Split(lenv['BF_BOOST_LIBPATH'])
if lenv['WITH_BF_STATICBOOST']: if lenv['WITH_BF_STATICBOOST']:
statlibs += Split(lenv['BF_BOOST_LIB_STATIC']) statlibs += Split(lenv['BF_BOOST_LIB_STATIC'])
if lenv['WITH_BF_CYCLES_OSL']:
libincs += Split(lenv['BF_OSL_LIBPATH'])
if lenv['WITH_BF_STATICOSL']:
statlibs += Split(lenv['BF_OSL_LIB_STATIC'])
if lenv['WITH_BF_LLVM']: if lenv['WITH_BF_LLVM']:
libincs += Split(lenv['BF_LLVM_LIBPATH']) libincs += Split(lenv['BF_LLVM_LIBPATH'])
if lenv['WITH_BF_STATICLLVM']: if lenv['WITH_BF_STATICLLVM']:
@@ -242,11 +242,6 @@ def setup_staticlibs(lenv):
if lenv['WITH_BF_STATIC3DMOUSE']: if lenv['WITH_BF_STATIC3DMOUSE']:
statlibs += Split(lenv['BF_3DMOUSE_LIB_STATIC']) statlibs += Split(lenv['BF_3DMOUSE_LIB_STATIC'])
if lenv['WITH_BF_OPENSUBDIV']:
libincs += Split(lenv['BF_OPENSUBDIV_LIBPATH'])
if lenv['WITH_BF_STATICOPENSUBDIV']:
statlibs += Split(lenv['BF_OPENSUBDIV_LIB_STATIC'])
# setting this last so any overriding of manually libs could be handled # setting this last so any overriding of manually libs could be handled
if lenv['OURPLATFORM'] not in ('win32-vc', 'win32-mingw', 'win64-vc', 'linuxcross', 'win64-mingw'): if lenv['OURPLATFORM'] not in ('win32-vc', 'win32-mingw', 'win64-vc', 'linuxcross', 'win64-mingw'):
# We must remove any previous items defining this path, for same reason stated above! # We must remove any previous items defining this path, for same reason stated above!
@@ -308,7 +303,7 @@ def setup_syslibs(lenv):
if lenv['WITH_BF_ELTOPO']: if lenv['WITH_BF_ELTOPO']:
syslibs += Split(lenv['BF_LAPACK_LIB']) syslibs += Split(lenv['BF_LAPACK_LIB'])
''' '''
if lenv['WITH_BF_SDL'] and not lenv['WITH_BF_SDL_DYNLOAD']: if lenv['WITH_BF_SDL']:
syslibs += Split(lenv['BF_SDL_LIB']) syslibs += Split(lenv['BF_SDL_LIB'])
if not lenv['WITH_BF_STATICOPENGL']: if not lenv['WITH_BF_STATICOPENGL']:
syslibs += Split(lenv['BF_OPENGL_LIB']) syslibs += Split(lenv['BF_OPENGL_LIB'])
@@ -330,16 +325,16 @@ def setup_syslibs(lenv):
if lenv['WITH_BF_3DMOUSE']: if lenv['WITH_BF_3DMOUSE']:
if not lenv['WITH_BF_STATIC3DMOUSE']: if not lenv['WITH_BF_STATIC3DMOUSE']:
syslibs += Split(lenv['BF_3DMOUSE_LIB']) syslibs += Split(lenv['BF_3DMOUSE_LIB'])
if lenv['WITH_BF_BOOST'] and not lenv['WITH_BF_STATICBOOST']:
syslibs += Split(lenv['BF_BOOST_LIB'])
if lenv['WITH_BF_INTERNATIONAL']:
syslibs += Split(lenv['BF_BOOST_LIB_INTERNATIONAL'])
if lenv['WITH_BF_CYCLES_OSL'] and not lenv['WITH_BF_STATICOSL']: if lenv['WITH_BF_CYCLES_OSL'] and not lenv['WITH_BF_STATICOSL']:
syslibs += Split(lenv['BF_OSL_LIB']) syslibs += Split(lenv['BF_OSL_LIB'])
if lenv['WITH_BF_BOOST'] and not lenv['WITH_BF_STATICBOOST']:
syslibs += Split(lenv['BF_BOOST_LIB'])
if lenv['WITH_BF_INTERNATIONAL']:
syslibs += Split(lenv['BF_BOOST_LIB_INTERNATIONAL'])
if lenv['WITH_BF_LLVM'] and not lenv['WITH_BF_STATICLLVM']: if lenv['WITH_BF_LLVM'] and not lenv['WITH_BF_STATICLLVM']:
syslibs += Split(lenv['BF_LLVM_LIB']) syslibs += Split(lenv['BF_LLVM_LIB'])
@@ -349,13 +344,6 @@ def setup_syslibs(lenv):
if not lenv['WITH_BF_STATICPNG']: if not lenv['WITH_BF_STATICPNG']:
syslibs += Split(lenv['BF_PNG_LIB']) syslibs += Split(lenv['BF_PNG_LIB'])
if lenv['WITH_BF_OPENSUBDIV']:
if not lenv['WITH_BF_STATICOPENSUBDIV']:
if lenv['BF_DEBUG'] and lenv['OURPLATFORM'] in ('win32-vc', 'win64-vc', 'win32-mingw', 'win64-mingw'):
syslibs += [osdlib+'_d' for osdlib in Split(lenv['BF_OPENSUBDIV_LIB'])]
else:
syslibs += Split(lenv['BF_OPENSUBDIV_LIB'])
# Hack to pass OSD libraries to linker before extern_{clew,cuew} # Hack to pass OSD libraries to linker before extern_{clew,cuew}
for syslib in create_blender_liblist(lenv, 'system'): for syslib in create_blender_liblist(lenv, 'system'):
syslibs.append(os.path.basename(syslib)) syslibs.append(os.path.basename(syslib))
@@ -384,7 +372,7 @@ def propose_priorities():
def creator(env): def creator(env):
sources = ['creator.c']# + Blender.buildinfo(env, "dynamic") + Blender.resources sources = ['creator.c']# + Blender.buildinfo(env, "dynamic") + Blender.resources
incs = ['#/intern/guardedalloc', '#/source/blender/blenlib', '#/source/blender/blenkernel', '#/source/blender/depsgraph', '#/source/blender/editors/include', '#/source/blender/blenloader', '#/source/blender/imbuf', '#/source/blender/renderconverter', '#/source/blender/render/extern/include', '#/source/blender/windowmanager', '#/source/blender/makesdna', '#/source/blender/makesrna', '#/source/gameengine/BlenderRoutines', '#/extern/glew/include', '#/source/blender/gpu', env['BF_OPENGL_INC']] incs = ['#/intern/guardedalloc', '#/source/blender/blenlib', '#/source/blender/blenkernel', '#/source/blender/editors/include', '#/source/blender/blenloader', '#/source/blender/imbuf', '#/source/blender/renderconverter', '#/source/blender/render/extern/include', '#/source/blender/windowmanager', '#/source/blender/makesdna', '#/source/blender/makesrna', '#/source/gameengine/BlenderRoutines', '#/extern/glew/include', '#/source/blender/gpu', env['BF_OPENGL_INC']]
defs = [] defs = []
@@ -393,19 +381,12 @@ def creator(env):
defs.append('WITH_BINRELOC') defs.append('WITH_BINRELOC')
if env['WITH_BF_SDL']: if env['WITH_BF_SDL']:
if env['WITH_BF_SDL_DYNLOAD']:
defs.append('WITH_SDL_DYNLOAD')
incs.append('#/extern/sdlew/include')
defs.append('WITH_SDL') defs.append('WITH_SDL')
if env['WITH_BF_LIBMV']: if env['WITH_BF_LIBMV']:
incs.append('#/extern/libmv') incs.append('#/extern/libmv')
defs.append('WITH_LIBMV') defs.append('WITH_LIBMV')
if env['WITH_BF_CYCLES'] and env['WITH_BF_CYCLES_LOGGING']:
incs.append('#/intern/cycles/blender')
defs.append('WITH_CYCLES_LOGGING')
if env['WITH_BF_FFMPEG']: if env['WITH_BF_FFMPEG']:
defs.append('WITH_FFMPEG') defs.append('WITH_FFMPEG')
@@ -453,7 +434,7 @@ def buildinfo(lenv, build_type):
no_upstream = False no_upstream = False
try : try :
build_hash = btools.get_command_output(['git', 'rev-parse', '--short', '@{u}'], stderr=subprocess.STDOUT).strip() build_hash = btools.get_command_output(['git', 'rev-parse', '--short', '@{u}']).strip()
except subprocess.CalledProcessError: except subprocess.CalledProcessError:
# assume branch has no upstream configured # assume branch has no upstream configured
build_hash = btools.get_command_output(['git', 'rev-parse', '--short', 'HEAD']).strip() build_hash = btools.get_command_output(['git', 'rev-parse', '--short', 'HEAD']).strip()
@@ -642,7 +623,7 @@ def WinPyBundle(target=None, source=None, env=None):
py_tar+= '/release/python' + env['BF_PYTHON_VERSION'].replace('.','') + '.tar.gz' py_tar+= '/release/python' + env['BF_PYTHON_VERSION'].replace('.','') + '.tar.gz'
py_target = env.subst(env['BF_INSTALLDIR']).lstrip("#") py_target = env.subst(env['BF_INSTALLDIR']).lstrip("#")
py_target = os.path.join(py_target, VERSION, 'python') py_target = os.path.join(py_target, VERSION, 'python', 'lib')
def printexception(func,path,ex): def printexception(func,path,ex):
if os.path.exists(path): #do not report if path does not exist. eg on a fresh build. if os.path.exists(path): #do not report if path does not exist. eg on a fresh build.
print str(func) + ' failed on ' + str(path) print str(func) + ' failed on ' + str(path)
@@ -666,7 +647,7 @@ def WinPyBundle(target=None, source=None, env=None):
# Extract Numpy # Extract Numpy
if env['WITH_BF_PYTHON_INSTALL_NUMPY']: if env['WITH_BF_PYTHON_INSTALL_NUMPY']:
py_tar = env.subst(env['LCGDIR']).lstrip("#") py_tar = env.subst(env['LCGDIR']).lstrip("#")
py_tar += '/release/python' + env['BF_PYTHON_VERSION'].replace('.','') + '_numpy_1.9.tar.gz' py_tar += '/release/python' + env['BF_PYTHON_VERSION'].replace('.','') + '_numpy_1.8.tar.gz'
py_target = env.subst(env['BF_INSTALLDIR']).lstrip("#") py_target = env.subst(env['BF_INSTALLDIR']).lstrip("#")
py_target = os.path.join(py_target, VERSION, 'python', 'lib', 'site-packages') py_target = os.path.join(py_target, VERSION, 'python', 'lib', 'site-packages')
@@ -682,8 +663,6 @@ def WinPyBundle(target=None, source=None, env=None):
py_dir += '/release/site-packages' py_dir += '/release/site-packages'
# grr, we have to do one by one because the dir exists # grr, we have to do one by one because the dir exists
for f in os.listdir(py_dir): for f in os.listdir(py_dir):
if f == '.svn':
continue
fn_src = os.path.join(py_dir, f) fn_src = os.path.join(py_dir, f)
fn_dst = os.path.join(py_target, f) fn_dst = os.path.join(py_target, f)
@@ -776,7 +755,7 @@ def AppIt(target=None, source=None, env=None):
commands.getoutput(cmd) commands.getoutput(cmd)
cmd = 'cp -R %s/kernel/*.h %s/kernel/*.cl %s/kernel/*.cu %s/kernel/' % (croot, croot, croot, cinstalldir) cmd = 'cp -R %s/kernel/*.h %s/kernel/*.cl %s/kernel/*.cu %s/kernel/' % (croot, croot, croot, cinstalldir)
commands.getoutput(cmd) commands.getoutput(cmd)
cmd = 'cp -R %s/kernel/svm %s/kernel/closure %s/kernel/geom %s/kernel/split %s/kernel/kernels %s/util/util_color.h %s/util/util_half.h %s/util/util_math.h %s/util/util_math_fast.h %s/util/util_transform.h %s/util/util_types.h %s/util/util_atomic.h %s/kernel/' % (croot, croot, croot, croot, croot, croot, croot, croot, croot, croot, croot, croot, cinstalldir) cmd = 'cp -R %s/kernel/svm %s/kernel/closure %s/kernel/geom %s/util/util_color.h %s/util/util_half.h %s/util/util_math.h %s/util/util_transform.h %s/util/util_types.h %s/kernel/' % (croot, croot, croot, croot, croot, croot, croot, croot, cinstalldir)
commands.getoutput(cmd) commands.getoutput(cmd)
cmd = 'cp -R %s/../intern/cycles/kernel/*.cubin %s/lib/' % (builddir, cinstalldir) cmd = 'cp -R %s/../intern/cycles/kernel/*.cubin %s/lib/' % (builddir, cinstalldir)
commands.getoutput(cmd) commands.getoutput(cmd)
@@ -830,7 +809,9 @@ def AppIt(target=None, source=None, env=None):
instname = env['LCGDIR'][1:] # made libiomp5 part of blender libs instname = env['LCGDIR'][1:] # made libiomp5 part of blender libs
cmd = 'ditto --arch %s %s/openmp/lib/libiomp5.dylib %s/%s.app/Contents/Resources/lib/'%(osxarch, instname, installdir, binary) # copy libiomp5 cmd = 'ditto --arch %s %s/openmp/lib/libiomp5.dylib %s/%s.app/Contents/Resources/lib/'%(osxarch, instname, installdir, binary) # copy libiomp5
commands.getoutput(cmd) commands.getoutput(cmd)
cmd = 'cp %s/openmp/LICENSE.txt %s/LICENSE-libiomp5.txt'%(instname, installdir) # copy libiomp5 license cmd = 'install_name_tool -id @loader_path/../Resources/lib/libiomp5.dylib %s/%s.app/Contents/Resources/lib/libiomp5.dylib'%(installdir, binary) # change id of libiomp5
commands.getoutput(cmd)
cmd = 'install_name_tool -change @loader_path/libiomp5.dylib @loader_path/../Resources/lib/libiomp5.dylib %s/%s.app/Contents/MacOS/%s'%(installdir, binary, binary) # change ref to libiomp5 ( blender )
commands.getoutput(cmd) commands.getoutput(cmd)
# extract copy system python, be sure to update other build systems # extract copy system python, be sure to update other build systems
@@ -855,7 +836,6 @@ def UnixPyBundle(target=None, source=None, env=None):
py_src = env.subst( env['BF_PYTHON_LIBPATH'] + '/python'+env['BF_PYTHON_VERSION'] ) py_src = env.subst( env['BF_PYTHON_LIBPATH'] + '/python'+env['BF_PYTHON_VERSION'] )
py_target = env.subst( dir + '/python/' + target_lib + '/python'+env['BF_PYTHON_VERSION'] ) py_target = env.subst( dir + '/python/' + target_lib + '/python'+env['BF_PYTHON_VERSION'] )
py_target_bin = env.subst(dir + '/python/bin')
# This is a bit weak, but dont install if its been installed before, makes rebuilds quite slow. # This is a bit weak, but dont install if its been installed before, makes rebuilds quite slow.
if os.path.exists(py_target): if os.path.exists(py_target):
@@ -875,11 +855,6 @@ def UnixPyBundle(target=None, source=None, env=None):
except: except:
pass pass
# install the executable
run("rm -rf '%s'" % py_target_bin)
os.makedirs(py_target_bin)
run("cp '%s' '%s'" % (env.subst(env['BF_PYTHON_BINARY']), py_target_bin))
run("cp -R '%s' '%s'" % (py_src, os.path.dirname(py_target))) run("cp -R '%s' '%s'" % (py_src, os.path.dirname(py_target)))
run("rm -rf '%s/distutils'" % py_target) run("rm -rf '%s/distutils'" % py_target)
run("rm -rf '%s/lib2to3'" % py_target) run("rm -rf '%s/lib2to3'" % py_target)

View File

@@ -107,9 +107,8 @@ def print_arguments(args, bc):
def validate_arguments(args, bc): def validate_arguments(args, bc):
opts_list = [ 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_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_AUDASPACE', 'BF_AUDASPACE_C_INC', 'BF_AUDASPACE_PY_INC', 'BF_AUDASPACE_DEF',
'WITH_BF_OPENAL', 'BF_OPENAL', 'BF_OPENAL_INC', 'BF_OPENAL_LIB', 'BF_OPENAL_LIBPATH', 'WITH_BF_STATICOPENAL', 'BF_OPENAL_LIB_STATIC', '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_SDL', 'BF_SDL', 'BF_SDL_INC', 'BF_SDL_LIB', 'BF_SDL_LIBPATH',
'WITH_BF_JACK', 'BF_JACK', 'BF_JACK_INC', 'BF_JACK_LIB', 'BF_JACK_LIBPATH', 'WITH_BF_JACK_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', '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', 'BF_PTHREADS', 'BF_PTHREADS_INC', 'BF_PTHREADS_LIB', 'BF_PTHREADS_LIBPATH',
@@ -138,7 +137,6 @@ def validate_arguments(args, bc):
'WITH_BF_FFTW3', 'BF_FFTW3', 'BF_FFTW3_INC', 'BF_FFTW3_LIB', 'BF_FFTW3_LIBPATH', 'WITH_BF_STATICFFTW3', 'BF_FFTW3_LIB_STATIC', '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_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_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_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_STATICOPENCOLLADA', 'BF_OPENCOLLADA_LIB_STATIC',
@@ -175,7 +173,6 @@ def validate_arguments(args, bc):
'WITH_BF_CXX_GUARDEDALLOC', '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', 'WITH_BF_JEMALLOC', 'WITH_BF_STATICJEMALLOC', 'BF_JEMALLOC', 'BF_JEMALLOC_INC', 'BF_JEMALLOC_LIBPATH', 'BF_JEMALLOC_LIB', 'BF_JEMALLOC_LIB_STATIC',
'BUILDBOT_BRANCH', '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_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_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_OIIO', 'WITH_BF_STATICOIIO', 'BF_OIIO', 'BF_OIIO_INC', 'BF_OIIO_LIB', 'BF_OIIO_LIB_STATIC', 'BF_OIIO_LIBPATH',
@@ -183,8 +180,7 @@ def validate_arguments(args, bc):
'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_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_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_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', 'WITH_BF_LLVM', 'WITH_BF_STATICLLVM', 'BF_LLVM', 'BF_LLVM_LIB', 'BF_LLVM_LIBPATH', 'BF_LLVM_LIB_STATIC', 'BF_PROGRAM_LINKFLAGS'
'WITH_BF_OPENSUBDIV', 'WITH_BF_STATICOPENSUBDIV', 'BF_OPENSUBDIV', 'BF_OPENSUBDIV_INC', 'BF_OPENSUBDIV_LIB', 'BF_OPENSUBDIV_LIBPATH', 'BF_OPENSUBDIV_LIB_STATIC'
] ]
# Have options here that scons expects to be lists # Have options here that scons expects to be lists
@@ -200,8 +196,7 @@ def validate_arguments(args, bc):
'C_WARN', 'CC_WARN', 'CXX_WARN', 'C_WARN', 'CC_WARN', 'CXX_WARN',
'LLIBS', 'PLATFORM_LINKFLAGS', 'MACOSX_ARCHITECTURE', 'MACOSX_SDK', 'XCODE_CUR_VER', 'C_COMPILER_ID', 'LLIBS', 'PLATFORM_LINKFLAGS', 'MACOSX_ARCHITECTURE', 'MACOSX_SDK', 'XCODE_CUR_VER', 'C_COMPILER_ID',
'BF_CYCLES_CUDA_BINARIES_ARCH', 'BF_PROGRAM_LINKFLAGS', 'MACOSX_DEPLOYMENT_TARGET', 'BF_CYCLES_CUDA_BINARIES_ARCH', 'BF_PROGRAM_LINKFLAGS', 'MACOSX_DEPLOYMENT_TARGET',
'WITH_BF_CYCLES_DEBUG', 'WITH_BF_CYCLES_LOGGING', 'WITH_BF_CYCLES_DEBUG'
'WITH_BF_CPP11', 'WITH_BF_LEGACY_DEPSGRAPH',
] ]
@@ -299,17 +294,11 @@ def read_opts(env, cfg, args):
('BF_OPENAL_LIBPATH', 'Path to OpenAL library', ''), ('BF_OPENAL_LIBPATH', 'Path to OpenAL library', ''),
(BoolVariable('WITH_BF_STATICOPENAL', 'Staticly link to openal', False)), (BoolVariable('WITH_BF_STATICOPENAL', 'Staticly link to openal', False)),
(BoolVariable('WITH_BF_AUDASPACE', 'Build with audaspace if true', True)),
('BF_AUDASPACE_C_INC', 'audaspace-c include path', ''),
('BF_AUDASPACE_PY_INC', 'audaspace-py include path', ''),
('BF_AUDASPACE_DEF', 'audaspace defines', ''),
(BoolVariable('WITH_BF_SDL', 'Use SDL if true', False)), (BoolVariable('WITH_BF_SDL', 'Use SDL if true', False)),
('BF_SDL', 'SDL base path', ''), ('BF_SDL', 'SDL base path', ''),
('BF_SDL_INC', 'SDL include path', ''), ('BF_SDL_INC', 'SDL include path', ''),
('BF_SDL_LIB', 'SDL library', ''), ('BF_SDL_LIB', 'SDL library', ''),
('BF_SDL_LIBPATH', 'SDL library path', ''), ('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)), (BoolVariable('WITH_BF_JACK', 'Enable jack support if true', True)),
('BF_JACK', 'jack base path', ''), ('BF_JACK', 'jack base path', ''),
@@ -476,7 +465,7 @@ def read_opts(env, cfg, args):
('BF_OPENGL_LIB_STATIC', 'OpenGL static libraries', ''), ('BF_OPENGL_LIB_STATIC', 'OpenGL static libraries', ''),
('BF_OPENGL_LINKFLAGS', 'OpenGL link flags', ''), ('BF_OPENGL_LINKFLAGS', 'OpenGL link flags', ''),
(BoolVariable('WITH_BF_GLEW_MX', '', False)), (BoolVariable('WITH_BF_GLEW_MX', '', True)),
(BoolVariable('WITH_BF_GLEW_ES', '', False)), (BoolVariable('WITH_BF_GLEW_ES', '', False)),
(BoolVariable('WITH_BF_GL_EGL', '', False)), (BoolVariable('WITH_BF_GL_EGL', '', False)),
(BoolVariable('WITH_BF_GL_PROFILE_COMPAT', '', True)), (BoolVariable('WITH_BF_GL_PROFILE_COMPAT', '', True)),
@@ -516,8 +505,6 @@ def read_opts(env, cfg, args):
(BoolVariable('WITH_BF_PLAYER', 'Build blenderplayer if true', False)), (BoolVariable('WITH_BF_PLAYER', 'Build blenderplayer if true', False)),
(BoolVariable('WITH_BF_NOBLENDER', 'Do not build blender 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_3DMOUSE', 'Build blender with support of 3D mouses', False)),
(BoolVariable('WITH_BF_STATIC3DMOUSE', 'Staticly link to 3d mouse library', False)), (BoolVariable('WITH_BF_STATIC3DMOUSE', 'Staticly link to 3d mouse library', False)),
('BF_3DMOUSE', '3d mouse library base path', ''), ('BF_3DMOUSE', '3d mouse library base path', ''),
@@ -616,7 +603,6 @@ def read_opts(env, cfg, args):
('BF_CYCLES_CUDA_ENV', 'preset environement nvcc will execute in', ''), ('BF_CYCLES_CUDA_ENV', 'preset environement nvcc will execute in', ''),
('BF_CYCLES_CUDA_BINARIES_ARCH', 'CUDA architectures to compile binaries for', []), ('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_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_OIIO', 'Build with OpenImageIO', False)),
(BoolVariable('WITH_BF_STATICOIIO', 'Statically link to OpenImageIO', False)), (BoolVariable('WITH_BF_STATICOIIO', 'Statically link to OpenImageIO', False)),
@@ -661,19 +647,7 @@ def read_opts(env, cfg, args):
('BF_LLVM_LIBPATH', 'LLVM library path', ''), ('BF_LLVM_LIBPATH', 'LLVM library path', ''),
('BF_LLVM_LIB_STATIC', 'LLVM static library', ''), ('BF_LLVM_LIB_STATIC', 'LLVM static library', ''),
('BF_PROGRAM_LINKFLAGS', 'Link flags applied only to final binaries (blender and blenderplayer, not makesrna/makesdna)', ''), ('BF_PROGRAM_LINKFLAGS', 'Link flags applied only to final binaries (blender and blenderplayer, not makesrna/makesdna)', '')
(BoolVariable('WITH_BF_OPENSUBDIV', 'Build with OpenSubdiv library', False)),
(BoolVariable('WITH_BF_STATICOPENSUBDIV', 'Staticly link to OpenColorIO', False)),
('BF_OPENSUBDIV', 'OpenSubdiv root path', ''),
('BF_OPENSUBDIV_INC', 'OpenSubdiv include path', ''),
('BF_OPENSUBDIV_LIB', 'OpenSubdiv library', ''),
('BF_OPENSUBDIV_LIBPATH', 'OpenSubdiv library path', ''),
('BF_OPENSUBDIV_LIB_STATIC', 'OpenSubdiv static library', ''),
(BoolVariable('WITH_BF_CPP11', '"Build with C++11 standard enabled, for development use only!', False)),
(BoolVariable('WITH_BF_LEGACY_DEPSGRAPH', 'Build Blender with legacy dependency graph', True)),
) # end of opts.AddOptions() ) # end of opts.AddOptions()
return localopts return localopts

View File

@@ -13,10 +13,8 @@ blender_subversion=$(grep "BLENDER_SUBVERSION\s" "$blender_srcdir/source/blender
if [ "$blender_version_cycle" = "release" ] ; then if [ "$blender_version_cycle" = "release" ] ; then
VERSION=$(expr $blender_version / 100).$(expr $blender_version % 100)$blender_version_char VERSION=$(expr $blender_version / 100).$(expr $blender_version % 100)$blender_version_char
SUBMODULE_EXCLUDE="^\(release/scripts/addons_contrib\)$"
else else
VERSION=$(expr $blender_version / 100).$(expr $blender_version % 100)_$blender_subversion VERSION=$(expr $blender_version / 100).$(expr $blender_version % 100)_$blender_subversion
SUBMODULE_EXCLUDE="^$" # dummy regex
fi fi
MANIFEST="blender-$VERSION-manifest.txt" MANIFEST="blender-$VERSION-manifest.txt"
@@ -25,23 +23,14 @@ TARBALL="blender-$VERSION.tar.gz"
cd "$blender_srcdir" cd "$blender_srcdir"
# not so nice, but works # not so nice, but works
FILTER_FILES_PY=\ FILTER_FILES_PY="import os, sys; [print(l[:-1]) for l in sys.stdin.readlines() if os.path.isfile(l[:-1])]"
"import os, sys; "\
"[print(l[:-1]) for l in sys.stdin.readlines() "\
"if os.path.isfile(l[:-1]) "\
"if os.path.basename(l[:-1]) not in {"\
"'.gitignore', "\
"'.gitmodules', "\
"'.arcconfig', "\
"}"\
"]"
# Build master list # Build master list
echo -n "Building manifest of files: \"$BASE_DIR/$MANIFEST\" ..." echo -n "Building manifest of files: \"$BASE_DIR/$MANIFEST\" ..."
git ls-files | python3 -c "$FILTER_FILES_PY" > $BASE_DIR/$MANIFEST git ls-files | python3 -c "$FILTER_FILES_PY" > $BASE_DIR/$MANIFEST
# Enumerate submodules # Enumerate submodules
for lcv in $(git submodule | awk '{print $2}' | grep -v "$SUBMODULE_EXCLUDE"); do for lcv in $(git submodule | awk '{print $2}'); do
cd "$BASE_DIR" cd "$BASE_DIR"
cd "$blender_srcdir/$lcv" cd "$blender_srcdir/$lcv"
git ls-files | python3 -c "$FILTER_FILES_PY" | awk '$0="'"$lcv"/'"$0' >> $BASE_DIR/$MANIFEST git ls-files | python3 -c "$FILTER_FILES_PY" | awk '$0="'"$lcv"/'"$0' >> $BASE_DIR/$MANIFEST

View File

@@ -112,7 +112,7 @@ class DNACatalogHTML:
# ${version} and ${revision} # ${version} and ${revision}
if bpy: if bpy:
version = '.'.join(map(str, bpy.app.version)) version = '.'.join(map(str, bpy.app.version))
revision = bpy.app.build_hash revision = bpy.app.build_revision[:-1]
else: else:
version = str(header.Version) version = str(header.Version)
revision = 'Unknown' revision = 'Unknown'
@@ -404,7 +404,7 @@ def main():
# Files # Files
if '--dna-versioned' in sys.argv: if '--dna-versioned' in sys.argv:
blender_version = '_'.join(map(str, bpy.app.version)) blender_version = '_'.join(map(str, bpy.app.version))
filename = 'dna-{0}-{1}_endian-{2}-{3}'.format(sys.arch, sys.byteorder, blender_version, bpy.app.build_hash) filename = 'dna-{0}-{1}_endian-{2}-r{3}'.format(sys.arch, sys.byteorder, blender_version, bpy.app.build_revision[2:-1])
else: else:
filename = 'dna' filename = 'dna'
dir = os.path.dirname(__file__) dir = os.path.dirname(__file__)
@@ -451,7 +451,7 @@ def main():
os.remove(Path_Blend) os.remove(Path_Blend)
# export dna to xhtml # export dna to xhtml
log.info("6: export sdna to xhtml file: %r" % Path_HTML) log.info("6: export sdna to xhtml file")
handleHTML = open(Path_HTML, "w") handleHTML = open(Path_HTML, "w")
catalog.WriteToHTML(handleHTML) catalog.WriteToHTML(handleHTML)
handleHTML.close() handleHTML.close()

104
doc/build_systems/cmake.txt Normal file
View 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)

View File

@@ -35,14 +35,13 @@
defaults. defaults.
Much of the actual functionality can be found in the python scripts Much of the actual functionality can be found in the python scripts
in the directory $BLENDERHOME/build_files/scons/tools, with in the directory $BLENDERHOME/tools, with Blender.py defining the
Blender.py defining the bulk of the functionality. btools.py has some bulk of the functionality. btools.py has some helper functions, and
helper functions, and bcolors.py is for the terminal bcolors.py is for the terminal colors. mstoolkit.py and crossmingw.py
colors. mstoolkit.py and crossmingw.py are modules which set up SCons are modules which set up SCons for the MS VC++ 2003 toolkit and
for the MS VC++ 2003 toolkit and the cross-compile toolset for the cross-compile toolset for compiling Windows binaries on Linux
compiling Windows binaries on Linux respectively. Note: the respectively. Note: the cross-compile doesn't work yet for Blender,
cross-compile doesn't work yet for Blender, but is added in but is added in preparation for having it work in the distant future.
preparation for having it work in the distant future.
BlenderEnvironment BlenderEnvironment
------------------ ------------------

View File

@@ -29,9 +29,9 @@
a scons-local installation, which can be found in the scons/ subdirectory. a scons-local installation, which can be found in the scons/ subdirectory.
This document uses the scons-local installation for its examples. This document uses the scons-local installation for its examples.
For build instructions, including dependencies, consult the appropriate Check from the page
section for your platform at http://www.blender.org/development/building-blender/getting-dependencies/
http://wiki.blender.org/index.php/Dev:Doc/Building_Blender. Note that for that you have all dependencies needed for building Blender. Note that for
windows many of these dependencies already come in the lib/windows module windows many of these dependencies already come in the lib/windows module
from CVS. from CVS.
@@ -53,13 +53,12 @@
from the command-line is given, then all libraries and binaries to from the command-line is given, then all libraries and binaries to
build are configured. build are configured.
The build uses BF_BUILDDIR to build into and BF_INSTALLDIR to finally copy The build uses BF_BUILDDIR to build into and BF_INSTALLDIR to
all needed files to get a proper setup. The BF_DOCDIR is used to generate finally copy all needed files to get a proper setup. The BF_DOCDIR is
Blender Python documentation files to. These variables have default values used to generate Blender Python documentation files to. These
for every platform in variables have default values for every platform in
$BLENDERHOME/build_files/scons/config/(platform)-config.py. See the next $BLENDERHOME/config/(platform)-config.py. After the build successfully
section of this document for how to customize these paths. After the build completes, you can find everything you need in BF_INSTALLDIR.
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 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. need to install nullsoft scriptable install system from http://nsis.sf.net.
@@ -73,8 +72,8 @@
--------------------- ---------------------
The default values for your platform can be found in the directory The default values for your platform can be found in the directory
$BLENDERHOME/build_files/scons/config. Your platform specific defaults are $BLENDERHOME/config. Your platform specific defaults are in
in (platform)-config.py, where platform is one of: (platform)-config.py, where platform is one of:
- linux, for machines running Linux - linux, for machines running Linux
- win32-vc, for Windows machines, compiling with a Microsoft compiler - win32-vc, for Windows machines, compiling with a Microsoft compiler
@@ -82,13 +81,12 @@
- darwin, for OS X machines - darwin, for OS X machines
(TBD: add cygwin, solaris and freebsd support) (TBD: add cygwin, solaris and freebsd support)
These files you will normally not change. If you need to override a These files you will normally not change. If you need to override
default value, make a file called $BLENDERHOME/user-config.py, and copy 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 settings from the config/(platform)-config.py that you want to change. Don't
want to change. Don't copy the entire file (unless explicitly stated in copy the entire file (unless explicitely stated in the configuration file),
the configuration file), because you may not get updated options you don't because you may not get updated options you don't change yourself, which may
change yourself, which may result in build errors. You should NEVER have result in build errors.
to modify $BLENDERHOME/build_files/scons/config/(platform)-config.py.
You can use BF_CONFIG argument to override the default user-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: check. This is just like the user-config.py, but just with another name:
@@ -115,6 +113,11 @@
(unless you have overridden any of them in your (unless you have overridden any of them in your
$BLENDERHOME/user-config.py). $BLENDERHOME/user-config.py).
NOTE: The best way to avoid confusion is the
copy $BLENDERHOME/config/(platform)-config.py to
$BLENDERHOME/user-config.py. You should NEVER have to modify
$BLENDERHOME/config/(platform)-config.py
Configuring the output Configuring the output
---------------------- ----------------------

File diff suppressed because it is too large Load Diff

View File

@@ -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
*/ */

View File

@@ -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

View File

@@ -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,44 +93,36 @@
/* ================================ */ /* ================================ */
/** \defgroup blender Blender */ /** \defgroup blender blender */
/** \defgroup blf BlenFont /** \defgroup blf blenfont
* \ingroup blender * \ingroup blender
*/ */
/** \defgroup bke BlenKernel /** \defgroup bke blenkernel
* \ingroup blender * \ingroup blender
*/ */
/** \defgroup bli BlenLib /** \defgroup bli blenlib
* \ingroup blender * \ingroup blender
*/ */
/** \defgroup depsgraph Dependency Graph /** \defgroup nodes nodes
* \ingroup blender * \ingroup blender
*/ */
/** \defgroup bph Physics /** \defgroup cmpnodes cmpnodes
* \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
*/ */
@@ -139,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
*/ */
@@ -321,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
@@ -331,7 +324,7 @@
* \ingroup externformats * \ingroup externformats
*/ */
/** \defgroup imbuf Image Buffer (ImBuf) /** \defgroup imbuf IMage Buffer
* \ingroup blender * \ingroup blender
*/ */

View File

@@ -1,4 +1,4 @@
#!/usr/bin/env python #!/usr/bin/python
# ##### BEGIN GPL LICENSE BLOCK ##### # ##### BEGIN GPL LICENSE BLOCK #####
# #

View File

@@ -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,

View File

@@ -2,8 +2,8 @@
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

View File

@@ -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

View File

@@ -1,19 +1,16 @@
""" """
.. _operator-execution_context:
Execution Context Execution Context
----------------- -----------------
When calling an operator you may want to pass the execution context. When calling an operator you may want to pass the execution context.
This determines the context that is given for the operator to run in, and whether This determines the context thats given to the operator to run in, and weather
invoke() is called or only execute(). invoke() is called or execute().
'EXEC_DEFAULT' is used by default, running only the execute() method, but you may 'EXEC_DEFAULT' is used by default but you may want the operator to take user
want the operator to take user interaction with 'INVOKE_DEFAULT' which will also interaction with 'INVOKE_DEFAULT'.
call invoke() if existing.
The execution context is one of: The execution context is as a non keyword, string argument in:
('INVOKE_DEFAULT', 'INVOKE_REGION_WIN', 'INVOKE_REGION_CHANNELS', ('INVOKE_DEFAULT', 'INVOKE_REGION_WIN', 'INVOKE_REGION_CHANNELS',
'INVOKE_REGION_PREVIEW', 'INVOKE_AREA', 'INVOKE_SCREEN', 'EXEC_DEFAULT', 'INVOKE_REGION_PREVIEW', 'INVOKE_AREA', 'INVOKE_SCREEN', 'EXEC_DEFAULT',
'EXEC_REGION_WIN', 'EXEC_REGION_CHANNELS', 'EXEC_REGION_PREVIEW', 'EXEC_AREA', 'EXEC_REGION_WIN', 'EXEC_REGION_CHANNELS', 'EXEC_REGION_PREVIEW', 'EXEC_AREA',

View File

@@ -3,7 +3,7 @@ PropertyGroup Example
+++++++++++++++++++++ +++++++++++++++++++++
PropertyGroups can be used for collecting custom settings into one value PropertyGroups can be used for collecting custom settings into one value
to avoid many individual settings mixed in together. to avoid many indervidual settings mixed in together.
""" """
import bpy import bpy

View File

@@ -6,7 +6,7 @@ Custom properties can be added to any subclass of an :class:`ID`,
:class:`Bone` and :class:`PoseBone`. :class:`Bone` and :class:`PoseBone`.
These properties can be animated, accessed by the user interface and python These properties can be animated, accessed by the user interface and python
like Blender's existing properties. like blenders existing properties.
""" """
import bpy import bpy

View File

@@ -1,11 +1,12 @@
""" """
Extending Menus Extending Menus
+++++++++++++++ +++++++++++++++
When creating menus for addons you can't reference menus in Blender's default When creating menus for addons you can't reference menus in blenders default
scripts. scripts.
Instead, the addon can add menu items to existing menus.
The function menu_draw acts like :class:`Menu.draw`. Instead the addon can add menu items to existing menus.
The function menu_draw acts like Menu.draw
""" """
import bpy import bpy

View File

@@ -1,20 +1,21 @@
""" """
Basic Menu Example Basic Menu Example
++++++++++++++++++ ++++++++++++++++++
Here is an example of a simple menu. Menus differ from panels in that they must This script is a simple menu, menus differ from panels in that they must
reference from a header, panel or another menu. reference from a header, panel or another menu.
Notice the 'CATEGORY_MT_name' in :class:`Menu.bl_idname`, this is a naming Notice the 'CATEGORY_MT_name' :class:`Menu.bl_idname`, this is a naming
convention for menus. convention for menus.
.. note:: .. note::
Menu subclasses must be registered before referencing them from blender. Menu subclasses must be registered before referencing them from blender.
.. note:: .. note::
Menus have their :class:`Layout.operator_context` initialized as Menu's have their :class:`Layout.operator_context` initialized as
'EXEC_REGION_WIN' rather than 'INVOKE_DEFAULT' (see :ref:`Execution Context <operator-execution_context>`). 'EXEC_REGION_WIN' rather then 'INVOKE_DEFAULT', so if the operator context
If the operator context needs to initialize inputs from the needs to initialize inputs from the :class:`Operator.invoke` function
:class:`Operator.invoke` function, then this needs to be explicitly set. then this needs to be explicitly set.
""" """
import bpy import bpy

View File

@@ -31,7 +31,7 @@ class SimpleMouseOperator(bpy.types.Operator):
y = bpy.props.IntProperty() y = bpy.props.IntProperty()
def execute(self, context): def execute(self, context):
# rather than printing, use the report function, # rather then printing, use the report function,
# this way the message appears in the header, # this way the message appears in the header,
self.report({'INFO'}, "Mouse coords are %d %d" % (self.x, self.y)) self.report({'INFO'}, "Mouse coords are %d %d" % (self.x, self.y))
return {'FINISHED'} return {'FINISHED'}

View File

@@ -7,7 +7,7 @@ A mix-in parent class can be used to share common properties and
import bpy import bpy
class View3DPanel: class View3DPanel():
bl_space_type = 'VIEW_3D' bl_space_type = 'VIEW_3D'
bl_region_type = 'TOOLS' bl_region_type = 'TOOLS'

View File

@@ -1,7 +1,7 @@
""" """
Note that when keying data paths which contain nested properties this must be Note that when keying data paths which contain nested properties this must be
done from the :class:`ID` subclass, in this case the :class:`Armature` rather done from the :class:`ID` subclass, in this case the :class:`Armature` rather
than the bone. then the bone.
""" """
import bpy import bpy

View File

@@ -21,12 +21,3 @@ print(quat_out)
print("%.2f, %.2f, %.2f" % tuple(math.degrees(a) for a in quat_out.to_euler())) print("%.2f, %.2f, %.2f" % tuple(math.degrees(a) for a in quat_out.to_euler()))
print("(%.2f, %.2f, %.2f), %.2f" % (quat_out.axis[:] + print("(%.2f, %.2f, %.2f), %.2f" % (quat_out.axis[:] +
(math.degrees(quat_out.angle), ))) (math.degrees(quat_out.angle), )))
# multiple rotations can be interpolated using the exponential map
quat_c = mathutils.Quaternion((1.0, 0.0, 0.0), math.radians(15.0))
exp_avg = (quat_a.to_exponential_map() +
quat_b.to_exponential_map() +
quat_c.to_exponential_map()) / 3.0
quat_avg = mathutils.Quaternion(exp_avg)
print("Average rotation:")
print(quat_avg)

View File

@@ -18,16 +18,16 @@ matrix = mathutils.Matrix()
# Comparison operators can be done on Vector classes: # Comparison operators can be done on Vector classes:
# (In)equality operators == and != test component values, e.g. 1,2,3 != 3,2,1 # greater and less then test vector length.
vec_a == vec_b
vec_a != vec_b
# Ordering operators >, >=, > and <= test vector length.
vec_a > vec_b vec_a > vec_b
vec_a >= vec_b vec_a >= vec_b
vec_a < vec_b vec_a < vec_b
vec_a <= vec_b vec_a <= vec_b
# ==, != test vector values e.g. 1,2,3 != 3,2,1 even if they are the same length
vec_a == vec_b
vec_a != vec_b
# Math can be performed on Vector classes # Math can be performed on Vector classes
vec_a + vec_b vec_a + vec_b

View File

@@ -1,47 +0,0 @@
Application Data (bge.app)
==========================
Module to access application values that remain unchanged during runtime.
.. module:: bge.app
.. data:: version
The Blender/BGE version as a tuple of 3 ints, eg. (2, 75, 1).
.. note:: Version tuples can be compared simply with (in)equality symbols;
for example, ``(2, 74, 5) <= (2, 75, 0)`` returns True (lexical order).
:type: tuple of three ints
.. data:: version_string
The Blender/BGE version formatted as a string, eg. "2.75 (sub 1)".
:type: str
.. data:: version_char
The Blender/BGE version character (for minor releases).
:type: str
.. data:: has_texture_ffmpeg
True if the BGE has been built with FFmpeg support, enabling use of :class:`~bge.texture.ImageFFmpeg` and :class:`~bge.texture.VideoFFmpeg`.
:type: bool
.. data:: has_joystick
True if the BGE has been built with joystick support.
:type: bool
.. data:: has_physics
True if the BGE has been built with physics support.
:type: bool

View File

@@ -4,77 +4,72 @@ Physics Constraints (bge.constraints)
.. module:: bge.constraints .. module:: bge.constraints
.. literalinclude:: ../examples/bge.constraints.py
Examples :language: rest
-------- :lines: 2-4
.. include:: ../examples/bge.constraints.py
:start-line: 1
:end-line: 4
.. literalinclude:: ../examples/bge.constraints.py .. literalinclude:: ../examples/bge.constraints.py
:lines: 6- :lines: 6-
.. function:: createConstraint(physicsid, physicsid2, constrainttype, [pivotX, pivotY, pivotZ, [axisX, axisY, axisZ, [flag]]]])
Functions
---------
.. function:: createConstraint( \
physicsid_1, physicsid_2, constraint_type, \
pivot_x=0.0, pivot_y=0.0, pivot_z=0.0, \
axis_x=0.0, axis_y=0.0, axis_z=0.0, flag=0)
Creates a constraint. Creates a constraint.
:arg physicsid_1: The physics id of the first object in constraint. :arg physicsid: the physics id of the first object in constraint
:type physicsid_1: int :type physicsid: int
:arg physicsid_2: The physics id of the second object in constraint. :arg physicsid2: the physics id of the second object in constraint
:type physicsid_2: int :type physicsid2: int
:arg constraint_type: The type of the constraint, see `Create Constraint Constants`_. :arg constrainttype: the type of the constraint. The constraint types are:
:type constraint_type: int - :class:`POINTTOPOINT_CONSTRAINT`
- :class:`LINEHINGE_CONSTRAINT`
- :class:`ANGULAR_CONSTRAINT`
- :class:`CONETWIST_CONSTRAINT`
- :class:`VEHICLE_CONSTRAINT`
- :class:`GENERIC_6DOF_CONSTRAINT`
:arg pivot_x: Pivot X position. (optional) :type constrainttype: int
:type pivot_x: float
:arg pivot_y: Pivot Y position. (optional) :arg pivotX: pivot X position
:type pivot_y: float :type pivotX: float
:arg pivot_z: Pivot Z position. (optional) :arg pivotY: pivot Y position
:type pivot_z: float :type pivotY: float
:arg axis_x: X axis angle in degrees. (optional) :arg pivotZ: pivot Z position
:type axis_x: float :type pivotZ: float
:arg axis_y: Y axis angle in degrees. (optional) :arg axisX: X axis
:type axis_y: float :type axisX: float
:arg axis_z: Z axis angle in degrees. (optional) :arg axisY: Y axis
:type axis_z: float :type axisY: float
:arg flag: 128 to disable collision between linked bodies. (optional) :arg axisZ: Z axis
:type axisZ: float
:arg flag: 128 to disable collision between linked bodies
:type flag: int :type flag: int
:return: A constraint wrapper. .. attribute:: error
:rtype: :class:`~bge.types.KX_ConstraintWrapper`
Simbolic constant string that indicates error.
.. function:: exportBulletFile(filename) .. function:: exportBulletFile(filename)
Exports a file representing the dynamics world (usually using ``.bullet`` extension). export a .bullet file
See `Bullet binary serialization <http://bulletphysics.org/mediawiki-1.5.8/index.php/Bullet_binary_serialization>`__. :arg filename: File name
:type filename: string
:arg filename: File path.
:type filename: str
.. function:: getAppliedImpulse(constraintId) .. function:: getAppliedImpulse(constraintId)
:arg constraintId: The id of the constraint. :arg constraintId: The id of the constraint.
:type constraintId: int :type constraintId: int
:return: The most recent applied impulse. :return: the most recent applied impulse.
:rtype: float :rtype: float
.. function:: getVehicleConstraint(constraintId) .. function:: getVehicleConstraint(constraintId)
@@ -82,16 +77,16 @@ Functions
:arg constraintId: The id of the vehicle constraint. :arg constraintId: The id of the vehicle constraint.
:type constraintId: int :type constraintId: int
:return: A vehicle constraint object. :return: a vehicle constraint object.
:rtype: :class:`~bge.types.KX_VehicleWrapper` :rtype: :class:`bge.types.KX_VehicleWrapper`
.. function:: getCharacter(gameobj) .. function:: getCharacter(gameobj)
:arg gameobj: The game object with the character physics. :arg gameobj: The game object with the character physics.
:type gameobj: :class:`~bge.types.KX_GameObject` :type gameobj: :class:`bge.types.KX_GameObject`
:return: Character wrapper. :return: character wrapper
:rtype: :class:`~bge.types.KX_CharacterWrapper` :rtype: :class:`bge.types.KX_CharacterWrapper`
.. function:: removeConstraint(constraintId) .. function:: removeConstraint(constraintId)
@@ -145,8 +140,23 @@ Functions
Sets the debug mode. Sets the debug mode.
:arg mode: The new debug mode, see `Debug Mode Constants`_. Debug modes:
- :class:`DBG_NODEBUG`
- :class:`DBG_DRAWWIREFRAME`
- :class:`DBG_DRAWAABB`
- :class:`DBG_DRAWFREATURESTEXT`
- :class:`DBG_DRAWCONTACTPOINTS`
- :class:`DBG_NOHELPTEXT`
- :class:`DBG_DRAWTEXT`
- :class:`DBG_PROFILETIMINGS`
- :class:`DBG_ENABLESATCOMPARISION`
- :class:`DBG_DISABLEBULLETLCP`
- :class:`DBG_ENABLECCD`
- :class:`DBG_DRAWCONSTRAINTS`
- :class:`DBG_DRAWCONSTRAINTLIMITS`
- :class:`DBG_FASTWIREFRAME`
:arg mode: The new debug mode.
:type mode: int :type mode: int
.. function:: setGravity(x, y, z) .. function:: setGravity(x, y, z)
@@ -165,8 +175,7 @@ Functions
.. function:: setLinearAirDamping(damping) .. function:: setLinearAirDamping(damping)
.. note:: .. note::
Not implemented.
Not implemented
Sets the linear air damping for rigidbodies. Sets the linear air damping for rigidbodies.
@@ -226,111 +235,144 @@ Functions
.. function:: setUseEpa(epa) .. function:: setUseEpa(epa)
.. note:: Not implemented.
Not implemented
Constants
+++++++++
.. attribute:: error
Symbolic constant string that indicates error.
:type: str
Debug Mode Constants
^^^^^^^^^^^^^^^^^^^^
Debug mode to be used with :func:`setDebugMode`.
.. data:: DBG_NODEBUG .. data:: DBG_NODEBUG
.. note::
Debug mode to be used with function :class:`setDebugMode`
No debug. No debug.
.. data:: DBG_DRAWWIREFRAME .. data:: DBG_DRAWWIREFRAME
.. note::
Debug mode to be used with function :class:`setDebugMode`
Draw wireframe in debug. Draw wireframe in debug.
.. data:: DBG_DRAWAABB .. data:: DBG_DRAWAABB
.. note::
Debug mode to be used with function :class:`setDebugMode`
Draw Axis Aligned Bounding Box in debug. Draw Axis Aligned Bounding Box in debug.
.. data:: DBG_DRAWFREATURESTEXT .. data:: DBG_DRAWFREATURESTEXT
Draw features text in debug. .. note::
Debug mode to be used with function :class:`setDebugMode`
Draw freatures text in debug.
.. data:: DBG_DRAWCONTACTPOINTS .. data:: DBG_DRAWCONTACTPOINTS
.. note::
Debug mode to be used with function :class:`setDebugMode`
Draw contact points in debug. Draw contact points in debug.
.. data:: DBG_NOHELPTEXT .. data:: DBG_NOHELPTEXT
.. note::
Debug mode to be used with function :class:`setDebugMode`
Debug without help text. Debug without help text.
.. data:: DBG_DRAWTEXT .. data:: DBG_DRAWTEXT
.. note::
Debug mode to be used with function :class:`setDebugMode`
Draw text in debug. Draw text in debug.
.. data:: DBG_PROFILETIMINGS .. data:: DBG_PROFILETIMINGS
.. note::
Debug mode to be used with function :class:`setDebugMode`
Draw profile timings in debug. Draw profile timings in debug.
.. data:: DBG_ENABLESATCOMPARISION .. data:: DBG_ENABLESATCOMPARISION
.. note::
Debug mode to be used with function :class:`setDebugMode`
Enable sat comparision in debug. Enable sat comparision in debug.
.. data:: DBG_DISABLEBULLETLCP .. data:: DBG_DISABLEBULLETLCP
.. note::
Debug mode to be used with function :class:`setDebugMode`
Disable Bullet LCP. Disable Bullet LCP.
.. data:: DBG_ENABLECCD .. data:: DBG_ENABLECCD
Enable Continous Collision Detection in debug. .. note::
Debug mode to be used with function :class:`setDebugMode`
Enable Continous Colision Detection in debug.
.. data:: DBG_DRAWCONSTRAINTS .. data:: DBG_DRAWCONSTRAINTS
.. note::
Debug mode to be used with function :class:`setDebugMode`
Draw constraints in debug. Draw constraints in debug.
.. data:: DBG_DRAWCONSTRAINTLIMITS .. data:: DBG_DRAWCONSTRAINTLIMITS
.. note::
Debug mode to be used with function :class:`setDebugMode`
Draw constraint limits in debug. Draw constraint limits in debug.
.. data:: DBG_FASTWIREFRAME .. data:: DBG_FASTWIREFRAME
.. note::
Debug mode to be used with function :class:`setDebugMode`
Draw a fast wireframe in debug. Draw a fast wireframe in debug.
Create Constraint Constants
^^^^^^^^^^^^^^^^^^^^^^^^^^^
Constraint type to be used with :func:`createConstraint`.
.. data:: POINTTOPOINT_CONSTRAINT .. data:: POINTTOPOINT_CONSTRAINT
.. note::
Constraint type to be used with function :class:`createConstraint`
.. to do .. to do
.. data:: LINEHINGE_CONSTRAINT .. data:: LINEHINGE_CONSTRAINT
.. note::
Constraint type to be used with function :class:`createConstraint`
.. to do .. to do
.. data:: ANGULAR_CONSTRAINT .. data:: ANGULAR_CONSTRAINT
.. note::
Constraint type to be used with function :class:`createConstraint`
.. to do .. to do
.. data:: CONETWIST_CONSTRAINT .. data:: CONETWIST_CONSTRAINT
.. note::
Constraint type to be used with function :class:`createConstraint`
.. to do .. to do
.. data:: VEHICLE_CONSTRAINT .. data:: VEHICLE_CONSTRAINT
.. note::
Constraint type to be used with function :class:`createConstraint`
.. to do .. to do
.. data:: GENERIC_6DOF_CONSTRAINT .. data:: GENERIC_6DOF_CONSTRAINT
.. to do .. note::
Constraint type to be used with function :class:`createConstraint`
.. to do

View File

@@ -894,8 +894,6 @@ Various
2D Filter 2D Filter
--------- ---------
.. _Two-D-FilterActuator-mode:
.. data:: RAS_2DFILTER_BLUR .. data:: RAS_2DFILTER_BLUR
:value: 2 :value: 2
@@ -1290,3 +1288,5 @@ See :class:`bge.types.KX_StateActuator.operation`
Add bits to state mask Add bits to state mask
:value: 3 :value: 3
.. _Two-D-FilterActuator-mode:

View File

@@ -8,13 +8,9 @@ Intro
.. module:: bge.render .. module:: bge.render
Example of using a :class:`bge.types.SCA_MouseSensor`, and two :class:`bge.types.KX_ObjectActuator` to implement MouseLook:
.. note::
This can also be achieved with the :class:`bge.types.KX_MouseActuator`.
.. code-block:: python .. code-block:: python
# Example Uses an L{SCA_MouseSensor}, and two L{KX_ObjectActuator}s to implement MouseLook::
# To use a mouse movement sensor "Mouse" and a # To use a mouse movement sensor "Mouse" and a
# motion actuator to mouse look: # motion actuator to mouse look:
import bge import bge
@@ -66,7 +62,7 @@ Constants
.. data:: KX_BLENDER_GLSL_MATERIAL .. data:: KX_BLENDER_GLSL_MATERIAL
Materials approximating blender materials with GLSL. Materials approximating blender materials with GLSL.
.. DATA:: VSYNC_OFF .. DATA:: VSYNC_OFF
Disables vsync Disables vsync
@@ -79,15 +75,6 @@ Constants
Enables adaptive vsync if supported. Adaptive vsync enables vsync if the framerate is above the monitors refresh rate. Otherwise, vsync is diabled if the framerate is too low. Enables adaptive vsync if supported. Adaptive vsync enables vsync if the framerate is above the monitors refresh rate. Otherwise, vsync is diabled if the framerate is too low.
.. data:: LEFT_EYE
Left eye being used during stereoscopic rendering.
.. data:: RIGHT_EYE
Right eye being used during stereoscopic rendering.
********* *********
Functions Functions
********* *********
@@ -95,55 +82,47 @@ Functions
.. function:: getWindowWidth() .. function:: getWindowWidth()
Gets the width of the window (in pixels) Gets the width of the window (in pixels)
:rtype: integer :rtype: integer
.. function:: getWindowHeight() .. function:: getWindowHeight()
Gets the height of the window (in pixels) Gets the height of the window (in pixels)
:rtype: integer :rtype: integer
.. function:: setWindowSize(width, height) .. function:: setWindowSize(width, height)
Set the width and height of the window (in pixels). This also works for fullscreen applications. Set the width and height of the window (in pixels). This also works for fullscreen applications.
:type width: integer :type width: integer
:type height: integer :type height: integer
.. function:: setFullScreen(enable) .. function:: setFullScreen(enable)
Set whether or not the window should be fullscreen. Set whether or not the window should be fullscreen.
:type enable: bool :type enable: bool
.. function:: getFullScreen() .. function:: getFullScreen()
Returns whether or not the window is fullscreen. Returns whether or not the window is fullscreen.
:rtype: bool
.. function:: getDisplayDimensions()
Get the actual display dimensions, in pixels, of the physical display (e.g., the monitor).
:type dimension: list [width,heigh] :rtype: bool
.. function:: makeScreenshot(filename) .. function:: makeScreenshot(filename)
Writes an image file with the current displayed frame. Writes a screenshot to the given filename.
The image is written to *'filename'*. The path may be absolute (eg. "/home/foo/image") or relative when started with If filename starts with // the image will be saved relative to the current directory.
"//" (eg. "//image"). Note that absolute paths are not portable between platforms. If the filename contains # it will be replaced with the frame number.
If the filename contains a "#", it will be replaced by an incremental index so that screenshots can be taken multiple
times without overwriting the previous ones (eg. "image-#"). The standalone player saves .png files. It does not support color space conversion
or gamma correction.
Settings for the image are taken from the render settings (file format and respective settings, gamma and colospace
conversion, etc). The image resolution matches the framebuffer, meaning, the window size and aspect ratio. When run from Blender, makeScreenshot supports all Blender image file formats like PNG, TGA, Jpeg and OpenEXR.
When running from the standalone player, instead of the embedded player, only PNG files are supported. Additional Gamma, Colorspace conversion and Jpeg compression are taken from the Render settings panels.
color conversions are also not supported.
:arg filename: path and name of the file to write
:type filename: string :type filename: string
@@ -155,29 +134,65 @@ Functions
.. function:: showMouse(visible) .. function:: showMouse(visible)
Enables or disables the operating system mouse cursor. Enables or disables the operating system mouse cursor.
:type visible: boolean :type visible: boolean
.. function:: setMousePosition(x, y) .. function:: setMousePosition(x, y)
Sets the mouse cursor position. Sets the mouse cursor position.
:type x: integer :type x: integer
:type y: integer :type y: integer
.. function:: setBackgroundColor(rgba) .. function:: setBackgroundColor(rgba)
Sets the window background color. (Deprecated: use KX_WorldInfo.background_color) Sets the window background color.
:type rgba: list [r, g, b, a] :type rgba: list [r, g, b, a]
.. function:: setMistColor(rgb)
Sets the mist color.
:type rgb: list [r, g, b]
.. function:: setAmbientColor(rgb)
Sets the color of ambient light.
:type rgb: list [r, g, b]
.. function:: setMistStart(start)
Sets the mist start value. Objects further away than start will have mist applied to them.
:type start: float
.. function:: setMistEnd(end)
Sets the mist end value. Objects further away from this will be colored solid with
the color set by setMistColor().
:type end: float
.. function:: disableMist()
Disables mist.
.. note:: Set any of the mist properties to enable mist.
.. function:: setEyeSeparation(eyesep) .. function:: setEyeSeparation(eyesep)
Sets the eye separation for stereo mode. Usually Focal Length/30 provides a confortable value. Sets the eye separation for stereo mode. Usually Focal Length/30 provides a confortable value.
:arg eyesep: The distance between the left and right eye. :arg eyesep: The distance between the left and right eye.
:type eyesep: float :type eyesep: float
@@ -185,36 +200,27 @@ Functions
.. function:: getEyeSeparation() .. function:: getEyeSeparation()
Gets the current eye separation for stereo mode. Gets the current eye separation for stereo mode.
:rtype: float :rtype: float
.. function:: setFocalLength(focallength) .. function:: setFocalLength(focallength)
Sets the focal length for stereo mode. It uses the current camera focal length as initial value. Sets the focal length for stereo mode. It uses the current camera focal length as initial value.
:arg focallength: The focal length. :arg focallength: The focal length.
:type focallength: float :type focallength: float
.. function:: getFocalLength() .. function:: getFocalLength()
Gets the current focal length for stereo mode. Gets the current focal length for stereo mode.
:rtype: float :rtype: float
.. function:: getStereoEye()
Gets the current stereoscopy eye being rendered.
This function is mainly used in a :class:`bge.types.KX_Scene.pre_draw` callback
function to customize the camera projection matrices for each
stereoscopic eye.
:rtype: LEFT_EYE, RIGHT_EYE
.. function:: setMaterialMode(mode) .. function:: setMaterialMode(mode)
Set the material mode to use for OpenGL rendering. Set the material mode to use for OpenGL rendering.
:type mode: KX_TEXFACE_MATERIAL, KX_BLENDER_MULTITEX_MATERIAL, KX_BLENDER_GLSL_MATERIAL :type mode: KX_TEXFACE_MATERIAL, KX_BLENDER_MULTITEX_MATERIAL, KX_BLENDER_GLSL_MATERIAL
.. note:: Changes will only affect newly created scenes. .. note:: Changes will only affect newly created scenes.
@@ -223,14 +229,14 @@ Functions
.. function:: getMaterialMode(mode) .. function:: getMaterialMode(mode)
Get the material mode to use for OpenGL rendering. Get the material mode to use for OpenGL rendering.
:rtype: KX_TEXFACE_MATERIAL, KX_BLENDER_MULTITEX_MATERIAL, KX_BLENDER_GLSL_MATERIAL :rtype: KX_TEXFACE_MATERIAL, KX_BLENDER_MULTITEX_MATERIAL, KX_BLENDER_GLSL_MATERIAL
.. function:: setGLSLMaterialSetting(setting, enable) .. function:: setGLSLMaterialSetting(setting, enable)
Enables or disables a GLSL material setting. Enables or disables a GLSL material setting.
:type setting: string (lights, shaders, shadows, ramps, nodes, extra_textures) :type setting: string (lights, shaders, shadows, ramps, nodes, extra_textures)
:type enable: boolean :type enable: boolean
@@ -238,43 +244,43 @@ Functions
.. function:: getGLSLMaterialSetting(setting, enable) .. function:: getGLSLMaterialSetting(setting, enable)
Get the state of a GLSL material setting. Get the state of a GLSL material setting.
:type setting: string (lights, shaders, shadows, ramps, nodes, extra_textures) :type setting: string (lights, shaders, shadows, ramps, nodes, extra_textures)
:rtype: boolean :rtype: boolean
.. function:: setAnisotropicFiltering(level) .. function:: setAnisotropicFiltering(level)
Set the anisotropic filtering level for textures. Set the anisotropic filtering level for textures.
:arg level: The new anisotropic filtering level to use :arg level: The new anisotropic filtering level to use
:type level: integer (must be one of 1, 2, 4, 8, 16) :type level: integer (must be one of 1, 2, 4, 8, 16)
.. note:: Changing this value can cause all textures to be recreated, which can be slow. .. note:: Changing this value can cause all textures to be recreated, which can be slow.
.. function:: getAnisotropicFiltering() .. function:: getAnisotropicFiltering()
Get the anisotropic filtering level used for textures. Get the anisotropic filtering level used for textures.
:rtype: integer (one of 1, 2, 4, 8, 16) :rtype: integer (one of 1, 2, 4, 8, 16)
.. function:: setMipmapping(value) .. function:: setMipmapping(value)
Change how to use mipmapping. Change how to use mipmapping.
:type value: RAS_MIPMAP_NONE, RAS_MIPMAP_NEAREST, RAS_MIPMAP_LINEAR :type value: RAS_MIPMAP_NONE, RAS_MIPMAP_NEAREST, RAS_MIPMAP_LINEAR
.. note:: Changing this value can cause all textures to be recreated, which can be slow. .. note:: Changing this value can cause all textures to be recreated, which can be slow.
.. function:: getMipmapping() .. function:: getMipmapping()
Get the current mipmapping setting. Get the current mipmapping setting.
:rtype: RAS_MIPMAP_NONE, RAS_MIPMAP_NEAREST, RAS_MIPMAP_LINEAR :rtype: RAS_MIPMAP_NONE, RAS_MIPMAP_NEAREST, RAS_MIPMAP_LINEAR
.. function:: drawLine(fromVec,toVec,color) .. function:: drawLine(fromVec,toVec,color)
Draw a line in the 3D scene. Draw a line in the 3D scene.
:arg fromVec: the origin of the line :arg fromVec: the origin of the line
:type fromVec: list [x, y, z] :type fromVec: list [x, y, z]
:arg toVec: the end of the line :arg toVec: the end of the line
@@ -286,7 +292,7 @@ Functions
.. function:: enableMotionBlur(factor) .. function:: enableMotionBlur(factor)
Enable the motion blur effect. Enable the motion blur effect.
:arg factor: the ammount of motion blur to display. :arg factor: the ammount of motion blur to display.
:type factor: float [0.0 - 1.0] :type factor: float [0.0 - 1.0]

File diff suppressed because it is too large Load Diff

View File

@@ -7,66 +7,11 @@ base class --- :class:`PyObjectPlus`
.. class:: KX_BlenderMaterial(PyObjectPlus) .. class:: KX_BlenderMaterial(PyObjectPlus)
This is the interface to materials in the game engine. KX_BlenderMaterial
Materials define the render state to be applied to mesh objects.
The example below shows a simple GLSL shader setup allowing to dynamically mix two texture channels
in a material. All materials of the object executing this script should have two textures using
separate UV maps in the two first texture channels.
The code works for both Multitexture and GLSL rendering modes.
.. code-block:: python
from bge import logic
vertex_shader = """
void main(void)
{
// simple projection of the vertex position to view space
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
// coordinate of the 1st texture channel
gl_TexCoord[0] = gl_MultiTexCoord0;
// coordinate of the 2nd texture channel
gl_TexCoord[1] = gl_MultiTexCoord1;
}
"""
fragment_shader ="""
uniform sampler2D texture_0;
uniform sampler2D texture_1;
uniform float factor;
void main(void)
{
vec4 color_0 = texture2D(texture_0, gl_TexCoord[0].st);
vec4 color_1 = texture2D(texture_1, gl_TexCoord[1].st);
gl_FragColor = mix(color_0, color_1, factor);
}
"""
object = logic.getCurrentController().owner
for mesh in object.meshes:
for material in mesh.materials:
shader = material.getShader()
if shader is not None:
if not shader.isValid():
shader.setSource(vertex_shader, fragment_shader, True)
# get the first texture channel of the material
shader.setSampler('texture_0', 0)
# get the second texture channel of the material
shader.setSampler('texture_1', 1)
# pass another uniform to the shader
shader.setUniform1f('factor', 0.3)
.. attribute:: shader .. attribute:: shader
The material's shader. The materials shader.
:type: :class:`BL_Shader` :type: :class:`BL_Shader`
@@ -89,83 +34,39 @@ base class --- :class:`PyObjectPlus`
:return: the material's shader :return: the material's shader
:rtype: :class:`BL_Shader` :rtype: :class:`BL_Shader`
.. attribute:: alpha
The material's alpha transparency.
:type: float between 0.0 and 1.0 inclusive
.. attribute:: hardness
How hard (sharp) the material's specular reflection is.
:type: integer between 1 and 511 inclusive
.. attribute:: emit
Amount of light to emit.
:type: float between 0.0 and 2.0 inclusive
.. attribute:: specularIntensity
How intense (bright) the material's specular reflection is.
:type: float between 0.0 and 1.0 inclusive
.. attribute:: diffuseIntensity
The material's amount of diffuse reflection.
:type: float between 0.0 and 1.0 inclusive
.. attribute:: specularColor
The material's specular color.
:type: :class:`mathutils.Color`
.. attribute:: diffuseColor
The material's diffuse color.
:type: :class:`mathutils.Color`
.. method:: setBlending(src, dest) .. method:: setBlending(src, dest)
Set the pixel color arithmetic functions. Set the pixel color arithmetic functions.
:arg src: Specifies how the red, green, blue, and alpha source blending factors are computed, one of... :arg src: Specifies how the red, green, blue, and alpha source blending factors are computed.
:type src: Value in...
* :data:`~bgl.GL_ZERO`
* :data:`~bgl.GL_ONE`
* :data:`~bgl.GL_SRC_COLOR`
* :data:`~bgl.GL_ONE_MINUS_SRC_COLOR`
* :data:`~bgl.GL_DST_COLOR`
* :data:`~bgl.GL_ONE_MINUS_DST_COLOR`
* :data:`~bgl.GL_SRC_ALPHA`
* :data:`~bgl.GL_ONE_MINUS_SRC_ALPHA`
* :data:`~bgl.GL_DST_ALPHA`
* :data:`~bgl.GL_ONE_MINUS_DST_ALPHA`
* :data:`~bgl.GL_SRC_ALPHA_SATURATE`
:type src: int
:arg dest: Specifies how the red, green, blue, and alpha destination blending factors are computed, one of... * GL_ZERO,
* GL_ONE,
* :data:`~bgl.GL_ZERO` * GL_SRC_COLOR,
* :data:`~bgl.GL_ONE` * GL_ONE_MINUS_SRC_COLOR,
* :data:`~bgl.GL_SRC_COLOR` * GL_DST_COLOR,
* :data:`~bgl.GL_ONE_MINUS_SRC_COLOR` * GL_ONE_MINUS_DST_COLOR,
* :data:`~bgl.GL_DST_COLOR` * GL_SRC_ALPHA,
* :data:`~bgl.GL_ONE_MINUS_DST_COLOR` * GL_ONE_MINUS_SRC_ALPHA,
* :data:`~bgl.GL_SRC_ALPHA` * GL_DST_ALPHA,
* :data:`~bgl.GL_ONE_MINUS_SRC_ALPHA` * GL_ONE_MINUS_DST_ALPHA,
* :data:`~bgl.GL_DST_ALPHA` * GL_SRC_ALPHA_SATURATE
* :data:`~bgl.GL_ONE_MINUS_DST_ALPHA`
* :data:`~bgl.GL_SRC_ALPHA_SATURATE` :arg dest: Specifies how the red, green, blue, and alpha destination blending factors are computed.
:type dest: Value in...
:type dest: int
* GL_ZERO
* GL_ONE
* GL_SRC_COLOR
* GL_ONE_MINUS_SRC_COLOR
* GL_DST_COLOR
* GL_ONE_MINUS_DST_COLOR
* GL_SRC_ALPHA
* GL_ONE_MINUS_SRC_ALPHA
* GL_DST_ALPHA
* GL_ONE_MINUS_DST_ALPHA
* GL_SRC_ALPHA_SATURATE
.. method:: getMaterialIndex() .. method:: getMaterialIndex()

View File

@@ -51,18 +51,6 @@ base class --- :class:`KX_GameObject`
:type: float :type: float
.. attribute:: shift_x
The camera's horizontal shift.
:type: float
.. attribute:: shift_y
The camera's vertical shift.
:type: float
.. attribute:: perspective .. attribute:: perspective
True if this camera has a perspective transform, False for an orthographic projection. True if this camera has a perspective transform, False for an orthographic projection.

View File

@@ -37,7 +37,7 @@ base class --- :class:`PyObjectPlus`
The speed and direction the character is traveling in using world coordinates. This should be used instead of applyMovement() to properly move the character. The speed and direction the character is traveling in using world coordinates. This should be used instead of applyMovement() to properly move the character.
:type: Vector((x, y, z)) :type: list [x, y, z]
.. method:: jump() .. method:: jump()

View File

@@ -23,14 +23,15 @@ base class --- :class:`PyObjectPlus`
:arg axis: :arg axis:
:type axis: integer :type axis: integer
.. note:: .. note::
* Lowerlimit == Upperlimit -> axis is locked For each axis:
* Lowerlimit > Upperlimit -> axis is free * Lowerlimit == Upperlimit -> axis is locked
* Lowerlimit < Upperlimit -> axis it limited in that range * Lowerlimit > Upperlimit -> axis is free
* Lowerlimit < Upperlimit -> axis it limited in that range
For PHY_LINEHINGE_CONSTRAINT = 2 or PHY_ANGULAR_CONSTRAINT = 3:
PHY_LINEHINGE_CONSTRAINT = 2 or PHY_ANGULAR_CONSTRAINT = 3:
axis = 3 is a constraint limit, with low/high limit value axis = 3 is a constraint limit, with low/high limit value
* 3: X axis angle * 3: X axis angle
:arg value0 (min): Set the minimum limit of the axis :arg value0 (min): Set the minimum limit of the axis
@@ -38,8 +39,7 @@ base class --- :class:`PyObjectPlus`
:arg value1 (max): Set the maximum limit of the axis :arg value1 (max): Set the maximum limit of the axis
:type value1: float :type value1: float
For PHY_CONE_TWIST_CONSTRAINT = 4: PHY_CONE_TWIST_CONSTRAINT = 3:
axis = 3..5 are constraint limits, high limit values axis = 3..5 are constraint limits, high limit values
* 3: X axis angle * 3: X axis angle
* 4: Y axis angle * 4: Y axis angle
@@ -50,8 +50,7 @@ base class --- :class:`PyObjectPlus`
:arg value1 (max): Set the maximum limit of the axis :arg value1 (max): Set the maximum limit of the axis
:type value1: float :type value1: float
For PHY_GENERIC_6DOF_CONSTRAINT = 12: PHY_GENERIC_6DOF_CONSTRAINT = 12:
axis = 0..2 are constraint limits, with low/high limit value axis = 0..2 are constraint limits, with low/high limit value
* 0: X axis position * 0: X axis position
* 1: Y axis position * 1: Y axis position
@@ -133,10 +132,10 @@ base class --- :class:`PyObjectPlus`
Returns the contraint type (read only) Returns the contraint type (read only)
:type: integer :type: integer
- 1 = :class:`~bge.constraints.POINTTOPOINT_CONSTRAINT`
- 2 = :class:`~bge.constraints.LINEHINGE_CONSTRAINT`
- 3 = :class:`~bge.constraints.ANGULAR_CONSTRAINT`
- 4 = :class:`~bge.constraints.CONETWIST_CONSTRAINT`
- 11 = :class:`~bge.constraints.VEHICLE_CONSTRAINT`
- 12 = :class:`~bge.constraints.GENERIC_6DOF_CONSTRAINT`
* 1 = POINTTOPOINT_CONSTRAINT
* 2 = LINEHINGE_CONSTRAINT
* 3 = ANGULAR_CONSTRAINT (aka LINEHINGE_CONSTRAINT)
* 4 = CONETWIST_CONSTRAINT
* 11 = VEHICLE_CONSTRAINT
* 12 = GENERIC_6DOF_CONSTRAINT

View File

@@ -7,26 +7,6 @@ base class --- :class:`KX_GameObject`
.. class:: KX_FontObject(KX_GameObject) .. class:: KX_FontObject(KX_GameObject)
A Font object. TODO.
.. code-block:: python
# Display a message about the exit key using a Font object.
import bge
co = bge.logic.getCurrentController()
font = co.owner
exit_key = bge.events.EventToString(bge.logic.getExitKey())
if exit_key.endswith("KEY"):
exit_key = exit_key[:-3]
font.text = "Press key '%s' to quit the game." % exit_key
.. attribute:: text
The text displayed by this Font object.
:type: string

View File

@@ -78,35 +78,6 @@ base class --- :class:`SCA_IObject`
The object must have a physics controller for the mass to be applied, otherwise the mass value will be returned as 0.0. The object must have a physics controller for the mass to be applied, otherwise the mass value will be returned as 0.0.
.. attribute:: isSuspendDynamics
The object's dynamic state (read-only).
:type: boolean
.. seealso:: :py:meth:`suspendDynamics` and :py:meth:`restoreDynamics` allow you to change the state.
.. attribute:: linearDamping
The object's linear damping, also known as translational damping. Can be set simultaneously with angular damping using the :py:meth:`setDamping` method.
:type: float between 0 and 1 inclusive.
.. note::
The object must have a physics controller for the linear damping to be applied, otherwise the value will be returned as 0.0.
.. attribute:: angularDamping
The object's angular damping, also known as rotationation damping. Can be set simultaneously with linear damping using the :py:meth:`setDamping` method.
:type: float between 0 and 1 inclusive.
.. note::
The object must have a physics controller for the angular damping to be applied, otherwise the value will be returned as 0.0.
.. attribute:: linVelocityMin .. attribute:: linVelocityMin
Enforces the object keeps moving at a minimum velocity. Enforces the object keeps moving at a minimum velocity.
@@ -137,36 +108,13 @@ base class --- :class:`SCA_IObject`
.. note:: .. note::
A value of 0.0 disables this option (rather than setting it stationary). A value of 0.0 disables this option (rather then setting it stationary).
.. attribute:: angularVelocityMin
Enforces the object keeps rotating at a minimum velocity. A value of 0.0 disables this.
:type: non-negative float
.. note::
Applies to dynamic and rigid body objects only.
While objects are stationary the minimum velocity will not be applied.
.. attribute:: angularVelocityMax
Clamp the maximum angular velocity to prevent objects rotating beyond a set speed.
A value of 0.0 disables clamping; it does not stop rotation.
:type: non-negative float
.. note::
Applies to dynamic and rigid body objects only.
.. attribute:: localInertia .. attribute:: localInertia
the object's inertia vector in local coordinates. Read only. the object's inertia vector in local coordinates. Read only.
:type: Vector((ix, iy, iz)) :type: list [ix, iy, iz]
.. attribute:: parent .. attribute:: parent
@@ -176,70 +124,21 @@ base class --- :class:`SCA_IObject`
.. attribute:: groupMembers .. attribute:: groupMembers
Returns the list of group members if the object is a group object (dupli group instance), otherwise None is returned. Returns the list of group members if the object is a group object, otherwise None is returned.
:type: :class:`CListValue` of :class:`KX_GameObject` or None :type: :class:`CListValue` of :class:`KX_GameObject` or None
.. attribute:: groupObject .. attribute:: groupObject
Returns the group object (dupli group instance) that the object belongs to or None if the object is not part of a group. Returns the group object that the object belongs to or None if the object is not part of a group.
:type: :class:`KX_GameObject` or None :type: :class:`KX_GameObject` or None
.. attribute:: collisionGroup
The object's collision group.
:type: bitfield
.. attribute:: collisionMask
The object's collision mask.
:type: bitfield
.. attribute:: collisionCallbacks .. attribute:: collisionCallbacks
A list of functions to be called when a collision occurs. A list of callables to be run when a collision occurs.
:type: list of functions and/or methods :type: list
Callbacks should either accept one argument `(object)`, or three
arguments `(object, point, normal)`. For simplicity, per
colliding object only the first collision point is reported.
.. code-block:: python
# Function form
def callback_three(object, point, normal):
print('Hit by %r at %s with normal %s' % (object.name, point, normal))
def callback_one(object):
print('Hit by %r' % object.name)
def register_callback(controller):
controller.owner.collisionCallbacks.append(callback_three)
controller.owner.collisionCallbacks.append(callback_one)
# Method form
class YourGameEntity(bge.types.KX_GameObject):
def __init__(self, old_owner):
self.collisionCallbacks.append(self.on_collision_three)
self.collisionCallbacks.append(self.on_collision_one)
def on_collision_three(self, object, point, normal):
print('Hit by %r at %s with normal %s' % (object.name, point, normal))
def on_collision_one(self, object):
print('Hit by %r' % object.name)
.. note::
For backward compatibility, a callback with variable number of
arguments (using `*args`) will be passed only the `object`
argument. Only when there is more than one fixed argument (not
counting `self` for methods) will the three-argument form be
used.
.. attribute:: scene .. attribute:: scene
@@ -475,12 +374,6 @@ base class --- :class:`SCA_IObject`
If true, the object's and children's debug properties will be displayed on screen. If true, the object's and children's debug properties will be displayed on screen.
:type: boolean :type: boolean
.. attribute:: currentLodLevel
The index of the level of detail (LOD) currently used by this object (read-only).
:type: int
.. method:: endObject() .. method:: endObject()
@@ -603,7 +496,7 @@ base class --- :class:`SCA_IObject`
* True: you get the "local" velocity ie: relative to object orientation. * True: you get the "local" velocity ie: relative to object orientation.
:type local: boolean :type local: boolean
:return: the object's linear velocity. :return: the object's linear velocity.
:rtype: Vector((vx, vy, vz)) :rtype: list [vx, vy, vz]
.. method:: setLinearVelocity(velocity, local=False) .. method:: setLinearVelocity(velocity, local=False)
@@ -630,7 +523,7 @@ base class --- :class:`SCA_IObject`
* True: you get the "local" velocity ie: relative to object orientation. * True: you get the "local" velocity ie: relative to object orientation.
:type local: boolean :type local: boolean
:return: the object's angular velocity. :return: the object's angular velocity.
:rtype: Vector((vx, vy, vz)) :rtype: list [vx, vy, vz]
.. method:: setAngularVelocity(velocity, local=False) .. method:: setAngularVelocity(velocity, local=False)
@@ -654,7 +547,7 @@ base class --- :class:`SCA_IObject`
:arg point: optional point to return the velocity for, in local coordinates. :arg point: optional point to return the velocity for, in local coordinates.
:type point: 3D Vector :type point: 3D Vector
:return: the velocity at the specified point. :return: the velocity at the specified point.
:rtype: Vector((vx, vy, vz)) :rtype: list [vx, vy, vz]
.. method:: getReactionForce() .. method:: getReactionForce()
@@ -664,7 +557,7 @@ base class --- :class:`SCA_IObject`
This also includes impulses, eg from collisions. This also includes impulses, eg from collisions.
:return: the reaction force of this object. :return: the reaction force of this object.
:rtype: Vector((fx, fy, fz)) :rtype: list [fx, fy, fz]
.. note:: .. note::
@@ -687,28 +580,13 @@ base class --- :class:`SCA_IObject`
* True: you get the "local" impulse ie: relative to local coordinates with object orientation. * True: you get the "local" impulse ie: relative to local coordinates with object orientation.
:type local: boolean :type local: boolean
.. method:: setDamping(linear_damping, angular_damping) .. method:: suspendDynamics()
Sets both the :py:attr:`linearDamping` and :py:attr:`angularDamping` simultaneously. This is more efficient than setting both properties individually.
:arg linear_damping: Linear ("translational") damping factor.
:type linear_damping: float ∈ [0, 1]
:arg angular_damping: Angular ("rotational") damping factor.
:type angular_damping: float ∈ [0, 1]
.. method:: suspendDynamics([ghost])
Suspends physics for this object. Suspends physics for this object.
:arg ghost: When set to `True`, collisions with the object will be ignored, similar to the "ghost" checkbox in
Blender. When `False` (the default), the object becomes static but still collide with other objects.
:type ghost: bool
.. seealso:: :py:attr:`isSuspendDynamics` allows you to inspect whether the object is in a suspended state.
.. method:: restoreDynamics() .. method:: restoreDynamics()
Resumes physics for this object. Also reinstates collisions; the object will no longer be a ghost. Resumes physics for this object.
.. note:: .. note::
@@ -972,16 +850,6 @@ base class --- :class:`SCA_IObject`
:return: The current frame of the action :return: The current frame of the action
:rtype: float :rtype: float
.. method:: getActionName(layer=0)
Gets the name of the current action playing in the supplied layer.
:arg layer: The layer that you want to get the action name from.
:type layer: integer
:return: The name of the current action
:rtype: string
.. method:: setActionFrame(frame, layer=0) .. method:: setActionFrame(frame, layer=0)
Set the current frame of the action playing in the supplied layer. Set the current frame of the action playing in the supplied layer.
@@ -1008,4 +876,4 @@ base class --- :class:`SCA_IObject`
:arg name: name of the property that added to the debug list. :arg name: name of the property that added to the debug list.
:type name: string :type name: string
:arg debug: the debug state. :arg debug: the debug state.
:type debug: boolean :type debug: boolean

View File

@@ -51,7 +51,7 @@ base class --- :class:`SCA_IObject`
.. attribute:: materials .. attribute:: materials
:type: list of :class:`KX_BlenderMaterial` type :type: list of :class:`KX_BlenderMaterial` or :class:`KX_PolygonMaterial` types
.. attribute:: numPolygons .. attribute:: numPolygons

View File

@@ -15,7 +15,7 @@ base class --- :class:`SCA_IActuator`
The force applied by the actuator. The force applied by the actuator.
:type: Vector((x, y, z)) :type: list [x, y, z]
.. attribute:: useLocalForce .. attribute:: useLocalForce
@@ -27,7 +27,7 @@ base class --- :class:`SCA_IActuator`
The torque applied by the actuator. The torque applied by the actuator.
:type: Vector((x, y, z)) :type: list [x, y, z]
.. attribute:: useLocalTorque .. attribute:: useLocalTorque
@@ -39,7 +39,7 @@ base class --- :class:`SCA_IActuator`
The displacement vector applied by the actuator. The displacement vector applied by the actuator.
:type: Vector((x, y, z)) :type: list [x, y, z]
.. attribute:: useLocalDLoc .. attribute:: useLocalDLoc
@@ -51,7 +51,7 @@ base class --- :class:`SCA_IActuator`
The angular displacement vector applied by the actuator The angular displacement vector applied by the actuator
:type: Vector((x, y, z)) :type: list [x, y, z]
.. note:: .. note::
@@ -67,7 +67,7 @@ base class --- :class:`SCA_IActuator`
The linear velocity applied by the actuator. The linear velocity applied by the actuator.
:type: Vector((x, y, z)) :type: list [x, y, z]
.. attribute:: useLocalLinV .. attribute:: useLocalLinV
@@ -83,7 +83,7 @@ base class --- :class:`SCA_IActuator`
The angular velocity applied by the actuator. The angular velocity applied by the actuator.
:type: Vector((x, y, z)) :type: list [x, y, z]
.. attribute:: useLocalAngV .. attribute:: useLocalAngV

View File

@@ -23,7 +23,7 @@ base class --- :class:`SCA_IObject`
The material of the polygon. The material of the polygon.
:type: :class:`KX_BlenderMaterial` :type: :class:`KX_PolygonMaterial` or :class:`KX_BlenderMaterial`
.. attribute:: texture_name .. attribute:: texture_name
@@ -84,7 +84,7 @@ base class --- :class:`SCA_IObject`
.. method:: getMaterial() .. method:: getMaterial()
:return: The polygon material :return: The polygon material
:rtype: :class:`KX_BlenderMaterial` :rtype: :class:`KX_PolygonMaterial` or :class:`KX_BlenderMaterial`
.. method:: getTextureName() .. method:: getTextureName()

View File

@@ -0,0 +1,250 @@
KX_PolygonMaterial(PyObjectPlus)
================================
.. module:: bge.types
base class --- :class:`PyObjectPlus`
.. class:: KX_PolygonMaterial(PyObjectPlus)
This is the interface to materials in the game engine.
Materials define the render state to be applied to mesh objects.
.. warning::
Some of the methods/variables are CObjects. If you mix these up, you will crash blender.
.. code-block:: python
from bge import logic
vertex_shader = """
void main(void)
{
// original vertex position, no changes
gl_Position = ftransform();
// coordinate of the 1st texture channel
gl_TexCoord[0] = gl_MultiTexCoord0;
// coordinate of the 2nd texture channel
gl_TexCoord[1] = gl_MultiTexCoord1;
}
"""
fragment_shader ="""
uniform sampler2D color_0;
uniform sampler2D color_1;
uniform float factor;
void main(void)
{
vec4 color_0 = texture2D(color_0, gl_TexCoord[0].st);
vec4 color_1 = texture2D(color_1, gl_TexCoord[1].st);
gl_FragColor = mix(color_0, color_1, factor);
}
"""
object = logic.getCurrentController().owner
object = cont.owner
for mesh in object.meshes:
for material in mesh.materials:
shader = material.getShader()
if shader != None:
if not shader.isValid():
shader.setSource(vertex_shader, fragment_shader, True)
# get the first texture channel of the material
shader.setSampler('color_0', 0)
# get the second texture channel of the material
shader.setSampler('color_1', 1)
# pass another uniform to the shader
shader.setUniform1f('factor', 0.3)
.. attribute:: texture
Texture name.
:type: string (read-only)
.. attribute:: gl_texture
OpenGL texture handle (eg for glBindTexture(GL_TEXTURE_2D, gl_texture).
:type: integer (read-only)
.. attribute:: material
Material name.
:type: string (read-only)
.. attribute:: tface
Texture face properties.
:type: CObject (read-only)
.. attribute:: tile
Texture is tiling.
:type: boolean
.. attribute:: tilexrep
Number of tile repetitions in x direction.
:type: integer
.. attribute:: tileyrep
Number of tile repetitions in y direction.
:type: integer
.. attribute:: drawingmode
Drawing mode for the material.
- 2 (drawingmode & 4) Textured
- 4 (drawingmode & 16) Light
- 14 (drawingmode & 16384) 3d Polygon Text.
:type: bitfield
.. attribute:: transparent
This material is transparent. All meshes with this
material will be rendered after non transparent meshes from back
to front.
:type: boolean
.. attribute:: zsort
Transparent polygons in meshes with this material will be sorted back to
front before rendering.
Non-Transparent polygons will be sorted front to back before rendering.
:type: boolean
.. attribute:: diffuse
The diffuse color of the material. black = [0.0, 0.0, 0.0] white = [1.0, 1.0, 1.0].
:type: list [r, g, b]
.. attribute:: specular
The specular color of the material. black = [0.0, 0.0, 0.0] white = [1.0, 1.0, 1.0].
:type: list [r, g, b]
.. attribute:: shininess
The shininess (specular exponent) of the material. 0.0 <= shininess <= 128.0.
:type: float
.. attribute:: specularity
The amount of specular of the material. 0.0 <= specularity <= 1.0.
:type: float
.. method:: updateTexture(tface, rasty)
Updates a realtime animation.
:arg tface: Texture face (eg mat.tface)
:type tface: CObject
:arg rasty: Rasterizer
:type rasty: CObject
.. method:: setTexture(tface)
Sets texture render state.
:arg tface: Texture face
:type tface: CObject
.. code-block:: python
mat.setTexture(mat.tface)
.. method:: activate(rasty, cachingInfo)
Sets material parameters for this object for rendering.
Material Parameters set:
#. Texture
#. Backface culling
#. Line drawing
#. Specular Colour
#. Shininess
#. Diffuse Colour
#. Polygon Offset.
:arg rasty: Rasterizer instance.
:type rasty: CObject
:arg cachingInfo: Material cache instance.
:type cachingInfo: CObject
.. method:: setCustomMaterial(material)
Sets the material state setup object.
Using this method, you can extend or completely replace the gameengine material
to do your own advanced multipass effects.
Use this method to register your material class. Instead of the normal material,
your class's activate method will be called just before rendering the mesh.
This should setup the texture, material, and any other state you would like.
It should return True to render the mesh, or False if you are finished. You should
clean up any state Blender does not set before returning False.
Activate Method Definition:
.. code-block:: python
def activate(self, rasty, cachingInfo, material):
:arg material: The material object.
:type material: instance
.. code-block:: python
class PyMaterial:
def __init__(self):
self.pass_no = -1
def activate(self, rasty, cachingInfo, material):
# Activate the material here.
#
# The activate method will be called until it returns False.
# Every time the activate method returns True the mesh will
# be rendered.
#
# rasty is a CObject for passing to material.updateTexture()
# and material.activate()
# cachingInfo is a CObject for passing to material.activate()
# material is the KX_PolygonMaterial instance this material
# was added to
# default material properties:
self.pass_no += 1
if self.pass_no == 0:
material.activate(rasty, cachingInfo)
# Return True to do this pass
return True
# clean up and return False to finish.
self.pass_no = -1
return False
# Create a new Python Material and pass it to the renderer.
mat.setCustomMaterial(PyMaterial())

View File

@@ -83,12 +83,6 @@ base class --- :class:`PyObjectPlus`
This can be set directly from python to avoid using the :class:`KX_SceneActuator`. This can be set directly from python to avoid using the :class:`KX_SceneActuator`.
.. attribute:: world
The current active world, (read-only).
:type: :class:`KX_WorldInfo`
.. attribute:: suspended .. attribute:: suspended
True if the scene is suspended, (read-only). True if the scene is suspended, (read-only).
@@ -125,27 +119,21 @@ base class --- :class:`PyObjectPlus`
:type: list :type: list
.. attribute:: pre_draw_setup
A list of callables to be run before the drawing setup (i.e., before the model view and projection matrices are computed).
:type: list
.. attribute:: gravity .. attribute:: gravity
The scene gravity using the world x, y and z axis. The scene gravity using the world x, y and z axis.
:type: Vector((gx, gy, gz)) :type: list [fx, fy, fz]
.. method:: addObject(object, reference, time=0) .. method:: addObject(object, other, time=0)
Adds an object to the scene like the Add Object Actuator would. Adds an object to the scene like the Add Object Actuator would.
:arg object: The (name of the) object to add. :arg object: The object to add
:type object: :class:`KX_GameObject` or string :type object: :class:`KX_GameObject` or string
:arg reference: The (name of the) object which position, orientation, and scale to copy (optional), if the object to add is a light and there is not reference the light's layer will be the same that the active layer in the blender scene. :arg other: The object's center to use when adding the object
:type reference: :class:`KX_GameObject` or string :type other: :class:`KX_GameObject` or string
:arg time: The lifetime of the added object, in frames. A time of 0 means the object will last forever (optional). :arg time: The lifetime of the added object, in frames. A time of 0 means the object will last forever.
:type time: integer :type time: integer
:return: The newly added object. :return: The newly added object.
:rtype: :class:`KX_GameObject` :rtype: :class:`KX_GameObject`

View File

@@ -11,25 +11,22 @@ base class --- :class:`PyObjectPlus`
TODO - description TODO - description
.. method:: addWheel(wheel, attachPos, downDir, axleDir, suspensionRestLength, wheelRadius, hasSteering) .. method:: addWheel(wheel, attachPos, attachDir, axleDir, suspensionRestLength, wheelRadius, hasSteering)
Add a wheel to the vehicle Add a wheel to the vehicle
:arg wheel: The object to use as a wheel. :arg wheel: The object to use as a wheel.
:type wheel: :class:`KX_GameObject` or a :class:`KX_GameObject` name :type wheel: :class:`KX_GameObject` or a KX_GameObject name
:arg attachPos: The position to attach the wheel, relative to the chassis object center. :arg attachPos: The position that this wheel will attach to.
:type attachPos: vector of 3 floats :type attachPos: vector of 3 floats
:arg downDir: The direction vector pointing down to where the vehicle should collide with the floor. :arg attachDir: The direction this wheel points.
:type downDir: vector of 3 floats :type attachDir: vector of 3 floats
:arg axleDir: The axis the wheel rotates around, relative to the chassis. :arg axleDir: The direction of this wheels axle.
:type axleDir: vector of 3 floats :type axleDir: vector of 3 floats
:arg suspensionRestLength: The length of the suspension when no forces are being applied. :arg suspensionRestLength: TODO - Description
:type suspensionRestLength: float :type suspensionRestLength: float
:arg wheelRadius: The radius of the wheel (half the diameter). :arg wheelRadius: The size of the wheel.
:type wheelRadius: float :type wheelRadius: float
:arg hasSteering: True if the wheel should turn with steering, typically used in front wheels.
:type hasSteering: boolean
.. method:: applyBraking(force, wheelIndex) .. method:: applyBraking(force, wheelIndex)
@@ -41,7 +38,6 @@ base class --- :class:`PyObjectPlus`
:arg wheelIndex: index of the wheel where the force needs to be applied :arg wheelIndex: index of the wheel where the force needs to be applied
:type wheelIndex: integer :type wheelIndex: integer
.. method:: applyEngineForce(force, wheelIndex) .. method:: applyEngineForce(force, wheelIndex)
Apply an engine force to the specified wheel Apply an engine force to the specified wheel
@@ -52,7 +48,6 @@ base class --- :class:`PyObjectPlus`
:arg wheelIndex: index of the wheel where the force needs to be applied :arg wheelIndex: index of the wheel where the force needs to be applied
:type wheelIndex: integer :type wheelIndex: integer
.. method:: getConstraintId() .. method:: getConstraintId()
Get the constraint ID Get the constraint ID

View File

@@ -17,25 +17,25 @@ base class --- :class:`SCA_IObject`
The position of the vertex. The position of the vertex.
:type: Vector((x, y, z)) :type: list [x, y, z]
.. attribute:: UV .. attribute:: UV
The texture coordinates of the vertex. The texture coordinates of the vertex.
:type: Vector((u, v)) :type: list [u, v]
.. attribute:: normal .. attribute:: normal
The normal of the vertex. The normal of the vertex.
:type: Vector((nx, ny, nz)) :type: list [nx, ny, nz]
.. attribute:: color .. attribute:: color
The color of the vertex. The color of the vertex.
:type: Vector((r, g, b, a)) :type: list [r, g, b, a]
Black = [0.0, 0.0, 0.0, 1.0], White = [1.0, 1.0, 1.0, 1.0] Black = [0.0, 0.0, 0.0, 1.0], White = [1.0, 1.0, 1.0, 1.0]
@@ -110,13 +110,13 @@ base class --- :class:`SCA_IObject`
Gets the position of this vertex. Gets the position of this vertex.
:return: this vertexes position in local coordinates. :return: this vertexes position in local coordinates.
:rtype: Vector((x, y, z)) :rtype: list [x, y, z]
.. method:: setXYZ(pos) .. method:: setXYZ(pos)
Sets the position of this vertex. Sets the position of this vertex.
:type: Vector((x, y, z)) :type: list [x, y, z]
:arg pos: the new position for this vertex in local coordinates. :arg pos: the new position for this vertex in local coordinates.
@@ -125,26 +125,26 @@ base class --- :class:`SCA_IObject`
Gets the UV (texture) coordinates of this vertex. Gets the UV (texture) coordinates of this vertex.
:return: this vertexes UV (texture) coordinates. :return: this vertexes UV (texture) coordinates.
:rtype: Vector((u, v)) :rtype: list [u, v]
.. method:: setUV(uv) .. method:: setUV(uv)
Sets the UV (texture) coordinates of this vertex. Sets the UV (texture) coordinates of this vertex.
:type: Vector((u, v)) :type: list [u, v]
.. method:: getUV2() .. method:: getUV2()
Gets the 2nd UV (texture) coordinates of this vertex. Gets the 2nd UV (texture) coordinates of this vertex.
:return: this vertexes UV (texture) coordinates. :return: this vertexes UV (texture) coordinates.
:rtype: Vector((u, v)) :rtype: list [u, v]
.. method:: setUV2(uv, unit) .. method:: setUV2(uv, unit)
Sets the 2nd UV (texture) coordinates of this vertex. Sets the 2nd UV (texture) coordinates of this vertex.
:type: Vector((u, v)) :type: list [u, v]
:arg unit: optional argument, FLAT==1, SECOND_UV==2, defaults to SECOND_UV :arg unit: optional argument, FLAT==1, SECOND_UV==2, defaults to SECOND_UV
:arg unit: integer :arg unit: integer
@@ -197,7 +197,7 @@ base class --- :class:`SCA_IObject`
Gets the normal vector of this vertex. Gets the normal vector of this vertex.
:return: normalized normal vector. :return: normalized normal vector.
:rtype: Vector((nx, ny, nz)) :rtype: list [nx, ny, nz]
.. method:: setNormal(normal) .. method:: setNormal(normal)

View File

@@ -1,79 +0,0 @@
KX_WorldInfo(PyObjectPlus)
=============================
.. module:: bge.types
base class --- :class:`PyObjectPlus`
.. class:: KX_WorldInfo(PyObjectPlus)
A world object.
.. code-block:: python
# Set the mist color to red.
import bge
sce = bge.logic.getCurrentScene()
sce.world.mistColor = [1.0, 0.0, 0.0]
.. data:: KX_MIST_QUADRATIC
Type of quadratic attenuation used to fade mist.
.. data:: KX_MIST_LINEAR
Type of linear attenuation used to fade mist.
.. data:: KX_MIST_INV_QUADRATIC
Type of inverse quadratic attenuation used to fade mist.
.. attribute:: mistEnable
Return the state of the mist.
:type: bool
.. attribute:: mistStart
The mist start point.
:type: float
.. attribute:: mistDistance
The mist distance fom the start point to reach 100% mist.
:type: float
.. attribute:: mistIntensity
The mist intensity.
:type: float
.. attribute:: mistType
The type of mist - must be KX_MIST_QUADRATIC, KX_MIST_LINEAR or KX_MIST_INV_QUADRATIC
.. attribute:: mistColor
The color of the mist. Black = [0.0, 0.0, 0.0], White = [1.0, 1.0, 1.0].
Mist and background color sould always set to the same color.
:type: :class:`mathutils.Vector`
.. attribute:: backgroundColor
The color of the background. Black = [0.0, 0.0, 0.0], White = [1.0, 1.0, 1.0].
Mist and background color sould always set to the same color.
:type: :class:`mathutils.Vector`
.. attribute:: ambientColor
The color of the ambient light. Black = [0.0, 0.0, 0.0], White = [1.0, 1.0, 1.0].
:type: :class:`mathutils.Vector`

View File

@@ -7,7 +7,7 @@ base class --- :class:`SCA_IActuator`
.. class:: SCA_2DFilterActuator(SCA_IActuator) .. class:: SCA_2DFilterActuator(SCA_IActuator)
Create, enable and disable 2D filters. Create, enable and disable 2D filters
The following properties don't have an immediate effect. The following properties don't have an immediate effect.
You must active the actuator to get the result. You must active the actuator to get the result.
@@ -29,7 +29,7 @@ base class --- :class:`SCA_IActuator`
.. attribute:: mode .. attribute:: mode
Type of 2D filter, use one of :ref:`these constants <Two-D-FilterActuator-mode>`. Type of 2D filter, use one of :ref:`these constants <Two-D-FilterActuator-mode>`
:type: integer :type: integer

Some files were not shown because too many files have changed in this diff Show More