diff --git a/.configure-custom.sh b/.configure-custom.sh index a4aea3889..58b47c8fb 100755 --- a/.configure-custom.sh +++ b/.configure-custom.sh @@ -1,4 +1,7 @@ #!/bin/sh -ENABLE_VARS="code-coverage|yes|ENABLE_COVERAGE" +ENABLE_VARS="code-coverage|On|ENABLE_COVERAGE docs|On|ENABLE_DOCS" +DISABLE_VARS="docs|Off|ENABLE_DOCS" ENABLE_ENABLE_COVERAGE_DOC="enable coverage analysis" +ENABLE_ENABLE_DOCS_DOC="enable building manpages" +ENABLE_DISABLE_DOCS_DOC="disable building manpages" diff --git a/CMakeLists.txt b/CMakeLists.txt index e1defe4e2..9a64f9507 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,11 +14,6 @@ message(STATUS "Building flux-sched version ${FLUX_SCHED_VER}") if(POLICY CMP0140) cmake_policy(SET CMP0140 NEW) endif() -# Option to Enable SPHINX -option( SPHINX "Enable SPHINX" OFF ) - -# Option to AS_HELP_STRING([--disable-docs -option( DOCS "Enable docs generation" OFF ) set(CMAKE_CXX_STANDARD 14 CACHE STRING "The C++ standard to use") set(CMAKE_CXX_STANDARD_REQUIRED ON) @@ -180,7 +175,7 @@ add_subdirectory( etc ) add_subdirectory( src ) add_subdirectory( resource ) add_subdirectory( qmanager ) -# add_subdirectory( doc ) +add_subdirectory( doc ) add_subdirectory( t ) if(ENABLE_COVERAGE) diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt new file mode 100644 index 000000000..0a28af542 --- /dev/null +++ b/doc/CMakeLists.txt @@ -0,0 +1,50 @@ +set(3VALUE_OPTS On Off Try) +set(ENABLE_DOCS "Try" CACHE STRING "Enables documentation") + +if(ENABLE_DOCS) # only matches On + set(REQ_DOCS REQUIRED) +endif() +find_program(SPHINX NAMES sphinx-build sphinx-build2 ${REQ_DOCS}) + +if(SPHINX AND ENABLE_DOCS) + + set(man5_inputs + man5/flux-config-sched-fluxion-qmanager.rst + man5/flux-config-sched-fluxion-resource.rst + ) + foreach(file ${man5_inputs}) + string(REPLACE ".rst" ".5" out ${file}) + list(APPEND man5_outputs ${CMAKE_CURRENT_BINARY_DIR}/${out}) + endforeach() + + add_custom_target(manpages + ALL + DEPENDS + man5/index.rst + ${man5_inputs} + COMMAND + PYTHONPATH=$ENV{PYTHONPATH}:${CMAKE_CURRENT_SOURCE_DIR} + SPHINX_BUILDDIR=${CMAKE_CURRENT_BINARY_DIR} + ${Python_EXECUTABLE} -m sphinx -b man ${CMAKE_CURRENT_SOURCE_DIR} ./man5 + BYPRODUCTS + ${man5_outputs} + ) + install( + DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/man5 + TYPE MAN + FILES_MATCHING PATTERN "*.5" PATTERN ".doctrees" EXCLUDE + ) + add_custom_target(html + DEPENDS + man5/index.rst + ${man5_inputs} + COMMAND + PYTHONPATH=$ENV{PYTHONPATH}:${CMAKE_CURRENT_SOURCE_DIR} + SPHINX_BUILDDIR=${CMAKE_CURRENT_BINARY_DIR} + ${Python_EXECUTABLE} -m sphinx -b html ${CMAKE_CURRENT_SOURCE_DIR} ./html + BYPRODUCTS + ${man5_outputs} + ) + add_custom_target(docs + DEPENDS html manpages) +endif()