diff options
author | Joerg Bornemann <joerg.bornemann@qt.io> | 2021-09-14 21:02:14 +0200 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@qt.io> | 2021-09-27 16:34:23 +0200 |
commit | a0e56294c1e80f34147c5a992b314776e1b6c757 (patch) | |
tree | 95128ad19a17efadc06b5676094be57c344886f5 | |
parent | 326d94e94b513a7d5be17493d57d31cf3329cb72 (diff) |
Skip unnecessary commands when cross-building tools
Introduce a new macro qt_internal_return_unless_building_tools which
simply calls return() if tools are not built. This macro is supposed to
be called after qt_internal_add_tool().
Using this macro avoids having to special-case code for when
qt_internal_add_tool() creates imported targets in cross-builds.
Adjust pro2cmake accordingly.
Task-number: QTBUG-85084
Change-Id: I9e1c455c29535dd8c318efa890ebd739c42effc1
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
-rw-r--r-- | cmake/QtToolHelpers.cmake | 8 | ||||
-rw-r--r-- | qmake/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/tools/androiddeployqt/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/tools/androidtestrunner/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/tools/cmake_automoc_parser/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/tools/moc/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/tools/qdbuscpp2xml/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/tools/qdbusxml2cpp/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/tools/qlalr/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/tools/qtpaths/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/tools/qvkgen/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/tools/rcc/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/tools/tracegen/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/tools/uic/CMakeLists.txt | 1 | ||||
-rwxr-xr-x | util/cmake/pro2cmake.py | 3 |
15 files changed, 24 insertions, 0 deletions
diff --git a/cmake/QtToolHelpers.cmake b/cmake/QtToolHelpers.cmake index 77dae50027..f28b2d27a4 100644 --- a/cmake/QtToolHelpers.cmake +++ b/cmake/QtToolHelpers.cmake @@ -441,6 +441,14 @@ function(qt_check_if_tools_will_be_built) set(QT_WILL_BUILD_TOOLS ${will_build_tools} CACHE INTERNAL "Are tools going to be built" FORCE) endfunction() +# Use this macro to exit a file or function scope unless we're building tools. This is supposed to +# be called after qt_internal_add_tools() to avoid special-casing operations on imported targets. +macro(qt_internal_return_unless_building_tools) + if(NOT QT_WILL_BUILD_TOOLS) + return() + endif() +endmacro() + # Equivalent of qmake's qtNomakeTools(directory1 directory2). # If QT_BUILD_TOOLS_BY_DEFAULT is true, then targets within the given directories will be excluded # from the default 'all' target, as well as from install phase. The private variable is checked by diff --git a/qmake/CMakeLists.txt b/qmake/CMakeLists.txt index 1ad10b950e..6a37fb981c 100644 --- a/qmake/CMakeLists.txt +++ b/qmake/CMakeLists.txt @@ -97,6 +97,7 @@ qt_internal_add_tool(${target_name} Qt::CorePrivate QtLibraryInfo ) +qt_internal_return_unless_building_tools() # Add QMAKE_VERSION_STR only if qmake is part of the build. target_compile_definitions(QtLibraryInfo PUBLIC diff --git a/src/tools/androiddeployqt/CMakeLists.txt b/src/tools/androiddeployqt/CMakeLists.txt index 98cd79a334..da4c524456 100644 --- a/src/tools/androiddeployqt/CMakeLists.txt +++ b/src/tools/androiddeployqt/CMakeLists.txt @@ -19,6 +19,7 @@ qt_internal_add_tool(${target_name} INCLUDE_DIRECTORIES ../shared ) +qt_internal_return_unless_building_tools() set_target_properties(${target_name} PROPERTIES WIN32_EXECUTABLE FALSE ) diff --git a/src/tools/androidtestrunner/CMakeLists.txt b/src/tools/androidtestrunner/CMakeLists.txt index c53b9125ca..a078913fbf 100644 --- a/src/tools/androidtestrunner/CMakeLists.txt +++ b/src/tools/androidtestrunner/CMakeLists.txt @@ -17,6 +17,7 @@ qt_internal_add_tool(${target_name} PUBLIC_LIBRARIES Qt::Gui ) +qt_internal_return_unless_building_tools() set_target_properties(${target_name} PROPERTIES WIN32_EXECUTABLE FALSE ) diff --git a/src/tools/cmake_automoc_parser/CMakeLists.txt b/src/tools/cmake_automoc_parser/CMakeLists.txt index b5c4aba89c..f50b8368e7 100644 --- a/src/tools/cmake_automoc_parser/CMakeLists.txt +++ b/src/tools/cmake_automoc_parser/CMakeLists.txt @@ -18,3 +18,4 @@ qt_internal_add_tool(${target_name} INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR} ) +qt_internal_return_unless_building_tools() diff --git a/src/tools/moc/CMakeLists.txt b/src/tools/moc/CMakeLists.txt index 88dce045f8..fedf27374b 100644 --- a/src/tools/moc/CMakeLists.txt +++ b/src/tools/moc/CMakeLists.txt @@ -34,6 +34,7 @@ qt_internal_add_tool(${target_name} ../../3rdparty/tinycbor/src ../shared ) +qt_internal_return_unless_building_tools() #### Keys ignored in scope 1:.:.:moc.pro:<TRUE>: # QMAKE_TARGET_DESCRIPTION = "Qt Meta Object Compiler" diff --git a/src/tools/qdbuscpp2xml/CMakeLists.txt b/src/tools/qdbuscpp2xml/CMakeLists.txt index 865995755b..eba1dad884 100644 --- a/src/tools/qdbuscpp2xml/CMakeLists.txt +++ b/src/tools/qdbuscpp2xml/CMakeLists.txt @@ -35,6 +35,7 @@ qt_internal_add_tool(${target_name} # _LOADED = "qt_tool" # _OPTION = "host_build" ) +qt_internal_return_unless_building_tools() #### Keys ignored in scope 1:.:.:qdbuscpp2xml.pro:<TRUE>: # QMAKE_TARGET_DESCRIPTION = "Qt D-Bus C++ to XML Compiler" diff --git a/src/tools/qdbusxml2cpp/CMakeLists.txt b/src/tools/qdbusxml2cpp/CMakeLists.txt index 37327b34db..45795952b4 100644 --- a/src/tools/qdbusxml2cpp/CMakeLists.txt +++ b/src/tools/qdbusxml2cpp/CMakeLists.txt @@ -22,6 +22,7 @@ qt_internal_add_tool(${target_name} # _LOADED = "qt_tool" # _OPTION = "host_build" ) +qt_internal_return_unless_building_tools() #### Keys ignored in scope 1:.:.:qdbusxml2cpp.pro:<TRUE>: # QMAKE_TARGET_DESCRIPTION = "Qt D-Bus XML to C++ Compiler" diff --git a/src/tools/qlalr/CMakeLists.txt b/src/tools/qlalr/CMakeLists.txt index 1b28154695..6feb2f9100 100644 --- a/src/tools/qlalr/CMakeLists.txt +++ b/src/tools/qlalr/CMakeLists.txt @@ -23,6 +23,7 @@ qt_internal_add_tool(${target_name} PUBLIC_LIBRARIES Qt::Core # special case ) +qt_internal_return_unless_building_tools() #### Keys ignored in scope 1:.:.:qlalr.pro:<TRUE>: # OTHER_FILES = "lalr.g" diff --git a/src/tools/qtpaths/CMakeLists.txt b/src/tools/qtpaths/CMakeLists.txt index 77b16f5f1e..b7338f24ed 100644 --- a/src/tools/qtpaths/CMakeLists.txt +++ b/src/tools/qtpaths/CMakeLists.txt @@ -15,6 +15,7 @@ qt_internal_add_tool(${target_name} QT_NO_FOREACH QTPATHS_VERSION_STR="2.0" ) +qt_internal_return_unless_building_tools() ## Scopes: ##################################################################### diff --git a/src/tools/qvkgen/CMakeLists.txt b/src/tools/qvkgen/CMakeLists.txt index 75ea64fda6..239dfb8c91 100644 --- a/src/tools/qvkgen/CMakeLists.txt +++ b/src/tools/qvkgen/CMakeLists.txt @@ -14,6 +14,7 @@ qt_internal_add_tool(${target_name} PUBLIC_LIBRARIES Qt::Core # special case ) +qt_internal_return_unless_building_tools() #### Keys ignored in scope 1:.:.:qvkgen.pro:<TRUE>: # QMAKE_TARGET_DESCRIPTION = "Qt Vulkan Header Generator" diff --git a/src/tools/rcc/CMakeLists.txt b/src/tools/rcc/CMakeLists.txt index 30fa8f4824..efeadf803a 100644 --- a/src/tools/rcc/CMakeLists.txt +++ b/src/tools/rcc/CMakeLists.txt @@ -19,6 +19,7 @@ qt_internal_add_tool(${target_name} INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR} ) +qt_internal_return_unless_building_tools() #### Keys ignored in scope 1:.:.:rcc.pro:<TRUE>: # QMAKE_TARGET_DESCRIPTION = "Qt Resource Compiler" diff --git a/src/tools/tracegen/CMakeLists.txt b/src/tools/tracegen/CMakeLists.txt index 1404013d28..bb45950081 100644 --- a/src/tools/tracegen/CMakeLists.txt +++ b/src/tools/tracegen/CMakeLists.txt @@ -18,6 +18,7 @@ qt_internal_add_tool(${target_name} qtheaders.cpp qtheaders.h tracegen.cpp ) +qt_internal_return_unless_building_tools() #### Keys ignored in scope 1:.:.:tracegen.pro:<TRUE>: # _OPTION = "host_build" diff --git a/src/tools/uic/CMakeLists.txt b/src/tools/uic/CMakeLists.txt index e0747cbc50..aab6ecfe28 100644 --- a/src/tools/uic/CMakeLists.txt +++ b/src/tools/uic/CMakeLists.txt @@ -40,6 +40,7 @@ qt_internal_add_tool(${target_name} #PUBLIC_LIBRARIES # special case remove #Qt::Gui # special case remove ) +qt_internal_return_unless_building_tools() #### Keys ignored in scope 1:.:.:uic.pro:<TRUE>: # QMAKE_TARGET_DESCRIPTION = "Qt User Interface Compiler" diff --git a/util/cmake/pro2cmake.py b/util/cmake/pro2cmake.py index 0bb68ee936..5d525b3e57 100755 --- a/util/cmake/pro2cmake.py +++ b/util/cmake/pro2cmake.py @@ -3246,6 +3246,9 @@ def write_main_part( # Footer: cm_fh.write(f"{spaces(indent)})\n") + if typename == "Tool": + cm_fh.write(f"{spaces(indent)}qt_internal_return_unless_building_tools()\n") + write_resources(cm_fh, name, scope, indent, target_ref=target_ref) write_statecharts(cm_fh, name, scope, indent) |