diff options
author | Orivej Desh <orivej@gmx.fr> | 2018-06-12 01:14:10 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2018-06-12 14:25:37 (GMT) |
commit | 276e369813f100562c3e22020635552edfb722a2 (patch) | |
tree | 8df0588a5b93781d3c714ad20f3a4cc605b65ddb | |
parent | 90ebc32d9e7400a590973b30c99f2986bcb2b755 (diff) | |
download | CMake-276e369813f100562c3e22020635552edfb722a2.zip CMake-276e369813f100562c3e22020635552edfb722a2.tar.gz CMake-276e369813f100562c3e22020635552edfb722a2.tar.bz2 |
Utilities/Sphinx: Add option to build and install Info manual
Add option `SPHINX_INFO` to enable the Sphinx 'texinfo' builder and use
the `makeinfo` tool to convert it to a `.info` file.
-rw-r--r-- | Source/CMakeInstallDestinations.cmake | 7 | ||||
-rw-r--r-- | Utilities/Sphinx/CMakeLists.txt | 29 | ||||
-rwxr-xr-x | bootstrap | 8 |
3 files changed, 42 insertions, 2 deletions
diff --git a/Source/CMakeInstallDestinations.cmake b/Source/CMakeInstallDestinations.cmake index 28f4e87..e82bec3 100644 --- a/Source/CMakeInstallDestinations.cmake +++ b/Source/CMakeInstallDestinations.cmake @@ -2,19 +2,22 @@ if(BEOS) set(CMAKE_BIN_DIR_DEFAULT "bin") # HAIKU set(CMAKE_DATA_DIR_DEFAULT "share/cmake-${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}") # HAIKU - set(CMAKE_MAN_DIR_DEFAULT "documentation/man") # HAIKU set(CMAKE_DOC_DIR_DEFAULT "documentation/doc/cmake-${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}") # HAIKU + set(CMAKE_INFO_DIR_DEFAULT "documentation/info") # HAIKU + set(CMAKE_MAN_DIR_DEFAULT "documentation/man") # HAIKU set(CMAKE_XDGDATA_DIR_DEFAULT "share") # HAIKU elseif(CYGWIN) set(CMAKE_BIN_DIR_DEFAULT "bin") # CYGWIN set(CMAKE_DATA_DIR_DEFAULT "share/cmake-${CMake_VERSION}") # CYGWIN set(CMAKE_DOC_DIR_DEFAULT "share/doc/cmake-${CMake_VERSION}") # CYGWIN + set(CMAKE_INFO_DIR_DEFAULT "share/info") # CYGWIN set(CMAKE_MAN_DIR_DEFAULT "share/man") # CYGWIN set(CMAKE_XDGDATA_DIR_DEFAULT "share") # CYGWIN else() set(CMAKE_BIN_DIR_DEFAULT "bin") # OTHER set(CMAKE_DATA_DIR_DEFAULT "share/cmake-${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}") # OTHER set(CMAKE_DOC_DIR_DEFAULT "doc/cmake-${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}") # OTHER + set(CMAKE_INFO_DIR_DEFAULT "info") # OTHER set(CMAKE_MAN_DIR_DEFAULT "man") # OTHER set(CMAKE_XDGDATA_DIR_DEFAULT "share") # OTHER endif() @@ -22,6 +25,7 @@ endif() set(CMAKE_BIN_DIR_DESC "bin") set(CMAKE_DATA_DIR_DESC "data") set(CMAKE_DOC_DIR_DESC "docs") +set(CMAKE_INFO_DIR_DESC "Info manual") set(CMAKE_MAN_DIR_DESC "man pages") set(CMAKE_XDGDATA_DIR_DESC "XDG specific files") @@ -35,6 +39,7 @@ foreach(v CMAKE_BIN_DIR CMAKE_DATA_DIR CMAKE_DOC_DIR + CMAKE_INFO_DIR CMAKE_MAN_DIR CMAKE_XDGDATA_DIR ) diff --git a/Utilities/Sphinx/CMakeLists.txt b/Utilities/Sphinx/CMakeLists.txt index 2de821c..1cbc463 100644 --- a/Utilities/Sphinx/CMakeLists.txt +++ b/Utilities/Sphinx/CMakeLists.txt @@ -17,6 +17,7 @@ if(NOT CMake_SOURCE_DIR) endif() project(CMakeHelp NONE) +option(SPHINX_INFO "Build Info manual with Sphinx" OFF) option(SPHINX_MAN "Build man pages with Sphinx" OFF) option(SPHINX_HTML "Build html help with Sphinx" OFF) option(SPHINX_SINGLEHTML "Build html single page help with Sphinx" OFF) @@ -32,7 +33,7 @@ separate_arguments(sphinx_flags UNIX_COMMAND "${SPHINX_FLAGS}") mark_as_advanced(SPHINX_TEXT) mark_as_advanced(SPHINX_FLAGS) -if(NOT SPHINX_MAN AND NOT SPHINX_HTML AND NOT SPHINX_SINGLEHTML AND NOT SPHINX_QTHELP AND NOT SPHINX_TEXT) +if(NOT SPHINX_INFO AND NOT SPHINX_MAN AND NOT SPHINX_HTML AND NOT SPHINX_SINGLEHTML AND NOT SPHINX_QTHELP AND NOT SPHINX_TEXT) return() elseif(NOT SPHINX_EXECUTABLE) message(FATAL_ERROR "SPHINX_EXECUTABLE (sphinx-build) is not found!") @@ -66,6 +67,24 @@ endif() if(SPHINX_TEXT) list(APPEND doc_formats text) endif() +if(SPHINX_INFO) + find_program(MAKEINFO_EXECUTABLE + NAMES makeinfo + DOC "makeinfo tool" + ) + if (NOT MAKEINFO_EXECUTABLE) + message(FATAL_ERROR "MAKEINFO_EXECUTABLE (makeinfo) not found!") + endif() + list(APPEND doc_formats texinfo) + + # Sphinx texinfo builder supports .info, .txt, .html and .pdf output. + # SPHINX_INFO controls the .info output. + set(texinfo_extra_commands + COMMAND ${MAKEINFO_EXECUTABLE} --no-split -o + ${CMAKE_CURRENT_BINARY_DIR}/texinfo/cmake.info + ${CMAKE_CURRENT_BINARY_DIR}/texinfo/cmake.texi + ) +endif() if(SPHINX_QTHELP) find_package(PythonInterp REQUIRED) @@ -143,6 +162,14 @@ if(CMake_SPHINX_DEPEND_ON_EXECUTABLES) endforeach() endif() +if(SPHINX_INFO) + CMake_OPTIONAL_COMPONENT(sphinx-info) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/texinfo/cmake.info + DESTINATION ${CMAKE_INFO_DIR} + ${COMPONENT} + ) +endif() + if(SPHINX_MAN) file(GLOB man_rst RELATIVE ${CMake_SOURCE_DIR}/Help/manual ${CMake_SOURCE_DIR}/Help/manual/*.[1-9].rst) @@ -72,6 +72,7 @@ cmake_init_file="" cmake_bootstrap_system_libs="" cmake_bootstrap_qt_gui="" cmake_bootstrap_qt_qmake="" +cmake_sphinx_info="" cmake_sphinx_man="" cmake_sphinx_html="" cmake_sphinx_qthelp="" @@ -578,6 +579,7 @@ Configuration: --no-qt-gui do not build the Qt-based GUI (default) --qt-qmake=<qmake> use <qmake> as the qmake executable to find Qt + --sphinx-info build Info manual with Sphinx --sphinx-man build man pages with Sphinx --sphinx-html build html help with Sphinx --sphinx-qthelp build qch help with Sphinx @@ -816,6 +818,7 @@ while test $# != 0; do --qt-gui) cmake_bootstrap_qt_gui="1" ;; --no-qt-gui) cmake_bootstrap_qt_gui="0" ;; --qt-qmake=*) cmake_bootstrap_qt_qmake=`cmake_arg "$1"` ;; + --sphinx-info) cmake_sphinx_info="1" ;; --sphinx-man) cmake_sphinx_man="1" ;; --sphinx-html) cmake_sphinx_html="1" ;; --sphinx-qthelp) cmake_sphinx_qthelp="1" ;; @@ -1489,6 +1492,11 @@ if [ "x${cmake_bootstrap_qt_qmake}" != "x" ]; then set (QT_QMAKE_EXECUTABLE "'"${cmake_bootstrap_qt_qmake}"'" CACHE FILEPATH "Location of Qt qmake" FORCE) ' >> "${cmake_bootstrap_dir}/InitialCacheFlags.cmake" fi +if [ "x${cmake_sphinx_info}" != "x" ]; then + echo ' +set (SPHINX_INFO "'"${cmake_sphinx_info}"'" CACHE BOOL "Build Info manual with Sphinx" FORCE) +' >> "${cmake_bootstrap_dir}/InitialCacheFlags.cmake" +fi if [ "x${cmake_sphinx_man}" != "x" ]; then echo ' set (SPHINX_MAN "'"${cmake_sphinx_man}"'" CACHE BOOL "Build man pages with Sphinx" FORCE) |