summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexandru Croitor <[email protected]>2024-09-08 17:01:48 +0200
committerAlexandru Croitor <[email protected]>2024-10-31 00:51:07 +0100
commit3066e9e38deada5f99a47449e4ef84eebc5219f5 (patch)
tree93dd2dcc46b92cc4b6e65e49776290c628a47e40
parentc64190caa7d515e0efc60a3c435d9d779efd5ac3 (diff)
CMake: Add doc_tools build and install targets
Add doc_tools and install_doc_tools custom targets. These are meant to build and install documentation and code generation tools that participate in documentation generation. Such tools should be annotated with the IS_DOC_TOOL option to their qt_internal_add_tool call. In qtbase, such generator tools are qdbusxml2cpp and qvkgen. Pick-to: 6.8 Task-number: QTBUG-91243 Task-number: QTBUG-128730 Change-Id: Idebffc6f50d8547ce76c1102a20d60d436e44cfd Reviewed-by: Alexey Edelev <[email protected]>
-rw-r--r--cmake/QtBuildRepoHelpers.cmake13
-rw-r--r--cmake/QtToolHelpers.cmake8
-rw-r--r--src/tools/qdbusxml2cpp/CMakeLists.txt1
-rw-r--r--src/tools/qvkgen/CMakeLists.txt1
4 files changed, 23 insertions, 0 deletions
diff --git a/cmake/QtBuildRepoHelpers.cmake b/cmake/QtBuildRepoHelpers.cmake
index a8e11586c02..c1816d712c2 100644
--- a/cmake/QtBuildRepoHelpers.cmake
+++ b/cmake/QtBuildRepoHelpers.cmake
@@ -309,6 +309,7 @@ macro(qt_build_repo_begin)
if(NOT TARGET host_tools)
add_custom_target(host_tools)
add_custom_target(bootstrap_tools)
+ add_custom_target(doc_tools)
# TODO: Investigate complexity of installing tools for shared builds.
# Currently installing host tools without libraries only really makes sense for static
@@ -322,9 +323,21 @@ macro(qt_build_repo_begin)
COMMAND ${CMAKE_COMMAND}
--install ${CMAKE_BINARY_DIR} --component host_tools --strip
)
+
+ add_custom_target(install_doc_tools
+ COMMAND ${CMAKE_COMMAND}
+ --install ${CMAKE_BINARY_DIR} --component doc_tools
+ )
+ add_custom_target(install_doc_tools_stripped
+ COMMAND ${CMAKE_COMMAND}
+ --install ${CMAKE_BINARY_DIR} --component doc_tools --strip
+ )
+
if(NOT QT_INTERNAL_NO_INSTALL_TOOLS_BUILD_DEPS)
add_dependencies(install_tools host_tools)
add_dependencies(install_tools_stripped host_tools)
+ add_dependencies(install_doc_tools doc_tools)
+ add_dependencies(install_doc_tools_stripped doc_tools)
endif()
endif()
endif()
diff --git a/cmake/QtToolHelpers.cmake b/cmake/QtToolHelpers.cmake
index 1d0d93a071c..f9709a6079c 100644
--- a/cmake/QtToolHelpers.cmake
+++ b/cmake/QtToolHelpers.cmake
@@ -22,6 +22,10 @@
# TRY_RUN_FLAGS
# Command line flags that are going to be passed to the tool for testing its correctness.
# If no flags were given, we default to `-v`.
+# REQUIRED_FOR_DOCS
+# Specifies that the built tool is required to generate documentation. Examples are qdoc,
+# and qvkgen (because they participate in header file generation, which are needed for
+# documentation generation).
#
# One-value Arguments:
# EXTRA_CMAKE_FILES
@@ -51,6 +55,7 @@ function(qt_internal_add_tool target_name)
EXCEPTIONS
NO_UNITY_BUILD
TRY_RUN
+ REQUIRED_FOR_DOCS
${__qt_internal_sbom_optional_args}
)
set(one_value_keywords
@@ -170,6 +175,9 @@ function(qt_internal_add_tool target_name)
if(TARGET host_tools)
add_dependencies(host_tools "${target_name}")
+ if(arg_REQUIRED_FOR_DOCS)
+ add_dependencies(doc_tools "${target_name}")
+ endif()
if(arg_CORE_LIBRARY STREQUAL "Bootstrap")
add_dependencies(bootstrap_tools "${target_name}")
endif()
diff --git a/src/tools/qdbusxml2cpp/CMakeLists.txt b/src/tools/qdbusxml2cpp/CMakeLists.txt
index 0da22ebfc62..8ce7ec2679a 100644
--- a/src/tools/qdbusxml2cpp/CMakeLists.txt
+++ b/src/tools/qdbusxml2cpp/CMakeLists.txt
@@ -7,6 +7,7 @@
qt_get_tool_target_name(target_name qdbusxml2cpp)
qt_internal_add_tool(${target_name}
+ REQUIRED_FOR_DOCS
TRY_RUN
TARGET_DESCRIPTION "Qt D-Bus XML to C++ Compiler"
TOOLS_TARGET DBus
diff --git a/src/tools/qvkgen/CMakeLists.txt b/src/tools/qvkgen/CMakeLists.txt
index 0f68968fd33..73da08c30e8 100644
--- a/src/tools/qvkgen/CMakeLists.txt
+++ b/src/tools/qvkgen/CMakeLists.txt
@@ -7,6 +7,7 @@
qt_get_tool_target_name(target_name qvkgen)
qt_internal_add_tool(${target_name}
+ REQUIRED_FOR_DOCS
TARGET_DESCRIPTION "Qt Vulkan Header Generator"
INSTALL_DIR "${INSTALL_LIBEXECDIR}"
TOOLS_TARGET Gui