aboutsummaryrefslogtreecommitdiff
path: root/cmake/FindSphinx.cmake
diff options
context:
space:
mode:
authorJoakim Soderberg <joakim.soderberg@gmail.com>2013-04-24 14:14:00 +0000
committerJoakim Soderberg <joakim.soderberg@gmail.com>2013-04-24 14:14:00 +0000
commit8390c90a913f6e9cbb29f3288214c5cad743f6c2 (patch)
treefb6c91228e310e06aebe2ee3a5f95ce79f845cbf /cmake/FindSphinx.cmake
parent3000831365312f96c1b4bb6dd70a3f7de1028831 (diff)
downloadjansson-8390c90a913f6e9cbb29f3288214c5cad743f6c2.zip
jansson-8390c90a913f6e9cbb29f3288214c5cad743f6c2.tar.gz
jansson-8390c90a913f6e9cbb29f3288214c5cad743f6c2.tar.bz2
Added more detailed CMake documentation.
- Also added better FindSphinx support so that we can detect the version and not have a fatal error if it's too old. - Added support for building latex documentation with -DBUILD_LATEX. Off by default. - Added suppor for building man pages with -DBUILD_MAN. On by default (unless sphins is too old to support it).
Diffstat (limited to 'cmake/FindSphinx.cmake')
-rw-r--r--cmake/FindSphinx.cmake345
1 files changed, 333 insertions, 12 deletions
diff --git a/cmake/FindSphinx.cmake b/cmake/FindSphinx.cmake
index 76f6e2a..aefdcd0 100644
--- a/cmake/FindSphinx.cmake
+++ b/cmake/FindSphinx.cmake
@@ -1,16 +1,337 @@
-find_program(SPHINX_EXECUTABLE NAMES sphinx-build
- HINTS
- $ENV{SPHINX_DIR}
- PATH_SUFFIXES bin
- DOC "Sphinx documentation generator"
-)
+#find_program(SPHINX_EXECUTABLE NAMES sphinx-build
+# HINTS
+# $ENV{SPHINX_DIR}
+# PATH_SUFFIXES bin
+# DOC "Sphinx documentation generator"
+#)
+#
+#include(FindPackageHandleStandardArgs)
+#
+## Get the version.
+#execute_process(
+# COMMAND "${SPHINX_EXECUTABLE} -h"
+# OUTPUT_VARIABLE _SPHINX_VERSION_STRING
+# ERROR_VARIABLE _SPHINX_VERSION_STRING)
+#
+#message("Sp ${_SPHINX_VERSION_STRING}")
+#if (_SPHINX_VERSION_STRING MATCHES "Sphinx v([0-9]+\\.[0-9]+\\.[0-9]+)")
+# set(SPHINX_VERSION_STRING "${CMAKE_MATCH_1}")
+# string (REPLACE "." ";" _SPHINX_VERSION "${SPHINX_VERSION_STRING}")
+# list(GET _SPHINX_VERSION 0 SPHINX_VERSION_MAJOR)
+# list(GET _SPHINX_VERSION 1 SPHINX_VERSION_MINOR)
+# list(GET _SPHINX_VERSION 2 SPHINX_VERSION_PATCH)
+# if (SPHINX_VERSION_PATCH EQUAL 0)
+# string (REGEX REPLACE "\\.0$" "" SPHINX_VERSION_STRING "${SPHINX_VERSION_STRING}")
+# endif ()
+#endif()
+#
+#find_package_handle_standard_args(Sphinx DEFAULT_MSG
+# SPHINX_EXECUTABLE
+# VERSION_VAR
+# SPHINX_VERSION_STRING
+#)
+#
+#mark_as_advanced(
+# SPHINX_EXECUTABLE
+# SPHINX_VERSION_STRING
+#)
+#
+#unset(_SPHINX_VERSION_STRING)
-include(FindPackageHandleStandardArgs)
+#
+# PART B. DOWNLOADING AGREEMENT - LICENSE FROM SBIA WITH RIGHT TO SUBLICENSE ("SOFTWARE LICENSE").
+# ------------------------------------------------------------------------------------------------
+#
+# 1. As used in this Software License, "you" means the individual downloading and/or
+# using, reproducing, modifying, displaying and/or distributing the Software and
+# the institution or entity which employs or is otherwise affiliated with such
+# individual in connection therewith. The Section of Biomedical Image Analysis,
+# Department of Radiology at the Universiy of Pennsylvania ("SBIA") hereby grants
+# you, with right to sublicense, with respect to SBIA's rights in the software,
+# and data, if any, which is the subject of this Software License (collectively,
+# the "Software"), a royalty-free, non-exclusive license to use, reproduce, make
+# derivative works of, display and distribute the Software, provided that:
+# (a) you accept and adhere to all of the terms and conditions of this Software
+# License; (b) in connection with any copy of or sublicense of all or any portion
+# of the Software, all of the terms and conditions in this Software License shall
+# appear in and shall apply to such copy and such sublicense, including without
+# limitation all source and executable forms and on any user documentation,
+# prefaced with the following words: "All or portions of this licensed product
+# (such portions are the "Software") have been obtained under license from the
+# Section of Biomedical Image Analysis, Department of Radiology at the University
+# of Pennsylvania and are subject to the following terms and conditions:"
+# (c) you preserve and maintain all applicable attributions, copyright notices
+# and licenses included in or applicable to the Software; (d) modified versions
+# of the Software must be clearly identified and marked as such, and must not
+# be misrepresented as being the original Software; and (e) you consider making,
+# but are under no obligation to make, the source code of any of your modifications
+# to the Software freely available to others on an open source basis.
+#
+# 2. The license granted in this Software License includes without limitation the
+# right to (i) incorporate the Software into proprietary programs (subject to
+# any restrictions applicable to such programs), (ii) add your own copyright
+# statement to your modifications of the Software, and (iii) provide additional
+# or different license terms and conditions in your sublicenses of modifications
+# of the Software; provided that in each case your use, reproduction or
+# distribution of such modifications otherwise complies with the conditions
+# stated in this Software License.
+#
+# 3. This Software License does not grant any rights with respect to third party
+# software, except those rights that SBIA has been authorized by a third
+# party to grant to you, and accordingly you are solely responsible for
+# (i) obtaining any permissions from third parties that you need to use,
+# reproduce, make derivative works of, display and distribute the Software,
+# and (ii) informing your sublicensees, including without limitation your
+# end-users, of their obligations to secure any such required permissions.
+#
+# 4. The Software has been designed for research purposes only and has not been
+# reviewed or approved by the Food and Drug Administration or by any other
+# agency. YOU ACKNOWLEDGE AND AGREE THAT CLINICAL APPLICATIONS ARE NEITHER
+# RECOMMENDED NOR ADVISED. Any commercialization of the Software is at the
+# sole risk of the party or parties engaged in such commercialization.
+# You further agree to use, reproduce, make derivative works of, display
+# and distribute the Software in compliance with all applicable governmental
+# laws, regulations and orders, including without limitation those relating
+# to export and import control.
+#
+# 5. The Software is provided "AS IS" and neither SBIA nor any contributor to
+# the software (each a "Contributor") shall have any obligation to provide
+# maintenance, support, updates, enhancements or modifications thereto.
+# SBIA AND ALL CONTRIBUTORS SPECIFICALLY DISCLAIM ALL EXPRESS AND IMPLIED
+# WARRANTIES OF ANY KIND INCLUDING, BUT NOT LIMITED TO, ANY WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+# IN NO EVENT SHALL SBIA OR ANY CONTRIBUTOR BE LIABLE TO ANY PARTY FOR
+# DIRECT, INDIRECT, SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY ARISING IN ANY WAY RELATED
+# TO THE SOFTWARE, EVEN IF SBIA OR ANY CONTRIBUTOR HAS BEEN ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGES. TO THE MAXIMUM EXTENT NOT PROHIBITED BY LAW OR
+# REGULATION, YOU FURTHER ASSUME ALL LIABILITY FOR YOUR USE, REPRODUCTION,
+# MAKING OF DERIVATIVE WORKS, DISPLAY, LICENSE OR DISTRIBUTION OF THE SOFTWARE
+# AND AGREE TO INDEMNIFY AND HOLD HARMLESS SBIA AND ALL CONTRIBUTORS FROM
+# AND AGAINST ANY AND ALL CLAIMS, SUITS, ACTIONS, DEMANDS AND JUDGMENTS ARISING
+# THEREFROM.
+#
+# 6. None of the names, logos or trademarks of SBIA or any of SBIA's affiliates
+# or any of the Contributors, or any funding agency, may be used to endorse
+# or promote products produced in whole or in part by operation of the Software
+# or derived from or based on the Software without specific prior written
+# permission from the applicable party.
+#
+# 7. Any use, reproduction or distribution of the Software which is not in accordance
+# with this Software License shall automatically revoke all rights granted to you
+# under this Software License and render Paragraphs 1 and 2 of this Software
+# License null and void.
+#
+# 8. This Software License does not grant any rights in or to any intellectual
+# property owned by SBIA or any Contributor except those rights expressly
+# granted hereunder.
+#
+#
+# PART C. MISCELLANEOUS
+# ---------------------
+#
+# This Agreement shall be governed by and construed in accordance with the laws
+# of The Commonwealth of Pennsylvania without regard to principles of conflicts
+# of law. This Agreement shall supercede and replace any license terms that you
+# may have agreed to previously with respect to Software from SBIA.
+#
+##############################################################################
+# @file FindSphinx.cmake
+# @brief Find Sphinx documentation build tools.
+#
+# @par Input variables:
+# <table border="0">
+# <tr>
+# @tp @b Sphinx_DIR @endtp
+# <td>Installation directory of Sphinx tools. Can also be set as environment variable.</td>
+# </tr>
+# <tr>
+# @tp @b SPHINX_DIR @endtp
+# <td>Alternative environment variable for @c Sphinx_DIR.</td>
+# </tr>
+# <tr>
+# @tp @b Sphinx_FIND_COMPONENTS @endtp
+# <td>Sphinx build tools to look for, i.e., 'apidoc' and/or 'build'.</td>
+# </tr>
+# </table>
+#
+# @par Output variables:
+# <table border="0">
+# <tr>
+# @tp @b Sphinx_FOUND @endtp
+# <td>Whether all or only the requested Sphinx build tools were found.</td>
+# </tr>
+# <tr>
+# @tp @b SPHINX_FOUND @endtp
+# <td>Alias for @c Sphinx_FOUND.<td>
+# </tr>
+# <tr>
+# @tp @b SPHINX_EXECUTABLE @endtp
+# <td>Non-cached alias for @c Sphinx-build_EXECUTABLE.</td>
+# </tr>
+# <tr>
+# @tp @b Sphinx_PYTHON_EXECUTABLE @endtp
+# <td>Python executable used to run sphinx-build. This is either the
+# by default found Python interpreter or a specific version as
+# specified by the shebang (#!) of the sphinx-build script.</td>
+# </tr>
+# <tr>
+# @tp @b Sphinx_PYTHON_OPTIONS @endtp
+# <td>A list of Python options extracted from the shebang (#!) of the
+# sphinx-build script. The -E option is added by this module
+# if the Python executable is not the system default to avoid
+# problems with a differing setting of the @c PYTHONHOME.</td>
+# </tr>
+# <tr>
+# @tp @b Sphinx-build_EXECUTABLE @endtp
+# <td>Absolute path of the found sphinx-build tool.</td>
+# </tr>
+# <tr>
+# @tp @b Sphinx-apidoc_EXECUTABLE @endtp
+# <td>Absolute path of the found sphinx-apidoc tool.</td>
+# </tr>
+# <tr>
+# @tp @b Sphinx_VERSION_STRING @endtp
+# <td>Sphinx version found e.g. 1.1.2.</td>
+# </tr>
+# <tr>
+# @tp @b Sphinx_VERSION_MAJOR @endtp
+# <td>Sphinx major version found e.g. 1.</td>
+# </tr>
+# <tr>
+# @tp @b Sphinx_VERSION_MINOR @endtp
+# <td>Sphinx minor version found e.g. 1.</td>
+# </tr>
+# <tr>
+# @tp @b Sphinx_VERSION_PATCH @endtp
+# <td>Sphinx patch version found e.g. 2.</td>
+# </tr>
+# </table>
+#
+# @ingroup CMakeFindModules
+##############################################################################
-find_package_handle_standard_args(Sphinx DEFAULT_MSG
- SPHINX_EXECUTABLE
-)
+set (_Sphinx_REQUIRED_VARS)
+
+# ----------------------------------------------------------------------------
+# initialize search
+if (NOT Sphinx_DIR)
+ if (NOT $ENV{Sphinx_DIR} STREQUAL "")
+ set (Sphinx_DIR "$ENV{Sphinx_DIR}" CACHE PATH "Installation prefix of Sphinx (docutils)." FORCE)
+ else ()
+ set (Sphinx_DIR "$ENV{SPHINX_DIR}" CACHE PATH "Installation prefix of Sphinx (docutils)." FORCE)
+ endif ()
+endif ()
+
+# ----------------------------------------------------------------------------
+# default components to look for
+if (NOT Sphinx_FIND_COMPONENTS)
+ set (Sphinx_FIND_COMPONENTS "build")
+elseif (NOT Sphinx_FIND_COMPONENTS MATCHES "^(build|apidoc)$")
+ message (FATAL_ERROR "Invalid Sphinx component in: ${Sphinx_FIND_COMPONENTS}")
+endif ()
+
+# ----------------------------------------------------------------------------
+# find components, i.e., build tools
+foreach (_Sphinx_TOOL IN LISTS Sphinx_FIND_COMPONENTS)
+ if (Sphinx_DIR)
+ find_program (
+ Sphinx-${_Sphinx_TOOL}_EXECUTABLE
+ NAMES sphinx-${_Sphinx_TOOL} sphinx-${_Sphinx_TOOL}.py
+ HINTS "${Sphinx_DIR}"
+ PATH_SUFFIXES bin
+ DOC "The sphinx-${_Sphinx_TOOL} Python script."
+ NO_DEFAULT_PATH
+ )
+ else ()
+ find_program (
+ Sphinx-${_Sphinx_TOOL}_EXECUTABLE
+ NAMES sphinx-${_Sphinx_TOOL} sphinx-${_Sphinx_TOOL}.py
+ DOC "The sphinx-${_Sphinx_TOOL} Python script."
+ )
+ endif ()
+ mark_as_advanced (Sphinx-${_Sphinx_TOOL}_EXECUTABLE)
+ list (APPEND _Sphinx_REQUIRED_VARS Sphinx-${_Sphinx_TOOL}_EXECUTABLE)
+endforeach ()
-mark_as_advanced(
-  SPHINX_EXECUTABLE
+# ----------------------------------------------------------------------------
+# determine Python executable used by Sphinx
+if (Sphinx-build_EXECUTABLE)
+ # extract python executable from shebang of sphinx-build
+ find_package (PythonInterp QUIET)
+ set (Sphinx_PYTHON_EXECUTABLE "${PYTHON_EXECUTABLE}")
+ set (Sphinx_PYTHON_OPTIONS)
+ file (STRINGS "${Sphinx-build_EXECUTABLE}" FIRST_LINE LIMIT_COUNT 1)
+ if (FIRST_LINE MATCHES "^#!(.*/python.*)") # does not match "#!/usr/bin/env python" !
+ string (REGEX REPLACE "^ +| +$" "" Sphinx_PYTHON_EXECUTABLE "${CMAKE_MATCH_1}")
+ if (Sphinx_PYTHON_EXECUTABLE MATCHES "([^ ]+) (.*)")
+ set (Sphinx_PYTHON_EXECUTABLE "${CMAKE_MATCH_1}")
+ string (REGEX REPLACE " +" ";" Sphinx_PYTHON_OPTIONS "${CMAKE_MATCH_2}")
+ endif ()
+ endif ()
+ # this is done to avoid problems with multiple Python versions being installed
+ # remember: CMake command if(STR EQUAL STR) is bad and may cause many troubles !
+ string (REGEX REPLACE "([.+*?^$])" "\\\\\\1" _Sphinx_PYTHON_EXECUTABLE_RE "${PYTHON_EXECUTABLE}")
+ list (FIND Sphinx_PYTHON_OPTIONS -E IDX)
+ if (IDX EQUAL -1 AND NOT Sphinx_PYTHON_EXECUTABLE MATCHES "^${_Sphinx_PYTHON_EXECUTABLE_RE}$")
+ list (INSERT Sphinx_PYTHON_OPTIONS 0 -E)
+ endif ()
+ unset (_Sphinx_PYTHON_EXECUTABLE_RE)
+endif ()
+
+# ----------------------------------------------------------------------------
+# determine Sphinx version
+if (Sphinx-build_EXECUTABLE)
+ # intentionally use invalid -h option here as the help that is shown then
+ # will include the Sphinx version information
+ if (Sphinx_PYTHON_EXECUTABLE)
+ execute_process (
+ COMMAND "${Sphinx_PYTHON_EXECUTABLE}" ${Sphinx_PYTHON_OPTIONS} "${Sphinx-build_EXECUTABLE}" -h
+ OUTPUT_VARIABLE _Sphinx_VERSION
+ ERROR_VARIABLE _Sphinx_VERSION
+ )
+ elseif (UNIX)
+ execute_process (
+ COMMAND "${Sphinx-build_EXECUTABLE}" -h
+ OUTPUT_VARIABLE _Sphinx_VERSION
+ ERROR_VARIABLE _Sphinx_VERSION
+ )
+ endif ()
+ if (_Sphinx_VERSION MATCHES "Sphinx v([0-9]+\\.[0-9]+\\.[0-9]+)")
+ set (Sphinx_VERSION_STRING "${CMAKE_MATCH_1}")
+ string (REPLACE "." ";" _Sphinx_VERSION "${Sphinx_VERSION_STRING}")
+ list(GET _Sphinx_VERSION 0 Sphinx_VERSION_MAJOR)
+ list(GET _Sphinx_VERSION 1 Sphinx_VERSION_MINOR)
+ list(GET _Sphinx_VERSION 2 Sphinx_VERSION_PATCH)
+ if (Sphinx_VERSION_PATCH EQUAL 0)
+ string (REGEX REPLACE "\\.0$" "" Sphinx_VERSION_STRING "${Sphinx_VERSION_STRING}")
+ endif ()
+ endif()
+endif ()
+
+# ----------------------------------------------------------------------------
+# compatibility with FindPythonInterp.cmake and FindPerl.cmake
+set (SPHINX_EXECUTABLE "${Sphinx-build_EXECUTABLE}")
+
+# ----------------------------------------------------------------------------
+# handle the QUIETLY and REQUIRED arguments and set SPHINX_FOUND to TRUE if
+# all listed variables are TRUE
+include (FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS (
+ Sphinx
+ REQUIRED_VARS
+ ${_Sphinx_REQUIRED_VARS}
+# VERSION_VAR # This isn't available until CMake 2.8.8 so don't use it.
+ Sphinx_VERSION_STRING
)
+
+# ----------------------------------------------------------------------------
+# set Sphinx_DIR
+if (NOT Sphinx_DIR AND Sphinx-build_EXECUTABLE)
+ get_filename_component (Sphinx_DIR "${Sphinx-build_EXECUTABLE}" PATH)
+ string (REGEX REPLACE "/bin/?" "" Sphinx_DIR "${Sphinx_DIR}")
+ set (Sphinx_DIR "${Sphinx_DIR}" CACHE PATH "Installation directory of Sphinx tools." FORCE)
+endif ()
+
+unset (_Sphinx_VERSION)
+unset (_Sphinx_REQUIRED_VARS) \ No newline at end of file