summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2019-10-29 17:12:33 +0100
committerEike Ziller <eike.ziller@qt.io>2019-11-04 10:31:55 +0000
commit53819123e73479b8d9075a86b5a7bef12a87cc26 (patch)
tree617ebee23a8132fc3b91c604143c94ecb186f212
parent5f8efe43f2575b8e4f3f743d12c81051744b9d13 (diff)
downloadqt-creator-53819123e73479b8d9075a86b5a7bef12a87cc26.tar.gz
Simplify RPATHs for qmake build
Use central rpath.pri for setting RPATHs and qttestrpath.pri for tests. Simplify install names of plugins and libraries on macOS to be just @rpath/libName, which follows convention better and makes setting up RPATHs easier. Preparation for moving tools one directory level down on macOS, to be able to add a qt.conf for the tools generically. Task-number: QTCREATORBUG-23120 Change-Id: I16625d48904abd3a7f4c2ad7bbba5916cdc400cd Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r--src/app/app.pro2
-rw-r--r--src/qtcreatorlibrary.pri4
-rw-r--r--src/qtcreatorplugin.pri4
-rw-r--r--src/qtcreatortool.pri10
-rw-r--r--src/rpath.pri20
-rw-r--r--src/tools/cplusplus-shared/tool.pri2
-rw-r--r--src/tools/iostool/iostool.pro2
-rw-r--r--src/tools/qml2puppet/qml2puppet/qml2puppet.pro1
-rw-r--r--tests/auto/cplusplus/shared/shared.pri1
-rw-r--r--tests/auto/debugger/dumpers.pro3
-rw-r--r--tests/auto/qml/codemodel/importscheck/importscheck.pro1
-rw-r--r--tests/auto/qml/qrcparser/qrcparser.pro1
-rw-r--r--tests/auto/qttestrpath.pri4
13 files changed, 30 insertions, 25 deletions
diff --git a/src/app/app.pro b/src/app/app.pro
index 8621a63f02..e76ba26b71 100644
--- a/src/app/app.pro
+++ b/src/app/app.pro
@@ -12,7 +12,9 @@ win32: VERSION=
HEADERS += ../tools/qtcreatorcrashhandler/crashhandlersetup.h
SOURCES += main.cpp ../tools/qtcreatorcrashhandler/crashhandlersetup.cpp
+RPATH_BASE = $$IDE_BIN_PATH
include(../rpath.pri)
+
include(../libs/qt-breakpad/qtbreakpad.pri)
LIBS *= -l$$qtLibraryName(ExtensionSystem) -l$$qtLibraryName(Aggregation) -l$$qtLibraryName(Utils)
diff --git a/src/qtcreatorlibrary.pri b/src/qtcreatorlibrary.pri
index a4165a794f..003b2b0a69 100644
--- a/src/qtcreatorlibrary.pri
+++ b/src/qtcreatorlibrary.pri
@@ -13,9 +13,11 @@ win32 {
DESTDIR = $$IDE_LIBRARY_PATH
osx {
- QMAKE_LFLAGS_SONAME = -Wl,-install_name,@rpath/Frameworks/
+ QMAKE_LFLAGS_SONAME = -Wl,-install_name,@rpath/
QMAKE_LFLAGS += -compatibility_version $$QTCREATOR_COMPAT_VERSION
}
+
+RPATH_BASE = $$IDE_LIBRARY_PATH
include(rpath.pri)
TARGET = $$qtLibraryTargetName($$TARGET)
diff --git a/src/qtcreatorplugin.pri b/src/qtcreatorplugin.pri
index a409ec19a5..806ed6f865 100644
--- a/src/qtcreatorplugin.pri
+++ b/src/qtcreatorplugin.pri
@@ -85,9 +85,11 @@ exists($$PLUGINJSON_IN) {
}
osx {
- QMAKE_LFLAGS_SONAME = -Wl,-install_name,@rpath/PlugIns/
+ QMAKE_LFLAGS_SONAME = -Wl,-install_name,@rpath/
QMAKE_LFLAGS += -compatibility_version $$QTCREATOR_COMPAT_VERSION
}
+
+RPATH_BASE = $$IDE_PLUGIN_PATH
include(rpath.pri)
contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols
diff --git a/src/qtcreatortool.pri b/src/qtcreatortool.pri
index ac00786bbe..900f728b9d 100644
--- a/src/qtcreatortool.pri
+++ b/src/qtcreatortool.pri
@@ -6,14 +6,8 @@ CONFIG += console
CONFIG -= app_bundle
DESTDIR = $$IDE_LIBEXEC_PATH
-REL_PATH_TO_LIBS = $$relative_path($$IDE_LIBRARY_PATH, $$IDE_LIBEXEC_PATH)
-REL_PATH_TO_PLUGINS = $$relative_path($$IDE_PLUGIN_PATH, $$IDE_LIBEXEC_PATH)
-osx {
- QMAKE_LFLAGS += -Wl,-rpath,@executable_path/$$REL_PATH_TO_LIBS,-rpath,@executable_path/$$REL_PATH_TO_PLUGINS
-} else {
- QMAKE_RPATHDIR += \$\$ORIGIN/$$REL_PATH_TO_LIBS
- QMAKE_RPATHDIR += \$\$ORIGIN/$$REL_PATH_TO_PLUGINS
-}
+
+RPATH_BASE = $$IDE_LIBEXEC_PATH
include(rpath.pri)
target.path = $$INSTALL_LIBEXEC_PATH
diff --git a/src/rpath.pri b/src/rpath.pri
index 0d8911a4d9..ef0a6b773b 100644
--- a/src/rpath.pri
+++ b/src/rpath.pri
@@ -1,13 +1,19 @@
-macx {
- QMAKE_LFLAGS += -Wl,-rpath,@loader_path/../,-rpath,@executable_path/../
+# set RPATH_BASE to the IDE_..._PATH of the target
+
+isEmpty(RPATH_BASE): \
+ error("You must set RPATH_BASE before including rpath.pri")
+
+REL_PATH_TO_LIBS = $$relative_path($$IDE_LIBRARY_PATH, $$RPATH_BASE)
+REL_PATH_TO_PLUGINS = $$relative_path($$IDE_PLUGIN_PATH, $$RPATH_BASE)
+
+macos {
+ QMAKE_LFLAGS += -Wl,-rpath,@loader_path/$$REL_PATH_TO_LIBS,-rpath,@loader_path/$$REL_PATH_TO_PLUGINS
} else:linux-* {
- #do the rpath by hand since it's not possible to use ORIGIN in QMAKE_RPATHDIR
- # this expands to $ORIGIN (after qmake and make), it does NOT read a qmake var
QMAKE_RPATHDIR += \$\$ORIGIN
- QMAKE_RPATHDIR += \$\$ORIGIN/..
- QMAKE_RPATHDIR += \$\$ORIGIN/../$$IDE_LIBRARY_BASENAME/qtcreator
- IDE_PLUGIN_RPATH = $$join(QMAKE_RPATHDIR, ":")
+ QMAKE_RPATHDIR += \$\$ORIGIN/$$REL_PATH_TO_LIBS
+ QMAKE_RPATHDIR += \$\$ORIGIN/$$REL_PATH_TO_PLUGINS
+ IDE_PLUGIN_RPATH = $$join(QMAKE_RPATHDIR, ":")
QMAKE_LFLAGS += -Wl,-z,origin \'-Wl,-rpath,$${IDE_PLUGIN_RPATH}\'
QMAKE_RPATHDIR =
}
diff --git a/src/tools/cplusplus-shared/tool.pri b/src/tools/cplusplus-shared/tool.pri
index 569d099e2f..dbd31739a3 100644
--- a/src/tools/cplusplus-shared/tool.pri
+++ b/src/tools/cplusplus-shared/tool.pri
@@ -1,6 +1,8 @@
QTC_LIB_DEPENDS += cplusplus
include(../../../qtcreator.pri)
+
+RPATH_BASE = $$IDE_BIN_PATH
include(../../rpath.pri)
DESTDIR = $$IDE_BIN_PATH
diff --git a/src/tools/iostool/iostool.pro b/src/tools/iostool/iostool.pro
index 8ea9a78d6b..4ecd607ac2 100644
--- a/src/tools/iostool/iostool.pro
+++ b/src/tools/iostool/iostool.pro
@@ -19,6 +19,8 @@ include(../../../qtcreator.pri)
# put into a subdir, so we can deploy a separate qt.conf for it
DESTDIR = $$IDE_LIBEXEC_PATH/ios
+
+RPATH_BASE = $$DESTDIR
include(../../rpath.pri)
SOURCES += main.cpp \
diff --git a/src/tools/qml2puppet/qml2puppet/qml2puppet.pro b/src/tools/qml2puppet/qml2puppet/qml2puppet.pro
index 9644cf4bca..403f8e24fb 100644
--- a/src/tools/qml2puppet/qml2puppet/qml2puppet.pro
+++ b/src/tools/qml2puppet/qml2puppet/qml2puppet.pro
@@ -7,6 +7,7 @@ include(../../../../qtcreator.pri)
osx: DESTDIR = $$IDE_LIBEXEC_PATH/qmldesigner
else: DESTDIR = $$IDE_LIBEXEC_PATH
+RPATH_BASE = $$DESTDIR
include(../../../rpath.pri)
include(../../../../share/qtcreator/qml/qmlpuppet/qml2puppet/qml2puppet.pri)
diff --git a/tests/auto/cplusplus/shared/shared.pri b/tests/auto/cplusplus/shared/shared.pri
index 579608c266..c6f06df44f 100644
--- a/tests/auto/cplusplus/shared/shared.pri
+++ b/tests/auto/cplusplus/shared/shared.pri
@@ -1,5 +1,4 @@
QTC_PLUGIN_DEPENDS += cpptools
include(../../qttest.pri)
-include($$IDE_SOURCE_TREE/src/rpath.pri)
DEFINES += Q_PLUGIN_PATH=\"\\\"$$IDE_PLUGIN_PATH\\\"\"
diff --git a/tests/auto/debugger/dumpers.pro b/tests/auto/debugger/dumpers.pro
index 0eec400a89..f0e4420d6a 100644
--- a/tests/auto/debugger/dumpers.pro
+++ b/tests/auto/debugger/dumpers.pro
@@ -30,9 +30,6 @@ msvc {
DEBUGGERDIR = $$IDE_SOURCE_TREE/src/plugins/debugger
DUMPERDIR = $$IDE_SOURCE_TREE/share/qtcreator/debugger
-include($$IDE_SOURCE_TREE/src/rpath.pri)
-
-
SOURCES += \
$$DEBUGGERDIR/debuggerprotocol.cpp \
$$DEBUGGERDIR/simplifytype.cpp \
diff --git a/tests/auto/qml/codemodel/importscheck/importscheck.pro b/tests/auto/qml/codemodel/importscheck/importscheck.pro
index d5e9ba7781..03501d4ed9 100644
--- a/tests/auto/qml/codemodel/importscheck/importscheck.pro
+++ b/tests/auto/qml/codemodel/importscheck/importscheck.pro
@@ -1,6 +1,5 @@
QTC_LIB_DEPENDS += cplusplus utils extensionsystem
include(../../../qttest.pri)
-include($$IDE_SOURCE_TREE/src/rpath.pri)
DEFINES += QMLJS_LIBRARY
QT += qml xml
diff --git a/tests/auto/qml/qrcparser/qrcparser.pro b/tests/auto/qml/qrcparser/qrcparser.pro
index cb991a4e8f..d043d709f0 100644
--- a/tests/auto/qml/qrcparser/qrcparser.pro
+++ b/tests/auto/qml/qrcparser/qrcparser.pro
@@ -2,7 +2,6 @@
QTC_LIB_DEPENDS += utils
include(../../qttest.pri)
#DEFINES+=CPLUSPLUS_BUILD_STATIC_LIB
-include($$IDE_SOURCE_TREE/src/rpath.pri)
#DEFINES += Q_PLUGIN_PATH=\"\\\"$$IDE_PLUGIN_PATH\\\"\"
diff --git a/tests/auto/qttestrpath.pri b/tests/auto/qttestrpath.pri
index bd65a2f3ef..d69f084db0 100644
--- a/tests/auto/qttestrpath.pri
+++ b/tests/auto/qttestrpath.pri
@@ -1,11 +1,11 @@
linux-* {
- QMAKE_RPATHDIR += $$IDE_BUILD_TREE/$$IDE_LIBRARY_BASENAME/qtcreator
+ QMAKE_RPATHDIR += $$IDE_LIBRARY_PATH
QMAKE_RPATHDIR += $$IDE_PLUGIN_PATH
IDE_PLUGIN_RPATH = $$join(QMAKE_RPATHDIR, ":")
QMAKE_LFLAGS += -Wl,-z,origin \'-Wl,-rpath,$${IDE_PLUGIN_RPATH}\'
} else:macx {
- QMAKE_LFLAGS += -Wl,-rpath,\"$$IDE_BIN_PATH/../\"
+ QMAKE_LFLAGS += -Wl,-rpath,\"$$IDE_LIBRARY_PATH\",-rpath,\"$$IDE_PLUGIN_PATH\"
}