83 lines
3.4 KiB
CMake
83 lines
3.4 KiB
CMake
# Adds the current project to the global properties
|
|
FUNCTION(OV_ADD_THIS_TO_PROJECT_LIST)
|
|
#MESSAGE(STATUS "ADDING: ${CMAKE_CURRENT_SOURCE_DIR}")
|
|
|
|
# Add the dir to be parsed for documentation later. We need to do this before adding subdir, in case the subdir is the actual docs dir
|
|
GET_PROPERTY(OV_TMP GLOBAL PROPERTY OV_PROP_CURRENT_PROJECTS)
|
|
SET(OV_TMP "${OV_TMP};${CMAKE_CURRENT_SOURCE_DIR}")
|
|
SET_PROPERTY(GLOBAL PROPERTY OV_PROP_CURRENT_PROJECTS ${OV_TMP})
|
|
|
|
ENDFUNCTION(OV_ADD_THIS_TO_PROJECT_LIST)
|
|
|
|
FUNCTION(SOURCE_DIRECTORIES CURRENT_DIR RETURN_LIST)
|
|
FILE(GLOB_RECURSE NEW_LIST ${CURRENT_DIR}/*.cpp ${CURRENT_DIR}/*.h ${CURRENT_DIR}/*.hpp ${CURRENT_DIR}/*.inl)
|
|
SET(DIR_LIST "")
|
|
FOREACH(FILE_PATH ${NEW_LIST})
|
|
GET_FILENAME_COMPONENT(DIR_PATH ${FILE_PATH} PATH)
|
|
SET(DIR_LIST ${DIR_LIST} "${DIR_PATH}/..")
|
|
ENDFOREACH()
|
|
LIST(REMOVE_DUPLICATES DIR_LIST)
|
|
SET(${RETURN_LIST} ${DIR_LIST} PARENT_SCOPE)
|
|
ENDFUNCTION(SOURCE_DIRECTORIES)
|
|
|
|
# Adds the given directory to the CMake build
|
|
FUNCTION(OV_ADD_SOURCE_DIR CURRENT_SOURCE_DIR)
|
|
# Add the given current directory
|
|
GET_PROPERTY(OV_TMP GLOBAL PROPERTY OV_PROP_CURRENT_PROJECTS)
|
|
SET(OV_TMP "${OV_TMP};${CURRENT_SOURCE_DIR}")
|
|
SET_PROPERTY(GLOBAL PROPERTY OV_PROP_CURRENT_PROJECTS ${OV_TMP})
|
|
# Add source code directories
|
|
SOURCE_DIRECTORIES(${CURRENT_SOURCE_DIR} LIST_DIR)
|
|
FOREACH(SUBDIR ${LIST_DIR})
|
|
GET_PROPERTY(OV_TMP GLOBAL PROPERTY OV_PROP_CURRENT_PROJECTS)
|
|
SET(OV_TMP "${OV_TMP};${SUBDIR}")
|
|
SET_PROPERTY(GLOBAL PROPERTY OV_PROP_CURRENT_PROJECTS ${OV_TMP})
|
|
ENDFOREACH()
|
|
ENDFUNCTION(OV_ADD_SOURCE_DIR)
|
|
|
|
#
|
|
# Adds all directories as subdirectories to the CMake build, using the branch specified (if any) in the root CMakeList.txt or
|
|
# trunk otherwise.
|
|
#
|
|
# The branch variable name that is checked is made up from ${CURRENT_BRANCH_PREFIX}_${DIRNAMEUPPER}.
|
|
#
|
|
# The script also adds the directory to the global list of projects.
|
|
#
|
|
|
|
FUNCTION(OV_ADD_PROJECTS CURRENT_FOLDER_PREFIX)
|
|
|
|
FILE(GLOB FILENAMES "*")
|
|
|
|
FOREACH(FULLPATH ${FILENAMES})
|
|
IF(IS_DIRECTORY ${FULLPATH} AND EXISTS "${FULLPATH}/CMakeLists.txt" AND NOT ${FULLPATH} MATCHES ".*\\.svn")
|
|
GET_FILENAME_COMPONENT(DIRNAME ${FULLPATH} NAME)
|
|
|
|
STRING(TOUPPER ${DIRNAME} DIRNAMEUPPER)
|
|
SET(SKIP_THIS_FOLDER "SKIP_${CURRENT_FOLDER_PREFIX}_${DIRNAMEUPPER}")
|
|
|
|
#MESSAGE(STATUS "Checking SKIP_${CURRENT_FOLDER_PREFIX}_${DIRNAMEUPPER} as branch var ${SKIP_THIS_FOLDER}")
|
|
|
|
IF(${SKIP_THIS_FOLDER})
|
|
MESSAGE(STATUS "Note: ${FULLPATH} has been skipped by setting SKIP_${CURRENT_FOLDER_PREFIX}_${DIRNAMEUPPER}")
|
|
ELSE(${SKIP_THIS_FOLDER})
|
|
# MESSAGE(STATUS "Inserting folder ${FULLPATH}")
|
|
|
|
# Add the dir to be parsed for documentation later. We need to do this before adding subdir, in case the subdir is the actual docs dir
|
|
GET_PROPERTY(OV_TMP GLOBAL PROPERTY OV_PROP_CURRENT_PROJECTS)
|
|
SET(OV_TMP "${OV_TMP};${FULLPATH}")
|
|
SET_PROPERTY(GLOBAL PROPERTY OV_PROP_CURRENT_PROJECTS ${OV_TMP})
|
|
|
|
SET(OV_CURRENT_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/${DIRNAME}")
|
|
GET_PROPERTY(OV_TMP GLOBAL PROPERTY OV_PROP_CURRENT_PROJECTS_BUILD_DIR)
|
|
SET(OV_TMP "${OV_TMP};${OV_CURRENT_BINARY_DIR}")
|
|
SET_PROPERTY(GLOBAL PROPERTY OV_PROP_CURRENT_PROJECTS_BUILD_DIR ${OV_TMP})
|
|
|
|
add_subdirectory(${FULLPATH})
|
|
|
|
ENDIF(${SKIP_THIS_FOLDER})
|
|
ENDIF(IS_DIRECTORY ${FULLPATH} AND EXISTS "${FULLPATH}/CMakeLists.txt" AND NOT ${FULLPATH} MATCHES ".*\\.svn")
|
|
ENDFOREACH(FULLPATH ${FILENAMES})
|
|
|
|
ENDFUNCTION(OV_ADD_PROJECTS)
|
|
|