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_link_libraries(bullet3 ${COVERAGE})
101 if(ENABLE_PKG_CONFIGURE)
102 find_package(PkgConfig REQUIRED)
104 set( LIB_DIR $ENV{libdir} )
106 set( LIB_DIR ${CMAKE_INSTALL_LIBDIR} )
109 set( LIB_DIR ${prefix}/lib )
112 set(bullet_pkg_cfg_file bullet3.pc)
113 configure_file(${CMAKE_CURRENT_LIST_DIR}/${bullet_pkg_cfg_file}.cmake ${bullet_pkg_cfg_file} @ONLY)
116 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${bullet_pkg_cfg_file}
117 DESTINATION ${LIB_DIR}/pkgconfig
119 endif(ENABLE_PKG_CONFIGURE)
123 DESTINATION ${LIB_DIR}
124 EXPORT Bullet3Targets
127 if(BULLET3_BUILD_SHARED AND MSVC)
128 install(FILES $<TARGET_PDB_FILE:bullet3> DESTINATION lib)
132 "${bullet_SOURCE_DIR}/src/btBulletCollisionCommon.h"
133 "${bullet_SOURCE_DIR}/src/btBulletDynamicsCommon.h"
134 DESTINATION "include/bullet"
136 foreach(SUB ${BULLET_SUBMODULES})
138 DIRECTORY "${bullet_SOURCE_DIR}/src/${SUB}"
139 DESTINATION "include/bullet"
140 FILES_MATCHING PATTERN "*.h"