diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index cfe574e..31de631 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -1,24 +1,28 @@ -find_package(Doxygen REQUIRED) +find_package(Doxygen) -set(DOXYGEN_INPUT_DIR ${PROJECT_SOURCE_DIR}/include) -set(DOXYGEN_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/doxygen) -set(DOXYGEN_INDEX_FILE ${DOXYGEN_OUTPUT_DIR}/xml/index.xml) -set(DOXYFILE_IN ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in) -set(DOXYFILE_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) +if(DOXYGEN_FOUND) -configure_file(${DOXYFILE_IN} ${DOXYFILE_OUT} @ONLY) + set(DOXYGEN_INPUT_DIR ${PROJECT_SOURCE_DIR}/include) + set(DOXYGEN_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/doxygen) + set(DOXYGEN_INDEX_FILE ${DOXYGEN_OUTPUT_DIR}/xml/index.xml) + set(DOXYFILE_IN ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in) + set(DOXYFILE_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) -file(MAKE_DIRECTORY ${DOXYGEN_OUTPUT_DIR}) + configure_file(${DOXYFILE_IN} ${DOXYFILE_OUT} @ONLY) -add_custom_command(OUTPUT - ${DOXYGEN_INDEX_FILE} - COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYFILE_OUT} - MAIN_DEPENDENCY ${DOXYFILE_OUT} ${DOXYFILE_IN} - COMMENT "Generating Doxygen documentation" - VERBATIM -) + file(MAKE_DIRECTORY ${DOXYGEN_OUTPUT_DIR}) -add_custom_target(docs DEPENDS ${DOXYGEN_INDEX_FILE}) + add_custom_command(OUTPUT + ${DOXYGEN_INDEX_FILE} + COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYFILE_OUT} + MAIN_DEPENDENCY ${DOXYFILE_OUT} ${DOXYFILE_IN} + COMMENT "Generating Doxygen documentation" + VERBATIM + ) -# Ensure worker is built before documentation. -add_dependencies(docs bootstrap) + add_custom_target(docs DEPENDS ${DOXYGEN_INDEX_FILE}) + + # Ensure worker is built before documentation. + add_dependencies(docs bootstrap) + +endif() diff --git a/flake.nix b/flake.nix index 18d47af..1f6948c 100644 --- a/flake.nix +++ b/flake.nix @@ -24,7 +24,7 @@ pname = "bootstrap"; src = ./.; version = "0.1.3"; - nativeBuildInputs = with pkgs; [ cmake ]; + nativeBuildInputs = with pkgs; [ cmake doxygen ]; installPhase = '' mkdir -p $out/bin cp ./bootstrap $out/bin diff --git a/specs/clang/runner b/specs/clang/runner index a1c9cad..3566f8e 100755 --- a/specs/clang/runner +++ b/specs/clang/runner @@ -56,7 +56,7 @@ mkdir -p "$BUILD"/build/{Debug,Release} # REWRITES # ============================================================ -for file in flake.nix {,src/,test/}CMakeLists.txt +for file in flake.nix {,src/,docs/,test/}CMakeLists.txt do sed -i "s//$NAME/g" "$BUILD/$file" done diff --git a/specs/clang/template/docs/CMakeLists.txt b/specs/clang/template/docs/CMakeLists.txt index cfe574e..9bc649a 100644 --- a/specs/clang/template/docs/CMakeLists.txt +++ b/specs/clang/template/docs/CMakeLists.txt @@ -1,24 +1,28 @@ find_package(Doxygen REQUIRED) -set(DOXYGEN_INPUT_DIR ${PROJECT_SOURCE_DIR}/include) -set(DOXYGEN_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/doxygen) -set(DOXYGEN_INDEX_FILE ${DOXYGEN_OUTPUT_DIR}/xml/index.xml) -set(DOXYFILE_IN ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in) -set(DOXYFILE_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) +if(DOXYGEN_FOUND) -configure_file(${DOXYFILE_IN} ${DOXYFILE_OUT} @ONLY) + set(DOXYGEN_INPUT_DIR ${PROJECT_SOURCE_DIR}/include) + set(DOXYGEN_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/doxygen) + set(DOXYGEN_INDEX_FILE ${DOXYGEN_OUTPUT_DIR}/xml/index.xml) + set(DOXYFILE_IN ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in) + set(DOXYFILE_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) -file(MAKE_DIRECTORY ${DOXYGEN_OUTPUT_DIR}) + configure_file(${DOXYFILE_IN} ${DOXYFILE_OUT} @ONLY) -add_custom_command(OUTPUT - ${DOXYGEN_INDEX_FILE} - COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYFILE_OUT} - MAIN_DEPENDENCY ${DOXYFILE_OUT} ${DOXYFILE_IN} - COMMENT "Generating Doxygen documentation" - VERBATIM -) + file(MAKE_DIRECTORY ${DOXYGEN_OUTPUT_DIR}) -add_custom_target(docs DEPENDS ${DOXYGEN_INDEX_FILE}) + add_custom_command(OUTPUT + ${DOXYGEN_INDEX_FILE} + COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYFILE_OUT} + MAIN_DEPENDENCY ${DOXYFILE_OUT} ${DOXYFILE_IN} + COMMENT "Generating Doxygen documentation" + VERBATIM + ) -# Ensure worker is built before documentation. -add_dependencies(docs bootstrap) + add_custom_target(docs DEPENDS ${DOXYGEN_INDEX_FILE}) + + # Ensure executable is built before documentation. + add_dependencies(docs "") + +endif()