Change huge if to early return

This commit is contained in:
Philipp Möller 2015-12-10 16:31:06 +01:00
parent 98f3d959ec
commit 9642702bce
1 changed files with 116 additions and 115 deletions

View File

@ -29,122 +29,123 @@ function(configure_doxygen_package CGAL_PACKAGE_NAME)
set(CGAL_PACKAGE_DOC_DIR ${CGAL_PACKAGE_DIR}/doc/${CGAL_PACKAGE_NAME})
set(CGAL_PACKAGE_INCLUDE_DIR ${CGAL_PACKAGE_DIR}/include/)
if(EXISTS ${CGAL_PACKAGE_DOC_DIR}/Doxyfile.in)
set(CGAL_DOC_PACKAGE_DEFAULTS ${CGAL_DOC_DXY_DIR}/${CGAL_PACKAGE_NAME}_defaults.dxy)
file(REMOVE ${CGAL_DOC_PACKAGE_DEFAULTS})
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "@INCLUDE = ${CGAL_DOC_DOXY_DEFAULT}\n")
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "OUTPUT_DIRECTORY = ${CGAL_DOC_OUTPUT_DIR}/${CGAL_PACKAGE_NAME}\n")
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "HTML_OUTPUT = .\n")
if(CGAL_DOC_CREATE_LOGS)
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "WARN_LOGFILE = ${CGAL_DOC_LOG_DIR}/${CGAL_PACKAGE_NAME}.log\n")
endif()
if (CGAL_DOC_RELEASE)
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "GENERATE_TODOLIST = NO\n")
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "GENERATE_BUGLIST = NO\n")
endif()
if(EXISTS "${CGAL_PACKAGE_DIR}/examples")
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "EXAMPLE_PATH = ${CGAL_PACKAGE_DIR}/examples\n")
endif()
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "GENERATE_TAGFILE = ${CGAL_DOC_TAG_GEN_DIR}/${CGAL_PACKAGE_NAME}.tag\n")
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "STRIP_FROM_PATH = ${CGAL_PACKAGE_DOC_DIR}/\n")
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "STRIP_FROM_PATH += ${CGAL_PACKAGE_DIR}/include/\n")
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "STRIP_FROM_INC_PATH = ${CGAL_PACKAGE_DOC_DIR}/\n")
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "STRIP_FROM_INC_PATH += ${CGAL_PACKAGE_DIR}/include/\n")
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "ALIASES += \"cgalPkgDescriptionBegin{2}=\\details \"\n")
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "ALIASES += \"cgalPkgManuals{2}=<BR>\"\n")
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "INPUT = ${CGAL_PACKAGE_DOC_DIR}\n")
if(NOT EXISTS "${CGAL_PACKAGE_DOC_DIR}/CGAL")
# This package has in-source documentation.
if(CGAL_BRANCH_BUILD) # use the entire include subdir
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "INPUT += ${CGAL_PACKAGE_DIR}/include/\n")
else() # use the filelist
if(EXISTS "${CGAL_PACKAGE_DOC_DIR}/filelist.txt")
file(STRINGS "${CGAL_PACKAGE_DOC_DIR}/filelist.txt" CGAL_PKG_FILES)
foreach(pkg_file ${CGAL_PKG_FILES})
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "INPUT += ${CGAL_PACKAGE_DIR}/include/${pkg_file}\n")
endforeach()
endif()
endif()
endif()
# IMAGE_PATH is set by default. For Documentation, we generate the extra path using packages.txt
set(IMAGE_PATHS "${CGAL_PACKAGE_DOC_DIR}/fig")
set(DEPENDENCIES "")
# figure out the dependencies, using the file `dependencies` or `packages.txt` for Documentation
if (${CGAL_PACKAGE_NAME} STREQUAL "Documentation")
set(PackageFile ${CGAL_PACKAGE_DOC_DIR}/packages.txt)
file(STRINGS ${PackageFile} EntriesAsList REGEX "^\\\\package_listing{.+}$")
foreach(Line ${EntriesAsList})
string(REGEX REPLACE "^\\\\package_listing{(.+)}$" "\\1" PKG "${Line}")
list(APPEND DEPENDENCIES ${PKG})
if(CGAL_BRANCH_BUILD)
SET(IMG_DIR "${CMAKE_SOURCE_DIR}/${PKG}/doc/${PKG}/fig")
else()
SET(IMG_DIR "${CMAKE_SOURCE_DIR}/doc/${PKG}/fig")
endif()
if(EXISTS ${IMG_DIR})
list(APPEND IMAGE_PATHS ${IMG_DIR})
endif()
endforeach()
else()
if(EXISTS ${CGAL_PACKAGE_DOC_DIR}/dependencies)
file(STRINGS ${CGAL_PACKAGE_DOC_DIR}/dependencies DEPENDENCIES)
endif()
endif()
foreach(depend ${DEPENDENCIES})
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS}
"TAGFILES += ${CGAL_DOC_TAG_DIR}/${depend}.tag=../${depend}\n")
endforeach()
foreach(image_path ${IMAGE_PATHS})
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS}
"IMAGE_PATH += ${image_path}\n")
endforeach()
configure_file(${CGAL_PACKAGE_DOC_DIR}/Doxyfile.in ${CGAL_DOC_DXY_DIR}/${CGAL_PACKAGE_NAME}.dxy)
# TODO we also want to run html_post_process per package as a custom_command with POST_BUILD
# target that build the doc and put the tag file in the generation directory CGAL_DOC_TAG_GEN_DIR
add_custom_target(${CGAL_PACKAGE_NAME}_internal_doxygen_run
${DOXYGEN_EXECUTABLE} ${CGAL_DOC_DXY_DIR}/${CGAL_PACKAGE_NAME}.dxy)
set_target_properties(${CGAL_PACKAGE_NAME}_internal_doxygen_run PROPERTIES FOLDER Documentation/Packages)
#target moving the tag file into the read directory CGAL_DOC_TAG_DIR
if ( "${CGAL_PACKAGE_NAME}" STREQUAL "Documentation" )
set(CGAL_PACKAGE_TAGFILE "Manual.tag")
else()
set(CGAL_PACKAGE_TAGFILE "${CGAL_PACKAGE_NAME}.tag")
endif()
add_custom_target(${CGAL_PACKAGE_NAME}_copy_doc_tags
${CMAKE_COMMAND} -E copy
"${CGAL_DOC_TAG_GEN_DIR}/${CGAL_PACKAGE_TAGFILE}"
"${CGAL_DOC_TAG_DIR}/${CGAL_PACKAGE_TAGFILE}"
)
#add the doc target doing both the doc generation and then the tag file copy
add_custom_target(${CGAL_PACKAGE_NAME}_doc
${DOXYGEN_EXECUTABLE} ${CGAL_DOC_DXY_DIR}/${CGAL_PACKAGE_NAME}.dxy
COMMAND
${CMAKE_COMMAND} -E copy
"${CGAL_DOC_TAG_GEN_DIR}/${CGAL_PACKAGE_TAGFILE}"
"${CGAL_DOC_TAG_DIR}/${CGAL_PACKAGE_TAGFILE}"
)
# ${depend}_doc)
# don't do this for now
# foreach(depend ${DEPENDENCIES})
# add_dependencies(${CGAL_PACKAGE_NAME}_doc
# ${depend}_doc)
# endforeach()
if(NOT EXISTS ${CGAL_PACKAGE_DOC_DIR}/Doxyfile.in)
return()
endif()
set(CGAL_DOC_PACKAGE_DEFAULTS ${CGAL_DOC_DXY_DIR}/${CGAL_PACKAGE_NAME}_defaults.dxy)
file(REMOVE ${CGAL_DOC_PACKAGE_DEFAULTS})
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "@INCLUDE = ${CGAL_DOC_DOXY_DEFAULT}\n")
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "OUTPUT_DIRECTORY = ${CGAL_DOC_OUTPUT_DIR}/${CGAL_PACKAGE_NAME}\n")
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "HTML_OUTPUT = .\n")
if(CGAL_DOC_CREATE_LOGS)
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "WARN_LOGFILE = ${CGAL_DOC_LOG_DIR}/${CGAL_PACKAGE_NAME}.log\n")
endif()
if(CGAL_DOC_RELEASE)
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "GENERATE_TODOLIST = NO\n")
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "GENERATE_BUGLIST = NO\n")
endif()
if(EXISTS "${CGAL_PACKAGE_DIR}/examples")
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "EXAMPLE_PATH = ${CGAL_PACKAGE_DIR}/examples\n")
endif()
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "GENERATE_TAGFILE = ${CGAL_DOC_TAG_GEN_DIR}/${CGAL_PACKAGE_NAME}.tag\n")
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "STRIP_FROM_PATH = ${CGAL_PACKAGE_DOC_DIR}/\n")
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "STRIP_FROM_PATH += ${CGAL_PACKAGE_DIR}/include/\n")
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "STRIP_FROM_INC_PATH = ${CGAL_PACKAGE_DOC_DIR}/\n")
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "STRIP_FROM_INC_PATH += ${CGAL_PACKAGE_DIR}/include/\n")
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "ALIASES += \"cgalPkgDescriptionBegin{2}=\\details \"\n")
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "ALIASES += \"cgalPkgManuals{2}=<BR>\"\n")
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "INPUT = ${CGAL_PACKAGE_DOC_DIR}\n")
if(NOT EXISTS "${CGAL_PACKAGE_DOC_DIR}/CGAL")
# This package has in-source documentation.
if(CGAL_BRANCH_BUILD) # use the entire include subdir
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "INPUT += ${CGAL_PACKAGE_DIR}/include/\n")
else() # use the filelist
if(EXISTS "${CGAL_PACKAGE_DOC_DIR}/filelist.txt")
file(STRINGS "${CGAL_PACKAGE_DOC_DIR}/filelist.txt" CGAL_PKG_FILES)
foreach(pkg_file ${CGAL_PKG_FILES})
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS} "INPUT += ${CGAL_PACKAGE_DIR}/include/${pkg_file}\n")
endforeach()
endif()
endif()
endif()
# IMAGE_PATH is set by default. For Documentation, we generate the extra path using packages.txt
set(IMAGE_PATHS "${CGAL_PACKAGE_DOC_DIR}/fig")
set(DEPENDENCIES "")
# figure out the dependencies, using the file `dependencies` or `packages.txt` for Documentation
if (${CGAL_PACKAGE_NAME} STREQUAL "Documentation")
set(PackageFile ${CGAL_PACKAGE_DOC_DIR}/packages.txt)
file(STRINGS ${PackageFile} EntriesAsList REGEX "^\\\\package_listing{.+}$")
foreach(Line ${EntriesAsList})
string(REGEX REPLACE "^\\\\package_listing{(.+)}$" "\\1" PKG "${Line}")
list(APPEND DEPENDENCIES ${PKG})
if(CGAL_BRANCH_BUILD)
SET(IMG_DIR "${CMAKE_SOURCE_DIR}/${PKG}/doc/${PKG}/fig")
else()
SET(IMG_DIR "${CMAKE_SOURCE_DIR}/doc/${PKG}/fig")
endif()
if(EXISTS ${IMG_DIR})
list(APPEND IMAGE_PATHS ${IMG_DIR})
endif()
endforeach()
else()
if(EXISTS ${CGAL_PACKAGE_DOC_DIR}/dependencies)
file(STRINGS ${CGAL_PACKAGE_DOC_DIR}/dependencies DEPENDENCIES)
endif()
endif()
foreach(depend ${DEPENDENCIES})
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS}
"TAGFILES += ${CGAL_DOC_TAG_DIR}/${depend}.tag=../${depend}\n")
endforeach()
foreach(image_path ${IMAGE_PATHS})
file(APPEND ${CGAL_DOC_PACKAGE_DEFAULTS}
"IMAGE_PATH += ${image_path}\n")
endforeach()
configure_file(${CGAL_PACKAGE_DOC_DIR}/Doxyfile.in ${CGAL_DOC_DXY_DIR}/${CGAL_PACKAGE_NAME}.dxy)
# TODO we also want to run html_post_process per package as a custom_command with POST_BUILD
# target that build the doc and put the tag file in the generation directory CGAL_DOC_TAG_GEN_DIR
add_custom_target(${CGAL_PACKAGE_NAME}_internal_doxygen_run
${DOXYGEN_EXECUTABLE} ${CGAL_DOC_DXY_DIR}/${CGAL_PACKAGE_NAME}.dxy)
set_target_properties(${CGAL_PACKAGE_NAME}_internal_doxygen_run PROPERTIES FOLDER Documentation/Packages)
#target moving the tag file into the read directory CGAL_DOC_TAG_DIR
if ( "${CGAL_PACKAGE_NAME}" STREQUAL "Documentation" )
set(CGAL_PACKAGE_TAGFILE "Manual.tag")
else()
set(CGAL_PACKAGE_TAGFILE "${CGAL_PACKAGE_NAME}.tag")
endif()
add_custom_target(${CGAL_PACKAGE_NAME}_copy_doc_tags
${CMAKE_COMMAND} -E copy
"${CGAL_DOC_TAG_GEN_DIR}/${CGAL_PACKAGE_TAGFILE}"
"${CGAL_DOC_TAG_DIR}/${CGAL_PACKAGE_TAGFILE}"
)
#add the doc target doing both the doc generation and then the tag file copy
add_custom_target(${CGAL_PACKAGE_NAME}_doc
${DOXYGEN_EXECUTABLE} ${CGAL_DOC_DXY_DIR}/${CGAL_PACKAGE_NAME}.dxy
COMMAND
${CMAKE_COMMAND} -E copy
"${CGAL_DOC_TAG_GEN_DIR}/${CGAL_PACKAGE_TAGFILE}"
"${CGAL_DOC_TAG_DIR}/${CGAL_PACKAGE_TAGFILE}"
)
# ${depend}_doc)
# don't do this for now
# foreach(depend ${DEPENDENCIES})
# add_dependencies(${CGAL_PACKAGE_NAME}_doc
# ${depend}_doc)
# endforeach()
endfunction()
find_package(Doxygen)