From e3b8b61e8a3dea91e39dbbaf800c9db605553c52 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Fri, 9 Jun 2023 13:38:02 +0200 Subject: build: reenable documentation build --- source/CMakeLists.txt | 5 +-- source/doc/CMakeLists.txt | 79 +++++++++++++++++++++++++++++++++++++++++++++ source/doc/requirements.txt | 2 +- 3 files changed, 83 insertions(+), 3 deletions(-) create mode 100644 source/doc/CMakeLists.txt diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 82beacd..984e085 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -13,6 +13,7 @@ option(BUILD_EXAMPLES "Build the library examples" OFF) # Project Components -add_subdirectory("lib") -add_subdirectory("tests") +add_subdirectory("doc") add_subdirectory("examples") +add_subdirectory("lib") +add_subdirectory("tests") \ No newline at end of file diff --git a/source/doc/CMakeLists.txt b/source/doc/CMakeLists.txt new file mode 100644 index 0000000..616b040 --- /dev/null +++ b/source/doc/CMakeLists.txt @@ -0,0 +1,79 @@ +find_package("Python3" + REQUIRED + COMPONENTS "Interpreter" +) + +set(DOCENV_DIR "${PROJECT_BINARY_DIR}/docenv") + +if(NOT EXISTS "${DOCENV_DIR}") + message(STATUS "Creating Python virtual environment") + execute_process(COMMAND "${Python3_EXECUTABLE}" + "-m" + "venv" + "${DOCENV_DIR}" + OUTPUT_QUIET + ) + message(STATUS "Installing documentation requirements") + execute_process(COMMAND + "${DOCENV_DIR}/bin/python" + "-m" + "pip" + "install" + "-r" + "${CMAKE_CURRENT_SOURCE_DIR}/requirements.txt" + OUTPUT_QUIET + ) +else() + message(STATUS "Reusing existing Python virtual environment") +endif() + +file(GLOB SOURCES + CONFIGURE_DEPENDS + "${CMAKE_CURRENT_SOURCE_DIR}/src/*" + "${PROJECT_SOURCE_DIR}/examples/src/*" +) + +add_custom_target("docs" + ALL + DEPENDS + "${CMAKE_CURRENT_BINARY_DIR}/html/index.html" + "${CMAKE_CURRENT_BINARY_DIR}/man/newtype.3" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + COMMENT "Building documentation" +) + +add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/index.html" + COMMAND "${DOCENV_DIR}/bin/sphinx-build" + "-b" + "singlehtml" + "-q" + "${CMAKE_CURRENT_SOURCE_DIR}/src" + "${CMAKE_CURRENT_BINARY_DIR}/html" + DEPENDS ${SOURCES} + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + COMMENT "Compiling HTML documentation" +) + +add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/man/newtype.3" + COMMAND "${DOCENV_DIR}/bin/sphinx-build" + "-b" + "man" + "-q" + "${CMAKE_CURRENT_SOURCE_DIR}/src" + "${CMAKE_CURRENT_BINARY_DIR}/man" + DEPENDS ${SOURCES} + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + COMMENT "Compiling man page" +) + +install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/html" + TYPE DOC + PATTERN ".doctrees" EXCLUDE + PATTERN ".buildinfo" EXCLUDE + PATTERN ".nojekyll" EXCLUDE +) + +install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/man/" + TYPE MAN + PATTERN ".doctrees" EXCLUDE +) diff --git a/source/doc/requirements.txt b/source/doc/requirements.txt index b80a564..47b0805 100644 --- a/source/doc/requirements.txt +++ b/source/doc/requirements.txt @@ -1 +1 @@ -sphinx==2.4.2 +sphinx~=7.0 -- cgit v1.2.3