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}/*.hpp"
63 "${bullet_SOURCE_DIR}/src/${SUB}/*.cpp"
64 "${bullet_SOURCE_DIR}/src/${SUB}/*.c"
66 list(APPEND BULLET3_SOURCES ${SUBMODULE_SOURCES})
70 set(CPACK_PACKAGE_NAME ${PROJECT_NAME})
71 set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
74 # Build the main bullet3 library
75 set(BULLET3_LIBRARY_TYPE "STATIC")
76 if(BULLET3_BUILD_SHARED)
77 set(BULLET3_LIBRARY_TYPE "SHARED")
79 add_library(bullet3 ${BULLET3_LIBRARY_TYPE} ${BULLET3_SOURCES})
80 set_target_properties(bullet3 PROPERTIES
81 WINDOWS_EXPORT_ALL_SYMBOLS 1
82 VERSION ${PROJECT_VERSION}
83 SOVERSION ${PROJECT_VERSION}
85 target_include_directories(bullet3
87 $<BUILD_INTERFACE:${bullet_SOURCE_DIR}/src>
88 $<INSTALL_INTERFACE:include/bullet>
90 ${bullet_SOURCE_DIR}/src
93 # Suppress the warnings in the libbullet source code
95 target_compile_options(bullet3 PRIVATE /w)
97 target_compile_options(bullet3 PRIVATE -w)
100 target_compile_options(bullet3 PRIVATE -fvisibility=default)
102 target_link_libraries(bullet3 ${COVERAGE})
104 if(ENABLE_PKG_CONFIGURE)
105 find_package(PkgConfig REQUIRED)
107 set( LIB_DIR $ENV{libdir} )
109 set( LIB_DIR ${CMAKE_INSTALL_LIBDIR} )
112 set( LIB_DIR ${prefix}/lib )
114 set(DEV_INCLUDE_PATH ${prefix}/include/bullet)
116 set(bullet_pkg_cfg_file bullet3.pc)
117 configure_file(${CMAKE_CURRENT_LIST_DIR}/${bullet_pkg_cfg_file}.cmake ${bullet_pkg_cfg_file} @ONLY)
120 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${bullet_pkg_cfg_file}
121 DESTINATION ${LIB_DIR}/pkgconfig
123 endif(ENABLE_PKG_CONFIGURE)
127 DESTINATION ${LIB_DIR}
128 EXPORT bullet3-targets
131 if(INSTALL_CMAKE_MODULES)
133 EXPORT bullet3-targets
135 FILE bullet3-targets.cmake
136 DESTINATION share/bullet3
140 if(BULLET3_BUILD_SHARED AND MSVC)
141 install(FILES $<TARGET_PDB_FILE:bullet3> DESTINATION lib)
145 "${bullet_SOURCE_DIR}/src/btBulletCollisionCommon.h"
146 "${bullet_SOURCE_DIR}/src/btBulletDynamicsCommon.h"
147 DESTINATION "include/bullet"
149 foreach(SUB ${BULLET_SUBMODULES})
151 DIRECTORY "${bullet_SOURCE_DIR}/src/${SUB}"
152 DESTINATION "include/bullet"
153 FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp"
157 if(INSTALL_CMAKE_MODULES)
158 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/bullet3-config.cmake "
159 include(CMakeFindDependencyMacro)
160 include(\${CMAKE_CURRENT_LIST_DIR}/bullet3-targets.cmake)
162 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/bullet3-config.cmake DESTINATION share/bullet3)