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