887b2a56fcc1c9d0f75ce226feb40ecde9960745
[platform/core/uifw/dali-toolkit.git] / build / tizen / dali-scene-loader / CMakeLists.txt
1 cmake_minimum_required(VERSION 2.6)
2 set(name "dali2-scene-loader")
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_SCENE_LOADER_VERSION ${${name}_VERSION} )
12
13 if(CMAKE_BUILD_TYPE MATCHES Debug)
14         add_definitions("-DDEBUG_ENABLED")
15 endif()
16
17 foreach(flag ${PKGS_CFLAGS})
18         set(extra_flags "${extra_flags} ${flag}")
19 endforeach(flag)
20
21 set(prj_cxx_std c++17)
22 if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
23         set(extra_flags "${extra_flags} -fPIC -std=${prj_cxx_std}")
24 elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
25         set(extra_flags "${extra_flags} -fPIC -std=${prj_cxx_std}")
26 elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
27         set(extra_flags "${extra_flags} /std:${prj_cxx_std} /vmg /D_USE_MATH_DEFINES /D_CRT_SECURE_NO_WARNINGS /MP /GS /Oi /GL /EHsc")
28 endif()
29
30 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${extra_flags}")
31
32 set(prefix ${CMAKE_INSTALL_PREFIX})
33
34 set(repo_root_dir "${CMAKE_CURRENT_LIST_DIR}/../../../")
35 set(scene_loader_dir "${repo_root_dir}/dali-scene-loader")
36
37 option(ENABLE_PKG_CONFIGURE "Use pkgconfig" ON)
38 option(ENABLE_COVERAGE "Coverage" OFF)
39
40 IF( ENABLE_COVERAGE OR "$ENV{CXXFLAGS}" MATCHES --coverage )
41   ADD_COMPILE_OPTIONS( --coverage )
42   SET(ENABLE_COVERAGE ON)
43   SET(COVERAGE --coverage)
44 ENDIF()
45
46 if (ENABLE_PKG_CONFIGURE)
47         find_package(PkgConfig REQUIRED)
48
49         pkg_check_modules(DALICORE REQUIRED dali2-core)
50         pkg_check_modules(DALIADAPTOR REQUIRED dali2-adaptor)
51
52         # Configure the pkg-config file
53         # Requires the following variables to be setup:
54         # @PREFIX@ @EXEC_PREFIX@ @DALI_VERSION@ @LIB_DIR@ @DEV_INCLUDE_PATH@
55         set( LIB_DIR $ENV{libdir} )
56         if( NOT LIB_DIR )
57                 set( LIB_DIR ${CMAKE_INSTALL_LIBDIR} )
58         endif()
59         if( NOT LIB_DIR )
60                 set( LIB_DIR ${prefix}/lib )
61         endif()
62
63         set(PREFIX ${prefix})
64         set(EXEC_PREFIX ${CMAKE_INSTALL_PREFIX})
65         set(DEV_INCLUDE_PATH ${repo_root_dir})
66
67         set(core_pkg_cfg_file dali2-scene-loader.pc)
68         configure_file(${CMAKE_CURRENT_LIST_DIR}/${core_pkg_cfg_file}.in ${core_pkg_cfg_file} @ONLY)
69 endif()
70
71 if (ENABLE_COVERAGE)
72         find_program(lcov_bin "lcov")
73         if (${lcov_bin})
74                 set(cov_dir ".cov")
75                 set(cov_output_dir "doc/coverage")
76
77                 execute_process(COMMAND bash -c "${lcov_bin} --version | cut -d' ' -f4" OUTPUT_VARIABLE lcov_version)
78                 string(REPLACE "." ";" lcov_vlist ${lcov_version})
79                 if (NOT $<VERSION_LESS:${lcov_version},"1.10"> )
80                         set(lcov_opts --rc lcov_branch_coverage=1)
81                 endif()
82
83                 add_custom_target(${prefix}rename_cov_data ./rename-cov-data)
84
85                 add_custom_target(${prefix}cov_data
86                         ${lcov_bin} ${lcov_opts} --base-directory . --directory . -c -o dali.info
87                         COMMAND ${lcov_bin} ${lcov_opts} --remove dali.info \"*/dali-env/*\" \"/usr/include/*\" \"/usr/local/include/*\" \"*/dali-env/*\" \"*/dali-scene-loader/third-party/*\" -o dali.info
88                 )
89
90                 add_custom_target(${prefix}coverage genhtml ${lcov_opts} -o ${cov_output_dir} dali.info)
91
92                 add_custom_target(${prefix}reset_coverage @${lcov_bin} -\ --direwctory `pwd`)
93
94                 add_custom_target(${prefix}distclean @echo cleaning for source distribution)
95                 add_custom_command(
96                         DEPENDS ${prefix}clean
97                         COMMENT "distribution clean"
98                         COMMAND find
99                         ARGS .
100                         -not -name config.cmake -and \(
101                         -name tester.c -or
102                         -name Testing -or
103                         -name CMakeFiles -or
104                         -name doc -or
105                         -name cmake.depends -or
106                         -name cmake.check_depends -or
107                         -name CMakeCache.txt -or
108                         -name cmake.check_cache -or
109                         -name *.cmake -or
110                         -name Makefile -or
111                         -name core -or
112                         -name core.* -or
113                         -name gmon.out -or
114                         -name install_manifest.txt -or
115                         -name *.pc -or
116                         -name *.gcov -or
117                         -name *.gcno -or
118                         -name *.gcda -or
119                         -name *~ -or
120                         -name libdali*.so* \)
121                         | grep -v TC | xargs rm -rf
122                         TARGET  ${DALI_TOOLKIT_PREFIX}distclean
123                         VERBATIM
124                 )
125         endif()
126 endif()
127
128 set(scene_loader_src_files "")
129 include("${scene_loader_dir}/internal/file.list")
130 include("${scene_loader_dir}/public-api/file.list")
131
132 set(prefix_include_dir "${prefix}/include")
133 include_directories(${repo_root_dir}
134         ${prefix_include_dir}
135 )
136
137 add_library(${name} SHARED ${scene_loader_src_files})
138
139 target_link_libraries(${name} ${DALICORE_LDFLAGS} ${DALIADAPTOR_LDFLAGS}
140         dali2-toolkit
141         ${COVERAGE})
142
143 if( ANDROID )
144         target_link_libraries(${name} log)
145 endif()
146
147 install(TARGETS ${name} DESTINATION ${prefix}/lib)
148
149 file(GLOB scene_loader_include_files ${scene_loader_public_api_dir})
150 install(DIRECTORY ${scene_loader_include_files}
151         DESTINATION "${prefix_include_dir}/dali-scene-loader"
152         FILES_MATCHING PATTERN "*.h"
153 )
154
155 if (ENABLE_PKG_CONFIGURE)
156         install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${core_pkg_cfg_file}
157                 DESTINATION ${LIB_DIR}/pkgconfig
158         )
159 endif()