Gyorgy Szing | 74dae3c | 2018-09-27 17:00:46 +0200 | [diff] [blame] | 1 | #------------------------------------------------------------------------------- |
| 2 | # Copyright (c) 2019, Arm Limited. All rights reserved. |
| 3 | # |
| 4 | # SPDX-License-Identifier: BSD-3-Clause |
| 5 | # |
| 6 | #------------------------------------------------------------------------------- |
| 7 | |
| 8 | #FindSphinx |
| 9 | #----------- |
| 10 | #Sphinx is a document generation tool written in Python. |
| 11 | #See http://www.sphinx-doc.org/en/master/ |
| 12 | # |
| 13 | #This module checks availability of the Sphinx document generator |
| 14 | #(sphinx-build) and it's dependences (Python). |
| 15 | #Sphinx is distributed as pip package or on Linux as a distribution specific |
| 16 | #package (i.e. python-sphinx for Ubuntu). Independent of the distribution |
| 17 | #method this module expects sphix-build to be either available on the PATH, |
| 18 | #or to be located in a host OS specific standard location. |
| 19 | # |
| 20 | #This modules has the following parameters: |
| 21 | # SPHINX_PATH = variable specifying where sphinx-build can be found. |
| 22 | # If it is not defined the environment variable with |
| 23 | # the same name is used. If that is also undefined, |
| 24 | # then OS specific standard locations will be |
| 25 | # searched. |
| 26 | # |
| 27 | # This modules defines the following variables: |
| 28 | # SPHINX_VERSION = The version reported by "sphinx-build --version" |
| 29 | # SPHINX_FOUND = True is sphinx-build was found and executed fine |
| 30 | # |
| 31 | |
| 32 | Include(CMakeParseArguments) |
| 33 | |
| 34 | #Sphinx needs Python. |
| 35 | find_package(PythonInterp 3) |
| 36 | if (NOT PYTHONINTERP_FOUND) |
| 37 | message(STATUS "Can not find Python3.x interpreter. Pyhton3 must be installed and available on the PATH.") |
| 38 | message(STATUS "Sphinx documentation targets will not be created.") |
| 39 | return() |
| 40 | endif() |
| 41 | |
| 42 | if (NOT DEFINED SPHINX_PATH) |
| 43 | if (DEFINED $ENV{SPHINX_PATH}) |
| 44 | set(SPHINX_PATH $ENV{SPHINX_PATH}) |
| 45 | endif() |
| 46 | endif() |
| 47 | |
| 48 | |
| 49 | if (DEFINED SPHINX_PATH) |
| 50 | #Find the Sphinx executable. Search only at SPHINX_PATH. |
| 51 | find_program(SPHINX_EXECUTABLE |
| 52 | NAMES sphinx-build |
| 53 | DOC "Sphinx Documentation Builder (sphinx-doc.org)" |
| 54 | PATH ${SPHINX_PATH} |
| 55 | NO_DEFAULT_PATH |
| 56 | NO_CMAKE_ENVIRONMENT_PATH |
| 57 | NO_CMAKE_PATH |
| 58 | NO_SYSTEM_ENVIRONMENT_PATH |
| 59 | NO_CMAKE_SYSTEM_PATH |
| 60 | NO_CMAKE_FIND_ROOT_PATH |
| 61 | ) |
| 62 | if (SPHINX_EXECUTABLE-NOTFOUND) |
| 63 | message(STATUS "Failed to find sphinx-build at ${SPHINX_PATH}.") |
| 64 | message(STATUS "Sphinx documentation targets will not be created.") |
| 65 | return() |
| 66 | endif() |
| 67 | else() |
| 68 | #Find the Sphinx executable. Search OS specific default locations. |
| 69 | find_program(SPHINX_EXECUTABLE |
| 70 | NAMES sphinx-build |
| 71 | DOC "Sphinx Documentation Builder (sphinx-doc.org)" |
| 72 | ) |
| 73 | |
| 74 | if (SPHINX_EXECUTABLE-NOTFOUND) |
| 75 | message(STATUS "Failed to find sphinx-build at OS specific default locations.") |
| 76 | message(STATUS "Sphinx documentation targets will not be created.") |
| 77 | return() |
| 78 | endif() |
| 79 | endif() |
| 80 | |
| 81 | #Get Sphinx version |
| 82 | execute_process(COMMAND "${SPHINX_EXECUTABLE}" "--version" OUTPUT_VARIABLE _SPHINX_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET) |
| 83 | #Parse output |
| 84 | if(_SPHINX_VERSION) |
Vikas Katariya | 1eae254 | 2019-08-28 12:11:07 +0100 | [diff] [blame] | 85 | if(_SPHINX_VERSION MATCHES ".*sphinx-build[^0-9.]*([0-9.]+).*") |
Gyorgy Szing | 74dae3c | 2018-09-27 17:00:46 +0200 | [diff] [blame] | 86 | string(REGEX REPLACE ".*sphinx-build ([0-9.]+).*" "\\1" SPHINX_VERSION "${_SPHINX_VERSION}") |
| 87 | endif() |
| 88 | endif() |
| 89 | |
| 90 | #Set "standard" find module return values |
| 91 | include(FindPackageHandleStandardArgs) |
| 92 | find_package_handle_standard_args(Sphinx REQUIRED_VARS SPHINX_EXECUTABLE SPHINX_VERSION VERSION_VAR SPHINX_VERSION) |