[dali_2.3.24] Merge branch 'devel/master'
[platform/core/uifw/dali-demo.git] / build / tizen / CMakeLists.txt
1 CMAKE_MINIMUM_REQUIRED(VERSION 3.8.2)
2
3 SET(CMAKE_C_STANDARD 99)
4 SET(CMAKE_CXX_STANDARD 17)
5 PROJECT(dali-demo C CXX)
6
7 SET(dali-demo_VERSION_MAJOR 1)
8 SET(dali-demo_VERSION_MINOR 0)
9
10 SET(GCC_COMPILER_VERSION_REQUIRED "6")
11 if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
12   if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS GCC_COMPILER_VERSION_REQUIRED)
13     message(FATAL_ERROR "The GCC required compiler version is " ${GCC_COMPILER_VERSION_REQUIRED})
14   endif()
15 endif()
16
17 # Define options to CMake
18 OPTION(ENABLE_EXPORTALL          "Enable Export all symbols" OFF)
19 OPTION(ENABLE_DEBUG              "Enable Debug" OFF)
20 OPTION(ENABLE_TRACE              "Enable Trace" OFF)
21 OPTION(ENABLE_PKG_CONFIGURE      "Use pkgconfig" ON)
22 OPTION(INTERNATIONALIZATION      "Internationalization demo string names" ON)
23
24 SET(ROOT_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../..)
25 SET(DEMO_SHARED ${CMAKE_CURRENT_SOURCE_DIR}/../../shared)
26
27 SET(PREFIX ${CMAKE_INSTALL_PREFIX})
28
29 IF (APPLE)
30   SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
31 ENDIF()
32
33 IF(DEFINED DALI_APP_DIR)
34   SET(BINDIR ${DALI_APP_DIR})
35 ELSE()
36   SET(BINDIR ${PREFIX}/bin)
37 ENDIF()
38
39 IF(DEFINED DALI_APP_RES_DIR)
40   SET(APP_DATA_RES_DIR ${DALI_APP_RES_DIR})
41 ELSE()
42   SET(APP_DATA_RES_DIR ${PREFIX}/share/com.samsung.dali-demo/res)
43 ENDIF()
44
45 MESSAGE( STATUS "CMAKE_BUILD_TYPE: " ${CMAKE_BUILD_TYPE} )
46
47 IF(CMAKE_BUILD_TYPE MATCHES Debug)
48   SET( ENABLE_DEBUG ON )
49 ENDIF()
50
51 IF( ENABLE_DEBUG )
52   MESSAGE( STATUS "CMAKE_BUILD_TYPE: " Debug )
53   SET( ENABLE_EXPORTALL ON )
54 ELSE()
55   MESSAGE( STATUS "CMAKE_BUILD_TYPE: " Release )
56 ENDIF()
57
58 SET(RESOURCE_DIR ${ROOT_SRC_DIR}/resources)
59 SET(LOCAL_IMAGES_DIR ${RESOURCE_DIR}/images)
60 SET(LOCAL_GAME_DIR ${RESOURCE_DIR}/game)
61 SET(LOCAL_VIDEOS_DIR ${RESOURCE_DIR}/videos)
62 SET(LOCAL_MODELS_DIR ${RESOURCE_DIR}/models)
63 SET(LOCAL_SCRIPTS_DIR ${RESOURCE_DIR}/scripts)
64 SET(LOCAL_SHADERS_DIR ${RESOURCE_DIR}/shaders)
65 IF(NOT DEFINED LOCAL_STYLE_DIR)
66   SET(LOCAL_STYLE_DIR ${RESOURCE_DIR}/style)
67 ENDIF()
68
69 IF(ANDROID)
70   SET(LOCAL_STYLE_ANDROID_DIR ${RESOURCE_DIR}/style/android)
71 ENDIF()
72
73 SET(IMAGES_DIR ${APP_DATA_RES_DIR}/images/)
74 SET(GAME_DIR ${APP_DATA_RES_DIR}/game/)
75 SET(VIDEOS_DIR ${APP_DATA_RES_DIR}/videos/)
76 SET(MODELS_DIR ${APP_DATA_RES_DIR}/models/)
77 SET(SCRIPTS_DIR ${APP_DATA_RES_DIR}/scripts/)
78 SET(SHADERS_DIR ${APP_DATA_RES_DIR}/shaders/)
79 SET(STYLE_DIR ${APP_DATA_RES_DIR}/style/)
80
81 IF(NOT DEFINED LOCALE_DIR)
82    SET(LOCALE_DIR ${PREFIX}/share/locale)
83 ENDIF()
84
85 IF(DEFINED DALI_DEMO_RES_DIR)
86   SET(DEMO_IMAGE_DIR \\"${DALI_DEMO_RES_DIR}/images/\\")
87   SET(DEMO_GAME_DIR \\"${DALI_DEMO_RES_DIR}/game/\\")
88   SET(DEMO_VIDEO_DIR \\"${DALI_DEMO_RES_DIR}/videos/\\")
89   SET(DEMO_MODEL_DIR \\"${DALI_DEMO_RES_DIR}/models/\\")
90   SET(DEMO_SCRIPT_DIR \\"${DALI_DEMO_RES_DIR}/scripts/\\")
91   SET(DEMO_SHADER_DIR \\"${DALI_DEMO_RES_DIR}/shaders/\\")
92   SET(DEMO_STYLE_DIR \\"${DALI_DEMO_RES_DIR}/style/\\")
93   SET(DEMO_THEME_PATH \\"${DALI_DEMO_RES_DIR}/style/demo-theme.json\\")
94   SET(DEMO_LOCALE_DIR \\"${DALI_DEMO_RES_DIR}/locale/\\")
95   SET(DEMO_STYLE_IMAGE_DIR \\"${DALI_DEMO_RES_DIR}/style/images\\")
96 ELSE()
97   SET(DEMO_GAME_DIR \\"${GAME_DIR}\\")
98   SET(DEMO_IMAGE_DIR \\"${IMAGES_DIR}\\")
99   SET(DEMO_VIDEO_DIR \\"${VIDEOS_DIR}\\")
100   SET(DEMO_MODEL_DIR \\"${MODELS_DIR}\\")
101   SET(DEMO_SCRIPT_DIR \\"${SCRIPTS_DIR}\\")
102   SET(DEMO_SHADER_DIR \\"${SHADERS_DIR}\\")
103   SET(DEMO_STYLE_DIR \\"${STYLE_DIR}\\")
104   SET(DEMO_THEME_PATH \\"${STYLE_DIR}demo-theme.json\\")
105   SET(DEMO_LOCALE_DIR \\"${LOCALE_DIR}\\")
106   SET(DEMO_STYLE_IMAGE_DIR ${STYLE_DIR}/images)
107 ENDIF()
108
109 SET(DEMO_EXAMPLE_BIN \\"${BINDIR}/\\")
110 SET(DEMO_LANG \\"${LANG}\\")
111
112 #For run-time read/write directory
113 IF(ANDROID)
114   SET(DEMO_DATA_RW_DIR \\"/data/data/${DALI_DEMO_APP_ID}/\\")
115   SET(DEMO_DATA_PUBLIC_RW_DIR \\"/sdcard/\\")
116 ELSE()
117   SET(DEMO_DATA_RW_DIR \\"/tmp/\\")
118   SET(DEMO_DATA_PUBLIC_RW_DIR \\"/tmp/\\")
119 ENDIF()
120
121 # Gets all sub-directories of SRC_DIR into the list RESULT, which will first be reset to empty.
122 MACRO(GET_TREE RESULT SRC_DIR)
123         FILE(GLOB_RECURSE LOCAL_LIST RELATIVE ${SRC_DIR} "${SRC_DIR}/*")
124         SET(${RESULT} "/") # N.B. we need the contents of the root directory as well, and we can't have an empty string in a list in CMake.
125         FOREACH(LOCAL_ENTRY ${LOCAL_LIST})
126                 GET_FILENAME_COMPONENT(DIR ${LOCAL_ENTRY} DIRECTORY)
127                 LIST(APPEND ${RESULT} ${DIR})
128         ENDFOREACH()
129         LIST(REMOVE_DUPLICATES ${RESULT})
130 ENDMACRO()
131
132 # Installs files from each subdirectory of ROOT specified in TREE, matching FILTER, to DESTINATION,
133 # while keeping the structure, up to (excluding) ROOT.
134 MACRO(INSTALL_TREE_FILES ROOT TREE FILTER DESTINATION)
135         FOREACH(LOCAL_DIR ${TREE})
136                 SET(SRC_DIR "${ROOT}/${LOCAL_DIR}")
137                 FILE(GLOB FILES
138                         LIST_DIRECTORIES false
139                         RELATIVE ${SRC_DIR} "${SRC_DIR}/${FILTER}")
140                 FOREACH(LOCAL_FILE ${FILES})
141                         INSTALL(FILES "${SRC_DIR}/${LOCAL_FILE}" DESTINATION "${DESTINATION}/${LOCAL_DIR}")
142                 ENDFOREACH()
143         ENDFOREACH()
144 ENDMACRO()
145
146 GET_TREE(LOCAL_IMAGES_TREE "${LOCAL_IMAGES_DIR}")
147
148 # If we try to build specific samples, we don't install some heavy things.
149 # TODO : Currently, we did hard-coding.
150 IF( NOT BUILD_EXAMPLE_NAME )
151 INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.png" ${IMAGES_DIR})
152 INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.jpg" ${IMAGES_DIR})
153 INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.ico" ${IMAGES_DIR})
154 INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.gif" ${IMAGES_DIR})
155 INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.webp" ${IMAGES_DIR})
156 INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.bmp" ${IMAGES_DIR})
157 INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.wbmp" ${IMAGES_DIR})
158 INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.ktx" ${IMAGES_DIR})
159 INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.ktx2" ${IMAGES_DIR})
160 INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.astc" ${IMAGES_DIR})
161 INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.svg" ${IMAGES_DIR})
162 INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.json" ${IMAGES_DIR})
163 ELSE()
164 INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*com.samsung.dali-demo.png" ${IMAGES_DIR})
165 INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*dali-examples.png" ${IMAGES_DIR})
166 INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*dali-tests.png" ${IMAGES_DIR})
167 ENDIF()
168
169 FILE(GLOB LOCAL_SHADERS_LIST RELATIVE "${LOCAL_SHADERS_DIR}" "${LOCAL_SHADERS_DIR}/*")
170 FOREACH(flag ${LOCAL_SHADERS_LIST})
171         INSTALL(FILES ${LOCAL_SHADERS_DIR}/${flag} DESTINATION ${SHADERS_DIR})
172 ENDFOREACH(flag)
173
174 FILE(GLOB LOCAL_SCRIPTS_LIST RELATIVE "${LOCAL_SCRIPTS_DIR}" "${LOCAL_SCRIPTS_DIR}/*.json")
175 FOREACH(flag ${LOCAL_SCRIPTS_LIST})
176         INSTALL(FILES ${LOCAL_SCRIPTS_DIR}/${flag} DESTINATION ${SCRIPTS_DIR})
177 ENDFOREACH(flag)
178
179 # If we try to build specific samples, we don't install some heavy things.
180 IF( NOT BUILD_EXAMPLE_NAME )
181 FILE(GLOB LOCAL_VIDEOS_LIST RELATIVE "${LOCAL_VIDEOS_DIR}" "${LOCAL_VIDEOS_DIR}/*")
182 FOREACH(flag ${LOCAL_VIDEOS_LIST})
183         INSTALL(FILES ${LOCAL_VIDEOS_DIR}/${flag} DESTINATION ${VIDEOS_DIR})
184 ENDFOREACH(flag)
185
186 GET_TREE(LOCAL_MODELS_TREE "${LOCAL_MODELS_DIR}")
187 INSTALL_TREE_FILES(${LOCAL_MODELS_DIR} "${LOCAL_MODELS_TREE}" "*" ${MODELS_DIR})
188
189 FILE(GLOB LOCAL_GAME_LIST RELATIVE "${LOCAL_GAME_DIR}" "${LOCAL_GAME_DIR}/*.*")
190 FOREACH(flag ${LOCAL_GAME_LIST})
191         INSTALL(FILES ${LOCAL_GAME_DIR}/${flag} DESTINATION ${GAME_DIR})
192 ENDFOREACH(flag)
193 ENDIF()
194
195 #Create resources location file
196 CONFIGURE_FILE( resources-location.in ${DEMO_SHARED}/resources-location.cpp )
197
198 MESSAGE("Installing from: ${LOCAL_STYLE_DIR}")
199 FILE(GLOB LOCAL_STYLES_LIST "${LOCAL_STYLE_DIR}/*.json")
200 FOREACH(flag ${LOCAL_STYLES_LIST})
201   INSTALL(FILES ${flag} DESTINATION ${STYLE_DIR})
202 ENDFOREACH(flag)
203 MESSAGE("Installed ${LOCAL_STYLES_LIST} to ${STYLE_DIR}")
204
205 IF(ANDROID)
206 FILE(GLOB LOCAL_STYLES_ANDROID_LIST "${LOCAL_STYLE_ANDROID_DIR}/*.json")
207 FOREACH(flag ${LOCAL_STYLES_ANDROID_LIST})
208   INSTALL(FILES ${flag} DESTINATION ${STYLE_DIR})
209 ENDFOREACH(flag)
210 MESSAGE("Installed ${LOCAL_STYLES_ANDROID_LIST} to ${STYLE_DIR}")
211 ENDIF()
212
213 FILE(GLOB LOCAL_STYLE_IMAGES_LIST "${LOCAL_STYLE_DIR}/images/*.png")
214 FOREACH(flag ${LOCAL_STYLE_IMAGES_LIST})
215   INSTALL(FILES ${flag} DESTINATION ${STYLE_DIR}/images)
216 ENDFOREACH(flag)
217 MESSAGE("Installed style resources ${LOCAL_STYLE_IMAGES_LIST} to ${STYLE_DIR}/images")
218
219 IF( ENABLE_PKG_CONFIGURE )
220   SET(PKG_LIST dali2-core
221                dali2-adaptor
222                dali2-toolkit)
223
224   INCLUDE(FindPkgConfig)
225   pkg_check_modules(REQUIRED_PKGS REQUIRED ${PKG_LIST})
226
227   FOREACH(flag ${REQUIRED_PKGS_CFLAGS})
228         SET(REQUIRED_CFLAGS "${REQUIRED_CFLAGS} ${flag}")
229   ENDFOREACH(flag)
230
231   pkg_check_modules(DALI_SCENE3D dali2-scene3d)
232   IF( DALI_SCENE3D_FOUND )
233     FOREACH(flag ${DALI_SCENE3D_CFLAGS})
234       SET(REQUIRED_CFLAGS "${REQUIRED_CFLAGS} ${flag}")
235     ENDFOREACH(flag)
236
237     SET( REQUIRED_CFLAGS "${REQUIRED_CFLAGS} -DDALI_SCENE3D_AVAILABLE" )
238
239     FOREACH(flag ${DALI_SCENE3D_LDFLAGS})
240       SET(REQUIRED_PKGS_LDFLAGS "${REQUIRED_PKGS_LDFLAGS} ${flag}")
241     ENDFOREACH(flag)
242
243     SET( ENABLE_SCENE3D "ON" )
244   ENDIF()
245
246   pkg_check_modules(DALI_PHYSICS_2D dali2-physics-2d chipmunk2d)
247   IF( DALI_PHYSICS_2D_FOUND )
248     FOREACH(flag ${DALI_PHYSICS_2D_CFLAGS})
249       SET(OPTIONAL_PHYSICS_2D_CFLAGS "${OPTIONAL_PHYSICS_2D_CFLAGS} ${flag}")
250     ENDFOREACH(flag)
251     SET(OPTIONAL_PHYSICS_2D_CFLAGS "${OPTIONAL_PHYSICS_2D_CFLAGS} -DDALI_PHYSICS_2D_AVAILABLE" )
252     STRING(STRIP ${OPTIONAL_PHYSICS_2D_CFLAGS} OPTIONAL_PHYSICS_2D_CFLAGS)
253
254     FOREACH(flag ${DALI_PHYSICS_2D_LDFLAGS})
255       SET(OPTIONAL_PHYSICS_2D_LDFLAGS "${OPTIONAL_PHYSICS_2D_LDFLAGS} ${flag}")
256     ENDFOREACH(flag)
257     STRING(STRIP ${OPTIONAL_PHYSICS_2D_LDFLAGS} OPTIONAL_PHYSICS_2D_LDFLAGS)
258
259     SET( ENABLE_PHYSICS_2D "ON" )
260   ENDIF()
261
262   pkg_check_modules(DALI_PHYSICS_3D dali2-physics-3d bullet3)
263   IF( DALI_PHYSICS_3D_FOUND )
264     FOREACH(flag ${DALI_PHYSICS_3D_CFLAGS})
265       SET(OPTIONAL_PHYSICS_3D_CFLAGS "${OPTIONAL_PHYSICS_3D_CFLAGS} ${flag}")
266     ENDFOREACH(flag)
267
268     SET( OPTIONAL_PHYSICS_3D_CFLAGS "${OPTIONAL_PHYSICS_3D_CFLAGS} -DDALI_PHYSICS_3D_AVAILABLE" )
269     STRING(STRIP ${OPTIONAL_PHYSICS_3D_CFLAGS} OPTIONAL_PHYSICS_3D_CFLAGS)
270
271     FOREACH(flag ${DALI_PHYSICS_3D_LDFLAGS})
272       SET(OPTIONAL_PHYSICS_3D_LDFLAGS "${OPTIONAL_PHYSICS_3D_LDFLAGS} ${flag}")
273     ENDFOREACH(flag)
274     STRING(STRIP ${OPTIONAL_PHYSICS_3D_LDFLAGS} OPTIONAL_PHYSICS_3D_LDFLAGS)
275
276     SET( ENABLE_PHYSICS_3D "ON" )
277   ENDIF()
278
279   # if build as tizen platform, use capi-appfw-app-control
280   IF( TIZEN )
281     pkg_check_modules(CAPI_APPFW_APP_CONTROL capi-appfw-app-control)
282     IF( CAPI_APPFW_APP_CONTROL_FOUND)
283       FOREACH(flag ${CAPI_APPFW_APP_CONTROL_CFLAGS})
284         SET(REQUIRED_CFLAGS "${REQUIRED_CFLAGS} ${flag}")
285       ENDFOREACH(flag)
286       FOREACH(flag ${CAPI_APPFW_APP_CONTROL_LDFLAGS})
287         SET(REQUIRED_PKGS_LDFLAGS "${REQUIRED_PKGS_LDFLAGS} ${flag}")
288       ENDFOREACH(flag)
289     ENDIF()
290   ENDIF()
291 ENDIF()
292
293 SET( VCPKG_INCLUDE_DIR "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include")
294
295 IF( WIN32 OR APPLE ) # WIN32 includes x64 as well according to the cmake doc.
296   IF ( WIN32 )
297     FIND_PACKAGE( pthreads REQUIRED )
298   ENDIF()
299   FIND_PACKAGE( curl REQUIRED )
300   FIND_LIBRARY( EXIF_LIBRARY NAMES libexif )
301
302   FIND_PACKAGE( png REQUIRED )
303   FIND_PACKAGE( gif REQUIRED )
304   FIND_PACKAGE( jpeg REQUIRED )
305   FIND_LIBRARY( TURBO_JPEG_LIBRARY NAMES turbojpeg )
306
307   FIND_PACKAGE( freetype REQUIRED )
308   FIND_PACKAGE( harfbuzz REQUIRED )
309   FIND_LIBRARY( FRIBIDI_LIBRARY NAMES fribidi )
310
311   FIND_PACKAGE( unofficial-angle REQUIRED )
312   FIND_PACKAGE( unofficial-cairo REQUIRED )
313
314   FIND_PACKAGE( WebP REQUIRED )
315
316   IF ( WIN32 )
317     FIND_LIBRARY( GETOPT_LIBRARY NAMES getopt )
318     FIND_PACKAGE( dali-windows-dependencies REQUIRED )
319     FIND_PACKAGE( unofficial-fontconfig REQUIRED )
320   ENDIF()
321
322   FIND_PACKAGE( dali2-core REQUIRED )
323   FIND_PACKAGE( dali2-adaptor REQUIRED )
324   FIND_PACKAGE( dali2-toolkit REQUIRED )
325
326   FIND_PACKAGE( dali2-scene3d )
327
328   FIND_PACKAGE( chipmunk )
329   FIND_PACKAGE( bullet3 )
330   FIND_PACKAGE( dali2-physics-2d )
331   FIND_PACKAGE( dali2-physics-3d )
332
333   # Set up the include dir
334   SET( INCLUDE_DIR $ENV{includedir} )
335   IF( NOT INCLUDE_DIR )
336     SET( INCLUDE_DIR ${CMAKE_INSTALL_INCLUDEDIR} )
337   ENDIF()
338   IF( NOT INCLUDE_DIR )
339     SET( INCLUDE_DIR ${PREFIX}/include )
340   ENDIF()
341
342   SET( LIB_DIR $ENV{libdir} )
343   IF( NOT LIB_DIR )
344     SET( LIB_DIR ${CMAKE_INSTALL_LIBDIR} )
345   ENDIF()
346   IF( NOT LIB_DIR )
347     SET( LIB_DIR ${PREFIX}/lib )
348   ENDIF()
349
350   SET( REQUIRED_LIBS
351     CURL::libcurl
352     ${EXIF_LIBRARY}
353     ${PNG_LIBRARIES}
354     ${GIF_LIBRARIES}
355     JPEG::JPEG
356     ${TURBO_JPEG_LIBRARY}
357     Freetype::Freetype
358     harfbuzz::harfbuzz
359     ${FRIBIDI_LIBRARY}
360     unofficial::angle::libEGL
361     unofficial::angle::libGLESv2
362     WebP::webp
363     WebP::webpdemux
364     dali2-core::dali2-core
365     dali2-adaptor::dali2-adaptor
366     dali2-toolkit::dali2-toolkit
367   )
368
369   IF ( WIN32 )
370     SET( REQUIRED_LIBS
371       ${REQUIRED_LIBS}
372       ${GETOPT_LIBRARY}
373       unofficial::fontconfig::fontconfig
374       unofficial::cairo::cairo
375       PThreads4W::PThreads4W
376       dali-windows-dependencies::dali-windows-dependencies
377     )
378   ENDIF()
379
380   IF (dali2-scene3d_FOUND)
381     SET(REQUIRED_LIBS
382       ${REQUIRED_LIBS}
383       dali2-scene3d::dali2-scene3d
384     )
385     SET( ENABLE_SCENE3D "ON" )
386   ENDIF()
387
388   IF (chipmunk_FOUND)
389     SET(DALI_PHYSICS_2D_LDFLAGS ${DALI_PHYSICS_2D_LDFLAGS} -lchipmunk)
390     SET(ENABLE_PHYSICS_2D "ON" )
391   ENDIF()
392
393   IF (bullet3_FOUND)
394     SET(DALI_PHYSICS_3D_LDFLAGS ${OPTIONAL_PHYSICS_3D_LDFLAGS} -lbullet3)
395     SET(ENABLE_PHYSICS_3D "ON" )
396   ENDIF()
397
398   IF (dali2-physics-2d_FOUND)
399     SET(DALI_PHYSICS_2D_LDFLAGS ${DALI_PHYSICS_2D_LDFLAGS} dali2-physics-2d::dali2-physics-2d)
400   ENDIF()
401
402   IF (dali2-physics-3d_FOUND)
403     SET(DALI_PHYSICS_3D_LDFLAGS ${DALI_PHYSICS_3D_LDFLAGS} dali2-physics-3d::dali2-physics-3d)
404   ENDIF()
405
406 ELSEIF( UNIX )
407   SET( REQUIRED_LIBS
408     ${REQUIRED_PKGS_LDFLAGS}
409     -pie
410   )
411
412   IF( ANDROID )
413     SET( REQUIRED_LIBS ${REQUIRED_LIBS} -lGLESv3 )
414   ELSE()
415     PKG_CHECK_MODULES( GLESV2 REQUIRED glesv2 )
416     SET( REQUIRED_LIBS ${REQUIRED_LIBS} ${GLESV2_LIBRARIES} )
417   ENDIF()
418 ENDIF()
419
420 SET(DALI_DEMO_CFLAGS "-DDEMO_GAME_DIR=${DEMO_GAME_DIR} -DDEMO_IMAGE_DIR=${DEMO_IMAGE_DIR} -DDEMO_VIDEO_DIR=${DEMO_VIDEO_DIR} -DDEMO_MODEL_DIR=${DEMO_MODEL_DIR} -DDEMO_SCRIPT_DIR=${DEMO_SCRIPT_DIR} -DDEMO_SHADER_DIR=${DEMO_SHADER_DIR}  -DDEMO_STYLE_DIR=${DEMO_STYLE_DIR} -DDEMO_THEME_PATH=${DEMO_THEME_PATH} -DDEMO_EXAMPLE_BIN=${DEMO_EXAMPLE_BIN} -DDEMO_LOCALE_DIR=${DEMO_LOCALE_DIR} -DDEMO_LANG=${DEMO_LANG} -DDEMO_DATA_RW_DIR=${DEMO_DATA_RW_DIR} -DDEMO_DATA_PUBLIC_RW_DIR=${DEMO_DATA_PUBLIC_RW_DIR} ")
421
422 IF( ENABLE_DEBUG )
423   SET(DALI_DEMO_CFLAGS "${DALI_DEMO_CFLAGS} -DDEBUG_ENABLED")
424 ENDIF()
425
426 IF( ENABLE_TRACE )
427   SET(DALI_DEMO_CFLAGS "${DALI_DEMO_CFLAGS} -DTRACE_ENABLED")
428 ENDIF()
429
430 IF( ENABLE_SCENE3D )
431   SET(DALI_DEMO_CFLAGS "${DALI_DEMO_CFLAGS} -DDALI_SCENE3D_AVAILABLE")
432 ENDIF()
433
434 IF( ENABLE_PHYSICS_2D )
435   SET(DALI_DEMO_CFLAGS "${DALI_DEMO_CFLAGS} -DDALI_PHYSICS_2D_AVAILABLE")
436 ENDIF()
437
438 IF( ENABLE_PHYSICS_3D )
439   SET(DALI_DEMO_CFLAGS "${DALI_DEMO_CFLAGS} -DDALI_PHYSICS_3D_AVAILABLE")
440 ENDIF()
441
442 IF( UNIX )
443   IF( NOT ${ENABLE_EXPORTALL} )
444     ADD_DEFINITIONS( "-DHIDE_DALI_INTERNALS" )
445   ENDIF()
446 ENDIF()
447
448 ###########################################################################
449 # Internationalization
450
451 IF (UNIX)
452   SET(PO_DIR ${RESOURCE_DIR}/po)
453
454   FILE(GLOB PO_FILES RELATIVE "${PO_DIR}" "${PO_DIR}/*.po")
455
456   SET(MSGFMT "msgfmt")
457   SET(MO_FILES_DIR ${CMAKE_BINARY_DIR}/mo)
458   FILE(MAKE_DIRECTORY ${MO_FILES_DIR})
459
460   FOREACH(PO_FILE ${PO_FILES})
461         SET(PO_FILE ${PO_DIR}/${PO_FILE})
462         MESSAGE("PO: ${PO_FILE}")
463         GET_FILENAME_COMPONENT(ABS_PO_FILE ${PO_FILE} ABSOLUTE)
464         GET_FILENAME_COMPONENT(lang ${ABS_PO_FILE} NAME_WE)
465         SET(MO_FILE ${MO_FILES_DIR}/${lang}.mo)
466         ADD_CUSTOM_COMMAND(OUTPUT ${MO_FILE}
467                            COMMAND ${MSGFMT} -o ${MO_FILE} ${ABS_PO_FILE}
468                            DEPENDS ${ABS_PO_FILE})
469         INSTALL(FILES ${MO_FILE} DESTINATION ${LOCALE_DIR}/${lang}/LC_MESSAGES RENAME ${PROJECT_NAME}.mo)
470         SET(MO_FILES ${MO_FILES} ${MO_FILE})
471   ENDFOREACH(PO_FILE)
472
473   MESSAGE(".mo files: ${MO_FILES}")
474   ADD_CUSTOM_TARGET(po ALL DEPENDS ${MO_FILES})
475 ENDIF()
476
477 IF (INTERNATIONALIZATION)
478   SET(DALI_DEMO_CFLAGS "${DALI_DEMO_CFLAGS} -DINTERNATIONALIZATION_ENABLED")
479 ENDIF(INTERNATIONALIZATION)
480
481 ###########################################################################
482
483 IF( WIN32 )
484   ADD_COMPILE_OPTIONS( /FIdali-windows-dependencies.h ) # Adds missing definitions.
485   ADD_COMPILE_OPTIONS( /vmg )                           # Avoids a 'reinterpret_cast' compile error while compiling signals and callbacks.
486   ADD_COMPILE_OPTIONS( /wd4251 )                        # Ignores warning C4251: "'identifier' : class 'type' needs to have dll-interface to be used by clients of class 'type2'"
487 ELSE()
488   SET(DALI_DEMO_CFLAGS "${DALI_DEMO_CFLAGS} -Wall -fPIE")
489   # -Werror is disable for clang in dali-adaptor
490   IF ( NOT ${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" )
491     SET(DALI_DEMO_CFLAGS "${DALI_DEMO_CFLAGS} -Werror")
492   ENDIF()
493
494   IF( NOT ${ENABLE_EXPORTALL} )
495     SET(DALI_DEMO_CFLAGS "${DALI_DEMO_CFLAGS} -fvisibility=hidden")
496   ENDIF()
497 ENDIF()
498
499 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${REQUIRED_CFLAGS} ${DALI_DEMO_CFLAGS}")
500 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_C_FLAGS}")
501
502 INCLUDE_DIRECTORIES(
503   ${SYSTEM_INCLUDE_DIR}
504   ${ROOT_SRC_DIR}
505   ${VCPKG_INCLUDE_DIR}
506   ${INCLUDE_DIR}
507 )
508
509 IF(ANDROID)
510   INCLUDE_DIRECTORIES( ${ANDROID_NDK}/sources/android/native_app_glue )
511   INCLUDE_DIRECTORIES( ${ANDROID_NDK}/sysroot/usr )
512   INCLUDE_DIRECTORIES( ${ANDROID_NDK}/sysroot/usr/include/android )
513   INCLUDE_DIRECTORIES( ${ROOT_SRC_DIR}/build/android/app/src/main/cpp )
514 ENDIF()
515
516 LINK_DIRECTORIES(${LIB_DIR})
517
518 ADD_SUBDIRECTORY(demo)
519 ADD_SUBDIRECTORY(examples)
520 ADD_SUBDIRECTORY(examples-reel)
521 ADD_SUBDIRECTORY(tests-reel)
522 ADD_SUBDIRECTORY(builder)
523
524 # Setup CURRENT_BUILD_PLATFORM to use at message
525 IF(ANDROID)
526   SET(CURRENT_BUILD_PLATFORM "Android")
527 ELSEIF(WIN32)
528   SET(CURRENT_BUILD_PLATFORM "Windows")
529 ELSEIF(APPLE)
530   SET(CURRENT_BUILD_PLATFORM "MacOS")
531 ELSEIF(TIZEN)
532   SET(CURRENT_BUILD_PLATFORM "Tizen")
533 ELSE()
534   SET(CURRENT_BUILD_PLATFORM "Ubuntu")
535 ENDIF()
536
537 # Setup CURRENT_BUILD_EXAMPLE_NAME to use at message
538 IF(NOT BUILD_EXAMPLE_NAME)
539   SET(CURRENT_BUILD_EXAMPLE_NAME "ALL EXAMPLES")
540 ELSE()
541   SET(CURRENT_BUILD_EXAMPLE_NAME ${BUILD_EXAMPLE_NAME})
542 ENDIF()
543
544
545 MESSAGE( " Folder   DEMO_IMAGE_DIR : [" ${DEMO_IMAGE_DIR} "]" )
546 MESSAGE( " Folder   DEMO_STYLE_DIR : [" ${DEMO_STYLE_DIR} "]" )
547 MESSAGE( " Folder  DEMO_SHADER_DIR : [" ${DEMO_SHADER_DIR} "]" )
548 MESSAGE( " Folder  DEMO_THEME_PATH : [" ${DEMO_THEME_PATH} "]" )
549 MESSAGE( " Folder    DEMO_GAME_DIR : [" ${DEMO_GAME_DIR} "]" )
550 MESSAGE( " Folder   DEMO_VIDEO_DIR : [" ${DEMO_VIDEO_DIR} "]" )
551 MESSAGE( " Folder   DEMO_MODEL_DIR : [" ${DEMO_MODEL_DIR} "]" )
552 MESSAGE( " Folder  DEMO_SCRIPT_DIR : [" ${DEMO_SCRIPT_DIR} "]" )
553 MESSAGE( " Folder  DEMO_LOCALE_DIR : [" ${DEMO_LOCALE_DIR} "]" )
554 MESSAGE( " Folder DEMO_EXAMPLE_BIN : [" ${DEMO_EXAMPLE_BIN} "]" )
555 MESSAGE( " Folder        DEMO_LANG : [" ${DEMO_LANG} "]" )
556 MESSAGE( " Current Build Platform  : [" ${CURRENT_BUILD_PLATFORM} "]" )
557 MESSAGE( " Build example name      : [" ${CURRENT_BUILD_EXAMPLE_NAME} "]" )
558 MESSAGE( " Scene3D Enabled         : [" ${ENABLE_SCENE3D} "]" )
559 MESSAGE( " Physics 2D Enabled      : [" ${ENABLE_PHYSICS_2D} "]" )
560 MESSAGE( " Physics 3D Enabled      : [" ${ENABLE_PHYSICS_3D} "]" )