summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJocelyn Turcotte <jocelyn.turcotte@digia.com>2014-11-20 11:49:34 +0100
committerJani Heikkinen <jani.heikkinen@theqtcompany.com>2014-11-20 19:28:22 +0100
commit8af12f0c9ee0cfdf28f557e96086bb7b08d786bc (patch)
treea0e7b3eb34d03a310dc339f232e3b3d45ee04f8c
parenta659a309fa6f280e657458123c64a401707a9db0 (diff)
Use a relative install_name for QtWebEngineProcess' dependenciesv5.4.0-rc1
Until we can rely on Qt using @rpath on OSX, QtWebEngineProcess' dependencies must either be updated by macdeployqt when creating an .app bundle, either we must make that path relative at build time. Since QtWebEngineProcess.app is always deployed inside QtWebEngineCore.framework, we can safely assume that the dylib is always in a parent directory and that QtCore.framework can be found one directory higher. The additional dependencies of QtWebEngineCore.framework will be handled by the dynamic linker when it gets loaded, but this only works for QtWebEngineProcess when macdeployqt uses @loader_path instead of @executable_path (then relative to the application which is in a different directory than QtWebEngineProcess). This can be forced by passing a non-empty value for its -executable= command-line argument (e.g `macdeployqt Browser.app -executable=Browser.app/Contents/MacOS/Browser`) All this will be much simpler once we got Qt framework builds to use @rpath instead in a future minor version. Task-number: QTBUG-41611 Change-Id: Ied46c65a09f7033b622708da6e3d85855f9abf34 Reviewed-by: Andras Becsi <andras.becsi@digia.com>
-rw-r--r--src/process/process.pro22
1 files changed, 20 insertions, 2 deletions
diff --git a/src/process/process.pro b/src/process/process.pro
index 8ed09612a..ad1575c81 100644
--- a/src/process/process.pro
+++ b/src/process/process.pro
@@ -1,15 +1,33 @@
TARGET = $$QTWEBENGINEPROCESS_NAME
TEMPLATE = app
-QT_PRIVATE += webenginecore
-
load(qt_build_paths)
contains(QT_CONFIG, qt_framework) {
# Deploy the QtWebEngineProcess app bundle into the QtWebEngineCore framework.
DESTDIR = $$MODULE_BASE_OUTDIR/lib/QtWebEngineCore.framework/Versions/5/Helpers
+
+ # FIXME: We can remove those steps in Qt 5.5 once @rpath works
+ # "QT += webenginecore" would pull all dependencies that we'd also need to update
+ # with install_name_tool on OSX, but we only need access to the private
+ # QtWebEngine::processMain. qtAddModule will take care of finding where
+ # the library is without pulling additional librarie.
+ QT = core
+ qtAddModule(webenginecore, LIBS)
+ CONFIG -= link_prl
+ QMAKE_POST_LINK = \
+ "xcrun install_name_tool -change " \
+ "`xcrun otool -X -L $(TARGET) | grep QtWebEngineCore | cut -d ' ' -f 1` " \
+ "@executable_path/../../../../QtWebEngineCore " \
+ "$(TARGET); " \
+ "xcrun install_name_tool -change " \
+ "`xcrun otool -X -L $(TARGET) | grep QtCore | cut -d ' ' -f 1` " \
+ "@executable_path/../../../../../../../QtCore.framework/QtCore " \
+ "$(TARGET) "
} else {
CONFIG -= app_bundle
DESTDIR = $$MODULE_BASE_OUTDIR/libexec
+
+ QT_PRIVATE += webenginecore
}
INCLUDEPATH += ../core