CMakeLists.txt 1.53 KB
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(SCENE_LOADER_DIR "scene-loader")
IF (NOT "${ENABLE_SCENE_LOADER}" )
  IF ( ${SCENE_LOADER_DIR} IN_LIST SUBDIRS )
    LIST( REMOVE_ITEM SUBDIRS ${SCENE_LOADER_DIR} )
  ENDIF()
ENDIF()

FOREACH(EXAMPLE ${SUBDIRS})
  # Generate source files for shaders
  SET(SHADER_SOURCE_DIR "${EXAMPLES_SRC_DIR}/${EXAMPLE}/shaders/")
  SET(SHADER_GENERATED_DIR "${EXAMPLES_SRC_DIR}/${EXAMPLE}/generated/")
  SET(PARENT_CMAKE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../")
  IF (EXISTS ${SHADER_SOURCE_DIR})
    EXECUTE_PROCESS( COMMAND bash -c "${PARENT_CMAKE_SOURCE_DIR}/shader-generator.sh ${SHADER_SOURCE_DIR} ${SHADER_GENERATED_DIR} --skip")
    SET_PROPERTY( DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES
                "${SHADER_GENERATED_DIR}" )
  ENDIF()
  FILE(GLOB 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()
  TARGET_LINK_LIBRARIES(${EXAMPLE}.example ${REQUIRED_LIBS})
  INSTALL(TARGETS ${EXAMPLE}.example DESTINATION ${BINDIR})
ENDFOREACH(EXAMPLE)