SET(EXAMPLES_SRC_DIR ${ROOT_SRC_DIR}/examples) MESSAGE(STATUS "Building examples.") MESSAGE(STATUS "ENABLE_VULKAN: ${ENABLE_VULKAN}") MESSAGE(STATUS "ENABLE_PHYSICS_2D: ${ENABLE_PHYSICS_2D}") MESSAGE(STATUS "ENABLE_PHYSICS_3D: ${ENABLE_PHYSICS_3D}") MESSAGE(STATUS "ENABLE_SCENE3D: ${ENABLE_SCENE3D}") # Get all subdirectory names from EXAMPLES_SRC_DIR MACRO(SUBDIRLIST result curdir) FILE(GLOB children RELATIVE ${curdir} ${curdir}/*) SET(dirlist "") FOREACH(child ${children}) IF(IS_DIRECTORY ${curdir}/${child}) LIST(APPEND dirlist ${child}) ENDIF() ENDFOREACH() SET(${result} ${dirlist}) ENDMACRO() SUBDIRLIST(SUBDIRS ${EXAMPLES_SRC_DIR}) MESSAGE(STATUS "Subdirs: ${SUBDIRS}") SET(SCENE3D_DIR "scene3d") IF (NOT "${ENABLE_SCENE3D}" ) IF ( ${SCENE3D_DIR} IN_LIST SUBDIRS ) LIST( REMOVE_ITEM SUBDIRS ${SCENE3D_DIR} ) ENDIF() ENDIF() SET(PHYSICS_2D_DIR "chipmunk-physics") IF (NOT "${ENABLE_PHYSICS_2D}" ) IF ( ${PHYSICS_2D_DIR} IN_LIST SUBDIRS ) LIST( REMOVE_ITEM SUBDIRS ${PHYSICS_2D_DIR} ) ENDIF() ENDIF() IF(ENABLE_VULKAN) # Don't build GL examples SET(GLES_EXAMPLES "direct-rendering") IF( ${GLES_EXAMPLES} IN_LIST SUBDIRS) LIST(REMOVE_ITEM SUBDIRS ${GLES_EXAMPLES}) ENDIF() ENDIF() FIND_PROGRAM( SHADER_GENERATOR "dali-shader-generator" ) IF( NOT SHADER_GENERATOR ) MESSAGE( FATAL_ERROR "dali-shader-generator not found!" ) ENDIF() FUNCTION(INSTALL_EXAMPLES EXAMPLE) SET(PARENT_CMAKE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../") FILE(GLOB_RECURSE SRCS "${EXAMPLES_SRC_DIR}/${EXAMPLE}/*.cpp") SET(SRCS ${SRCS} "${ROOT_SRC_DIR}/shared/resources-location.cpp") IF(SHARED) ADD_LIBRARY(${EXAMPLE}.example SHARED ${SRCS}) ELSE() ADD_EXECUTABLE(${EXAMPLE}.example ${SRCS}) ENDIF() IF(EXISTS ${EXAMPLES_SRC_DIR}/${EXAMPLE}/dependencies.cmake) INCLUDE( ${EXAMPLES_SRC_DIR}/${EXAMPLE}/dependencies.cmake OPTIONAL) ENDIF() # Generate source files for shaders SET(SHADER_SOURCE_DIR "${EXAMPLES_SRC_DIR}/${EXAMPLE}/shaders/") IF (EXISTS ${SHADER_SOURCE_DIR}) SET(SHADER_GENERATED_DIR "${EXAMPLES_SRC_DIR}/${EXAMPLE}/generated/") ADD_CUSTOM_TARGET(${EXAMPLE}-generate-shaders COMMAND ${SHADER_GENERATOR} --skip ${SHADER_SOURCE_DIR} ${SHADER_GENERATED_DIR}) SET_PROPERTY(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${SHADER_GENERATED_DIR}") ADD_DEPENDENCIES(${EXAMPLE}.example ${EXAMPLE}-generate-shaders) ENDIF() TARGET_LINK_LIBRARIES(${EXAMPLE}.example ${REQUIRED_LIBS}) INSTALL(TARGETS ${EXAMPLE}.example DESTINATION ${BINDIR}) ENDFUNCTION() IF( NOT BUILD_EXAMPLE_NAME ) FOREACH(EXAMPLE ${SUBDIRS}) INSTALL_EXAMPLES(${EXAMPLE}) ENDFOREACH(EXAMPLE) ELSE() INSTALL_EXAMPLES(${BUILD_EXAMPLE_NAME}) ENDIF()