+# 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")
+
+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")
+ADD_CUSTOM_COMMAND(OUTPUT ${BUILT_IN_SHADER_GEN_CPP}
+ DEPENDS ${SHADER_GENERATOR_NAME}
+ 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}"
+ dali2-core::dali2-core )
+
+ FIND_PACKAGE( curl REQUIRED )
+ FIND_LIBRARY( GETOPT_LIBRARY NAMES getopt )
+ FIND_LIBRARY( EXIF_LIBRARY NAMES libexif )
+
+ FIND_PACKAGE( png REQUIRED )
+ FIND_PACKAGE( gif REQUIRED )
+ FIND_PACKAGE( jpeg REQUIRED )
+ FIND_LIBRARY( TURBO_JPEG_LIBRARY NAMES turbojpeg )
+
+ FIND_PACKAGE( freetype REQUIRED )
+ FIND_PACKAGE( harfbuzz REQUIRED )
+ FIND_LIBRARY( FRIBIDI_LIBRARY NAMES fribidi )
+
+ FIND_PACKAGE( unofficial-angle REQUIRED )
+
+ IF(WIN32)
+ FIND_PACKAGE( unofficial-fontconfig REQUIRED )
+ ENDIF()
+
+ FIND_PACKAGE( unofficial-cairo REQUIRED )
+ FIND_PACKAGE( WebP REQUIRED )
+
+ SET( DALIADAPTOR_LDFLAGS
+ "${DALIADAPTOR_LDFLAGS}"
+ dali2-adaptor::dali2-adaptor )
+ENDIF()
+
+IF ( WIN32 )
+ FIND_PACKAGE( pthreads REQUIRED )
+ENDIF()
+