summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@qt.io>2021-01-25 11:12:37 +0100
committerJoerg Bornemann <joerg.bornemann@qt.io>2021-02-23 17:02:30 +0100
commit1f30bcf33618ca39c47dc1058529b55635e30aef (patch)
treeab6f07d6c8afba7d0b9bcd06b17f2b307719d8bb
parent700d1037aa38f71813826e5104533f357fc41e04 (diff)
Move build tools to libexec instead of the bin dir
[ChangeLog][Build System] Tools that are called by the build system and are unlikely to be called by the user are now installed to the libexec directory. This is a step towards easier co-installability of different Qt versions. Pick-to: 6.1 Task-number: QTBUG-88791 Change-Id: Id19575b5ba27795f7715e4ea6a09391b26dd4942 Reviewed-by: Kai Koehne <kai.koehne@qt.io>
-rw-r--r--cmake/QtTargetHelpers.cmake2
-rw-r--r--mkspecs/features/moc.prf2
-rw-r--r--mkspecs/features/qlalr.prf2
-rw-r--r--mkspecs/features/qt_functions.prf21
-rw-r--r--mkspecs/features/qt_tracepoints.prf2
-rw-r--r--mkspecs/features/resources.prf2
-rw-r--r--mkspecs/features/uic.prf2
-rw-r--r--src/corelib/Qt6AndroidMacros.cmake2
-rw-r--r--src/gui/CMakeLists.txt2
-rw-r--r--src/tools/cmake_automoc_parser/CMakeLists.txt1
-rw-r--r--src/tools/moc/CMakeLists.txt1
-rw-r--r--src/tools/qlalr/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
-rw-r--r--tests/auto/tools/moc/tst_moc.cpp3
-rw-r--r--tests/auto/tools/qmake/testdata/quotedfilenames/quotedfilenames.pro2
-rw-r--r--tests/auto/tools/qmake/tst_qmake.cpp2
-rw-r--r--tests/auto/tools/rcc/tst_rcc.cpp2
-rw-r--r--tests/auto/tools/uic/tst_uic.cpp2
21 files changed, 40 insertions, 15 deletions
diff --git a/cmake/QtTargetHelpers.cmake b/cmake/QtTargetHelpers.cmake
index 45eb0c24e8..0caff0e484 100644
--- a/cmake/QtTargetHelpers.cmake
+++ b/cmake/QtTargetHelpers.cmake
@@ -504,7 +504,7 @@ function(qt_internal_create_tracepoints name tracepoints_file)
if(NOT "${QT_HOST_PATH}" STREQUAL "")
qt_path_join(tracegen
"${QT_HOST_PATH}"
- "${QT${PROJECT_VERSION_MAJOR}_HOST_INFO_BINDIR}"
+ "${QT${PROJECT_VERSION_MAJOR}_HOST_INFO_LIBEXECDIR}"
"tracegen")
else()
set(tracegen "${QT_CMAKE_EXPORT_NAMESPACE}::tracegen")
diff --git a/mkspecs/features/moc.prf b/mkspecs/features/moc.prf
index 07f29b8feb..c5504b21b8 100644
--- a/mkspecs/features/moc.prf
+++ b/mkspecs/features/moc.prf
@@ -1,6 +1,6 @@
#global defaults
-qtPrepareTool(QMAKE_MOC, moc)
+qtPrepareLibExecTool(QMAKE_MOC, moc)
isEmpty(MOC_DIR):MOC_DIR = .
isEmpty(QMAKE_H_MOD_MOC):QMAKE_H_MOD_MOC = moc_
isEmpty(QMAKE_EXT_CPP_MOC):QMAKE_EXT_CPP_MOC = .moc
diff --git a/mkspecs/features/qlalr.prf b/mkspecs/features/qlalr.prf
index 54d8b583c6..cb12818e39 100644
--- a/mkspecs/features/qlalr.prf
+++ b/mkspecs/features/qlalr.prf
@@ -1,4 +1,4 @@
-qtPrepareTool(QMAKE_QLALR, qlalr)
+qtPrepareLibExecTool(QMAKE_QLALR, qlalr)
isEmpty(QLALR_DIR): QLALR_DIR = .
diff --git a/mkspecs/features/qt_functions.prf b/mkspecs/features/qt_functions.prf
index 7777e615bd..dd780ad556 100644
--- a/mkspecs/features/qt_functions.prf
+++ b/mkspecs/features/qt_functions.prf
@@ -83,11 +83,19 @@ defineTest(qtHaveModule) {
return(false)
}
-# variable, default, [suffix for variable for system() use], [prepare primary variable for system() use]
+# Arguments:
+# variable, default, [suffix for variable for system() use],
+# [prepare primary variable for system() use],
+# [installation location; default: $$[QT_HOST_BINS]]
defineTest(qtPrepareTool) {
cmd = $$eval(QT_TOOL.$${2}.binary)
isEmpty(cmd) {
- cmd = $$[QT_HOST_BINS]/$$2
+ isEmpty(5) {
+ instloc = $$[QT_HOST_BINS]
+ } else {
+ instloc = $$5
+ }
+ cmd = $$instloc/$$2
exists($${cmd}.pl) {
$${1}_EXE = $${cmd}.pl
cmd = perl -w $$system_path($${cmd}.pl)
@@ -123,6 +131,15 @@ defineTest(qtPrepareTool) {
}
}
+# Prepare a tool that's not supposed to be called manually by users but by the build system.
+#
+# Forwards its arguments to qtPrepareTool but defaults the installation location to
+# $$[QT_HOST_LIBEXECS]
+defineTest(qtPrepareLibExecTool) {
+ isEmpty(instloc): instloc = "$$[QT_HOST_LIBEXECS]"
+ qtPrepareTool($$1, $$2, $$3, $$4, $$instloc)
+}
+
# target variable, list of env var names, [non-empty: prepare for system(), not make]
defineTest(qtAddToolEnv) {
isEmpty(3): \
diff --git a/mkspecs/features/qt_tracepoints.prf b/mkspecs/features/qt_tracepoints.prf
index 56d315e1cd..f115e9a115 100644
--- a/mkspecs/features/qt_tracepoints.prf
+++ b/mkspecs/features/qt_tracepoints.prf
@@ -8,7 +8,7 @@
# We mean it.
#
-qtPrepareTool(QMAKE_TRACEGEN, tracegen)
+qtPrepareLibExecTool(QMAKE_TRACEGEN, tracegen)
isEmpty(TRACEGEN_DIR): TRACEGEN_DIR = .
diff --git a/mkspecs/features/resources.prf b/mkspecs/features/resources.prf
index 151051163d..a9ef9a7155 100644
--- a/mkspecs/features/resources.prf
+++ b/mkspecs/features/resources.prf
@@ -1,4 +1,4 @@
-qtPrepareTool(QMAKE_RCC, rcc, _DEP)
+qtPrepareLibExecTool(QMAKE_RCC, rcc, _DEP)
isEmpty(QMAKE_MOD_RCC):QMAKE_MOD_RCC = qrc
diff --git a/mkspecs/features/uic.prf b/mkspecs/features/uic.prf
index a5df0c7e8d..fe9ad4b6c9 100644
--- a/mkspecs/features/uic.prf
+++ b/mkspecs/features/uic.prf
@@ -1,4 +1,4 @@
-qtPrepareTool(QMAKE_UIC, uic, _DEP)
+qtPrepareLibExecTool(QMAKE_UIC, uic, _DEP)
isEmpty(UI_DIR):UI_DIR = .
isEmpty(QMAKE_MOD_UIC):QMAKE_MOD_UIC = ui_
diff --git a/src/corelib/Qt6AndroidMacros.cmake b/src/corelib/Qt6AndroidMacros.cmake
index a71163d9f7..c520242d06 100644
--- a/src/corelib/Qt6AndroidMacros.cmake
+++ b/src/corelib/Qt6AndroidMacros.cmake
@@ -191,7 +191,7 @@ function(qt6_android_generate_deployment_settings target)
" \"qml-importscanner-binary\" : \"${qml_importscanner_binary_path_native}\",\n")
# Override rcc binary path
- set(rcc_binary_path "${QT_HOST_PATH}/${QT6_HOST_INFO_BINDIR}/rcc")
+ set(rcc_binary_path "${QT_HOST_PATH}/${QT6_HOST_INFO_LIBEXECDIR}/rcc")
if (WIN32)
string(APPEND rcc_binary_path ".exe")
endif()
diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt
index 40c373c6d9..ab8bb47d53 100644
--- a/src/gui/CMakeLists.txt
+++ b/src/gui/CMakeLists.txt
@@ -889,7 +889,7 @@ if (QT_FEATURE_vulkan)
if(NOT "${QT_HOST_PATH}" STREQUAL "")
qt_path_join(qvkgen
"${QT_HOST_PATH}"
- "${QT${PROJECT_VERSION_MAJOR}_HOST_INFO_BINDIR}"
+ "${QT${PROJECT_VERSION_MAJOR}_HOST_INFO_LIBEXECDIR}"
"qvkgen")
else()
set(qvkgen "${QT_CMAKE_EXPORT_NAMESPACE}::qvkgen")
diff --git a/src/tools/cmake_automoc_parser/CMakeLists.txt b/src/tools/cmake_automoc_parser/CMakeLists.txt
index 31bef236e8..b5c4aba89c 100644
--- a/src/tools/cmake_automoc_parser/CMakeLists.txt
+++ b/src/tools/cmake_automoc_parser/CMakeLists.txt
@@ -5,6 +5,7 @@
qt_get_tool_target_name(target_name cmake_automoc_parser)
qt_internal_add_tool(${target_name}
BOOTSTRAP
+ INSTALL_DIR "${INSTALL_LIBEXECDIR}"
TOOLS_TARGET Core # special case
SOURCES
main.cpp
diff --git a/src/tools/moc/CMakeLists.txt b/src/tools/moc/CMakeLists.txt
index 53fc4ff73b..09c4927a53 100644
--- a/src/tools/moc/CMakeLists.txt
+++ b/src/tools/moc/CMakeLists.txt
@@ -8,6 +8,7 @@ qt_get_tool_target_name(target_name moc)
qt_internal_add_tool(${target_name}
BOOTSTRAP
TARGET_DESCRIPTION "Qt Meta Object Compiler"
+ INSTALL_DIR "${INSTALL_LIBEXECDIR}"
TOOLS_TARGET Core # special case
SOURCES
cbordevice.h
diff --git a/src/tools/qlalr/CMakeLists.txt b/src/tools/qlalr/CMakeLists.txt
index b3dd7c28b7..1b28154695 100644
--- a/src/tools/qlalr/CMakeLists.txt
+++ b/src/tools/qlalr/CMakeLists.txt
@@ -7,6 +7,7 @@
qt_get_tool_target_name(target_name qlalr)
qt_internal_add_tool(${target_name}
TARGET_DESCRIPTION "Qt Look Ahead LR Parser Generator"
+ INSTALL_DIR "${INSTALL_LIBEXECDIR}"
TOOLS_TARGET Core # special case
SOURCES
compress.cpp compress.h
diff --git a/src/tools/qvkgen/CMakeLists.txt b/src/tools/qvkgen/CMakeLists.txt
index a6d264d53e..75ea64fda6 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}
TARGET_DESCRIPTION "Qt Vulkan Header Generator"
+ INSTALL_DIR "${INSTALL_LIBEXECDIR}"
TOOLS_TARGET Gui # special case
SOURCES
qvkgen.cpp
diff --git a/src/tools/rcc/CMakeLists.txt b/src/tools/rcc/CMakeLists.txt
index f9bb7025a2..8b0d9c8182 100644
--- a/src/tools/rcc/CMakeLists.txt
+++ b/src/tools/rcc/CMakeLists.txt
@@ -8,6 +8,7 @@ qt_get_tool_target_name(target_name rcc)
qt_internal_add_tool(${target_name}
BOOTSTRAP
TARGET_DESCRIPTION "Qt Resource Compiler"
+ INSTALL_DIR "${INSTALL_LIBEXECDIR}"
TOOLS_TARGET Core # special case
SOURCES
main.cpp
diff --git a/src/tools/tracegen/CMakeLists.txt b/src/tools/tracegen/CMakeLists.txt
index ac1e11c974..1404013d28 100644
--- a/src/tools/tracegen/CMakeLists.txt
+++ b/src/tools/tracegen/CMakeLists.txt
@@ -7,6 +7,7 @@
qt_get_tool_target_name(target_name tracegen)
qt_internal_add_tool(${target_name}
BOOTSTRAP
+ INSTALL_DIR "${INSTALL_LIBEXECDIR}"
TOOLS_TARGET Core # special case
SOURCES
etw.cpp etw.h
diff --git a/src/tools/uic/CMakeLists.txt b/src/tools/uic/CMakeLists.txt
index afda54d179..73ea838b34 100644
--- a/src/tools/uic/CMakeLists.txt
+++ b/src/tools/uic/CMakeLists.txt
@@ -7,6 +7,7 @@
qt_get_tool_target_name(target_name uic)
qt_internal_add_tool(${target_name}
TARGET_DESCRIPTION "Qt User Interface Compiler"
+ INSTALL_DIR "${INSTALL_LIBEXECDIR}"
TOOLS_TARGET Widgets # special case
SOURCES
cpp/cppwritedeclaration.cpp cpp/cppwritedeclaration.h
diff --git a/tests/auto/tools/moc/tst_moc.cpp b/tests/auto/tools/moc/tst_moc.cpp
index 3a0eed0a64..8ce2382600 100644
--- a/tests/auto/tools/moc/tst_moc.cpp
+++ b/tests/auto/tools/moc/tst_moc.cpp
@@ -775,7 +775,8 @@ void tst_Moc::initTestCase()
{
QString binpath = QLibraryInfo::path(QLibraryInfo::BinariesPath);
QString qmake = QString("%1/qmake").arg(binpath);
- m_moc = QString("%1/moc").arg(binpath);
+ QString libexecPath = QLibraryInfo::path(QLibraryInfo::LibraryExecutablesPath);
+ m_moc = QString("%1/moc").arg(libexecPath);
const QString testHeader = QFINDTESTDATA("backslash-newlines.h");
QVERIFY(!testHeader.isEmpty());
diff --git a/tests/auto/tools/qmake/testdata/quotedfilenames/quotedfilenames.pro b/tests/auto/tools/qmake/testdata/quotedfilenames/quotedfilenames.pro
index a4d20cc0f5..269014cc88 100644
--- a/tests/auto/tools/qmake/testdata/quotedfilenames/quotedfilenames.pro
+++ b/tests/auto/tools/qmake/testdata/quotedfilenames/quotedfilenames.pro
@@ -9,7 +9,7 @@ INCLUDEPATH += "include folder"
RCCINPUT = "rc folder/test.qrc"
RCCOUTPUT = "cpp folder/test.cpp"
-qtPrepareTool(QMAKE_RCC, rcc)
+qtPrepareLibExecTool(QMAKE_RCC, rcc)
rcc_test.commands = $$QMAKE_RCC -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_IN}
rcc_test.output = $$RCCOUTPUT
diff --git a/tests/auto/tools/qmake/tst_qmake.cpp b/tests/auto/tools/qmake/tst_qmake.cpp
index 2c0eaa06aa..9ace0e1f3a 100644
--- a/tests/auto/tools/qmake/tst_qmake.cpp
+++ b/tests/auto/tools/qmake/tst_qmake.cpp
@@ -667,7 +667,7 @@ void tst_qmake::qinstall()
// install an executable file
{
- const QString mocFilePath = QLibraryInfo::path(QLibraryInfo::BinariesPath)
+ const QString mocFilePath = QLibraryInfo::path(QLibraryInfo::LibraryExecutablesPath)
+ "/moc"
#ifdef Q_OS_WIN
+ ".exe"
diff --git a/tests/auto/tools/rcc/tst_rcc.cpp b/tests/auto/tools/rcc/tst_rcc.cpp
index 108fd07b57..9b04987168 100644
--- a/tests/auto/tools/rcc/tst_rcc.cpp
+++ b/tests/auto/tools/rcc/tst_rcc.cpp
@@ -104,7 +104,7 @@ private:
void tst_rcc::initTestCase()
{
- m_rcc = QLibraryInfo::path(QLibraryInfo::BinariesPath) + QLatin1String("/rcc");
+ m_rcc = QLibraryInfo::path(QLibraryInfo::LibraryExecutablesPath) + QLatin1String("/rcc");
m_dataPath = QFINDTESTDATA("data");
QVERIFY(!m_dataPath.isEmpty());
diff --git a/tests/auto/tools/uic/tst_uic.cpp b/tests/auto/tools/uic/tst_uic.cpp
index 1dfc572d1d..fb4441a02a 100644
--- a/tests/auto/tools/uic/tst_uic.cpp
+++ b/tests/auto/tools/uic/tst_uic.cpp
@@ -105,7 +105,7 @@ static const char versionRegexp[] =
R"([*#][*#] Created by: Qt User Interface Compiler version \d{1,2}\.\d{1,2}\.\d{1,2})";
tst_uic::tst_uic()
- : m_command(QLibraryInfo::path(QLibraryInfo::BinariesPath) + QLatin1String("/uic"))
+ : m_command(QLibraryInfo::path(QLibraryInfo::LibraryExecutablesPath) + QLatin1String("/uic"))
, m_versionRegexp(QLatin1String(versionRegexp))
{
}