1 CMAKE_MINIMUM_REQUIRED(VERSION 3.8.2)
2 set(name "dali2-physics")
6 set(${name}_VERSION_MAJOR 1)
7 set(${name}_VERSION_MINOR 0)
8 set(${name}_VERSION_PATCH 0)
9 set(${name}_VERSION ${${name}_VERSION_MAJOR}.${${name}_VERSION_MINOR}.${${name}_VERSION_PATCH} )
11 SET(DALI_PHYSICS_VERSION ${${name}_VERSION} )
13 if(CMAKE_BUILD_TYPE MATCHES Debug)
14 add_definitions("-DDEBUG_ENABLED")
17 add_definitions("-DBUILDING_DALI_PHYSICS")
19 foreach(flag ${PKGS_CFLAGS})
20 set(extra_flags "${extra_flags} ${flag}")
23 set(prj_cxx_std c++17)
24 if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
25 set(extra_flags "${extra_flags} -fPIC -std=${prj_cxx_std}")
26 elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
27 set(extra_flags "${extra_flags} -fPIC -std=${prj_cxx_std}")
28 elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
29 set(extra_flags "${extra_flags} /std:${prj_cxx_std} /vmg /D_USE_MATH_DEFINES /D_CRT_SECURE_NO_WARNINGS /MP /GS /Oi /GL /EHsc")
32 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${extra_flags}")
34 set(prefix ${CMAKE_INSTALL_PREFIX})
36 set(repo_root_dir "${CMAKE_CURRENT_LIST_DIR}/../../..")
37 set(physics_dir "${repo_root_dir}/dali-physics")
39 option(ENABLE_PKG_CONFIGURE "Use pkgconfig" ON)
40 option(ENABLE_COVERAGE "Coverage" OFF)
42 if (ENABLE_PKG_CONFIGURE)
43 find_package(PkgConfig REQUIRED)
45 pkg_check_modules(DALICORE REQUIRED dali2-core)
46 pkg_check_modules(DALIADAPTOR REQUIRED dali2-adaptor)
48 # Configure the pkg-config file
49 # Requires the following variables to be setup:
50 # @PREFIX@ @EXEC_PREFIX@ @DALI_VERSION@ @LIB_DIR@ @DEV_INCLUDE_PATH@
51 set( LIB_DIR $ENV{libdir} )
53 set( LIB_DIR ${CMAKE_INSTALL_LIBDIR} )
56 set( LIB_DIR ${prefix}/lib )
60 set(EXEC_PREFIX ${CMAKE_INSTALL_PREFIX})
61 set(DEV_INCLUDE_PATH ${INCLUDE_DIR})
63 set(core_pkg_cfg_file_2d dali2-physics-2d.pc)
64 configure_file(${CMAKE_CURRENT_LIST_DIR}/${core_pkg_cfg_file_2d}.in ${core_pkg_cfg_file_2d} @ONLY)
66 set(core_pkg_cfg_file_3d dali2-physics-3d.pc)
67 configure_file(${CMAKE_CURRENT_LIST_DIR}/${core_pkg_cfg_file_3d}.in ${core_pkg_cfg_file_3d} @ONLY)
70 add_subdirectory("${physics_dir}/third-party/chipmunk2d" chipmunk2d)
71 add_subdirectory("${physics_dir}/third-party/bullet3" bullet3)
73 set(physics_src_files "")
74 include(${physics_dir}/public-api/file.list)
75 include(${physics_dir}/integration-api/file.list)
77 include(${physics_dir}/internal/file.list)
79 set(prefix_include_dir "${prefix}/include")
81 include_directories(BEFORE
83 "${repo_root_dir}/dali-physics/third-party/bullet3/src"
84 "${repo_root_dir}/dali-physics/third-party/chipmunk2d/include"
87 include_directories(AFTER "${prefix_include_dir}")
89 MESSAGE(STATUS "2D sources: ${physics2d_src_files}")
90 MESSAGE(STATUS "3D sources: ${physics3d_src_files}")
92 ADD_LIBRARY("${name}-2d" SHARED ${physics2d_src_files} )
93 TARGET_LINK_LIBRARIES("${name}-2d" ${DALICORE_LDFLAGS}
97 TARGET_COMPILE_OPTIONS("${name}-2d" PUBLIC "-I${repo_root_dir}/dali-physics/third-party/chipmunk2d/include")
99 ADD_LIBRARY("${name}-3d" SHARED ${physics3d_src_files} )
100 TARGET_LINK_LIBRARIES("${name}-3d" ${DALICORE_LDFLAGS}
104 TARGET_COMPILE_OPTIONS("${name}-3d" PUBLIC "-I${repo_root_dir}/dali-physics/third-party/bullet3/src")
106 IF (ENABLE_PKG_CONFIGURE)
108 ${CMAKE_CURRENT_BINARY_DIR}/${core_pkg_cfg_file_2d}
109 ${CMAKE_CURRENT_BINARY_DIR}/${core_pkg_cfg_file_3d}
110 DESTINATION ${LIB_DIR}/pkgconfig )
114 IF( INSTALL_CMAKE_MODULES )
115 MESSAGE(STATUS "Installing cmake modules & libs")
116 SET_TARGET_PROPERTIES( ${name}-2d
118 VERSION ${DALI_PHYSICS_VERSION}
119 SOVERSION ${${name}_VERSION_MAJOR}
123 SET_TARGET_PROPERTIES( ${name}-3d
125 VERSION ${DALI_PHYSICS_VERSION}
126 SOVERSION ${${name}_VERSION_MAJOR}
131 SET( BIN_DIR "${BIN_DIR}/debug" )
132 SET( LIB_DIR "${LIB_DIR}/debug" )
136 INSTALL( TARGETS ${name}-2d
137 EXPORT ${name}-2d-targets
138 LIBRARY DESTINATION ${LIB_DIR}
139 ARCHIVE DESTINATION ${LIB_DIR}
140 RUNTIME DESTINATION ${BIN_DIR}
143 INSTALL( TARGETS ${name}-3d
144 EXPORT ${name}-3d-targets
145 LIBRARY DESTINATION ${LIB_DIR}
146 ARCHIVE DESTINATION ${LIB_DIR}
147 RUNTIME DESTINATION ${BIN_DIR}
150 # Install the cmake modules.
152 EXPORT ${name}-2d-targets
153 NAMESPACE ${name}-2d::
154 FILE ${name}-2d-targets.cmake
155 DESTINATION share/${name}-2d
159 EXPORT ${name}-3d-targets
160 NAMESPACE ${name}-3d::
161 FILE ${name}-3d-targets.cmake
162 DESTINATION share/${name}-3d
165 FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${name}-2d-config.cmake "
166 include(CMakeFindDependencyMacro)
167 include(\${CMAKE_CURRENT_LIST_DIR}/${name}-2d-targets.cmake)
169 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${name}-2d-config.cmake DESTINATION share/${name}-2d)
171 FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${name}-3d-config.cmake "
172 include(CMakeFindDependencyMacro)
173 include(\${CMAKE_CURRENT_LIST_DIR}/${name}-3d-targets.cmake)
175 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${name}-3d-config.cmake DESTINATION share/${name}-3d)
178 MESSAGE(STATUS "Installing libs")
179 INSTALL( TARGETS ${name}-2d DESTINATION ${LIB_DIR} )
180 INSTALL( TARGETS ${name}-3d DESTINATION ${LIB_DIR} )
185 install( FILES ${physics_public_api_header_files}
186 DESTINATION "${INCLUDE_DIR}/dali-physics/public-api"
188 install( FILES ${physics_integration_api_header_files}
189 DESTINATION "${INCLUDE_DIR}/dali-physics/integration-api"
192 install( FILES ${physics_dir}/dali-physics.h
193 DESTINATION "${INCLUDE_DIR}/dali-physics"