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 set(prefix ${CMAKE_INSTALL_PREFIX})
25 option(ENABLE_PKG_CONFIGURE "Use pkgconfig" ON)
27 ADD_DEFINITIONS(-DB3_USE_CLEW)
30 ADD_DEFINITIONS( -D_CRT_SECURE_NO_WARNINGS )
31 ADD_DEFINITIONS( -D_CRT_SECURE_NO_DEPRECATE )
32 ADD_DEFINITIONS( -D_SCL_SECURE_NO_WARNINGS )
35 # Bullet is broken into sub-"libraries"; we'll automate handling of these
51 set(repo_root_dir "${CMAKE_CURRENT_LIST_DIR}/../../../")
52 set(bullet_SOURCE_DIR "${repo_root_dir}/dali-physics/third-party/bullet3")
55 "${bullet_SOURCE_DIR}/src/btBulletCollisionCommon.h"
56 "${bullet_SOURCE_DIR}/src/btBulletDynamicsCommon.h"
59 foreach(SUB ${BULLET_SUBMODULES})
60 file(GLOB_RECURSE SUBMODULE_SOURCES
61 "${bullet_SOURCE_DIR}/src/${SUB}/*.h"
62 "${bullet_SOURCE_DIR}/src/${SUB}/*.cpp"
63 "${bullet_SOURCE_DIR}/src/${SUB}/*.c"
65 list(APPEND BULLET3_SOURCES ${SUBMODULE_SOURCES})
69 set(CPACK_PACKAGE_NAME ${PROJECT_NAME})
70 set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
73 # Build the main bullet3 library
74 set(BULLET3_LIBRARY_TYPE "STATIC")
75 if(BULLET3_BUILD_SHARED)
76 set(BULLET3_LIBRARY_TYPE "SHARED")
78 add_library(bullet3 ${BULLET3_LIBRARY_TYPE} ${BULLET3_SOURCES})
79 set_target_properties(bullet3 PROPERTIES
80 WINDOWS_EXPORT_ALL_SYMBOLS 1
81 VERSION ${PROJECT_VERSION}
82 SOVERSION ${PROJECT_VERSION}
84 target_include_directories(bullet3
86 $<BUILD_INTERFACE:${bullet_SOURCE_DIR}/src>
87 $<INSTALL_INTERFACE:include/bullet>
89 ${bullet_SOURCE_DIR}/src
92 # Suppress the warnings in the libbullet source code
94 target_compile_options(bullet3 PRIVATE /w)
96 target_compile_options(bullet3 PRIVATE -w)
99 target_compile_options(bullet3 PRIVATE -fvisibility=default)
101 target_link_libraries(bullet3 ${COVERAGE})
103 if(ENABLE_PKG_CONFIGURE)
104 find_package(PkgConfig REQUIRED)
106 set( LIB_DIR $ENV{libdir} )
108 set( LIB_DIR ${CMAKE_INSTALL_LIBDIR} )
111 set( LIB_DIR ${prefix}/lib )
113 set(DEV_INCLUDE_PATH ${prefix}/include/bullet)
115 set(bullet_pkg_cfg_file bullet3.pc)
116 configure_file(${CMAKE_CURRENT_LIST_DIR}/${bullet_pkg_cfg_file}.cmake ${bullet_pkg_cfg_file} @ONLY)
119 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${bullet_pkg_cfg_file}
120 DESTINATION ${LIB_DIR}/pkgconfig
122 endif(ENABLE_PKG_CONFIGURE)
126 DESTINATION ${LIB_DIR}
127 EXPORT bullet3-targets
130 if(INSTALL_CMAKE_MODULES)
132 EXPORT bullet3-targets
134 FILE bullet3-targets.cmake
135 DESTINATION share/bullet3
139 if(BULLET3_BUILD_SHARED AND MSVC)
140 install(FILES $<TARGET_PDB_FILE:bullet3> DESTINATION lib)
144 "${bullet_SOURCE_DIR}/src/btBulletCollisionCommon.h"
145 "${bullet_SOURCE_DIR}/src/btBulletDynamicsCommon.h"
146 DESTINATION "include/bullet"
148 foreach(SUB ${BULLET_SUBMODULES})
150 DIRECTORY "${bullet_SOURCE_DIR}/src/${SUB}"
151 DESTINATION "include/bullet"
152 FILES_MATCHING PATTERN "*.h"
156 if(INSTALL_CMAKE_MODULES)
157 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/bullet3-config.cmake "
158 include(CMakeFindDependencyMacro)
159 include(\${CMAKE_CURRENT_LIST_DIR}/bullet3-targets.cmake)
161 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/bullet3-config.cmake DESTINATION share/bullet3)