From c2839bfe76139ed753e6b99118001bba5f2fa6ee Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 3 Jan 2013 00:23:52 +0000 Subject: add option WITH_SYSTEM_BULLET to link against the bullet installation found on the system. Note: this doesn't work yet for everything with latest stable bullet (2.81), need to look into why and likely apply some patches upstream. However I managed to link blender by disabling some features, likely it can be made to work without too much trouble. --- CMakeLists.txt | 18 +++++++++++++++++- build_files/cmake/macros.cmake | 4 +++- extern/CMakeLists.txt | 4 +++- intern/smoke/CMakeLists.txt | 2 +- source/blender/blenkernel/CMakeLists.txt | 2 +- source/blender/bmesh/CMakeLists.txt | 4 +++- source/creator/CMakeLists.txt | 5 ++++- source/gameengine/BlenderRoutines/CMakeLists.txt | 9 ++++++++- source/gameengine/Converter/CMakeLists.txt | 2 +- source/gameengine/Ketsji/CMakeLists.txt | 2 +- source/gameengine/Physics/Bullet/CMakeLists.txt | 4 +++- 11 files changed, 45 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a87c3e2d96d..fd5a3769b2a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -129,6 +129,8 @@ option(WITH_IK_ITASC "Enable ITASC IK solver (only disable for development option(WITH_IK_SOLVER "Enable Legacy IK solver (only disable for development)" ON) option(WITH_FFTW3 "Enable FFTW3 support (Used for smoke and audio effects)" ON) option(WITH_BULLET "Enable Bullet (Physics Engine)" ON) +option(WITH_SYSTEM_BULLET "Use the systems bullet library (currently unsupported due to missing features in upstream!)" ) +mark_as_advanced(WITH_SYSTEM_BULLET) option(WITH_GAMEENGINE "Enable Game Engine" ON) option(WITH_PLAYER "Build Player" OFF) option(WITH_OPENCOLORIO "Enable OpenColorIO color management" ON) @@ -1842,12 +1844,26 @@ else() set(GLEW_INCLUDE_PATH "${CMAKE_SOURCE_DIR}/extern/glew/include") endif() + +#----------------------------------------------------------------------------- +# Configure Bullet + +if(WITH_BULLET AND WITH_SYSTEM_BULLET) + find_package(Bullet) + if(NOT BULLET_FOUND) + set(WITH_BULLET OFF) + endif() +else() + set(BULLET_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/bullet2/src") + # set(BULLET_LIBRARIES "") +endif() + #----------------------------------------------------------------------------- # Configure Python. if(WITH_PYTHON_MODULE) add_definitions(-DPy_ENABLE_SHARED) -endif() +endif(). #----------------------------------------------------------------------------- # Extra compile flags diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index 4a4c0fe6d2d..bdd82a4f438 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -282,7 +282,9 @@ macro(setup_liblinks if(WITH_SYSTEM_GLEW) target_link_libraries(${target} ${GLEW_LIBRARY}) endif() - + if(WITH_BULLET AND WITH_SYSTEM_BULLET) + target_link_libraries(${target} ${BULLET_LIBRARIES}) + endif() if(WITH_OPENAL) target_link_libraries(${target} ${OPENAL_LIBRARY}) endif() diff --git a/extern/CMakeLists.txt b/extern/CMakeLists.txt index 2f7f6584f0f..6ad6bdc316f 100644 --- a/extern/CMakeLists.txt +++ b/extern/CMakeLists.txt @@ -30,7 +30,9 @@ add_subdirectory(colamd) add_subdirectory(rangetree) if(WITH_BULLET) - add_subdirectory(bullet2) + if(NOT WITH_SYSTEM_BULLET) + add_subdirectory(bullet2) + endif() endif() # now only available in a branch diff --git a/intern/smoke/CMakeLists.txt b/intern/smoke/CMakeLists.txt index 3b8a4c06e69..b6338f90ebc 100644 --- a/intern/smoke/CMakeLists.txt +++ b/intern/smoke/CMakeLists.txt @@ -29,7 +29,7 @@ set(INC ) set(INC_SYS - ../../extern/bullet2/src + ${BULLET_INCLUDE_DIRS} ${PNG_INCLUDE_DIR} ${ZLIB_INCLUDE_DIRS} ) diff --git a/source/blender/blenkernel/CMakeLists.txt b/source/blender/blenkernel/CMakeLists.txt index 99008309498..aca06a1abcf 100644 --- a/source/blender/blenkernel/CMakeLists.txt +++ b/source/blender/blenkernel/CMakeLists.txt @@ -259,7 +259,7 @@ endif() if(WITH_BULLET) list(APPEND INC_SYS - ../../../extern/bullet2/src + ${BULLET_INCLUDE_DIRS} ) add_definitions(-DUSE_BULLET) endif() diff --git a/source/blender/bmesh/CMakeLists.txt b/source/blender/bmesh/CMakeLists.txt index 955b18c3db7..d11d74888ca 100644 --- a/source/blender/bmesh/CMakeLists.txt +++ b/source/blender/bmesh/CMakeLists.txt @@ -30,7 +30,6 @@ set(INC ../blenlib ../makesdna ../../../intern/guardedalloc - ../../../extern/bullet2/src ../../../extern/rangetree ../../../intern/opennl/extern ) @@ -127,6 +126,9 @@ endif() if(WITH_BULLET) add_definitions(-DWITH_BULLET) + list(APPEND INC_SYS + ${BULLET_INCLUDE_DIRS} + ) endif() if(WITH_INTERNATIONAL) diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt index c53f27c7326..3fa646ac884 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -893,7 +893,6 @@ endif() ge_scenegraph ge_logic_network ge_logic_ngnetwork - extern_bullet ge_logic_loopbacknetwork bf_intern_moto extern_openjpeg @@ -972,6 +971,10 @@ endif() list(APPEND BLENDER_SORTED_LIBS bf_intern_locale) endif() + if(WITH_BULLET AND NOT WITH_BULLET_SYSTEM) + list_insert_after(BLENDER_SORTED_LIBS "ge_logic_ngnetwork" "extern_bullet") + endif() + foreach(SORTLIB ${BLENDER_SORTED_LIBS}) set(REMLIB ${SORTLIB}) foreach(SEARCHLIB ${BLENDER_LINK_LIBS}) diff --git a/source/gameengine/BlenderRoutines/CMakeLists.txt b/source/gameengine/BlenderRoutines/CMakeLists.txt index 9a47d223f76..d833534605b 100644 --- a/source/gameengine/BlenderRoutines/CMakeLists.txt +++ b/source/gameengine/BlenderRoutines/CMakeLists.txt @@ -30,7 +30,6 @@ set(INC ) set(INC_SYS - ../../../extern/bullet2/src ${PTHREADS_INCLUDE_DIRS} ${GLEW_INCLUDE_PATH} ${BOOST_INCLUDE_DIR} @@ -70,4 +69,12 @@ if(WITH_CODEC_FFMPEG) add_definitions(-DWITH_FFMPEG) endif() +if(WITH_BULLET) + list(APPEND INC_SYS + ${BULLET_INCLUDE_DIRS} + ) + add_definitions(-DUSE_BULLET) +endif() + + blender_add_lib(ge_blen_routines "${SRC}" "${INC}" "${INC_SYS}") diff --git a/source/gameengine/Converter/CMakeLists.txt b/source/gameengine/Converter/CMakeLists.txt index e01729e156f..8ac9e523d5d 100644 --- a/source/gameengine/Converter/CMakeLists.txt +++ b/source/gameengine/Converter/CMakeLists.txt @@ -112,7 +112,7 @@ set(SRC if(WITH_BULLET) list(APPEND INC_SYS - ../../../extern/bullet2/src + ${BULLET_INCLUDE_DIRS} ) add_definitions(-DUSE_BULLET) endif() diff --git a/source/gameengine/Ketsji/CMakeLists.txt b/source/gameengine/Ketsji/CMakeLists.txt index 524a38a4c26..e42c2a74a8e 100644 --- a/source/gameengine/Ketsji/CMakeLists.txt +++ b/source/gameengine/Ketsji/CMakeLists.txt @@ -252,7 +252,7 @@ if(WITH_BULLET) ../Physics/Bullet ) list(APPEND INC - ../../../extern/bullet2/src + ${BULLET_INCLUDE_DIRS} ) add_definitions(-DUSE_BULLET) endif() diff --git a/source/gameengine/Physics/Bullet/CMakeLists.txt b/source/gameengine/Physics/Bullet/CMakeLists.txt index 43b1bfe7468..afb166eee57 100644 --- a/source/gameengine/Physics/Bullet/CMakeLists.txt +++ b/source/gameengine/Physics/Bullet/CMakeLists.txt @@ -44,7 +44,6 @@ set(INC ) set(INC_SYS - ../../../../extern/bullet2/src ${GLEW_INCLUDE_PATH} ${PYTHON_INCLUDE_DIRS} ) @@ -60,6 +59,9 @@ set(SRC ) if(WITH_BULLET) + list(APPEND INC + ${BULLET_INCLUDE_DIRS} + ) add_definitions(-DUSE_BULLET) endif() -- cgit v1.2.3