Something went wrong on our end
-
Jozef Legény authored
This documentation can be build using only python, no doxygen required. It does not require any special cmake commands except those used to find documentation files and pool them in a single folder before building. CORE-1434
Jozef Legény authoredThis documentation can be build using only python, no doxygen required. It does not require any special cmake commands except those used to find documentation files and pool them in a single folder before building. CORE-1434
OvAddProjects.cmake 5.75 KiB
# 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})
IF(NOT MULTI_BUILD)
IF(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/doc AND NOT(${SKIP_DOC_OPENVIBE}))
FILE(COPY ${CMAKE_CURRENT_SOURCE_DIR}/doc/ DESTINATION ${DIST_DOCTMP}/openvibe FILES_MATCHING PATTERN "*.dox")
FILE(COPY ${CMAKE_CURRENT_SOURCE_DIR}/doc/ DESTINATION ${DIST_DOCTMP}/openvibe PATTERN "*.dox" EXCLUDE)
ENDIF()
IF(IS_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/include) AND NOT(${SKIP_DOCUMENTATION}) AND NOT(${SKIP_DOC_OPENVIBE}))
FILE(APPEND "${DIST_DOCTMP}/openvibe/source-list.txt" "${CMAKE_CURRENT_SOURCE_DIR}/include\n")
ENDIF()
ENDIF()
ENDFUNCTION()
FUNCTION(OV_SET_CUSTOM_DOCUMENTATION doc_project_name doc_product_name)
MESSAGE(STATUS "CUSTOM DOCUMENTATION ENABLED FOR ${doc_project_name}")
SET(HAS_CUSTOM_DOCUMENTATION_${doc_project_name} "1" PARENT_SCOPE)
IF(${BUILD_DOCUMENTATION})
SET(CUSTOM_DOCUMENTATION_PRODUCT_NAME_${doc_project_name} "${doc_product_name}" PARENT_SCOPE)
# if we need also the sources (e.g. the API is documented with doxygen)
SET(ADDITIONAL_FOLDERS_STRING_LIST "")
FOREACH(additional_cpp_source ${ARGN})
SET(ADDITIONAL_FOLDERS_STRING_LIST "${ADDITIONAL_FOLDERS_STRING_LIST} ${CMAKE_CURRENT_SOURCE_DIR}/${doc_project_name}/${additional_cpp_source}")
ENDFOREACH()
SET(CUSTOM_DOCUMENTATION_CPP_SOURCES_${doc_project_name} "${ADDITIONAL_FOLDERS_STRING_LIST}" PARENT_SCOPE)
ENDIF()
ENDFUNCTION()
#
# 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")
GET_FILENAME_COMPONENT(DIRNAME ${FULLPATH} NAME)
STRING(TOUPPER ${DIRNAME} DIRNAMEUPPER)
SET(SKIP_THIS_FOLDER "SKIP_${CURRENT_FOLDER_PREFIX}_${DIRNAMEUPPER}")
SET(SKIP_THIS_CUSTOM_DOCUMENTATION "SKIP_DOC_${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()
# 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})
SET(HAS_CUSTOM_DOCUMENTATION "HAS_CUSTOM_DOCUMENTATION_${DIRNAME}")
SET(CUSTOM_DOCUMENTATION_PRODUCT_NAME "CUSTOM_DOCUMENTATION_PRODUCT_NAME_${DIRNAME}")
SET(CUSTOM_DOCUMENTATION_CPP_SOURCES "${CUSTOM_DOCUMENTATION_CPP_SOURCES_${DIRNAME}}")
IF(NOT(${SKIP_DOCUMENTATION}) AND NOT(${SKIP_THIS_CUSTOM_DOCUMENTATION}) AND NOT MULTI_BUILD)
IF(NOT(${HAS_CUSTOM_DOCUMENTATION}))
IF(${PUBLISH_DOC_ASSETS})
IF(IS_DIRECTORY ${FULLPATH}/doc)
MESSAGE(STATUS "Documentation files found in ${FULLPATH}/doc")
INSTALL(DIRECTORY ${FULLPATH}/doc/ DESTINATION ${DIST_DOCTMP}/openvibe/box-algorithm-doc/dox-part/ FILES_MATCHING PATTERN "*.dox-part" PATTERN "doc/boxes" EXCLUDE)
INSTALL(DIRECTORY ${FULLPATH}/doc/ DESTINATION ${DIST_DOCTMP}/openvibe FILES_MATCHING PATTERN "*.dox" PATTERN "doc/boxes" EXCLUDE)
INSTALL(DIRECTORY ${FULLPATH}/doc/ DESTINATION ${DIST_DOCTMP}/openvibe
PATTERN "doc/boxes" EXCLUDE PATTERN "*.dox-part" EXCLUDE PATTERN "*.dox" EXCLUDE)
ENDIF()
IF(IS_DIRECTORY ${FULLPATH}/include)
FILE(APPEND "${DIST_DOCTMP}/openvibe/source-list.txt" "${FULLPATH}/include\n")
ENDIF()
ENDIF()
ELSE()
MESSAGE(STATUS "Project ${DIRNAME} has custom documentation")
# we copy the doc files into the temporary folder where everything is built thanks to a cmd script
IF(IS_DIRECTORY ${FULLPATH}/doc/)
FILE(COPY ${FULLPATH}/doc/ DESTINATION "${DIST_DOCTMP}/${DIRNAME}")
ENDIF()
SET(DOC_PROJECT_NAME ${DIRNAME})
SET(DOC_PROJECT_VERSION ${PROJECT_VERSION})
SET(DOC_PROJECT_PRODUCT_NAME "${${CUSTOM_DOCUMENTATION_PRODUCT_NAME}}")
SET(DOC_PROJECT_COMMITHASH ${PROJECT_COMMITHASH})
SET(DOC_PROJECT_BRANCH ${PROJECT_BRANCH})
SET(DOC_PROJECT_CPP_SOURCES "${CUSTOM_DOCUMENTATION_CPP_SOURCES}")
get_directory_property( DirDefs DIRECTORY ${CMAKE_SOURCE_DIR} COMPILE_DEFINITIONS )
SET(DOC_DEFINES "")
foreach( d ${DirDefs} )
#message( STATUS "Found Define: " ${d} )
SET(DOC_DEFINES "${DOC_DEFINES} \\\\ \\n ${d}")
endforeach()
STRING(REPLACE "\"" "\\\"" DOC_DEFINES "${DOC_DEFINES}")
#message( STATUS ${DOC_DEFINES} )
ENDIF()
ENDIF()
add_subdirectory(${FULLPATH})
ENDIF()
ENDIF()
ENDFOREACH(FULLPATH ${FILENAMES})
ENDFUNCTION(OV_ADD_PROJECTS)