diff options
Diffstat (limited to 'sources/shiboken6/doc/CMakeLists.txt')
-rw-r--r-- | sources/shiboken6/doc/CMakeLists.txt | 77 |
1 files changed, 44 insertions, 33 deletions
diff --git a/sources/shiboken6/doc/CMakeLists.txt b/sources/shiboken6/doc/CMakeLists.txt index 8d78eb400..eaef4ff29 100644 --- a/sources/shiboken6/doc/CMakeLists.txt +++ b/sources/shiboken6/doc/CMakeLists.txt @@ -1,50 +1,61 @@ -cmake_minimum_required(VERSION 3.16) +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + +cmake_minimum_required(VERSION 3.18) if(FULLDOCSBUILD EQUAL 0) project(shiboken6_doc) endif() -find_program(SPHINX sphinx-build DOC "Path to sphinx-build binary.") -if (SPHINX) +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/../cmake") +include(FindDocTools) + +# Generate html by default. +if(NOT DOC_OUTPUT_FORMAT) + set(DOC_OUTPUT_FORMAT "html") +endif() + +if(SPHINX_BUILD) message(STATUS "sphinx-build - found") configure_file(conf.py.in conf.py @ONLY) # conditional tag for sphinx build #string(JOIN "_" SPHINX_TAG ${DOC_OUTPUT_FORMAT} "format") add_custom_target(doc - COMMAND ${SPHINX} -b ${DOC_OUTPUT_FORMAT} -c . ${CMAKE_CURRENT_SOURCE_DIR} html - COMMENT "Generating HTMLs..." + COMMAND ${SPHINX_BUILD} -b ${DOC_OUTPUT_FORMAT} -j auto -c . ${CMAKE_CURRENT_SOURCE_DIR} html + COMMENT "Generating shiboken documentation HTML files" VERBATIM) - # Python script that will be called to update the QHP - set(py_cmd " -import fileinput -import re -try: -\tfor line in fileinput.input('html/Shiboken.qhp',inplace=True,backup='.bak'): -\t\tline_copy=line.strip() -\t\tif not line_copy: # check for empty line -\t\t\tcontinue -\t\tmatch=re.match('(^.*virtualFolder.)doc(.*$)',line) -\t\tif match: -\t\t\trepl=''.join([match.group(1),'shiboken6',match.group(2)]) -\t\t\tprint(line.replace(match.group(0),repl),end=' ') -\t\telse: -\t\t\tprint(line) -except: -\tpass\n") - file(GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/py_script.py - CONTENT ${py_cmd}) - - # create a custom command to generate QCH + + # Attach a POST_BUILD step to the 'doc' custom target to generate a QCH file. if(DOC_OUTPUT_FORMAT STREQUAL "qthelp") - file(TO_NATIVE_PATH ${CMAKE_CURRENT_BINARY_DIR}/html/Shiboken.qhp QHP_FILE) - add_custom_command(TARGET doc POST_BUILD - COMMAND ${PYTHON_EXECUTABLE} py_script.py # ${CMAKE_CURRENT_BINARY_DIR}/html/Shiboken.qhp - COMMAND qhelpgenerator ${QHP_FILE} - COMMENT "Genereting QCH based on the QHP..." - VERBATIM) + if(qhelpgenerator_binary) + message(STATUS "qhelpgenerator - found") + + # Python script that will be called to update the QHP + set(PATCH_QHP_SCRIPT "${CMAKE_CURRENT_LIST_DIR}/../../shiboken6/doc/scripts/patch_qhp.py") + file(TO_NATIVE_PATH ${CMAKE_CURRENT_BINARY_DIR}/html/Shiboken.qhp QHP_FILE) + + if(SHIBOKEN_IS_CROSS_BUILD) + set(python_executable "${QFP_PYTHON_HOST_PATH}") + else() + set(python_executable "${Python_EXECUTABLE}") + endif() + if(NOT python_executable OR NOT EXISTS "${python_executable}") + message(FATAL_ERROR "No python executable found to build documentation.") + endif() + + add_custom_command(TARGET doc POST_BUILD + COMMAND "${python_executable}" ${PATCH_QHP_SCRIPT} -v shiboken6 ${QHP_FILE} + COMMAND "${qhelpgenerator_binary}" ${QHP_FILE} + COMMENT "Generating shiboken documentation QCH files based on the QHP files" + VERBATIM) + else() + message(WARNING "qhelpgenerator - not found! qch generation disabled") + endif() endif() else() - message(WARNING "sphinx-build - not found! doc target disabled") + if(NOT SPHINX_BUILD) + message(WARNING "sphinx-build - not found! doc target disabled") + endif() if (WIN32) # if jom is used and we have no sphinx, then jom will crash. # so for windows, we always create a doc target (until jom gets fixed...) |