Add Bullet and Chipmunk to dali-toolkit
[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 ADD_DEFINITIONS(-DB3_USE_CLEW)
25
26 if (WIN32)
27     ADD_DEFINITIONS( -D_CRT_SECURE_NO_WARNINGS )
28     ADD_DEFINITIONS( -D_CRT_SECURE_NO_DEPRECATE )
29     ADD_DEFINITIONS( -D_SCL_SECURE_NO_WARNINGS )
30 endif(WIN32)
31
32 # Bullet is broken into sub-"libraries"; we'll automate handling of these
33 set(BULLET_SUBMODULES
34     clew
35     Bullet3Collision
36     Bullet3Common
37     Bullet3Dynamics
38     Bullet3Geometry
39     Bullet3OpenCL
40     Bullet3Serialize
41     BulletCollision
42     BulletDynamics
43     BulletInverseDynamics
44     BulletSoftBody
45     LinearMath
46 )
47
48 set(repo_root_dir "${CMAKE_CURRENT_LIST_DIR}/../../../")
49 set(bullet_SOURCE_DIR "${repo_root_dir}/dali-physics/third-party/bullet3")
50
51 set(BULLET3_SOURCES
52     "${bullet_SOURCE_DIR}/src/btBulletCollisionCommon.h"
53     "${bullet_SOURCE_DIR}/src/btBulletDynamicsCommon.h"
54 )
55
56 foreach(SUB ${BULLET_SUBMODULES})
57     file(GLOB_RECURSE SUBMODULE_SOURCES
58         "${bullet_SOURCE_DIR}/src/${SUB}/*.h"
59         "${bullet_SOURCE_DIR}/src/${SUB}/*.cpp"
60         "${bullet_SOURCE_DIR}/src/${SUB}/*.c"
61     )
62     list(APPEND BULLET3_SOURCES ${SUBMODULE_SOURCES})
63 endforeach()
64
65 # CPack support
66 set(CPACK_PACKAGE_NAME ${PROJECT_NAME})
67 set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
68 include(CPack)
69
70 # Build the main bullet3 library
71 set(BULLET3_LIBRARY_TYPE "STATIC")
72 if(BULLET3_BUILD_SHARED)
73     set(BULLET3_LIBRARY_TYPE "SHARED")
74 endif()
75 add_library(bullet3 ${BULLET3_LIBRARY_TYPE} ${BULLET3_SOURCES})
76 set_target_properties(bullet3 PROPERTIES
77     WINDOWS_EXPORT_ALL_SYMBOLS 1
78     VERSION ${PROJECT_VERSION}
79     SOVERSION ${PROJECT_VERSION}
80 )
81 target_include_directories(bullet3
82     SYSTEM INTERFACE
83         $<BUILD_INTERFACE:${bullet_SOURCE_DIR}/src>
84         $<INSTALL_INTERFACE:include/bullet>
85     PRIVATE
86         ${bullet_SOURCE_DIR}/src
87 )
88
89 # Suppress the warnings in the libbullet source code
90 if(MSVC)
91     target_compile_options(bullet3 PRIVATE /w)
92 else()
93     target_compile_options(bullet3 PRIVATE -w)
94 endif()
95
96 target_link_libraries(bullet3 ${COVERAGE})
97
98 # Installation
99 set (LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)" )
100 set (LIB_DESTINATION "lib${LIB_SUFFIX}" CACHE STRING "Library directory name")
101 ## the following are directories where stuff will be installed to
102 set(INCLUDE_INSTALL_DIR "include/bullet/" CACHE PATH "The subdirectory to the header prefix")
103 set(PKGCONFIG_INSTALL_PREFIX "lib${LIB_SUFFIX}/pkgconfig/" CACHE STRING "Base directory for pkgconfig files")
104 if(NOT MSVC)
105   CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/bullet3.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/bullet3.pc @ONLY)
106 install(
107   FILES
108   ${CMAKE_CURRENT_BINARY_DIR}/bullet3.pc
109   DESTINATION
110   ${PKGCONFIG_INSTALL_PREFIX})
111 endif(NOT MSVC)
112
113 install(
114     TARGETS bullet3
115     DESTINATION ${LIB_DIR}
116     EXPORT Bullet3Targets
117 )
118
119 if(BULLET3_BUILD_SHARED AND MSVC)
120     install(FILES $<TARGET_PDB_FILE:bullet3> DESTINATION lib)
121 endif()
122
123 install(FILES
124     "${bullet_SOURCE_DIR}/src/btBulletCollisionCommon.h"
125     "${bullet_SOURCE_DIR}/src/btBulletDynamicsCommon.h"
126     DESTINATION "include/bullet"
127 )
128 foreach(SUB ${BULLET_SUBMODULES})
129     install(
130         DIRECTORY "${bullet_SOURCE_DIR}/src/${SUB}"
131         DESTINATION "include/bullet"
132         FILES_MATCHING PATTERN "*.h"
133     )
134 endforeach()