Fixed bullet include paths
[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_compile_options(bullet3 PRIVATE -fvisibility=default)
100
101 target_link_libraries(bullet3 ${COVERAGE})
102
103 if(ENABLE_PKG_CONFIGURE)
104     find_package(PkgConfig REQUIRED)
105
106     set( LIB_DIR $ENV{libdir} )
107     if( NOT LIB_DIR )
108         set( LIB_DIR ${CMAKE_INSTALL_LIBDIR} )
109     endif()
110     if( NOT LIB_DIR )
111         set( LIB_DIR ${prefix}/lib )
112     endif()
113     set(DEV_INCLUDE_PATH ${prefix}/include/bullet)
114
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)
117
118     # Installation
119     install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${bullet_pkg_cfg_file}
120         DESTINATION ${LIB_DIR}/pkgconfig
121     )
122 endif(ENABLE_PKG_CONFIGURE)
123
124 install(
125     TARGETS bullet3
126     DESTINATION ${LIB_DIR}
127     EXPORT bullet3-targets
128 )
129
130 if(INSTALL_CMAKE_MODULES)
131   install(
132       EXPORT bullet3-targets
133       NAMESPACE bullet3::
134       FILE bullet3-targets.cmake
135       DESTINATION share/bullet3
136   )
137 endif()
138
139 if(BULLET3_BUILD_SHARED AND MSVC)
140     install(FILES $<TARGET_PDB_FILE:bullet3> DESTINATION lib)
141 endif()
142
143 install(FILES
144     "${bullet_SOURCE_DIR}/src/btBulletCollisionCommon.h"
145     "${bullet_SOURCE_DIR}/src/btBulletDynamicsCommon.h"
146     DESTINATION "include/bullet"
147 )
148 foreach(SUB ${BULLET_SUBMODULES})
149     install(
150         DIRECTORY "${bullet_SOURCE_DIR}/src/${SUB}"
151         DESTINATION "include/bullet"
152         FILES_MATCHING PATTERN "*.h"
153     )
154 endforeach()
155
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)
160   ")
161   install(FILES ${CMAKE_CURRENT_BINARY_DIR}/bullet3-config.cmake DESTINATION share/bullet3)
162 endif()