From 6f055ca0d7fac78c6bf7cc146773b9b2ba8785cb Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 19 Feb 2015 12:01:40 -0800 Subject: [PATCH] add an external project to handle bullet --- cmake/externals/bullet/CMakeLists.txt | 36 +++++++++++++++++++++++++++ cmake/externals/glm/CMakeLists.txt | 5 +++- cmake/externals/gverb/CMakeLists.txt | 5 +++- cmake/externals/soxr/CMakeLists.txt | 5 +++- cmake/externals/tbb/CMakeLists.txt | 5 +++- cmake/macros/IncludeBullet.cmake | 16 ------------ interface/CMakeLists.txt | 8 +++--- libraries/entities/CMakeLists.txt | 6 ++++- libraries/physics/CMakeLists.txt | 9 ++++--- tests/physics/CMakeLists.txt | 6 ++++- 10 files changed, 72 insertions(+), 29 deletions(-) create mode 100644 cmake/externals/bullet/CMakeLists.txt delete mode 100644 cmake/macros/IncludeBullet.cmake diff --git a/cmake/externals/bullet/CMakeLists.txt b/cmake/externals/bullet/CMakeLists.txt new file mode 100644 index 0000000000..91a6a486b7 --- /dev/null +++ b/cmake/externals/bullet/CMakeLists.txt @@ -0,0 +1,36 @@ +set(EXTERNAL_NAME bullet) + +if (ANDROID) + set(ANDROID_CMAKE_ARGS "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}" "-DANDROID_NATIVE_API_LEVEL=19") +endif () + +include(ExternalProject) +ExternalProject_Add( + ${EXTERNAL_NAME} + URL http://bullet.googlecode.com/files/bullet-2.82-r2704.tgz + URL_MD5 70b3c8d202dee91a0854b4cbc88173e8 + CMAKE_ARGS ${ANDROID_CMAKE_ARGS} -DCMAKE_INSTALL_PREFIX:PATH= -DBUILD_SHARED_LIBS=1 -DUSE_GLM=0 + LOG_DOWNLOAD 1 + LOG_CONFIGURE 1 + LOG_BUILD 1 + LOG_INSTALL 1 +) + +ExternalProject_Get_Property(${EXTERNAL_NAME} INSTALL_DIR) + +string(TOUPPER ${EXTERNAL_NAME} EXTERNAL_NAME_UPPER) +set(${EXTERNAL_NAME_UPPER}_INCLUDE_DIR ${INSTALL_DIR}/include CACHE TYPE "Path to bullet include directory") + +set(BULLET_LIB_DIR "${INSTALL_DIR}/lib") + +set(${EXTERNAL_NAME_UPPER}_DYNAMICS_LIBRARY_RELEASE ${BULLET_LIB_DIR}/libBulletDynamics.dylib CACHE TYPE "Bullet dynamics release library location") +set(${EXTERNAL_NAME_UPPER}_DYNAMICS_LIBRARY_DEBUG NOTFOUND CACHE TYPE "Bullet dynamics debug library location") + +set(${EXTERNAL_NAME_UPPER}_COLLISION_LIBRARY_RELEASE ${BULLET_LIB_DIR}/libBulletCollision.dylib CACHE TYPE "Bullet collision release library location") +set(${EXTERNAL_NAME_UPPER}_COLLISION_LIBRARY_DEBUG NOTFOUND CACHE TYPE "Bullet collision debug library location") + +set(${EXTERNAL_NAME_UPPER}_MATH_LIBRARY_RELEASE ${BULLET_LIB_DIR}/libLinearMath.dylib CACHE TYPE "Bullet math release library location") +set(${EXTERNAL_NAME_UPPER}_MATH_LIBRARY_DEBUG NOTFOUND CACHE TYPE "Bullet math debug library location") + +set(${EXTERNAL_NAME_UPPER}_SOFTBODY_LIBRARY_RELEASE ${BULLET_LIB_DIR}/libBulletSoftbody.dylib CACHE TYPE "Bullet softbody release library location") +set(${EXTERNAL_NAME_UPPER}_SOFTBODY_LIBRARY_DEBUG NOTFOUND CACHE TYPE "Bullet softbody debug library location") \ No newline at end of file diff --git a/cmake/externals/glm/CMakeLists.txt b/cmake/externals/glm/CMakeLists.txt index 1afa9a89e8..e1874f66e4 100644 --- a/cmake/externals/glm/CMakeLists.txt +++ b/cmake/externals/glm/CMakeLists.txt @@ -6,7 +6,10 @@ ExternalProject_Add( URL http://pkgs.fedoraproject.org/repo/pkgs/glm/glm-0.9.5.4.zip/fab76fc982b256b46208e5c750ed456a/glm-0.9.5.4.zip URL_MD5 fab76fc982b256b46208e5c750ed456a CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH= - LOG_DOWNLOAD ON + LOG_DOWNLOAD 1 + LOG_CONFIGURE 1 + LOG_BUILD 1 + LOG_INSTALL 1 ) ExternalProject_Get_Property(${EXTERNAL_NAME} INSTALL_DIR) diff --git a/cmake/externals/gverb/CMakeLists.txt b/cmake/externals/gverb/CMakeLists.txt index 4173efa073..1e6cc8a567 100644 --- a/cmake/externals/gverb/CMakeLists.txt +++ b/cmake/externals/gverb/CMakeLists.txt @@ -10,7 +10,10 @@ ExternalProject_Add( URL http://hifi-public.s3.amazonaws.com/dependencies/gverb-master.zip URL_MD5 8b16d586390a2102804e46b87820dfc6 CMAKE_ARGS ${ANDROID_CMAKE_ARGS} -DCMAKE_INSTALL_PREFIX:PATH= - LOG_DOWNLOAD ON + LOG_DOWNLOAD 1 + LOG_CONFIGURE 1 + LOG_BUILD 1 + LOG_INSTALL 1 ) ExternalProject_Get_Property(${EXTERNAL_NAME} INSTALL_DIR) diff --git a/cmake/externals/soxr/CMakeLists.txt b/cmake/externals/soxr/CMakeLists.txt index 2b00db883a..9ca540f49d 100644 --- a/cmake/externals/soxr/CMakeLists.txt +++ b/cmake/externals/soxr/CMakeLists.txt @@ -10,7 +10,10 @@ ExternalProject_Add( URL http://hifi-public.s3.amazonaws.com/dependencies/soxr-0.1.1.zip URL_MD5 349b5b2f323a7380bc12186d98c77d1d CMAKE_ARGS ${PLATFORM_CMAKE_ARGS} -DBUILD_SHARED_LIBS=1 -DBUILD_TESTS=0 -DCMAKE_INSTALL_PREFIX:PATH= - LOG_DOWNLOAD ON + LOG_DOWNLOAD 1 + LOG_CONFIGURE 1 + LOG_BUILD 1 + LOG_INSTALL 1 ) ExternalProject_Get_Property(${EXTERNAL_NAME} INSTALL_DIR) diff --git a/cmake/externals/tbb/CMakeLists.txt b/cmake/externals/tbb/CMakeLists.txt index e5243edf8c..9bfb682128 100644 --- a/cmake/externals/tbb/CMakeLists.txt +++ b/cmake/externals/tbb/CMakeLists.txt @@ -14,7 +14,10 @@ if (ANDROID) BUILD_IN_SOURCE 1 CONFIGURE_COMMAND "" INSTALL_COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/AndroidTBBLibCopy.cmake - LOG_DOWNLOAD ON + LOG_DOWNLOAD 1 + LOG_CONFIGURE 1 + LOG_BUILD 1 + LOG_INSTALL 1 ) else () if (APPLE) diff --git a/cmake/macros/IncludeBullet.cmake b/cmake/macros/IncludeBullet.cmake deleted file mode 100644 index 186e84d1ab..0000000000 --- a/cmake/macros/IncludeBullet.cmake +++ /dev/null @@ -1,16 +0,0 @@ -# -# IncludeBullet.cmake -# -# Copyright 2014 High Fidelity, Inc. -# -# Distributed under the Apache License, Version 2.0. -# See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -# - -macro(INCLUDE_BULLET) - find_package(Bullet REQUIRED) - include_directories("${BULLET_INCLUDE_DIRS}") - if (APPLE OR UNIX) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -isystem ${BULLET_INCLUDE_DIRS}") - endif() -endmacro(INCLUDE_BULLET) diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt index 7458a6c784..69beddaaaf 100644 --- a/interface/CMakeLists.txt +++ b/interface/CMakeLists.txt @@ -32,8 +32,6 @@ elseif (WIN32) set(GL_HEADERS "#include \n#include \n#include ") endif () -include_bullet() - # create the InterfaceConfig.h file based on GL_HEADERS above configure_file(InterfaceConfig.h.in "${PROJECT_BINARY_DIR}/includes/InterfaceConfig.h") configure_file(InterfaceVersion.h.in "${PROJECT_BINARY_DIR}/includes/InterfaceVersion.h") @@ -108,10 +106,14 @@ endif() add_executable(${TARGET_NAME} MACOSX_BUNDLE ${INTERFACE_SRCS} ${QM}) # set up the external glm library -add_dependency_external_projects(glm) +add_dependency_external_projects(glm bullet) find_package(GLM REQUIRED) target_include_directories(${TARGET_NAME} PRIVATE ${GLM_INCLUDE_DIRS}) +find_package(Bullet REQUIRED) +target_include_directories(${TARGET_NAME} PRIVATE SYSTEM ${BULLET_INCLUDE_DIRS}) +target_link_libraries(${TARGET_NAME} ${BULLET_LIBRARIES}) + # link required hifi libraries link_hifi_libraries(shared octree environment gpu model fbx metavoxels networking entities avatars audio audio-client animation script-engine physics diff --git a/libraries/entities/CMakeLists.txt b/libraries/entities/CMakeLists.txt index 156f3d1f09..944929dba6 100644 --- a/libraries/entities/CMakeLists.txt +++ b/libraries/entities/CMakeLists.txt @@ -7,6 +7,10 @@ add_dependency_external_projects(glm) find_package(GLM REQUIRED) target_include_directories(${TARGET_NAME} PUBLIC ${GLM_INCLUDE_DIRS}) -include_bullet() +add_dependency_external_projects(bullet) + +find_package(Bullet REQUIRED) +target_include_directories(${TARGET_NAME} PRIVATE SYSTEM ${BULLET_INCLUDE_DIRS}) +target_link_libraries(${TARGET_NAME} ${BULLET_LIBRARIES}) link_hifi_libraries(avatars shared octree gpu model fbx networking animation) diff --git a/libraries/physics/CMakeLists.txt b/libraries/physics/CMakeLists.txt index c3dfcafa48..8929ab4fec 100644 --- a/libraries/physics/CMakeLists.txt +++ b/libraries/physics/CMakeLists.txt @@ -7,10 +7,11 @@ add_dependency_external_projects(glm) find_package(GLM REQUIRED) target_include_directories(${TARGET_NAME} PUBLIC ${GLM_INCLUDE_DIRS}) -include_bullet() -if (BULLET_FOUND) - target_link_libraries(${TARGET_NAME} ${BULLET_LIBRARIES}) -endif (BULLET_FOUND) +add_dependency_external_projects(bullet) + +find_package(Bullet REQUIRED) +target_include_directories(${TARGET_NAME} PRIVATE SYSTEM ${BULLET_INCLUDE_DIRS}) +target_link_libraries(${TARGET_NAME} ${BULLET_LIBRARIES}) link_hifi_libraries(shared fbx entities) include_hifi_library_headers(fbx) diff --git a/tests/physics/CMakeLists.txt b/tests/physics/CMakeLists.txt index 12cd9b8531..5dd1e270b8 100644 --- a/tests/physics/CMakeLists.txt +++ b/tests/physics/CMakeLists.txt @@ -6,7 +6,11 @@ add_dependency_external_projects(glm) find_package(GLM REQUIRED) target_include_directories(${TARGET_NAME} PUBLIC ${GLM_INCLUDE_DIRS}) -include_bullet() +add_dependency_external_projects(bullet) + +find_package(Bullet REQUIRED) +target_include_directories(${TARGET_NAME} PRIVATE SYSTEM ${BULLET_INCLUDE_DIRS}) +target_link_libraries(${TARGET_NAME} ${BULLET_LIBRARIES}) link_hifi_libraries(shared physics)