aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken6/doc/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'sources/shiboken6/doc/CMakeLists.txt')
-rw-r--r--sources/shiboken6/doc/CMakeLists.txt77
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...)