From aea0f89cfa4aca7e4c7b5056c425fb44ce394770 Mon Sep 17 00:00:00 2001 From: Alexandru Croitor Date: Thu, 18 Jul 2024 14:54:38 +0200 Subject: [PATCH] CMake: Allow building qmake docs in a documentation-only build We never added the qmake subdirectory if we didn't build tools. Thus we never created a doc target to build qmake's documentation. Make sure we add the qmake subdirectory regardless of whether we build tools or not. qt_internal_add_tool can then make sure to skip building the tool if necessary. If the tool is not created though, create a fake qmake INTERFACE library target, so that qt_internal_add_docs has a target to work with. Amends 5c352f47b977c72db323bb8e7b6ac25e1a453202 Pick-to: 6.8 Fixes: QTBUG-127334 Change-Id: I41cc96fb6ad21e32e17d312ea474835dfa38528e Reviewed-by: Alexey Edelev Reviewed-by: Joerg Bornemann --- cmake/QtBaseHelpers.cmake | 2 +- qmake/CMakeLists.txt | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/cmake/QtBaseHelpers.cmake b/cmake/QtBaseHelpers.cmake index 63e445e3469..4b48f8f1766 100644 --- a/cmake/QtBaseHelpers.cmake +++ b/cmake/QtBaseHelpers.cmake @@ -212,7 +212,7 @@ macro(qt_internal_qtbase_build_repo) endif() if(NOT QT_INTERNAL_BUILD_STANDALONE_PARTS) - if(QT_WILL_BUILD_TOOLS AND QT_FEATURE_settings) + if(QT_FEATURE_settings) add_subdirectory(qmake) endif() diff --git a/qmake/CMakeLists.txt b/qmake/CMakeLists.txt index 78e85c76964..28c91af6d31 100644 --- a/qmake/CMakeLists.txt +++ b/qmake/CMakeLists.txt @@ -103,6 +103,19 @@ qt_internal_add_tool(${target_name} generators/win32/msvc_objectmodel.cpp # xml symbols clash with generators/win32/msbuild_objectmodel.cpp library/qmakeparser.cpp # struct statics clashes with qmakeevaluator_p.h ) + +# When we don't build tools, we still want to be able to build the documentation. +# Add a fake interface library to make sure the documentation target is created. +# We use the direct name rather than ${target_name} to ensure the doc target keeps +# the original name even when cross-building. +if(NOT TARGET qmake) + add_library(qmake INTERFACE) +endif() + +qt_internal_add_docs(qmake + doc/qmake.qdocconf +) + qt_internal_return_unless_building_tools() # Add QMAKE_VERSION_STR only if qmake is part of the build. @@ -137,6 +150,3 @@ set_target_properties(${target_name} PROPERTIES qt_internal_apply_gc_binaries(${target_name} PRIVATE) qt_skip_warnings_are_errors(${target_name}) -qt_internal_add_docs(${target_name} - doc/qmake.qdocconf -)