CMakeLists.txt
2.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
SET(EXAMPLES_SRC_DIR ${ROOT_SRC_DIR}/examples)
# 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})
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")
IF (NOT "${ENABLE_PHYSICS_2D}" )
IF ( ${PHYSICS_2D_DIR} IN_LIST SUBDIRS )
LIST( REMOVE_ITEM SUBDIRS ${PHYSICS_2D_DIR} )
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()