mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-12 17:32:19 +00:00
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@imperial.ac.uk>! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206655 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
08ef0202ce
commit
4c464def6a
@ -287,7 +287,8 @@ option(LLVM_INCLUDE_TESTS "Generate build targets for the LLVM unit tests." ON)
|
|||||||
|
|
||||||
option (LLVM_BUILD_DOCS "Build the llvm documentation." OFF)
|
option (LLVM_BUILD_DOCS "Build the llvm documentation." OFF)
|
||||||
option (LLVM_INCLUDE_DOCS "Generate build targets for llvm documentation." ON)
|
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
|
option (LLVM_BUILD_EXTERNAL_COMPILER_RT
|
||||||
"Build compiler-rt as an external project." OFF)
|
"Build compiler-rt as an external project." OFF)
|
||||||
|
@ -505,3 +505,13 @@ if (LLVM_ENABLE_DOXYGEN)
|
|||||||
else()
|
else()
|
||||||
message(STATUS "Doxygen disabled.")
|
message(STATUS "Doxygen disabled.")
|
||||||
endif()
|
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()
|
||||||
|
54
cmake/modules/AddSphinxTarget.cmake
Normal file
54
cmake/modules/AddSphinxTarget.cmake
Normal file
@ -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()
|
25
cmake/modules/FindSphinx.cmake
Normal file
25
cmake/modules/FindSphinx.cmake
Normal file
@ -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)
|
@ -89,3 +89,18 @@ if (LLVM_ENABLE_DOXYGEN)
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
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()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user