diff --git a/CMakeLists.txt b/CMakeLists.txt index 5e3d4ce0..9a17cd03 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -58,7 +58,8 @@ if(HYDRA_CONTRIB) endif() if(HYDRA_DOCS) - include(Doxygen) + noa_target_doxygen(CONFIG "${PROJECT_SOURCE_DIR}/doxygen/Doxyfile.in" + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/website") endif() if(PROJECT_IS_TOP_LEVEL) diff --git a/DEPENDENCIES b/DEPENDENCIES index 7f8e277a..ef023cfa 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -1,3 +1,3 @@ vendorpull https://github.com/sourcemeta/vendorpull 559092d6906d87e5d41d90b47d72e5b75df05a2a -noa https://github.com/sourcemeta/noa 329e9a9cdcfc28580c870f3f649d892397a393bc +noa https://github.com/sourcemeta/noa 6a9c31bc962002fa6dba24f267e0e03f43affd31 googletest https://github.com/google/googletest 987e225614755fec7253aa95bf959c09e0d380d7 diff --git a/cmake/Doxygen.cmake b/cmake/Doxygen.cmake deleted file mode 100644 index 85aacd39..00000000 --- a/cmake/Doxygen.cmake +++ /dev/null @@ -1,17 +0,0 @@ -# TODO: Move this to Noa and also pull from JSON Toolkit -find_package(Doxygen) -if(DOXYGEN_FOUND) - set(DOXYGEN_IN "${PROJECT_SOURCE_DIR}/doxygen/Doxyfile.in") - set(DOXYGEN_OUT "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile") - configure_file("${DOXYGEN_IN}" "${DOXYGEN_OUT}" @ONLY) - add_custom_target(doxygen - WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" - VERBATIM - COMMAND "${CMAKE_COMMAND}" -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/website" - COMMAND "${DOXYGEN_EXECUTABLE}" "${DOXYGEN_OUT}") -else() - add_custom_target(doxygen VERBATIM - COMMAND "${CMAKE_COMMAND}" -E echo "Could not locate Doxygen" - COMMAND "${CMAKE_COMMAND}" -E false) -endif() -set_target_properties(doxygen PROPERTIES FOLDER "Hydra/Website") diff --git a/doxygen/Doxyfile.in b/doxygen/Doxyfile.in index 7838456c..dff6a7da 100644 --- a/doxygen/Doxyfile.in +++ b/doxygen/Doxyfile.in @@ -68,7 +68,7 @@ PROJECT_LOGO = @PROJECT_SOURCE_DIR@/doxygen/logo.png # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. -OUTPUT_DIRECTORY = @CMAKE_CURRENT_BINARY_DIR@/website +OUTPUT_DIRECTORY = @NOA_TARGET_DOXYGEN_OUTPUT@ # If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 # sub-directories (in 2 levels) under the output directory of each output format diff --git a/vendor/noa/cmake/noa.cmake b/vendor/noa/cmake/noa.cmake index 4f0e3221..c7866549 100644 --- a/vendor/noa/cmake/noa.cmake +++ b/vendor/noa/cmake/noa.cmake @@ -8,3 +8,4 @@ include("${NOA_DIRECTORY}/commands/copy-file.cmake") include("${NOA_DIRECTORY}/targets/clang-format.cmake") include("${NOA_DIRECTORY}/targets/clang-tidy.cmake") include("${NOA_DIRECTORY}/targets/shellcheck.cmake") +include("${NOA_DIRECTORY}/targets/doxygen.cmake") diff --git a/vendor/noa/cmake/noa/targets/doxygen.cmake b/vendor/noa/cmake/noa/targets/doxygen.cmake new file mode 100644 index 00000000..1a3bfc2c --- /dev/null +++ b/vendor/noa/cmake/noa/targets/doxygen.cmake @@ -0,0 +1,26 @@ +function(noa_target_doxygen) + cmake_parse_arguments(NOA_TARGET_DOXYGEN "" "CONFIG;OUTPUT" "" ${ARGN}) + + if(NOT NOA_TARGET_DOXYGEN_CONFIG) + message(FATAL_ERROR "You must pass an input config file using the CONFIG option") + endif() + if(NOT NOA_TARGET_DOXYGEN_OUTPUT) + message(FATAL_ERROR "You must pass an output directory using the OUTPUT option") + endif() + + find_package(Doxygen) + if(DOXYGEN_FOUND) + set(DOXYGEN_IN "${NOA_TARGET_DOXYGEN_CONFIG}") + set(DOXYGEN_OUT "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile") + configure_file("${DOXYGEN_IN}" "${DOXYGEN_OUT}" @ONLY) + add_custom_target(doxygen + WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" + VERBATIM + COMMAND "${CMAKE_COMMAND}" -E make_directory "${NOA_TARGET_DOXYGEN_OUTPUT}" + COMMAND "${DOXYGEN_EXECUTABLE}" "${DOXYGEN_OUT}") + else() + add_custom_target(doxygen VERBATIM + COMMAND "${CMAKE_COMMAND}" -E echo "Could not locate Doxygen" + COMMAND "${CMAKE_COMMAND}" -E false) + endif() +endfunction()