From 47dd510384d8b16947f4065595e503bff124de9f Mon Sep 17 00:00:00 2001 From: Rogier Date: Thu, 26 Nov 2015 16:17:54 +0100 Subject: [PATCH] Generate HTML documentation --- CMakeLists.txt | 7 +++--- doc/.gitignore | 1 + doc/CMakeLists.txt | 63 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 doc/.gitignore create mode 100644 doc/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index c875119..d0da4c3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -147,7 +147,7 @@ set(USE_SQLITE3 0) set(USE_LEVELDB 0) set(USE_REDIS 0) -OPTION(ENABLE_ANY_DATABASE "Enable any available database backends") +OPTION(ENABLE_ANY_DATABASE "Enable any available database backends" True) OPTION(ENABLE_ALL_DATABASES "Enable all possible database backends") OPTION(ENABLE_SQLITE3 "Enable sqlite3 backend" True) OPTION(ENABLE_LEVELDB "Enable LevelDB backend") @@ -217,7 +217,6 @@ if(NOT USE_SQLITE3 AND NOT USE_LEVELDB AND NOT USE_REDIS) message(SEND_ERROR "No database backends are configured, or none could be found") endif(NOT USE_SQLITE3 AND NOT USE_LEVELDB AND NOT USE_REDIS) - include_directories( "${PROJECT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}" @@ -264,11 +263,13 @@ target_link_libraries( ${LINK_LIBRARIES} ) +add_subdirectory(doc) + # CPack file(GLOB META_FILES RELATIVE "${CMAKE_HOME_DIRECTORY}" AUTHORS COPYING LICENSE.* README.rst) file(GLOB DOC_RST_FILES RELATIVE "${CMAKE_HOME_DIRECTORY}" doc/*.rst) -file(GLOB DOC_HTML_FILES RELATIVE "${CMAKE_HOME_DIRECTORY}" doc/*.html) +string(REPLACE ".rst" ".html" DOC_HTML_FILES "${DOC_RST_FILES}") file(GLOB DOC_IMAGE_FILES RELATIVE "${CMAKE_HOME_DIRECTORY}" doc/images/*) set(COLORS_FILES colors.txt diff --git a/doc/.gitignore b/doc/.gitignore new file mode 100644 index 0000000..2d19fc7 --- /dev/null +++ b/doc/.gitignore @@ -0,0 +1 @@ +*.html diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt new file mode 100644 index 0000000..86ff926 --- /dev/null +++ b/doc/CMakeLists.txt @@ -0,0 +1,63 @@ +project(minetestmapper CXX) +cmake_minimum_required(VERSION 2.6) +cmake_policy(SET CMP0003 NEW) + +if(NOT DEFINED USE_RST2HTML) + set(USE_RST2HTML -1) +endif(NOT DEFINED USE_RST2HTML) + +SET(ENABLE_HTML_DOCUMENTATION_DOC "Convert rst documents to html or fail") +SET(DISABLE_HTML_DOCUMENTATION_DOC "Don't convert rst documents to html") +OPTION(ENABLE_HTML_DOCUMENTATION ${ENABLE_HTML_DOCUMENTATION_DOC} False) +OPTION(DISABLE_HTML_DOCUMENTATION ${DISABLE_HTML_DOCUMENTATION_DOC} False) + +# Find rst to html converter +if(ENABLE_HTML_DOCUMENTATION AND DISABLE_HTML_DOCUMENTATION) + message(WARNING "ENABLE_HTML_DOCUMENTATION and DISABLE_HTML_DOCUMENTATION are both enabled. Reinitializing rst to html conversion.") + set(ENABLE_HTML_DOCUMENTATION False CACHE BOOL ${ENABLE_HTML_DOCUMENTATION_DOC} FORCE) + set(DISABLE_HTML_DOCUMENTATION False CACHE BOOL ${DISABLE_HTML_DOCUMENTATION_DOC} FORCE) + set(USE_RST2HTML -1) +endif(ENABLE_HTML_DOCUMENTATION AND DISABLE_HTML_DOCUMENTATION) + +find_package(Docutils) +if(DOCUTILS_FOUND) + message(STATUS "Python docutils found (rst2html: ${RST2HTML_EXECUTABLE})") +else(DOCUTILS_FOUND) + message(STATUS "Python docutils not found") +endif(DOCUTILS_FOUND) + +if(ENABLE_HTML_DOCUMENTATION) + set(USE_RST2HTML 1) + message(STATUS "Conversion of documentation to html enabled as requested") +elseif(DISABLE_HTML_DOCUMENTATION) + set(USE_RST2HTML 0) + message(STATUS "Conversion of documentation to html disabled as requested") +elseif(USE_RST2HTML EQUAL -1) + # First time, and no preference specified: choose depending + # on availability of rst2html + if (DOCUTILS_FOUND) + set(USE_RST2HTML 1) + message(STATUS "Conversion of documentation to html enabled (because python docutils found)") + else (DOCUTILS_FOUND) + set(USE_RST2HTML 0) + message(STATUS "Conversion of documentation to html disabled (because python docutils not found)") + endif (DOCUTILS_FOUND) +elseif(USE_RST2HTML EQUAL 0) + message(STATUS "Conversion of documentation to html disabled (because disabled previously)") +elseif(USE_RST2HTML EQUAL 1) + message(STATUS "Conversion of documentation to html enabled (because enabled previously)") +endif(ENABLE_HTML_DOCUMENTATION) + +if(USE_RST2HTML AND NOT DOCUTILS_FOUND) + message(SEND_ERROR "Conversion of documentation to html is enabled, but python docutils was not found.") +endif(USE_RST2HTML AND NOT DOCUTILS_FOUND) + +# Save USE_RST2HTML for next invocation +set(USE_RST2HTML ${USE_RST2HTML} CACHE INTERNAL "Internal use - do not modify") + +file(GLOB DOC_RST_FILES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" *.rst) +string(REPLACE ".rst" ".html" DOC_HTML_FILES "${DOC_RST_FILES}") + +add_custom_target(htmldoc ALL DEPENDS ${DOC_HTML_FILES}) +RST2HTML(${DOC_RST_FILES}) +