CMakeLists.txt 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439
  1. cmake_minimum_required(VERSION 2.4.3)
  2. set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
  3. #this line has to appear before 'PROJECT' in order to be able to disable incremental linking
  4. SET(MSVC_INCREMENTAL_DEFAULT ON)
  5. PROJECT(BULLET_PHYSICS)
  6. SET(BULLET_VERSION 2.82)
  7. IF(COMMAND cmake_policy)
  8. cmake_policy(SET CMP0003 NEW)
  9. ENDIF(COMMAND cmake_policy)
  10. IF (NOT CMAKE_BUILD_TYPE)
  11. # SET(CMAKE_BUILD_TYPE "Debug")
  12. SET(CMAKE_BUILD_TYPE "Release")
  13. ENDIF (NOT CMAKE_BUILD_TYPE)
  14. SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG")
  15. #MESSAGE("CMAKE_CXX_FLAGS_DEBUG="+${CMAKE_CXX_FLAGS_DEBUG})
  16. OPTION(USE_DOUBLE_PRECISION "Use double precision" OFF)
  17. OPTION(USE_GRAPHICAL_BENCHMARK "Use Graphical Benchmark" ON)
  18. OPTION(USE_MSVC_RUNTIME_LIBRARY_DLL "Use MSVC Runtime Library DLL (/MD or /MDd)" OFF)
  19. OPTION(USE_MSVC_INCREMENTAL_LINKING "Use MSVC Incremental Linking" OFF)
  20. OPTION(USE_CUSTOM_VECTOR_MATH "Use custom vectormath library" OFF)
  21. IF (USE_CUSTOM_VECTOR_MATH)
  22. ADD_DEFINITIONS(-DUSE_SYSTEM_VECTORMATH)
  23. IF(WIN32)
  24. SET (VECTOR_MATH_INCLUDE ${BULLET_PHYSICS_SOURCE_DIR}/src/vectormath/sse CACHE PATH "Vector Math library include path.")
  25. ELSE(WIN32)
  26. SET (VECTOR_MATH_INCLUDE ${BULLET_PHYSICS_SOURCE_DIR}/src/vectormath/scalar CACHE PATH "Vector Math library include path.")
  27. ENDIF(WIN32)
  28. ENDIF(USE_CUSTOM_VECTOR_MATH)
  29. IF (APPLE OR MSVC)
  30. OPTION(BUILD_MULTITHREADING "Use BulletMultiThreading" ON)
  31. ELSE()
  32. OPTION(BUILD_MULTITHREADING "Use BulletMultiThreading" OFF)
  33. ENDIF()
  34. IF (BUILD_MULTITHREADING)
  35. OPTION(USE_MULTITHREADED_BENCHMARK "Use Multithreaded Benchmark" OFF)
  36. IF (USE_MULTITHREADED_BENCHMARK)
  37. ADD_DEFINITIONS(-DUSE_PARALLEL_SOLVER_BENCHMARK -DUSE_PARALLEL_DISPATCHER_BENCHMARK)
  38. ENDIF(USE_MULTITHREADED_BENCHMARK)
  39. IF (MSVC OR APPLE)
  40. OPTION(BUILD_MINICL_OPENCL_DEMOS "Build OpenCL demos for MiniCL (Generic CPU)" ON)
  41. ELSE()
  42. OPTION(BUILD_MINICL_OPENCL_DEMOS "Build OpenCL demos for MiniCL (Generic CPU)" OFF)
  43. ENDIF(MSVC OR APPLE)
  44. IF(MSVC)
  45. FIND_PATH(DIRECTX_SDK_BASE_DIR Include/D3D11.h PATH $ENV{DXSDK_DIR} )
  46. IF(DIRECTX_SDK_BASE_DIR)
  47. OPTION(USE_DX11 "Use DirectX 11" ON)
  48. ELSE()
  49. OPTION(USE_DX11 "Use DirectX 11" OFF)
  50. ENDIF()
  51. FIND_PATH(AMD_OPENCL_BASE_DIR include/CL/cl.h PATH $ENV{ATISTREAMSDKROOT} $ENV{AMDAPPSDKROOT} )
  52. IF(AMD_OPENCL_BASE_DIR)
  53. #AMD adds an extras slash at the end of the ATISTREAMSDKROOT variable
  54. SET(AMD_OPENCL_INCLUDES ${AMD_OPENCL_BASE_DIR}/include )
  55. MESSAGE("AMD OPENCL SDK FOUND")
  56. IF (CMAKE_CL_64)
  57. SET(CMAKE_ATISTREAMSDK_LIBPATH ${AMD_OPENCL_BASE_DIR}/lib/x86_64 )
  58. ELSE(CMAKE_CL_64)
  59. SET(CMAKE_ATISTREAMSDK_LIBPATH ${AMD_OPENCL_BASE_DIR}/lib/x86 )
  60. ENDIF(CMAKE_CL_64)
  61. SET(CMAKE_ATISTREAMSDK_LIBRARY ${CMAKE_ATISTREAMSDK_LIBPATH}/OpenCL.lib )
  62. OPTION(BUILD_AMD_OPENCL_DEMOS "Build OpenCL demos for AMD (GPU or CPU)" ON)
  63. IF (CMAKE_CL_64)
  64. SET(CMAK_GLEW_LIBRARY
  65. ${BULLET_PHYSICS_SOURCE_DIR}/Glut/glew64s.lib )
  66. ELSE(CMAKE_CL_64)
  67. SET(CMAK_GLEW_LIBRARY ${BULLET_PHYSICS_SOURCE_DIR}/Glut/glew32s.lib )
  68. ENDIF(CMAKE_CL_64)
  69. ELSE()
  70. OPTION(BUILD_AMD_OPENCL_DEMOS "Build OpenCL demos for AMD (GPU or CPU)" OFF)
  71. ENDIF()
  72. FIND_PATH(INTEL_OPENCL_BASE_DIR include/CL/cl.h PATH $ENV{INTELOCLSDKROOT} )
  73. IF(INTEL_OPENCL_BASE_DIR)
  74. SET(INTEL_OPENCL_INCLUDES ${INTEL_OPENCL_BASE_DIR}/include )
  75. MESSAGE("INTEL OPENCL SDK FOUND")
  76. MESSAGE(${INTEL_OPENCL_INCLUDES})
  77. IF (CMAKE_CL_64)
  78. SET(CMAKE_INTELOCLSDK_LIBPATH ${INTEL_OPENCL_BASE_DIR}/lib/x64 )
  79. ELSE(CMAKE_CL_64)
  80. SET(CMAKE_INTELOCLSDK_LIBPATH ${INTEL_OPENCL_BASE_DIR}/lib/x86 )
  81. ENDIF(CMAKE_CL_64)
  82. SET(INTEL_OPENCL_LIBRARIES ${CMAKE_INTELOCLSDK_LIBPATH}/OpenCL.lib)
  83. OPTION(BUILD_INTEL_OPENCL_DEMOS "Build OpenCL demos for Intel (CPU)" ON)
  84. ELSE()
  85. OPTION(BUILD_INTEL_OPENCL_DEMOS "Build OpenCL demos for Intel (CPU)" OFF)
  86. ENDIF()
  87. FIND_PATH(NVIDIA_OPENCL_BASE_DIR include/CL/cl.h PATH $ENV{CUDA_PATH} )
  88. IF(NVIDIA_OPENCL_BASE_DIR)
  89. SET(NVIDIA_OPENCL_INCLUDES ${NVIDIA_OPENCL_BASE_DIR}/include )
  90. MESSAGE("NVIDIA OPENCL SDK FOUND")
  91. MESSAGE(${NVIDIA_OPENCL_INCLUDES})
  92. IF (CMAKE_CL_64)
  93. SET(CMAKE_NVSDKCOMPUTE_LIBPATH ${NVIDIA_OPENCL_BASE_DIR}/lib/x64 )
  94. ELSE(CMAKE_CL_64)
  95. SET(CMAKE_NVSDKCOMPUTE_LIBPATH ${NVIDIA_OPENCL_BASE_DIR}/lib/Win32 )
  96. ENDIF(CMAKE_CL_64)
  97. SET(NVIDIA_OPENCL_LIBRARIES ${CMAKE_NVSDKCOMPUTE_LIBPATH}/OpenCL.lib)
  98. OPTION(BUILD_NVIDIA_OPENCL_DEMOS "Build OpenCL demos for NVidia (GPU)" ON)
  99. ELSE()
  100. OPTION(BUILD_NVIDIA_OPENCL_DEMOS "Build OpenCL demos for NVidia (GPU)" OFF)
  101. ENDIF()
  102. ELSE(MSVC)
  103. FIND_PATH(AMD_OPENCL_BASE_DIR include/CL/cl.h PATH $ENV{ATISTREAMSDKROOT} $ENV{AMDAPPSDKROOT} )
  104. IF(AMD_OPENCL_BASE_DIR)
  105. #AMD adds an extras slash at the end of the ATISTREAMSDKROOT variable
  106. SET(AMD_OPENCL_INCLUDES ${AMD_OPENCL_BASE_DIR}/include )
  107. MESSAGE("AMD OPENCL SDK FOUND")
  108. MESSAGE(${AMD_OPENCL_INCLUDES})
  109. IF (CMAKE_CL_64)
  110. SET(CMAKE_ATISTREAMSDK_LIBPATH ${AMD_OPENCL_BASE_DIR}/lib/x86_64 )
  111. ELSE(CMAKE_CL_64)
  112. SET(CMAKE_ATISTREAMSDK_LIBPATH ${AMD_OPENCL_BASE_DIR}/lib/x86 )
  113. ENDIF(CMAKE_CL_64)
  114. OPTION(BUILD_AMD_OPENCL_DEMOS "Build OpenCL demos for AMD (GPU or CPU)" ON)
  115. SET(CMAKE_ATISTREAMSDK_LIBRARY OpenCL )
  116. ELSE()
  117. OPTION(BUILD_AMD_OPENCL_DEMOS "Build OpenCL demos for AMD (GPU or CPU)" OFF)
  118. ENDIF(AMD_OPENCL_BASE_DIR)
  119. FIND_PATH(INTEL_OPENCL_INCLUDES CL/cl.h)
  120. FIND_PATH(INTEL_OPENCL_ICD_CFG intelocl64.icd /etc/OpenCL/vendors)
  121. FIND_LIBRARY(INTEL_OPENCL_LIBRARIES OpenCL PATH /usr/lib64)
  122. IF (INTEL_OPENCL_INCLUDES AND INTEL_OPENCL_LIBRARIES AND INTEL_OPENCL_ICD_CFG)
  123. MESSAGE("INTEL OPENCL SDK FOUND")
  124. MESSAGE(${INTEL_OPENCL_LIBRARIES})
  125. OPTION(BUILD_INTEL_OPENCL_DEMOS "Build OpenCL demos for Intel (CPU)" ON)
  126. ELSE ()
  127. MESSAGE("INTEL OPENCL NOT FOUND")
  128. OPTION(BUILD_INTEL_OPENCL_DEMOS "Build OpenCL demos for Intel (CPU)" OFF)
  129. ENDIF ()
  130. FIND_PATH(NVIDIA_OPENCL_INCLUDES CL/cl.h)
  131. FIND_PATH(NVIDIA_OPENCL_ICD_CFG nvidia.icd /etc/OpenCL/vendors)
  132. FIND_LIBRARY(NVIDIA_OPENCL_LIBRARIES OpenCL PATH /usr/lib64 /usr/local/lib)
  133. IF (NVIDIA_OPENCL_INCLUDES AND NVIDIA_OPENCL_LIBRARIES AND NVIDIA_OPENCL_ICD_CFG)
  134. MESSAGE("NVidia OPENCL FOUND")
  135. MESSAGE(${NVIDIA_OPENCL_LIBRARIES})
  136. OPTION(BUILD_NVIDIA_OPENCL_DEMOS "Build OpenCL demos for NVidia (GPU)" ON)
  137. ELSE ()
  138. MESSAGE("NVidia OPENCL NOT FOUND")
  139. OPTION(BUILD_NVIDIA_OPENCL_DEMOS "Build OpenCL demos for NVidia (GPU)" OFF)
  140. ENDIF ()
  141. ENDIF(MSVC)
  142. ELSE(BUILD_MULTITHREADING)
  143. # SET(BUILD_NVIDIA_OPENCL_DEMOS OFF CACHE BOOL "Build OpenCL demos for NVidia" FORCE)
  144. # SET(BUILD_AMD_OPENCL_DEMOS OFF CACHE BOOL "Build OpenCL demos for AMD" FORCE)
  145. # SET(BUILD_INTEL_OPENCL_DEMOS OFF CACHE BOOL "Build OpenCL demos for Intel (CPU)" FORCE)
  146. # SET(BUILD_MINICL_OPENCL_DEMOS OFF CACHE BOOL "Build OpenCL demos for MiniCL (Generic CPU)" FORCE)
  147. # SET(USE_DX11 OFF CACHE BOOL "Use DirectX 11" FORCE)
  148. # SET(USE_MULTITHREADED_BENCHMARK OFF CACHE BOOL "Use Multithreaded Benchmark" FORCE)
  149. ENDIF(BUILD_MULTITHREADING)
  150. #SET(CMAKE_EXE_LINKER_FLAGS_INIT "/STACK:10000000 /INCREMENTAL:NO")
  151. #SET(CMAKE_EXE_LINKER_FLAGS "/STACK:10000000 /INCREMENTAL:NO")
  152. #MESSAGE("MSVC_INCREMENTAL_YES_FLAG"+${MSVC_INCREMENTAL_YES_FLAG})
  153. IF(MSVC)
  154. IF (NOT USE_MSVC_INCREMENTAL_LINKING)
  155. #MESSAGE("MSVC_INCREMENTAL_DEFAULT"+${MSVC_INCREMENTAL_DEFAULT})
  156. SET( MSVC_INCREMENTAL_YES_FLAG "/INCREMENTAL:NO")
  157. STRING(REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replacementFlags ${CMAKE_EXE_LINKER_FLAGS_DEBUG})
  158. SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "/INCREMENTAL:NO ${replacementFlags}" )
  159. MESSAGE("CMAKE_EXE_LINKER_FLAGS_DEBUG=${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
  160. # STRING(REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replacementFlags2 ${CMAKE_EXE_LINKER_FLAGS})
  161. # SET(CMAKE_EXE_LINKER_FLAGS ${replacementFlag2})
  162. # STRING(REPLACE "INCREMENTAL:YES" "" replacementFlags3 ${CMAKE_EXTRA_LINK_FLAGS})
  163. # SET(CMAKE_EXTRA_LINK_FLAGS ${replacementFlag3})
  164. STRING(REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replacementFlags3 ${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO})
  165. SET(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO ${replacementFlags3})
  166. SET(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "/INCREMENTAL:NO ${replacementFlags3}" )
  167. ENDIF (NOT USE_MSVC_INCREMENTAL_LINKING)
  168. IF (NOT USE_MSVC_RUNTIME_LIBRARY_DLL)
  169. #We statically link to reduce dependancies
  170. FOREACH(flag_var CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
  171. IF(${flag_var} MATCHES "/MD")
  172. STRING(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
  173. ENDIF(${flag_var} MATCHES "/MD")
  174. IF(${flag_var} MATCHES "/MDd")
  175. STRING(REGEX REPLACE "/MDd" "/MTd" ${flag_var} "${${flag_var}}")
  176. ENDIF(${flag_var} MATCHES "/MDd")
  177. ENDFOREACH(flag_var)
  178. ENDIF (NOT USE_MSVC_RUNTIME_LIBRARY_DLL)
  179. IF (CMAKE_CL_64)
  180. ADD_DEFINITIONS(-D_WIN64)
  181. ELSE()
  182. OPTION(USE_MSVC_SSE "Use MSVC /arch:sse option" ON)
  183. IF (USE_MSVC_SSE)
  184. ADD_DEFINITIONS(/arch:SSE)
  185. ENDIF()
  186. ENDIF()
  187. OPTION(USE_MSVC_FAST_FLOATINGPOINT "Use MSVC /fp:fast option" ON)
  188. IF (USE_MSVC_FAST_FLOATINGPOINT)
  189. ADD_DEFINITIONS(/fp:fast)
  190. ENDIF()
  191. ENDIF(MSVC)
  192. IF (WIN32)
  193. OPTION(INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES "Create MSVC projectfiles that can be distributed" OFF)
  194. IF (INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
  195. SET (LIBRARY_OUTPUT_PATH ${BULLET_PHYSICS_SOURCE_DIR}/lib CACHE PATH "Single output directory for building all libraries.")
  196. SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${BULLET_PHYSICS_SOURCE_DIR})
  197. SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${BULLET_PHYSICS_SOURCE_DIR})
  198. SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${BULLET_PHYSICS_SOURCE_DIR})
  199. SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${BULLET_PHYSICS_SOURCE_DIR})
  200. SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${BULLET_PHYSICS_SOURCE_DIR})
  201. ELSE()
  202. SET (LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib CACHE PATH "Single output directory for building all libraries.")
  203. ENDIF()
  204. OPTION(INTERNAL_CREATE_MSVC_RELATIVE_PATH_PROJECTFILES "Create MSVC projectfiles with relative paths" OFF)
  205. OPTION(INTERNAL_ADD_POSTFIX_EXECUTABLE_NAMES "Add MSVC postfix for executable names (_Debug)" OFF)
  206. SET(CMAKE_DEBUG_POSTFIX "_Debug" CACHE STRING "Adds a postfix for debug-built libraries.")
  207. SET(CMAKE_MINSIZEREL_POSTFIX "_MinsizeRel" CACHE STRING "Adds a postfix for MinsizeRelease-built libraries.")
  208. SET(CMAKE_RELWITHDEBINFO_POSTFIX "_RelWithDebugInfo" CACHE STRING "Adds a postfix for ReleaseWithDebug-built libraries.")
  209. IF (INTERNAL_CREATE_MSVC_RELATIVE_PATH_PROJECTFILES)
  210. SET(CMAKE_SUPPRESS_REGENERATION 1)
  211. SET(CMAKE_USE_RELATIVE_PATHS 1)
  212. ENDIF(INTERNAL_CREATE_MSVC_RELATIVE_PATH_PROJECTFILES)
  213. ENDIF (WIN32)
  214. OPTION(BUILD_CPU_DEMOS "Build original Bullet CPU demos" ON)
  215. OPTION(INTERNAL_UPDATE_SERIALIZATION_STRUCTURES "Internal update serialization structures" OFF)
  216. IF (INTERNAL_UPDATE_SERIALIZATION_STRUCTURES)
  217. ADD_DEFINITIONS( -DBT_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES)
  218. ENDIF (INTERNAL_UPDATE_SERIALIZATION_STRUCTURES)
  219. IF (USE_DOUBLE_PRECISION)
  220. ADD_DEFINITIONS( -DBT_USE_DOUBLE_PRECISION)
  221. SET( BULLET_DOUBLE_DEF "-DBT_USE_DOUBLE_PRECISION")
  222. ENDIF (USE_DOUBLE_PRECISION)
  223. IF(USE_GRAPHICAL_BENCHMARK)
  224. ADD_DEFINITIONS( -DUSE_GRAPHICAL_BENCHMARK)
  225. ENDIF (USE_GRAPHICAL_BENCHMARK)
  226. IF (WIN32)
  227. OPTION(USE_GLUT "Use Glut" ON)
  228. ADD_DEFINITIONS( -D_IRR_STATIC_LIB_ )
  229. ADD_DEFINITIONS( -D_CRT_SECURE_NO_WARNINGS )
  230. ADD_DEFINITIONS( -D_CRT_SECURE_NO_DEPRECATE )
  231. ADD_DEFINITIONS( -D_SCL_SECURE_NO_WARNINGS )
  232. IF (USE_GLUT AND MSVC)
  233. string (REPLACE "/D_WINDOWS" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
  234. remove_definitions(-D_WINDOWS )
  235. ENDIF()
  236. ELSE(WIN32)
  237. OPTION(USE_GLUT "Use Glut" ON)
  238. ENDIF(WIN32)
  239. IF(COMMAND cmake_policy)
  240. cmake_policy(SET CMP0003 NEW)
  241. ENDIF(COMMAND cmake_policy)
  242. # This is the shortcut to finding GLU, GLUT and OpenGL if they are properly installed on your system
  243. # This should be the case.
  244. FIND_PACKAGE(OpenGL)
  245. IF (OPENGL_FOUND)
  246. MESSAGE("OPENGL FOUND")
  247. MESSAGE(${OPENGL_LIBRARIES})
  248. ELSE (OPENGL_FOUND)
  249. MESSAGE("OPENGL NOT FOUND")
  250. SET(OPENGL_gl_LIBRARY opengl32)
  251. SET(OPENGL_glu_LIBRARY glu32)
  252. ENDIF (OPENGL_FOUND)
  253. # ADD_DEFINITIONS(-DBT_USE_FREEGLUT)
  254. FIND_PACKAGE(GLU)
  255. IF (USE_GLUT)
  256. FIND_PACKAGE(GLUT)
  257. IF (GLUT_FOUND)
  258. MESSAGE("GLUT FOUND")
  259. MESSAGE(${GLUT_glut_LIBRARY})
  260. ELSE (GLUT_FOUND)
  261. IF (MINGW)
  262. MESSAGE ("GLUT NOT FOUND not found, trying to use MINGW glut32")
  263. SET(GLUT_glut_LIBRARY glut32)
  264. #TODO add better GLUT detection for MinGW
  265. SET(GLUT_FOUND TRUE)
  266. ENDIF (MINGW)
  267. IF (MSVC)
  268. SET(GLUT_FOUND TRUE)
  269. IF (CMAKE_CL_64)
  270. message("Win64 using Glut/glut64.lib")
  271. SET(GLUT_glut_LIBRARY ${BULLET_PHYSICS_SOURCE_DIR}/Glut/glut64.lib)
  272. ELSE(CMAKE_CL_64)
  273. message("Win32 using Glut/glut32.lib")
  274. SET(GLUT_glut_LIBRARY ${BULLET_PHYSICS_SOURCE_DIR}/Glut/glut32.lib)
  275. ENDIF (CMAKE_CL_64)
  276. INCLUDE_DIRECTORIES(${BULLET_PHYSICS_SOURCE_DIR}/Glut)
  277. ELSE()
  278. MESSAGE("GLUT NOT FOUND")
  279. ENDIF (MSVC)
  280. ENDIF (GLUT_FOUND)
  281. IF(NOT WIN32)
  282. # This is added for linux. This should always work if everything is installed and working fine.
  283. INCLUDE_DIRECTORIES(/usr/include /usr/local/include)
  284. ENDIF()
  285. ENDIF(USE_GLUT)
  286. OPTION(BUILD_DEMOS "Set when you want to build the demos" ON)
  287. IF(BUILD_DEMOS)
  288. IF(EXISTS ${BULLET_PHYSICS_SOURCE_DIR}/Demos AND IS_DIRECTORY ${BULLET_PHYSICS_SOURCE_DIR}/Demos)
  289. SUBDIRS(Demos)
  290. ENDIF()
  291. ENDIF(BUILD_DEMOS)
  292. # "Demos_ps3")
  293. IF (MSVC)
  294. IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
  295. IF(EXISTS ${BULLET_PHYSICS_SOURCE_DIR}/Demos_ps3 AND IS_DIRECTORY ${BULLET_PHYSICS_SOURCE_DIR}/Demos_ps3)
  296. MESSAGE("Demos_ps3 found")
  297. SUBDIRS(Demos_ps3)
  298. ENDIF()
  299. ENDIF()
  300. ENDIF(MSVC)
  301. OPTION(BUILD_EXTRAS "Set when you want to build the extras" ON)
  302. IF(BUILD_EXTRAS)
  303. SUBDIRS(Extras)
  304. ENDIF(BUILD_EXTRAS)
  305. #Maya Dynamica plugin is moved to http://dynamica.googlecode.com
  306. SUBDIRS(src)
  307. IF("${CMAKE_GENERATOR}" MATCHES "Unix Makefiles")
  308. OPTION(INSTALL_LIBS "Set when you want to install libraries" ON)
  309. ELSE()
  310. IF(APPLE AND FRAMEWORK)
  311. OPTION(INSTALL_LIBS "Set when you want to install libraries" ON)
  312. ELSE()
  313. #by default, don't enable the 'INSTALL' option for Xcode and MSVC projectfiles
  314. OPTION(INSTALL_LIBS "Set when you want to install libraries" OFF)
  315. ENDIF()
  316. ENDIF()
  317. IF(INSTALL_LIBS)
  318. SET (LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)" )
  319. SET (LIB_DESTINATION "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" CACHE STRING "Library directory name")
  320. ## the following are directories where stuff will be installed to
  321. SET(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include/bullet/" CACHE PATH "The subdirectory to the header prefix")
  322. SET(PKGCONFIG_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/pkgconfig/" CACHE STRING "Base directory for pkgconfig files")
  323. IF(NOT WIN32)
  324. CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/bullet.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/bullet.pc @ONLY)
  325. INSTALL(
  326. FILES
  327. ${CMAKE_CURRENT_BINARY_DIR}/bullet.pc
  328. DESTINATION
  329. ${PKGCONFIG_INSTALL_PREFIX})
  330. ENDIF(NOT WIN32)
  331. ENDIF(INSTALL_LIBS)
  332. #INSTALL of other files requires CMake 2.6
  333. IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
  334. OPTION(INSTALL_EXTRA_LIBS "Set when you want extra libraries installed" OFF)
  335. ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
  336. OPTION(BUILD_UNIT_TESTS "Build Unit Tests" OFF)
  337. IF (BUILD_UNIT_TESTS)
  338. SUBDIRS(UnitTests)
  339. ENDIF()
  340. set (BULLET_CONFIG_CMAKE_PATH lib${LIB_SUFFIX}/cmake/bullet )
  341. list (APPEND BULLET_LIBRARIES LinearMath)
  342. list (APPEND BULLET_LIBRARIES BulletCollisions)
  343. list (APPEND BULLET_LIBRARIES BulletDynamics)
  344. list (APPEND BULLET_LIBRARIES BulletSoftBody)
  345. set (BULLET_USE_FILE ${CMAKE_INSTALL_PREFIX}/${BULLET_CONFIG_CMAKE_PATH}/UseBullet.cmake)
  346. configure_file ( ${CMAKE_SOURCE_DIR}/BulletConfig.cmake.in
  347. ${CMAKE_CURRENT_BINARY_DIR}/BulletConfig.cmake
  348. @ONLY ESCAPE_QUOTES
  349. )
  350. install ( FILES ${CMAKE_SOURCE_DIR}/UseBullet.cmake
  351. ${CMAKE_CURRENT_BINARY_DIR}/BulletConfig.cmake
  352. DESTINATION ${BULLET_CONFIG_CMAKE_PATH}
  353. )