1 cmake_minimum_required(VERSION 3.10.2)
3 unset(PROJECT_IS_TOPLEVEL)
7 DESCRIPTION "C++ library portion of bullet"
11 FILE (STRINGS "VERSION" BULLET_VERSION)
13 # PROJECT_IS_TOPLEVEL for older CMake versions
14 if(NOT DEFINED PROJECT_IS_TOPLEVEL)
15 set(PROJECT_IS_TOPLEVEL OFF)
16 if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
17 set(PROJECT_IS_TOPLEVEL ON)
22 option(BULLET3_BUILD_SHARED "Build bullet3 as a shared library" ON)
24 ADD_DEFINITIONS(-DB3_USE_CLEW)
27 ADD_DEFINITIONS( -D_CRT_SECURE_NO_WARNINGS )
28 ADD_DEFINITIONS( -D_CRT_SECURE_NO_DEPRECATE )
29 ADD_DEFINITIONS( -D_SCL_SECURE_NO_WARNINGS )
32 # Bullet is broken into sub-"libraries"; we'll automate handling of these
48 set(repo_root_dir "${CMAKE_CURRENT_LIST_DIR}/../../../")
49 set(bullet_SOURCE_DIR "${repo_root_dir}/dali-physics/third-party/bullet3")
52 "${bullet_SOURCE_DIR}/src/btBulletCollisionCommon.h"
53 "${bullet_SOURCE_DIR}/src/btBulletDynamicsCommon.h"
56 foreach(SUB ${BULLET_SUBMODULES})
57 file(GLOB_RECURSE SUBMODULE_SOURCES
58 "${bullet_SOURCE_DIR}/src/${SUB}/*.h"
59 "${bullet_SOURCE_DIR}/src/${SUB}/*.cpp"
60 "${bullet_SOURCE_DIR}/src/${SUB}/*.c"
62 list(APPEND BULLET3_SOURCES ${SUBMODULE_SOURCES})
66 set(CPACK_PACKAGE_NAME ${PROJECT_NAME})
67 set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
70 # Build the main bullet3 library
71 set(BULLET3_LIBRARY_TYPE "STATIC")
72 if(BULLET3_BUILD_SHARED)
73 set(BULLET3_LIBRARY_TYPE "SHARED")
75 add_library(bullet3 ${BULLET3_LIBRARY_TYPE} ${BULLET3_SOURCES})
76 set_target_properties(bullet3 PROPERTIES
77 WINDOWS_EXPORT_ALL_SYMBOLS 1
78 VERSION ${PROJECT_VERSION}
79 SOVERSION ${PROJECT_VERSION}
81 target_include_directories(bullet3
83 $<BUILD_INTERFACE:${bullet_SOURCE_DIR}/src>
84 $<INSTALL_INTERFACE:include/bullet>
86 ${bullet_SOURCE_DIR}/src
89 # Suppress the warnings in the libbullet source code
91 target_compile_options(bullet3 PRIVATE /w)
93 target_compile_options(bullet3 PRIVATE -w)
96 target_link_libraries(bullet3 ${COVERAGE})
99 set (LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)" )
100 set (LIB_DESTINATION "lib${LIB_SUFFIX}" CACHE STRING "Library directory name")
101 ## the following are directories where stuff will be installed to
102 set(INCLUDE_INSTALL_DIR "include/bullet/" CACHE PATH "The subdirectory to the header prefix")
103 set(PKGCONFIG_INSTALL_PREFIX "lib${LIB_SUFFIX}/pkgconfig/" CACHE STRING "Base directory for pkgconfig files")
105 CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/bullet3.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/bullet3.pc @ONLY)
108 ${CMAKE_CURRENT_BINARY_DIR}/bullet3.pc
110 ${PKGCONFIG_INSTALL_PREFIX})
115 DESTINATION ${LIB_DIR}
116 EXPORT Bullet3Targets
119 if(BULLET3_BUILD_SHARED AND MSVC)
120 install(FILES $<TARGET_PDB_FILE:bullet3> DESTINATION lib)
124 "${bullet_SOURCE_DIR}/src/btBulletCollisionCommon.h"
125 "${bullet_SOURCE_DIR}/src/btBulletDynamicsCommon.h"
126 DESTINATION "include/bullet"
128 foreach(SUB ${BULLET_SUBMODULES})
130 DIRECTORY "${bullet_SOURCE_DIR}/src/${SUB}"
131 DESTINATION "include/bullet"
132 FILES_MATCHING PATTERN "*.h"