[Tizen] Add AnimatedVectorImageVisualRive example
[platform/core/uifw/dali-demo.git] / build / tizen / CMakeLists.txt
index aea3cd2..820188d 100644 (file)
@@ -25,6 +25,10 @@ SET(DEMO_SHARED ${CMAKE_SOURCE_DIR}/../../shared)
 
 SET(PREFIX ${CMAKE_INSTALL_PREFIX})
 
+IF (APPLE)
+  SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
+ENDIF()
+
 IF(DEFINED DALI_APP_DIR)
   SET(BINDIR ${DALI_APP_DIR})
 ELSE()
@@ -113,32 +117,52 @@ ELSE()
   SET(DEMO_DATA_PUBLIC_RW_DIR \\"/tmp/\\")
 ENDIF()
 
-FILE(GLOB LOCAL_IMAGES_PNG RELATIVE   "${LOCAL_IMAGES_DIR}" "${LOCAL_IMAGES_DIR}/*.png")
-FILE(GLOB LOCAL_IMAGES_JPG RELATIVE   "${LOCAL_IMAGES_DIR}" "${LOCAL_IMAGES_DIR}/*.jpg")
-FILE(GLOB LOCAL_IMAGES_GIF RELATIVE   "${LOCAL_IMAGES_DIR}" "${LOCAL_IMAGES_DIR}/*.gif")
-FILE(GLOB LOCAL_IMAGES_WEBP RELATIVE  "${LOCAL_IMAGES_DIR}" "${LOCAL_IMAGES_DIR}/*.webp")
-FILE(GLOB LOCAL_IMAGES_BMP RELATIVE   "${LOCAL_IMAGES_DIR}" "${LOCAL_IMAGES_DIR}/*.bmp")
-FILE(GLOB LOCAL_IMAGES_ICO RELATIVE   "${LOCAL_IMAGES_DIR}" "${LOCAL_IMAGES_DIR}/*.ico")
-FILE(GLOB LOCAL_IMAGES_WBMP RELATIVE  "${LOCAL_IMAGES_DIR}" "${LOCAL_IMAGES_DIR}/*.wbmp")
-FILE(GLOB LOCAL_IMAGES_KTX RELATIVE   "${LOCAL_IMAGES_DIR}" "${LOCAL_IMAGES_DIR}/*.ktx")
-FILE(GLOB LOCAL_IMAGES_ASTC RELATIVE  "${LOCAL_IMAGES_DIR}" "${LOCAL_IMAGES_DIR}/*.astc")
-FILE(GLOB LOCAL_IMAGES_SVG RELATIVE   "${LOCAL_IMAGES_DIR}" "${LOCAL_IMAGES_DIR}/*.svg")
-FILE(GLOB LOCAL_IMAGES_JSON RELATIVE  "${LOCAL_IMAGES_DIR}" "${LOCAL_IMAGES_DIR}/*.json")
-
-SET(LOCAL_IMAGES_LIST ${LOCAL_IMAGES_PNG};${LOCAL_IMAGES_JPG};${LOCAL_IMAGES_GIF};${LOCAL_IMAGES_WEBP};${LOCAL_IMAGES_BMP};${LOCAL_IMAGES_ICO};${LOCAL_IMAGES_WBMP};${LOCAL_IMAGES_KTX};${LOCAL_IMAGES_ASTC};${LOCAL_IMAGES_SVG};${LOCAL_IMAGES_JSON})
-FOREACH(flag ${LOCAL_IMAGES_LIST})
-        INSTALL(FILES ${LOCAL_IMAGES_DIR}/${flag} DESTINATION ${IMAGES_DIR})
-ENDFOREACH(flag)
+# Gets all sub-directories of SRC_DIR into the list RESULT, which will first be reset to empty.
+MACRO(GET_TREE RESULT SRC_DIR)
+       FILE(GLOB_RECURSE LOCAL_LIST RELATIVE ${SRC_DIR} "${SRC_DIR}/*")
+       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.
+       FOREACH(LOCAL_ENTRY ${LOCAL_LIST})
+               GET_FILENAME_COMPONENT(DIR ${LOCAL_ENTRY} DIRECTORY)
+               LIST(APPEND ${RESULT} ${DIR})
+       ENDFOREACH()
+       LIST(REMOVE_DUPLICATES ${RESULT})
+ENDMACRO()
+
+# Installs files from each subdirectory of ROOT specified in TREE, matching FILTER, to DESTINATION,
+# while keeping the structure, up to (excluding) ROOT.
+MACRO(INSTALL_TREE_FILES ROOT TREE FILTER DESTINATION)
+       FOREACH(LOCAL_DIR ${TREE})
+               SET(SRC_DIR "${ROOT}/${LOCAL_DIR}")
+               FILE(GLOB FILES
+                       LIST_DIRECTORIES false
+                       RELATIVE ${SRC_DIR} "${SRC_DIR}/${FILTER}")
+               FOREACH(LOCAL_FILE ${FILES})
+                       INSTALL(FILES "${SRC_DIR}/${LOCAL_FILE}" DESTINATION "${DESTINATION}/${LOCAL_DIR}")
+               ENDFOREACH()
+       ENDFOREACH()
+ENDMACRO()
+
+GET_TREE(LOCAL_IMAGES_TREE "${LOCAL_IMAGES_DIR}")
+INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.png" ${IMAGES_DIR})
+INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.jpg" ${IMAGES_DIR})
+INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.gif" ${IMAGES_DIR})
+INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.webp" ${IMAGES_DIR})
+INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.bmp" ${IMAGES_DIR})
+INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.ico" ${IMAGES_DIR})
+INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.wbmp" ${IMAGES_DIR})
+INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.ktx" ${IMAGES_DIR})
+INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.astc" ${IMAGES_DIR})
+INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.svg" ${IMAGES_DIR})
+INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.json" ${IMAGES_DIR})
+INSTALL_TREE_FILES(${LOCAL_IMAGES_DIR} "${LOCAL_IMAGES_TREE}" "*.riv" ${IMAGES_DIR})
 
 FILE(GLOB LOCAL_VIDEOS_LIST RELATIVE "${LOCAL_VIDEOS_DIR}" "${LOCAL_VIDEOS_DIR}/*")
 FOREACH(flag ${LOCAL_VIDEOS_LIST})
         INSTALL(FILES ${LOCAL_VIDEOS_DIR}/${flag} DESTINATION ${VIDEOS_DIR})
 ENDFOREACH(flag)
 
-FILE(GLOB LOCAL_MODELS_LIST RELATIVE "${LOCAL_MODELS_DIR}" "${LOCAL_MODELS_DIR}/*")
-FOREACH(flag ${LOCAL_MODELS_LIST})
-        INSTALL(FILES ${LOCAL_MODELS_DIR}/${flag} DESTINATION ${MODELS_DIR})
-ENDFOREACH(flag)
+GET_TREE(LOCAL_MODELS_TREE "${LOCAL_MODELS_DIR}")
+INSTALL_TREE_FILES(${LOCAL_MODELS_DIR} "${LOCAL_MODELS_TREE}" "*" ${MODELS_DIR})
 
 FILE(GLOB LOCAL_SCRIPTS_LIST RELATIVE "${LOCAL_SCRIPTS_DIR}" "${LOCAL_SCRIPTS_DIR}/*.json")
 FOREACH(flag ${LOCAL_SCRIPTS_LIST})
@@ -189,14 +213,30 @@ IF( ENABLE_PKG_CONFIGURE )
   FOREACH(flag ${REQUIRED_PKGS_CFLAGS})
         SET(REQUIRED_CFLAGS "${REQUIRED_CFLAGS} ${flag}")
   ENDFOREACH(flag)
+
+  pkg_check_modules(DALI_SCENE_LOADER dali2-scene-loader)
+  IF( DALI_SCENE_LOADER_FOUND )
+    FOREACH(flag ${DALI_SCENE_LOADER_CFLAGS})
+      SET(REQUIRED_CFLAGS "${REQUIRED_CFLAGS} ${flag}")
+    ENDFOREACH(flag)
+
+    SET( REQUIRED_CFLAGS "${REQUIRED_CFLAGS} -DDALI_SCENE_LOADER_AVAILABLE" )
+
+    FOREACH(flag ${DALI_SCENE_LOADER_LDFLAGS})
+      SET(REQUIRED_PKGS_LDFLAGS "${REQUIRED_PKGS_LDFLAGS} ${flag}")
+    ENDFOREACH(flag)
+
+    SET( ENABLE_SCENE_LOADER "ON" )
+  ENDIF()
 ENDIF()
 
 SET( VCPKG_INCLUDE_DIR "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include")
 
-IF( WIN32 ) # WIN32 includes x64 as well according to the cmake doc.
-  FIND_PACKAGE( pthreads REQUIRED )
+IF( WIN32 OR APPLE ) # WIN32 includes x64 as well according to the cmake doc.
+  IF ( WIN32 )
+    FIND_PACKAGE( pthreads REQUIRED )
+  ENDIF()
   FIND_PACKAGE( curl REQUIRED )
-  FIND_LIBRARY( GETOPT_LIBRARY NAMES getopt )
   FIND_LIBRARY( EXIF_LIBRARY NAMES libexif )
 
   FIND_PACKAGE( png REQUIRED )
@@ -204,7 +244,6 @@ IF( WIN32 ) # WIN32 includes x64 as well according to the cmake doc.
   FIND_PACKAGE( jpeg REQUIRED )
   FIND_LIBRARY( TURBO_JPEG_LIBRARY NAMES turbojpeg )
 
-  FIND_PACKAGE( unofficial-fontconfig REQUIRED )
   FIND_PACKAGE( freetype REQUIRED )
   FIND_PACKAGE( harfbuzz REQUIRED )
   FIND_LIBRARY( FRIBIDI_LIBRARY NAMES fribidi )
@@ -214,11 +253,18 @@ IF( WIN32 ) # WIN32 includes x64 as well according to the cmake doc.
 
   FIND_PACKAGE( WebP REQUIRED )
 
-  FIND_PACKAGE( dali-windows-dependencies REQUIRED )
+  IF ( WIN32 )
+    FIND_LIBRARY( GETOPT_LIBRARY NAMES getopt )
+    FIND_PACKAGE( dali-windows-dependencies REQUIRED )
+    FIND_PACKAGE( unofficial-fontconfig REQUIRED )
+  ENDIF()
+
   FIND_PACKAGE( dali2-core REQUIRED )
   FIND_PACKAGE( dali2-adaptor REQUIRED )
   FIND_PACKAGE( dali2-toolkit REQUIRED )
 
+  FIND_PACKAGE( dali2-scene-loader )
+
   # Set up the include dir
   SET( INCLUDE_DIR $ENV{includedir} )
   IF( NOT INCLUDE_DIR )
@@ -237,28 +283,42 @@ IF( WIN32 ) # WIN32 includes x64 as well according to the cmake doc.
   ENDIF()
 
   SET( REQUIRED_LIBS
-    PThreads4W::PThreads4W
     CURL::libcurl
-    ${GETOPT_LIBRARY}
     ${EXIF_LIBRARY}
     ${PNG_LIBRARIES}
     ${GIF_LIBRARIES}
     JPEG::JPEG
     ${TURBO_JPEG_LIBRARY}
-    unofficial::fontconfig::fontconfig
     Freetype::Freetype
     harfbuzz::harfbuzz
     ${FRIBIDI_LIBRARY}
     unofficial::angle::libEGL
     unofficial::angle::libGLESv2
-    unofficial::cairo::cairo
     WebP::webp
     WebP::webpdemux
-    dali-windows-dependencies::dali-windows-dependencies
     dali2-core::dali2-core
     dali2-adaptor::dali2-adaptor
     dali2-toolkit::dali2-toolkit
   )
+
+  IF ( WIN32 )
+    SET( REQUIRED_LIBS
+      ${REQUIRED_LIBS}
+      ${GETOPT_LIBRARY}
+      unofficial::fontconfig::fontconfig
+      unofficial::cairo::cairo
+      PThreads4W::PThreads4W
+      dali-windows-dependencies::dali-windows-dependencies
+    )
+  ENDIF()
+
+  IF (dali2-scene-loader_FOUND)
+    SET(REQUIRED_LIBS
+      ${REQUIRED_LIBS}
+      dali2-scene-loader::dali2-scene-loader
+    )
+    SET( ENABLE_SCENE_LOADER "ON" )
+  ENDIF()
 ELSEIF( UNIX )
   SET( REQUIRED_LIBS
     ${REQUIRED_PKGS_LDFLAGS}
@@ -272,6 +332,10 @@ IF( ENABLE_DEBUG )
   SET(DALI_DEMO_CFLAGS "${DALI_DEMO_CFLAGS} -DDEBUG_ENABLED")
 ENDIF()
 
+IF( ENABLE_SCENE_LOADER )
+  SET(DALI_DEMO_CFLAGS "${DALI_DEMO_CFLAGS} -DDALI_SCENE_LOADER_AVAILABLE")
+ENDIF()
+
 IF( UNIX )
   IF( NOT ${ENABLE_EXPORTALL} )
     ADD_DEFINITIONS( "-DHIDE_DALI_INTERNALS" )
@@ -286,7 +350,7 @@ IF (UNIX)
 
   FILE(GLOB PO_FILES RELATIVE "${PO_DIR}" "${PO_DIR}/*.po")
 
-  SET(MSGFMT "/usr/bin/msgfmt")
+  SET(MSGFMT "msgfmt")
   SET(MO_FILES_DIR ${CMAKE_BINARY_DIR}/mo)
   FILE(MAKE_DIRECTORY ${MO_FILES_DIR})
 
@@ -318,7 +382,11 @@ IF( WIN32 )
   ADD_COMPILE_OPTIONS( /vmg )                           # Avoids a 'reinterpret_cast' compile error while compiling signals and callbacks.
   ADD_COMPILE_OPTIONS( /wd4251 )                        # Ignores warning C4251: "'identifier' : class 'type' needs to have dll-interface to be used by clients of class 'type2'"
 ELSE()
-  SET(DALI_DEMO_CFLAGS "${DALI_DEMO_CFLAGS} -Werror -Wall -fPIE")
+  SET(DALI_DEMO_CFLAGS "${DALI_DEMO_CFLAGS} -Wall -fPIE")
+  # -Werror is disable for clang in dali-adaptor
+  IF ( NOT ${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" )
+    SET(DALI_DEMO_CFLAGS "${DALI_DEMO_CFLAGS} -Werror")
+  ENDIF()
 
   IF( NOT ${ENABLE_EXPORTALL} )
     SET(DALI_DEMO_CFLAGS "${DALI_DEMO_CFLAGS} -fvisibility=hidden")
@@ -362,3 +430,4 @@ MESSAGE( " Folder  DEMO_SCRIPT_DIR : [" ${DEMO_SCRIPT_DIR} "]" )
 MESSAGE( " Folder  DEMO_LOCALE_DIR : [" ${DEMO_LOCALE_DIR} "]" )
 MESSAGE( " Folder DEMO_EXAMPLE_BIN : [" ${DEMO_EXAMPLE_BIN} "]" )
 MESSAGE( " Folder        DEMO_LANG : [" ${DEMO_LANG} "]" )
+MESSAGE( " Scene Loader Enabled    : [" ${ENABLE_SCENE_LOADER} "]" )