[dali_2.3.21] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / build / tizen / dali-scene3d / CMakeLists.txt
1 CMAKE_MINIMUM_REQUIRED(VERSION 3.8.2)
2 set(name "dali2-scene3d")
3
4 project(${name} CXX)
5
6 set(${name}_VERSION_MAJOR 2)
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_SCENE3D_VERSION ${${name}_VERSION} )
12
13 if(CMAKE_BUILD_TYPE MATCHES Debug)
14         add_definitions("-DDEBUG_ENABLED")
15 endif()
16
17 ADD_DEFINITIONS( "-DBUILDING_DALI_SCENE3D" )
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(scene3d_dir "${repo_root_dir}/dali-scene3d")
38
39 option(ENABLE_PKG_CONFIGURE "Use pkgconfig" ON)
40 option(ENABLE_COVERAGE "Coverage" OFF)
41
42 IF( ENABLE_COVERAGE OR "$ENV{CXXFLAGS}" MATCHES --coverage )
43   ADD_COMPILE_OPTIONS( --coverage )
44   SET(ENABLE_COVERAGE ON)
45   SET(COVERAGE --coverage)
46 ENDIF()
47
48 if (ENABLE_PKG_CONFIGURE)
49         find_package(PkgConfig REQUIRED)
50
51         pkg_check_modules(DALICORE REQUIRED dali2-core)
52         pkg_check_modules(DALIADAPTOR REQUIRED dali2-adaptor)
53
54         # Configure the pkg-config file
55         # Requires the following variables to be setup:
56         # @PREFIX@ @EXEC_PREFIX@ @DALI_VERSION@ @LIB_DIR@ @DEV_INCLUDE_PATH@
57         set( LIB_DIR $ENV{libdir} )
58         if( NOT LIB_DIR )
59                 set( LIB_DIR ${CMAKE_INSTALL_LIBDIR} )
60         endif()
61         if( NOT LIB_DIR )
62                 set( LIB_DIR ${prefix}/lib )
63         endif()
64
65         set(PREFIX ${prefix})
66         set(EXEC_PREFIX ${CMAKE_INSTALL_PREFIX})
67         set(DEV_INCLUDE_PATH ${INCLUDE_DIR})
68
69         set(core_pkg_cfg_file dali2-scene3d.pc)
70         configure_file(${CMAKE_CURRENT_LIST_DIR}/${core_pkg_cfg_file}.in ${core_pkg_cfg_file} @ONLY)
71 endif()
72
73 set(scene3d_src_files "")
74 include("${scene3d_dir}/internal/file.list")
75 include("${scene3d_dir}/public-api/file.list")
76
77 set(prefix_include_dir "${prefix}/include")
78 include_directories(${repo_root_dir}
79         ${prefix_include_dir}
80 )
81
82 # Generate source files for shaders
83 SET(SHADER_SOURCE_DIR "${scene3d_dir}/internal/graphics/shaders/")
84 SET(SHADER_GENERATED_DIR "${scene3d_dir}/internal/graphics/generated")
85
86 SET(GENERATED_SHADER_DIR ${scene3d_dir}/internal/graphics/)
87 SET_PROPERTY(DIRECTORY PROPERTY ADDITIONAL_MAKE_CLEAN_FILES
88              "${GENERATED_SHADER_DIR}/generated/"
89              "${GENERATED_SHADER_DIR}/builtin-shader-extern-gen.h")
90
91 IF( WIN32)
92   # When Using VCPKG, the default is always set to Debug if CMAKE_BUILD_TYPE is not set
93   IF( NOT CMAKE_BUILD_TYPE )
94     SET(SHADER_GENERATOR_BINARY ${CMAKE_CURRENT_BINARY_DIR}/../Debug/${SHADER_GENERATOR_NAME})
95   ELSE()
96     SET(SHADER_GENERATOR_BINARY ${CMAKE_CURRENT_BINARY_DIR}/../${CMAKE_BUILD_TYPE}/${SHADER_GENERATOR_NAME})
97   ENDIF()
98 ELSE()
99   SET(SHADER_GENERATOR_BINARY ${CMAKE_CURRENT_BINARY_DIR}/../${SHADER_GENERATOR_NAME})
100 ENDIF()
101
102 FILE(GLOB SHADERS_SRC "${SHADER_SOURCE_DIR}/*.vert" "${SHADER_SOURCE_DIR}/*.frag")
103 SET( BUILT_IN_SHADER_GEN_CPP "${GENERATED_SHADER_DIR}/generated/builtin-shader-gen.cpp")
104 ADD_CUSTOM_COMMAND(OUTPUT ${BUILT_IN_SHADER_GEN_CPP}
105                    DEPENDS ${SHADER_GENERATOR_BINARY} ${SHADERS_SRC}
106                    COMMAND ${SHADER_GENERATOR_BINARY} ${SHADER_SOURCE_DIR} ${SHADER_GENERATED_DIR})
107
108 SET( scene3d_src_files ${scene3d_src_files} ${BUILT_IN_SHADER_GEN_CPP} )
109
110 add_library(${name} SHARED ${scene3d_src_files})
111
112 target_link_libraries(${name} ${DALICORE_LDFLAGS} ${DALIADAPTOR_LDFLAGS}
113         dali2-toolkit
114         ${COVERAGE})
115
116 if( ANDROID )
117         target_link_libraries(${name} log)
118 endif()
119
120 IF( INSTALL_CMAKE_MODULES )
121         SET_TARGET_PROPERTIES( ${name}
122                 PROPERTIES
123                 VERSION ${DALI_SCENE3D_VERSION}
124                 SOVERSION ${${name}_VERSION_MAJOR}
125                 CLEAN_DIRECT_OUPUT 1
126         )
127
128         IF( ENABLE_DEBUG )
129                 SET( BIN_DIR "${BIN_DIR}/debug" )
130                 SET( LIB_DIR "${LIB_DIR}/debug" )
131         ENDIF()
132
133         # Install the library files.
134         INSTALL( TARGETS ${name}
135                 EXPORT ${name}-targets
136                 LIBRARY DESTINATION ${LIB_DIR}
137                 ARCHIVE DESTINATION ${LIB_DIR}
138                 RUNTIME DESTINATION ${BIN_DIR}
139         )
140
141         # Install the cmake modules.
142         INSTALL(
143                 EXPORT ${name}-targets
144                 NAMESPACE ${name}::
145                 FILE ${name}-targets.cmake
146                 DESTINATION share/${name}
147         )
148
149         FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${name}-config.cmake "
150                 include(CMakeFindDependencyMacro)
151                 include(\${CMAKE_CURRENT_LIST_DIR}/${name}-targets.cmake)
152         ")
153         install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${name}-config.cmake DESTINATION share/${name})
154
155         # Install the pdb file.
156         IF( ENABLE_DEBUG AND WIN32 )
157                 install( FILES ${CMAKE_CURRENT_BINARY_DIR}/Debug/${name}.pdb DESTINATION ${BIN_DIR} )
158         ENDIF()
159 ELSE()
160         # Install the library so file and symlinks
161         INSTALL( TARGETS ${name} DESTINATION ${LIB_DIR} )
162 ENDIF()
163
164 file(GLOB scene3d_include_files ${scene3d_public_api_dir})
165
166 install(DIRECTORY ${scene3d_include_files}
167         DESTINATION "${INCLUDE_DIR}/dali-scene3d"
168         FILES_MATCHING PATTERN "*.h"
169 )
170
171 # Install dali-scene3d.h
172 INSTALL( FILES ${scene3d_dir}/dali-scene3d.h DESTINATION ${INCLUDE_DIR}/dali-scene3d )
173
174 if (ENABLE_PKG_CONFIGURE)
175         install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${core_pkg_cfg_file}
176                 DESTINATION ${LIB_DIR}/pkgconfig
177         )
178 endif()