#------------------------------------------------------------------------------- # Copyright (c) 2019, Arm Limited. All rights reserved. # # SPDX-License-Identifier: BSD-3-Clause # #------------------------------------------------------------------------------- #FindSphinx #----------- #Sphinx is a document generation tool written in Python. #See http://www.sphinx-doc.org/en/master/ # #This module checks availability of the Sphinx document generator #(sphinx-build) and it's dependences (Python). #Sphinx is distributed as pip package or on Linux as a distribution specific #package (i.e. python-sphinx for Ubuntu). Independent of the distribution #method this module expects sphix-build to be either available on the PATH, #or to be located in a host OS specific standard location. # #This modules has the following parameters: # SPHINX_PATH = variable specifying where sphinx-build can be found. # If it is not defined the environment variable with # the same name is used. If that is also undefined, # then OS specific standard locations will be # searched. # # This modules defines the following variables: # SPHINX_VERSION = The version reported by "sphinx-build --version" # SPHINX_FOUND = True is sphinx-build was found and executed fine # Include(CMakeParseArguments) #Sphinx needs Python. find_package(PythonInterp 3) if (NOT PYTHONINTERP_FOUND) message(STATUS "Can not find Python3.x interpreter. Pyhton3 must be installed and available on the PATH.") message(STATUS "Sphinx documentation targets will not be created.") return() endif() if (NOT DEFINED SPHINX_PATH) if (DEFINED $ENV{SPHINX_PATH}) set(SPHINX_PATH $ENV{SPHINX_PATH}) endif() endif() if (DEFINED SPHINX_PATH) #Find the Sphinx executable. Search only at SPHINX_PATH. find_program(SPHINX_EXECUTABLE NAMES sphinx-build DOC "Sphinx Documentation Builder (sphinx-doc.org)" PATH ${SPHINX_PATH} NO_DEFAULT_PATH NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH NO_CMAKE_FIND_ROOT_PATH ) if (SPHINX_EXECUTABLE-NOTFOUND) message(STATUS "Failed to find sphinx-build at ${SPHINX_PATH}.") message(STATUS "Sphinx documentation targets will not be created.") return() endif() else() #Find the Sphinx executable. Search OS specific default locations. find_program(SPHINX_EXECUTABLE NAMES sphinx-build DOC "Sphinx Documentation Builder (sphinx-doc.org)" ) if (SPHINX_EXECUTABLE-NOTFOUND) message(STATUS "Failed to find sphinx-build at OS specific default locations.") message(STATUS "Sphinx documentation targets will not be created.") return() endif() endif() #Get Sphinx version execute_process(COMMAND "${SPHINX_EXECUTABLE}" "--version" OUTPUT_VARIABLE _SPHINX_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET) #Parse output if(_SPHINX_VERSION) if(_SPHINX_VERSION MATCHES ".*sphinx-build[^0-9.]*([0-9.]+).*") string(REGEX REPLACE ".*sphinx-build ([0-9.]+).*" "\\1" SPHINX_VERSION "${_SPHINX_VERSION}") endif() endif() #Set "standard" find module return values include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Sphinx REQUIRED_VARS SPHINX_EXECUTABLE SPHINX_VERSION VERSION_VAR SPHINX_VERSION)