5bf2ff8eba6392c89f6a373f78e8d18cc6359c51
[platform/core/uifw/dali-toolkit.git] / build / tizen / dali-physics / CMakeLists.txt
1 CMAKE_MINIMUM_REQUIRED(VERSION 3.8.2)
2 set(name "dali2-physics")
3
4 project(${name} CXX)
5
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} )
10
11 SET(DALI_PHYSICS_VERSION ${${name}_VERSION} )
12
13 if(CMAKE_BUILD_TYPE MATCHES Debug)
14     add_definitions("-DDEBUG_ENABLED")
15 endif()
16
17 add_definitions("-DBUILDING_DALI_PHYSICS")
18
19 foreach(flag ${PKGS_CFLAGS})
20     set(extra_flags "${extra_flags} ${flag}")
21 endforeach(flag)
22
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")
30 endif()
31
32 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${extra_flags}")
33
34 set(prefix ${CMAKE_INSTALL_PREFIX})
35
36 set(repo_root_dir "${CMAKE_CURRENT_LIST_DIR}/../../../")
37 set(physics_dir "${repo_root_dir}/dali-physics")
38
39 option(ENABLE_PKG_CONFIGURE "Use pkgconfig" ON)
40 option(ENABLE_COVERAGE "Coverage" OFF)
41
42 if (ENABLE_PKG_CONFIGURE)
43     find_package(PkgConfig REQUIRED)
44
45     pkg_check_modules(DALICORE REQUIRED dali2-core)
46     pkg_check_modules(DALIADAPTOR REQUIRED dali2-adaptor)
47
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} )
52     if( NOT LIB_DIR )
53         set( LIB_DIR ${CMAKE_INSTALL_LIBDIR} )
54     endif()
55     if( NOT LIB_DIR )
56         set( LIB_DIR ${prefix}/lib )
57     endif()
58
59     set(PREFIX ${prefix})
60     set(EXEC_PREFIX ${CMAKE_INSTALL_PREFIX})
61     set(DEV_INCLUDE_PATH ${INCLUDE_DIR})
62
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)
65
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)
68 endif()
69
70 add_subdirectory("${physics_dir}/third-party/chipmunk2d" chipmunk2d)
71 add_subdirectory("${physics_dir}/third-party/bullet3" bullet3)
72
73 # TODO: Split into 2 separate targets
74 set(physics3d_src_files "")
75 include("${physics_dir}/public-api/file.list")
76 include("${physics_dir}/internal/file.list")
77
78 set(prefix_include_dir "${prefix}/include")
79 include_directories(${repo_root_dir}
80   "${prefix_include_dir}"
81   "${repo_root_dir}/dali-physics/third-party/bullet3/src"
82 )
83
84 MESSAGE( STATUS "SOURCES: " ${physics3d_src_files})
85
86 ADD_LIBRARY("${name}-3d" SHARED ${physics3d_src_files} )
87 TARGET_LINK_LIBRARIES("${name}-3d" ${DALICORE_LDFLAGS}
88   dali2-toolkit
89   bullet3
90   ${COVERAGE})
91
92 IF (ENABLE_PKG_CONFIGURE)
93   INSTALL(FILES
94     ${CMAKE_CURRENT_BINARY_DIR}/${core_pkg_cfg_file_2d}
95     ${CMAKE_CURRENT_BINARY_DIR}/${core_pkg_cfg_file_3d}
96     DESTINATION ${LIB_DIR}/pkgconfig )
97 ENDIF()
98
99
100 IF( INSTALL_CMAKE_MODULES )
101   MESSAGE(STATUS "Installing cmake modules & libs")
102   SET_TARGET_PROPERTIES( ${name}-3d
103     PROPERTIES
104     VERSION ${DALI_PHYSICS_VERSION}
105     SOVERSION ${${name}_VERSION_MAJOR}
106     CLEAN_DIRECT_OUPUT 1
107     )
108
109   IF( ENABLE_DEBUG )
110     SET( BIN_DIR "${BIN_DIR}/debug" )
111     SET( LIB_DIR "${LIB_DIR}/debug" )
112   ENDIF()
113
114   # Install library
115   INSTALL( TARGETS ${name}-3d
116     EXPORT ${name}-3d-targets
117     LIBRARY DESTINATION ${LIB_DIR}
118     ARCHIVE DESTINATION ${LIB_DIR}
119     RUNTIME DESTINATION ${BIN_DIR}
120   )
121
122   # Install the cmake modules.
123   INSTALL(
124     EXPORT ${name}-3d-targets
125     NAMESPACE ${name}-3d::
126     FILE ${name}-3d-targets.cmake
127     DESTINATION share/${name}-3d
128   )
129
130   FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${name}-2d-config.cmake "
131     include(CMakeFindDependencyMacro)
132     include(\${CMAKE_CURRENT_LIST_DIR}/${name}-2d-targets.cmake)
133   ")
134   INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${name}-2d-config.cmake DESTINATION share/${name}-2d)
135
136   FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${name}-3d-config.cmake "
137     include(CMakeFindDependencyMacro)
138     include(\${CMAKE_CURRENT_LIST_DIR}/${name}-3d-targets.cmake)
139   ")
140   INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${name}-3d-config.cmake DESTINATION share/${name}-3d)
141
142 ELSE()
143   MESSAGE(STATUS "Installing libs")
144   INSTALL( TARGETS ${name}-3d DESTINATION ${LIB_DIR} )
145
146 ENDIF()
147
148 # Install headers
149 install( FILES ${physics3d_public_api_header_files}
150   DESTINATION "${INCLUDE_DIR}/dali-physics/public-api"
151   )
152
153 install( FILES ${physics_dir}/dali-physics.h
154   DESTINATION "${INCLUDE_DIR}/dali-physics"
155   )