[dali_2.3.21] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / build / tizen / CMakeLists.txt
index a7bc0e6..056af0b 100644 (file)
@@ -34,7 +34,8 @@ OPTION(ENABLE_LINK_TEST          "Enable the link test" ON)
 OPTION(INSTALL_DOXYGEN_DOC       "Install doxygen doc" ON)
 OPTION(CONFIGURE_AUTOMATED_TESTS "Configure automated tests" ON)
 OPTION(USE_DEFAULT_RESOURCE_DIR  "Whether to use the default resource folders. Otherwise set environment variables for DALI_IMAGE_DIR, DALI_SOUND_DIR, DALI_STYLE_DIR, DALI_STYLE_IMAGE_DIR and DALI_DATA_READ_ONLY_DIR" ON)
-OPTION(BUILD_SCENE_LOADER        "Whether to build dali-scene-loader." ON)
+OPTION(BUILD_SCENE3D             "Whether to build dali-scene3d." ON)
+OPTION(BUILD_PHYSICS             "Whether to build dali-physics." ON)
 
 IF( ENABLE_PKG_CONFIGURE )
   FIND_PACKAGE( PkgConfig REQUIRED )
@@ -218,19 +219,7 @@ ELSE()
   # Set up compiler flags and warnings
   ADD_COMPILE_OPTIONS( -Wno-ignored-qualifiers )
 
-  # TODO: Clang is a lot more strict with warnings, we should address
-  # those issues at some point.
-  # Matches "Clang" or "AppleClang"
-  IF( NOT "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" )
-    ADD_COMPILE_OPTIONS( -Werror )
-  ENDIF()
-
   ADD_COMPILE_OPTIONS( -Wall -Wno-unused-parameter -Wno-float-equal )
-  ADD_COMPILE_OPTIONS( -Wall -Wno-unused-parameter -Wno-float-equal )
-  CHECK_CXX_COMPILER_FLAG(-Wno-class-memaccess HAVE_NO_CLASS_MEMACCESS)
-  IF (HAVE_NO_CLASS_MEMACCESS)
-    ADD_COMPILE_OPTIONS( -Wno-class-memaccess )
-  ENDIF()
 
   IF( ENABLE_COVERAGE OR "$ENV{CXXFLAGS}" MATCHES --coverage )
     ADD_COMPILE_OPTIONS( --coverage )
@@ -286,13 +275,54 @@ ENDIF()
 # Generate source files for shaders
 SET(SHADER_SOURCE_DIR "${ROOT_SRC_DIR}/dali-toolkit/internal/graphics/shaders/")
 SET(SHADER_GENERATED_DIR "${ROOT_SRC_DIR}/dali-toolkit/internal/graphics/generated")
-EXECUTE_PROCESS( COMMAND bash -c "${CMAKE_CURRENT_SOURCE_DIR}/shader-generator.sh ${SHADER_SOURCE_DIR} ${SHADER_GENERATED_DIR}" )
 
 SET(GENERATED_SHADER_DIR ${ROOT_SRC_DIR}/dali-toolkit/internal/graphics/)
 SET_PROPERTY(DIRECTORY PROPERTY ADDITIONAL_MAKE_CLEAN_FILES
              "${GENERATED_SHADER_DIR}/generated/"
              "${GENERATED_SHADER_DIR}/builtin-shader-extern-gen.h")
 
+SET(SHADER_GENERATOR_NAME dali-shader-generator)
+SET(SHADER_GENERATOR_SOURCES ${ROOT_SRC_DIR}/dali-toolkit/shader-generator/shader-generator.cpp)
+
+IF( WIN32)
+  # When Using VCPKG, the default is always set to Debug if CMAKE_BUILD_TYPE is not set
+  IF( NOT CMAKE_BUILD_TYPE )
+    SET(SHADER_GENERATOR_BINARY ${CMAKE_CURRENT_BINARY_DIR}/Debug/${SHADER_GENERATOR_NAME})
+  ELSE()
+    SET(SHADER_GENERATOR_BINARY ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${SHADER_GENERATOR_NAME})
+  ENDIF()
+ELSE()
+  SET(SHADER_GENERATOR_BINARY ${CMAKE_CURRENT_BINARY_DIR}/${SHADER_GENERATOR_NAME})
+ENDIF()
+
+IF(NOT ANDROID)
+  ADD_EXECUTABLE(${SHADER_GENERATOR_NAME} ${SHADER_GENERATOR_SOURCES})
+  TARGET_LINK_LIBRARIES( ${SHADER_GENERATOR_NAME} ${COVERAGE} )
+  INSTALL(TARGETS ${SHADER_GENERATOR_NAME} RUNTIME DESTINATION bin)
+ELSE()
+  # Need to build dali-shader-generator using the host compiler, not the android cross-compiler so
+  # that it can be run on the host machine
+  OPTION(ANDROID_HOST_COMPILER "Provide the host compiler used by Android (Mandatory)")
+  IF(${ANDROID_HOST_COMPILER} STREQUAL "OFF")
+    MESSAGE(FATAL_ERROR "-DANDROID_HOST_COMPILER=\"Compiler\" must be set")
+  ENDIF()
+
+  ADD_CUSTOM_COMMAND(OUTPUT ${SHADER_GENERATOR_NAME}
+                     COMMAND ${ANDROID_HOST_COMPILER} -o ${CMAKE_CURRENT_BINARY_DIR}/${SHADER_GENERATOR_NAME} -std=c++17 ${SHADER_GENERATOR_SOURCES})
+  INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${SHADER_GENERATOR_NAME}
+          PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
+          DESTINATION bin)
+ENDIF()
+
+SET(BUILT_IN_SHADER_GEN_CPP "${GENERATED_SHADER_DIR}/generated/builtin-shader-gen.cpp" )
+
+FILE(GLOB SHADERS_SRC "${SHADER_SOURCE_DIR}/*.vert" "${SHADER_SOURCE_DIR}/*.frag" )
+ADD_CUSTOM_COMMAND(OUTPUT ${BUILT_IN_SHADER_GEN_CPP}
+                   DEPENDS ${SHADER_GENERATOR_NAME} ${SHADERS_SRC}
+                   COMMAND ${SHADER_GENERATOR_BINARY} ${SHADER_SOURCE_DIR} ${SHADER_GENERATED_DIR})
+
+SET(SOURCES ${SOURCES} ${BUILT_IN_SHADER_GEN_CPP})
+
 IF( WIN32 OR APPLE )
   SET( DALICORE_LDFLAGS
         "${DALICORE_LDFLAGS}"
@@ -330,6 +360,23 @@ IF ( WIN32 )
 ENDIF()
 
 ADD_LIBRARY( ${name} ${LIBTYPE} ${SOURCES} )
+
+SET(CUSTOM_COMPILE_OPTIONS "")
+
+# TODO: Clang is a lot more strict with warnings, we should address
+# those issues at some point.
+# Matches "Clang" or "AppleClang"
+IF( NOT "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" )
+  SET(CUSTOM_COMPILE_OPTIONS ${MY_COMPILE_OPTIONS} -Werror)
+ENDIF()
+
+CHECK_CXX_COMPILER_FLAG(-Wno-class-memaccess HAVE_NO_CLASS_MEMACCESS)
+IF (HAVE_NO_CLASS_MEMACCESS)
+  SET(CUSTOM_COMPILE_OPTIONS ${MY_COMPILE_OPTIONS} -Wno-class-memaccess)
+ENDIF()
+
+target_compile_options(${name} PRIVATE ${CUSTOM_COMPILE_OPTIONS})
+
 TARGET_LINK_LIBRARIES( ${name}
   ${DALICORE_LDFLAGS}
   ${DALIADAPTOR_LDFLAGS}
@@ -337,7 +384,7 @@ TARGET_LINK_LIBRARIES( ${name}
 )
 
 IF( ANDROID )
-  TARGET_LINK_LIBRARIES( ${name} log )
+  TARGET_LINK_LIBRARIES( ${name} log GLESv3 EGL)
 ENDIF()
 
 SET_TARGET_PROPERTIES( ${name}
@@ -472,9 +519,9 @@ IF( ENABLE_COVERAGE )
     ADD_CUSTOM_TARGET( ${DALI_TOOLKIT_PREFIX}rename_cov_data ./rename-cov-data )
 
     ADD_CUSTOM_TARGET( ${DALI_TOOLKIT_PREFIX}cov_data ${LCOV_BIN} ${LCOV_OPTS} --base-directory . --directory . -c -o dali.info
-      COMMAND ${LCOV_BIN} ${LCOV_OPTS} --remove dali.info \"*/dali-env/*\" \"/usr/include/*\" "*/dali-env/*" "*solid-color-actor*" "*/dali-toolkit/third-party/*" \"*/dali-scene-loader/third-party/*\" -o dali.info )
+      COMMAND ${LCOV_BIN} ${LCOV_OPTS} --remove dali.info \"*/dali-env/*\" \"/usr/include/*\" \"*/third-party/*\" -o dali.info )
 
-    ADD_CUSTOM_TARGET( ${DALI_TOOLKIT_PREFIX}coverage genhtml ${LCOV_OPTS} -o ${COVERAGE_OUTPUT_DIR} dali.info
+    ADD_CUSTOM_TARGET( ${DALI_TOOLKIT_PREFIX}coverage genhtml -p ${ROOT_SRC_DIR} ${LCOV_OPTS} -o ${COVERAGE_OUTPUT_DIR} dali.info
       DEPENDS cov_data )
 
     ADD_CUSTOM_TARGET( ${DALI_TOOLKIT_PREFIX}reset_coverage @${LCOV_BIN} -z --directory `pwd` )
@@ -515,10 +562,13 @@ IF( ENABLE_COVERAGE )
   ENDIF( LCOV_BIN )
 ENDIF()
 
-IF ( BUILD_SCENE_LOADER )
-  ADD_SUBDIRECTORY( ${CMAKE_CURRENT_SOURCE_DIR}/dali-scene-loader )
+IF ( BUILD_SCENE3D )
+  ADD_SUBDIRECTORY( ${CMAKE_CURRENT_SOURCE_DIR}/dali-scene3d )
 ENDIF()
 
+IF ( BUILD_PHYSICS )
+  ADD_SUBDIRECTORY( ${CMAKE_CURRENT_SOURCE_DIR}/dali-physics )
+ENDIF()
 
 # Build documentation if doxygen tool is available
 SET( doxygenEnabled OFF )
@@ -526,6 +576,17 @@ IF( DOXYGEN_FOUND )
   SET( doxygenEnabled ON )
   # 'prefix' is used by doxygen in-files.
   SET( prefix ${PREFIX} )
+
+  # Some doxygen properties not allowed at low version.
+  # We need to get doxygen version, and block in doxygen in-files.
+  EXECUTE_PROCESS( COMMAND bash -c "${DOXYGEN_EXECUTABLE} --version" OUTPUT_VARIABLE DOXYGEN_VERSION )
+
+  IF(${DOXYGEN_VERSION} VERSION_LESS "1.9.1")
+    SET( DOXYGEN_VERSION_LESS_1_9_1_BLOCKED "# ")
+  ELSE()
+    SET( DOXYGEN_VERSION_LESS_1_9_1_BLOCKED "")
+  ENDIF()
+
   SET( DOXYGEN_DOCS_DIR ${ROOT_SRC_DIR}/docs )
   SET( DOXYGEN_ROOT_DIR ${ROOT_SRC_DIR} )
   SET( DOXYGEN_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/docs )
@@ -533,9 +594,9 @@ IF( DOXYGEN_FOUND )
   CONFIGURE_FILE( ${DOXYGEN_SRC_DIR}/dali.doxy.in ${DOXYGEN_SRC_DIR}/dali.doxy @ONLY )
   CONFIGURE_FILE( ${DOXYGEN_INTERNAL_SRC_DIR}/dali-internal.doxy.in ${DOXYGEN_INTERNAL_SRC_DIR}/dali-internal.doxy @ONLY )
 
-  IF ( BUILD_SCENE_LOADER )
+  IF ( BUILD_SCENE3D )
     ADD_CUSTOM_TARGET( doc_doxygen ALL
-      DEPENDS ${name} dali2-scene-loader
+      DEPENDS ${name} dali2-scene3d
       COMMAND ${DOXYGEN_EXECUTABLE} -u ${DOXYGEN_SRC_DIR}/dali.doxy
       COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_SRC_DIR}/dali.doxy
       COMMAND ${CMAKE_COMMAND} -P ${DOXYGEN_SRC_DIR}/check_for_errors.cmake
@@ -591,7 +652,8 @@ MESSAGE( STATUS "Use pkg configure:             " ${ENABLE_PKG_CONFIGURE} )
 MESSAGE( STATUS "Vector Based Text Rendering:   " ${ENABLE_VECTOR_BASED_TEXT_RENDERING} )
 MESSAGE( STATUS "Enable link test:              " ${ENABLE_LINK_TEST} )
 MESSAGE( STATUS "Configure automated tests:     " ${CONFIGURE_AUTOMATED_TESTS} )
-MESSAGE( STATUS "Build Dali Scene Loader:       " ${BUILD_SCENE_LOADER} )
+MESSAGE( STATUS "Build Dali Scene3D:            " ${BUILD_SCENE3D} )
+MESSAGE( STATUS "Build Dali Physics:            " ${BUILD_PHYSICS} )
 MESSAGE( STATUS "CXXFLAGS:                      " ${CMAKE_CXX_FLAGS} )
 MESSAGE( STATUS "LDFLAGS:                       " ${CMAKE_SHARED_LINKER_FLAGS_INIT}${CMAKE_SHARED_LINKER_FLAGS} )