summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@qt.io>2021-09-14 21:02:14 +0200
committerJoerg Bornemann <joerg.bornemann@qt.io>2021-09-27 16:34:23 +0200
commita0e56294c1e80f34147c5a992b314776e1b6c757 (patch)
tree95128ad19a17efadc06b5676094be57c344886f5
parent326d94e94b513a7d5be17493d57d31cf3329cb72 (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.cmake8
-rw-r--r--qmake/CMakeLists.txt1
-rw-r--r--src/tools/androiddeployqt/CMakeLists.txt1
-rw-r--r--src/tools/androidtestrunner/CMakeLists.txt1
-rw-r--r--src/tools/cmake_automoc_parser/CMakeLists.txt1
-rw-r--r--src/tools/moc/CMakeLists.txt1
-rw-r--r--src/tools/qdbuscpp2xml/CMakeLists.txt1
-rw-r--r--src/tools/qdbusxml2cpp/CMakeLists.txt1
-rw-r--r--src/tools/qlalr/CMakeLists.txt1
-rw-r--r--src/tools/qtpaths/CMakeLists.txt1
-rw-r--r--src/tools/qvkgen/CMakeLists.txt1
-rw-r--r--src/tools/rcc/CMakeLists.txt1
-rw-r--r--src/tools/tracegen/CMakeLists.txt1
-rw-r--r--src/tools/uic/CMakeLists.txt1
-rwxr-xr-xutil/cmake/pro2cmake.py3
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)