[llvm] r206655 - Added Sphinx documentation generation to CMake build system.
Sean Silva
chisophugis at gmail.com
Fri Apr 18 17:46:24 PDT 2014
Great! Can't wait to get me some man pages installed!
-- Sean Silva
On Fri, Apr 18, 2014 at 5:45 PM, Reid Kleckner <reid at kleckner.net> wrote:
> Author: rnk
> Date: Fri Apr 18 16:45:25 2014
> New Revision: 206655
>
> URL: http://llvm.org/viewvc/llvm-project?rev=206655&view=rev
> Log:
> Added Sphinx documentation generation to CMake build system.
>
> The option LLVM_ENABLE_SPHINX option enables the "docs-llvm-html",
> "docs-llvm-man" targets but does not build them by default. The
> following CMake options have been added that control what targets are
> made available
>
> SPHINX_OUTPUT_HTML
> SPHINX_OUTPUT_MAN
>
> If LLVM_BUILD_DOCS is enabled then the enabled docs-llvm-* targets will
> be built by default and if ``make install`` is run then docs-llvm-html
> and docs-llvm-man will be installed (tested on Linux only).
>
> The add_sphinx_target function is in its own file so it can be included
> by other projects that use Sphinx for their documentation.
>
> Patch by Daniel Liew <daniel.liew at imperial.ac.uk>!
>
> Added:
> llvm/trunk/cmake/modules/AddSphinxTarget.cmake
> llvm/trunk/cmake/modules/FindSphinx.cmake
> Modified:
> llvm/trunk/CMakeLists.txt
> llvm/trunk/cmake/config-ix.cmake
> llvm/trunk/docs/CMakeLists.txt
>
> Modified: llvm/trunk/CMakeLists.txt
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/CMakeLists.txt?rev=206655&r1=206654&r2=206655&view=diff
>
> ==============================================================================
> --- llvm/trunk/CMakeLists.txt (original)
> +++ llvm/trunk/CMakeLists.txt Fri Apr 18 16:45:25 2014
> @@ -287,7 +287,8 @@ option(LLVM_INCLUDE_TESTS "Generate buil
>
> option (LLVM_BUILD_DOCS "Build the llvm documentation." OFF)
> option (LLVM_INCLUDE_DOCS "Generate build targets for llvm
> documentation." ON)
> -option (LLVM_ENABLE_DOXYGEN "Use doxygen to generate llvm documentation."
> OFF)
> +option (LLVM_ENABLE_DOXYGEN "Use doxygen to generate llvm API
> documentation." OFF)
> +option (LLVM_ENABLE_SPHINX "Use Sphinx to generate llvm documentation."
> OFF)
>
> option (LLVM_BUILD_EXTERNAL_COMPILER_RT
> "Build compiler-rt as an external project." OFF)
>
> Modified: llvm/trunk/cmake/config-ix.cmake
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/config-ix.cmake?rev=206655&r1=206654&r2=206655&view=diff
>
> ==============================================================================
> --- llvm/trunk/cmake/config-ix.cmake (original)
> +++ llvm/trunk/cmake/config-ix.cmake Fri Apr 18 16:45:25 2014
> @@ -505,3 +505,13 @@ if (LLVM_ENABLE_DOXYGEN)
> else()
> message(STATUS "Doxygen disabled.")
> endif()
> +
> +if (LLVM_ENABLE_SPHINX)
> + message(STATUS "Sphinx enabled.")
> + find_package(Sphinx REQUIRED)
> + if (LLVM_BUILD_DOCS)
> + add_custom_target(sphinx ALL)
> + endif()
> +else()
> + message(STATUS "Sphinx disabled.")
> +endif()
>
> Added: llvm/trunk/cmake/modules/AddSphinxTarget.cmake
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/AddSphinxTarget.cmake?rev=206655&view=auto
>
> ==============================================================================
> --- llvm/trunk/cmake/modules/AddSphinxTarget.cmake (added)
> +++ llvm/trunk/cmake/modules/AddSphinxTarget.cmake Fri Apr 18 16:45:25 2014
> @@ -0,0 +1,54 @@
> +# Handy function for creating the different Sphinx targets.
> +#
> +# ``builder`` should be one of the supported builders used by
> +# the sphinx-build command.
> +#
> +# ``project`` should be the project name
> +function (add_sphinx_target builder project)
> + set(SPHINX_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/${builder}")
> + set(SPHINX_DOC_TREE_DIR "${CMAKE_CURRENT_BINARY_DIR}/_doctrees")
> + set(SPHINX_TARGET_NAME docs-${project}-${builder})
> + add_custom_target(${SPHINX_TARGET_NAME}
> + COMMAND ${SPHINX_EXECUTABLE}
> + -b ${builder}
> + -d "${SPHINX_DOC_TREE_DIR}"
> + -q # Quiet: no output other than errors and
> warnings.
> + -W # Warnings are errors.
> + "${CMAKE_CURRENT_SOURCE_DIR}" # Source
> + "${SPHINX_BUILD_DIR}" # Output
> + COMMENT
> + "Generating ${builder} Sphinx documentation for
> ${project}")
> +
> + # When "clean" target is run, remove the Sphinx build directory
> + set_property(DIRECTORY APPEND PROPERTY
> + ADDITIONAL_MAKE_CLEAN_FILES
> + "${SPHINX_BUILD_DIR}")
> +
> + # We need to remove ${SPHINX_DOC_TREE_DIR} when make clean is run
> + # but we should only add this path once
> + get_property(_CURRENT_MAKE_CLEAN_FILES
> + DIRECTORY PROPERTY ADDITIONAL_MAKE_CLEAN_FILES)
> + list(FIND _CURRENT_MAKE_CLEAN_FILES "${SPHINX_DOC_TREE_DIR}" _INDEX)
> + if (_INDEX EQUAL -1)
> + set_property(DIRECTORY APPEND PROPERTY
> + ADDITIONAL_MAKE_CLEAN_FILES
> + "${SPHINX_DOC_TREE_DIR}")
> + endif()
> +
> + if (LLVM_BUILD_DOCS)
> + add_dependencies(sphinx ${SPHINX_TARGET_NAME})
> +
> + # Handle installation
> + if (builder STREQUAL man)
> + # FIXME: We might not ship all the tools that these man pages
> describe
> + install(DIRECTORY "${SPHINX_BUILD_DIR}/" # Slash indicates contents
> of
> + DESTINATION share/man/man1)
> +
> + elseif (builder STREQUAL html)
> + install(DIRECTORY "${SPHINX_BUILD_DIR}"
> + DESTINATION "share/doc/${project}")
> + else()
> + message(WARNING Installation of ${builder} not supported)
> + endif()
> + endif()
> +endfunction()
>
> Added: llvm/trunk/cmake/modules/FindSphinx.cmake
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/FindSphinx.cmake?rev=206655&view=auto
>
> ==============================================================================
> --- llvm/trunk/cmake/modules/FindSphinx.cmake (added)
> +++ llvm/trunk/cmake/modules/FindSphinx.cmake Fri Apr 18 16:45:25 2014
> @@ -0,0 +1,25 @@
> +# CMake find_package() Module for Sphinx documentation generator
> +# http://sphinx-doc.org/
> +#
> +# Example usage:
> +#
> +# find_package(Sphinx)
> +#
> +# If successful the following variables will be defined
> +# SPHINX_FOUND
> +# SPHINX_EXECUTABLE
> +
> +find_program(SPHINX_EXECUTABLE
> + NAMES sphinx-build sphinx-build2
> + DOC "Path to sphinx-build executable")
> +
> +# Handle REQUIRED and QUIET arguments
> +# this will also set SPHINX_FOUND to true if SPHINX_EXECUTABLE exists
> +include(FindPackageHandleStandardArgs)
> +find_package_handle_standard_args(Sphinx
> + "Failed to locate sphinx-build
> executable"
> + SPHINX_EXECUTABLE)
> +
> +# Provide options for controlling different types of output
> +option(SPHINX_OUTPUT_HTML "Output standalone HTML files" ON)
> +option(SPHINX_OUTPUT_MAN "Output man pages" ON)
>
> Modified: llvm/trunk/docs/CMakeLists.txt
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/CMakeLists.txt?rev=206655&r1=206654&r2=206655&view=diff
>
> ==============================================================================
> --- llvm/trunk/docs/CMakeLists.txt (original)
> +++ llvm/trunk/docs/CMakeLists.txt Fri Apr 18 16:45:25 2014
> @@ -89,3 +89,18 @@ if (LLVM_ENABLE_DOXYGEN)
> endif()
> endif()
> endif()
> +
> +if (LLVM_ENABLE_SPHINX)
> + if (SPHINX_FOUND)
> + include(AddSphinxTarget)
> + if (${SPHINX_OUTPUT_HTML})
> + add_sphinx_target(html llvm)
> + endif()
> +
> +
> + if (${SPHINX_OUTPUT_MAN})
> + add_sphinx_target(man llvm)
> + endif()
> +
> + endif()
> +endif()
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140418/b5758859/attachment.html>
More information about the llvm-commits
mailing list