DALi Version 2.2.37
[platform/core/uifw/dali-toolkit.git] / dali-physics / third-party / bullet3 / CMakeLists.txt
1 cmake_minimum_required(VERSION 3.10.2)
2
3 unset(PROJECT_IS_TOPLEVEL)
4
5 project(bullet3
6     VERSION 3.2.5
7     DESCRIPTION "C++ library portion of bullet"
8     LANGUAGES CXX
9 )
10
11 FILE (STRINGS "VERSION" BULLET_VERSION)
12
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)
18     endif()
19 endif()
20
21 # Build options
22 option(BULLET3_BUILD_SHARED "Build bullet3 as a shared library" ON)
23
24 set(prefix ${CMAKE_INSTALL_PREFIX})
25 option(ENABLE_PKG_CONFIGURE "Use pkgconfig" ON)
26
27 ADD_DEFINITIONS(-DB3_USE_CLEW)
28
29 if (WIN32)
30     ADD_DEFINITIONS( -D_CRT_SECURE_NO_WARNINGS )
31     ADD_DEFINITIONS( -D_CRT_SECURE_NO_DEPRECATE )
32     ADD_DEFINITIONS( -D_SCL_SECURE_NO_WARNINGS )
33 endif(WIN32)
34
35 # Bullet is broken into sub-"libraries"; we'll automate handling of these
36 set(BULLET_SUBMODULES
37     clew
38     Bullet3Collision
39     Bullet3Common
40     Bullet3Dynamics
41     Bullet3Geometry
42     Bullet3OpenCL
43     Bullet3Serialize
44     BulletCollision
45     BulletDynamics
46     BulletInverseDynamics
47     BulletSoftBody
48     LinearMath
49 )
50
51 set(repo_root_dir "${CMAKE_CURRENT_LIST_DIR}/../../../")
52 set(bullet_SOURCE_DIR "${repo_root_dir}/dali-physics/third-party/bullet3")
53
54 set(BULLET3_SOURCES
55     "${bullet_SOURCE_DIR}/src/btBulletCollisionCommon.h"
56     "${bullet_SOURCE_DIR}/src/btBulletDynamicsCommon.h"
57 )
58
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"
64     )
65     list(APPEND BULLET3_SOURCES ${SUBMODULE_SOURCES})
66 endforeach()
67
68 # CPack support
69 set(CPACK_PACKAGE_NAME ${PROJECT_NAME})
70 set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
71 include(CPack)
72
73 # Build the main bullet3 library
74 set(BULLET3_LIBRARY_TYPE "STATIC")
75 if(BULLET3_BUILD_SHARED)
76     set(BULLET3_LIBRARY_TYPE "SHARED")
77 endif()
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}
83 )
84 target_include_directories(bullet3
85     SYSTEM INTERFACE
86         $<BUILD_INTERFACE:${bullet_SOURCE_DIR}/src>
87         $<INSTALL_INTERFACE:include/bullet>
88     PRIVATE
89         ${bullet_SOURCE_DIR}/src
90 )
91
92 # Suppress the warnings in the libbullet source code
93 if(MSVC)
94     target_compile_options(bullet3 PRIVATE /w)
95 else()
96     target_compile_options(bullet3 PRIVATE -w)
97 endif()
98
99 target_link_libraries(bullet3 ${COVERAGE})
100
101 if(ENABLE_PKG_CONFIGURE)
102     find_package(PkgConfig REQUIRED)
103
104     set( LIB_DIR $ENV{libdir} )
105     if( NOT LIB_DIR )
106         set( LIB_DIR ${CMAKE_INSTALL_LIBDIR} )
107     endif()
108     if( NOT LIB_DIR )
109         set( LIB_DIR ${prefix}/lib )
110     endif()
111
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)
114
115     # Installation
116     install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${bullet_pkg_cfg_file}
117         DESTINATION ${LIB_DIR}/pkgconfig
118     )
119 endif(ENABLE_PKG_CONFIGURE)
120
121 install(
122     TARGETS bullet3
123     DESTINATION ${LIB_DIR}
124     EXPORT Bullet3Targets
125 )
126
127 if(BULLET3_BUILD_SHARED AND MSVC)
128     install(FILES $<TARGET_PDB_FILE:bullet3> DESTINATION lib)
129 endif()
130
131 install(FILES
132     "${bullet_SOURCE_DIR}/src/btBulletCollisionCommon.h"
133     "${bullet_SOURCE_DIR}/src/btBulletDynamicsCommon.h"
134     DESTINATION "include/bullet"
135 )
136 foreach(SUB ${BULLET_SUBMODULES})
137     install(
138         DIRECTORY "${bullet_SOURCE_DIR}/src/${SUB}"
139         DESTINATION "include/bullet"
140         FILES_MATCHING PATTERN "*.h"
141     )
142 endforeach()