set(_GENERATE_HTML_DOC YES)
set(_GENERATE_MAN_DOC YES)
set(_MAYBE_PYTHON "")
find_program(RST2HTML NAMES rst2html rst2html.py)
find_program(RST2MAN NAMES rst2man rst2man.py)
if (RST2HTML STREQUAL "RST2HTML-NOTFOUND")
message(STATUS "rst2html not found, not generating HTML documentation")
set(_GENERATE_HTML_DOC NO)
else ()
# We only run this for RST2HTML and assume the result would be the same
# for RST2MAN
if (DEFINED CACHE{DOCUTILS_NEED_PYTHON})
if ($CACHE{DOCUTILS_NEED_PYTHON})
set(_MAYBE_PYTHON ${PYTHON})
endif ()
else ()
execute_process(
COMMAND ${RST2HTML} --version
OUTPUT_VARIABLE RST2HTML_VERSION_EXE
)
execute_process(
COMMAND ${PYTHON} ${RST2HTML} --version
OUTPUT_VARIABLE RST2HTML_VERSION_PY
)
set(_DOCUTILS_NEED_PYTHON OFF)
if(RST2HTML_VERSION_EXE STREQUAL "")
if(RST2HTML_VERSION_PY STREQUAL "")
message(STATUS "${RST2HTML} found but not working, not generating documentation")
set(_GENERATE_HTML_DOC NO)
set(_GENERATE_MAN_DOC NO)
else ()
message(STATUS "${RST2HTML} needs to be executed by ${PYTHON} to work")
set(_MAYBE_PYTHON ${PYTHON})
set(_DOCUTILS_NEED_PYTHON ON)
endif ()
endif ()
set(DOCUTILS_NEED_PYTHON ${_DOCUTILS_NEED_PYTHON} CACHE BOOL
"Whether we need to call python instead of rst2*.py directly")
endif (DEFINED CACHE{DOCUTILS_NEED_PYTHON})
endif ()
if (RST2MAN STREQUAL "RST2MAN-NOTFOUND")
message(STATUS "rst2man not found, not generating man pages")
set(_GENERATE_MAN_DOC NO)
endif ()
set(OPENVPN_SECTIONS
man-sections/advanced-options.rst
man-sections/cipher-negotiation.rst
man-sections/client-options.rst
man-sections/connection-profiles.rst
man-sections/encryption-options.rst
man-sections/generic-options.rst
man-sections/inline-files.rst
man-sections/link-options.rst
man-sections/log-options.rst
man-sections/management-options.rst
man-sections/network-config.rst
man-sections/pkcs11-options.rst
man-sections/plugin-options.rst
man-sections/protocol-options.rst
man-sections/proxy-options.rst
man-sections/renegotiation.rst
man-sections/signals.rst
man-sections/script-options.rst
man-sections/server-options.rst
man-sections/tls-options.rst
man-sections/unsupported-options.rst
man-sections/virtual-routing-and-forwarding.rst
man-sections/vpn-network-options.rst
man-sections/windows-options.rst
)
set(OPENVPN_EXAMPLES_SECTIONS
man-sections/example-fingerprint.rst
man-sections/examples.rst
)
set(RST_FLAGS --strict)
if (_GENERATE_HTML_DOC)
list(APPEND ALL_DOCS openvpn.8.html openvpn-examples.5.html)
add_custom_command(
OUTPUT openvpn.8.html
COMMAND ${_MAYBE_PYTHON} ${RST2HTML} ${RST_FLAGS} ${CMAKE_CURRENT_SOURCE_DIR}/openvpn.8.rst ${CMAKE_CURRENT_BINARY_DIR}/openvpn.8.html
MAIN_DEPENDENCY openvpn.8.rst
DEPENDS ${OPENVPN_SECTIONS}
)
add_custom_command(
OUTPUT openvpn-examples.5.html
COMMAND ${_MAYBE_PYTHON} ${RST2HTML} ${RST_FLAGS} ${CMAKE_CURRENT_SOURCE_DIR}/openvpn-examples.5.rst ${CMAKE_CURRENT_BINARY_DIR}/openvpn-examples.5.html
MAIN_DEPENDENCY openvpn-examples.5.rst
DEPENDS ${OPENVPN_EXAMPLES_SECTIONS}
)
endif ()
if (_GENERATE_MAN_DOC)
list(APPEND ALL_DOCS openvpn.8 openvpn-examples.5)
add_custom_command(
OUTPUT openvpn.8
COMMAND ${_MAYBE_PYTHON} ${RST2MAN} ${RST_FLAGS} ${CMAKE_CURRENT_SOURCE_DIR}/openvpn.8.rst ${CMAKE_CURRENT_BINARY_DIR}/openvpn.8
MAIN_DEPENDENCY openvpn.8.rst
DEPENDS ${OPENVPN_SECTIONS}
)
add_custom_command(
OUTPUT openvpn-examples.5
COMMAND ${_MAYBE_PYTHON} ${RST2MAN} ${RST_FLAGS} ${CMAKE_CURRENT_SOURCE_DIR}/openvpn-examples.5.rst ${CMAKE_CURRENT_BINARY_DIR}/openvpn-examples.5
MAIN_DEPENDENCY openvpn-examples.5.rst
DEPENDS ${OPENVPN_EXAMPLES_SECTIONS}
)
endif ()
add_custom_target(documentation ALL DEPENDS ${ALL_DOCS})