#
# This file is part of the GROMACS molecular simulation package.
#
-# Copyright (c) 2015, by the GROMACS development team, led by
+# Copyright (c) 2015,2018,2019,2020,2021, by the GROMACS development team, led by
# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
# and including many others, as listed in the AUTHORS file in the
# top-level source directory and at http://www.gromacs.org.
# To help us fund GROMACS development, we humbly ask that you cite
# the research papers on the package. Check out http://www.gromacs.org.
+# Check the Python installation for sphinx-build, even if not on PATH.
+if(Python3_EXECUTABLE)
+ execute_process(
+ COMMAND ${Python3_EXECUTABLE} -c "import sys; print(sys.exec_prefix)"
+ OUTPUT_VARIABLE _python_exec_prefix
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ list(APPEND CMAKE_PROGRAM_PATH ${_python_exec_prefix})
+ unset(_python_exec_prefix)
+ execute_process(
+ COMMAND ${Python3_EXECUTABLE} -m site --user-base
+ OUTPUT_VARIABLE _python_user_base
+ ERROR_QUIET
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ if (_python_user_base)
+ list(APPEND CMAKE_PROGRAM_PATH ${_python_user_base})
+ endif ()
+ unset(_python_user_base)
+ execute_process(
+ COMMAND ${Python3_EXECUTABLE} -c "import sys; print(sys.base_exec_prefix)"
+ OUTPUT_VARIABLE _python_base_exec_prefix
+ ERROR_QUIET
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ if (_python_base_exec_prefix)
+ list(APPEND CMAKE_PROGRAM_PATH ${_python_base_exec_prefix})
+ endif ()
+ unset(_python_base_exec_prefix)
+endif()
+
find_program(SPHINX_EXECUTABLE NAMES sphinx-build sphinx-build2
- HINTS
- $ENV{SPHINX_DIR}
- PATH_SUFFIXES bin
- DOC "Sphinx documentation generator"
-)
+ HINTS ENV SPHINX_DIR
+ PATH_SUFFIXES bin
+ DOC "Sphinx documentation generator"
+ )
mark_as_advanced(SPHINX_EXECUTABLE)
# Detect Sphinx version
if (SPHINX_EXECUTABLE AND NOT DEFINED SPHINX_EXECUTABLE_VERSION)
execute_process(
COMMAND ${SPHINX_EXECUTABLE} --version
+ ERROR_VARIABLE SPHINX_VERSION_OUTPUT_VARIABLE
OUTPUT_VARIABLE SPHINX_VERSION_OUTPUT_VARIABLE
RESULT_VARIABLE SPHINX_VERSION_RESULT_VARIABLE
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE
)
- string(REGEX REPLACE "Sphinx \\([^)]*\\) ([^ ]+)" "\\1" SPHINX_EXECUTABLE_VERSION "${SPHINX_VERSION_OUTPUT_VARIABLE}")
- set(SPHINX_EXECUTABLE_VERSION "${SPHINX_EXECUTABLE_VERSION}" CACHE INTERNAL "Version of ${SPHINX_EXECUTABLE}")
-endif()
-set(_find_deps_options)
-if (Sphinx_FIND_QUIETLY)
- set(_find_deps_options QUIET)
+ # Detect the sphinx version. First try to match the error message
+ # from old versions that didn't even support --version, then try
+ # to detect more modern sphinx versions. If nothing is found, then
+ # the cache variable is set to an empty value.
+ set(_version "")
+ if(SPHINX_VERSION_OUTPUT_VARIABLE MATCHES "Sphinx v([0-9\.]+)\n.*")
+ set(_version ${CMAKE_MATCH_1})
+ elseif (SPHINX_VERSION_OUTPUT_VARIABLE MATCHES ".*build[ )]*(.*)")
+ set(_version ${CMAKE_MATCH_1})
+ endif()
+
+ set(SPHINX_EXECUTABLE_VERSION ${_version} CACHE INTERNAL "Version of ${SPHINX_EXECUTABLE}")
endif()
-include(FindPythonModule)
-find_python_module(pygments ${_find_deps_options})
-if (PYTHONMODULE_PYGMENTS)
- set(Sphinx_pygments_FOUND 1)
+
+
+if (NOT Sphinx_pygments_FOUND)
+ # Check if pygments module is available via the Unix error code (ie. 0
+ # for success)
+ execute_process(COMMAND "${PYTHON_EXECUTABLE}" "-c"
+ "import pygments"
+ RESULT_VARIABLE _pygments_status
+ ERROR_QUIET
+ )
+ if (_pygments_status EQUAL 0)
+ set(Sphinx_pygments_FOUND TRUE CACHE BOOL "Whether pygments module is available for Sphinx")
+ endif()
endif()
include(FindPackageHandleStandardArgs)