Merge "Use dali-shader-generator to generate the shaders" into devel/master
[platform/core/uifw/dali-demo.git] / build / tizen / examples / CMakeLists.txt
1 SET(EXAMPLES_SRC_DIR ${ROOT_SRC_DIR}/examples)
2
3 # Get all subdirectory names from EXAMPLES_SRC_DIR
4 MACRO(SUBDIRLIST result curdir)
5   FILE(GLOB children RELATIVE ${curdir} ${curdir}/*)
6   SET(dirlist "")
7   FOREACH(child ${children})
8     IF(IS_DIRECTORY ${curdir}/${child})
9         LIST(APPEND dirlist ${child})
10     ENDIF()
11   ENDFOREACH()
12   SET(${result} ${dirlist})
13 ENDMACRO()
14 SUBDIRLIST(SUBDIRS ${EXAMPLES_SRC_DIR})
15
16 SET(SCENE_LOADER_DIR "scene-loader")
17 IF (NOT "${ENABLE_SCENE_LOADER}" )
18   IF ( ${SCENE_LOADER_DIR} IN_LIST SUBDIRS )
19     LIST( REMOVE_ITEM SUBDIRS ${SCENE_LOADER_DIR} )
20   ENDIF()
21 ENDIF()
22
23 FIND_PROGRAM( SHADER_GENERATOR "dali-shader-generator" )
24 IF( NOT SHADER_GENERATOR )
25   MESSAGE( FATAL_ERROR "dali-shader-generator not found!" )
26 ENDIF()
27
28 FOREACH(EXAMPLE ${SUBDIRS})
29   SET(PARENT_CMAKE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../")
30   FILE(GLOB SRCS "${EXAMPLES_SRC_DIR}/${EXAMPLE}/*.cpp")
31   SET(SRCS ${SRCS} "${ROOT_SRC_DIR}/shared/resources-location.cpp")
32   IF(SHARED)
33     ADD_LIBRARY(${EXAMPLE}.example SHARED ${SRCS})
34   ELSE()
35     ADD_EXECUTABLE(${EXAMPLE}.example ${SRCS})
36   ENDIF()
37
38   # Generate source files for shaders
39   SET(SHADER_SOURCE_DIR "${EXAMPLES_SRC_DIR}/${EXAMPLE}/shaders/")
40   IF (EXISTS ${SHADER_SOURCE_DIR})
41     SET(SHADER_GENERATED_DIR "${EXAMPLES_SRC_DIR}/${EXAMPLE}/generated/")
42     ADD_CUSTOM_TARGET(${EXAMPLE}-generate-shaders
43                       COMMAND ${SHADER_GENERATOR} --skip ${SHADER_SOURCE_DIR} ${SHADER_GENERATED_DIR})
44     SET_PROPERTY(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES
45                  "${SHADER_GENERATED_DIR}")
46     ADD_DEPENDENCIES(${EXAMPLE}.example ${EXAMPLE}-generate-shaders)
47   ENDIF()
48
49   TARGET_LINK_LIBRARIES(${EXAMPLE}.example ${REQUIRED_LIBS})
50   INSTALL(TARGETS ${EXAMPLE}.example DESTINATION ${BINDIR})
51 ENDFOREACH(EXAMPLE)