diff options
author | Oswald Buddenhagen <oswald.buddenhagen@qt.io> | 2016-12-20 18:43:00 +0100 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@qt.io> | 2017-01-06 20:10:37 +0000 |
commit | ac740d9d285a73e98c99495769782a0d5b934d7a (patch) | |
tree | 885e381df6e5dfe81a53524158f67262456aa9cf | |
parent | 9576b71fe8c0dea978f4bcbe15526e0e3e643cfd (diff) |
statically link plugins for transitive deps' private deps as well
while we already linked the plugins for our own private deps, we failed
to do so for our transitive deps.
this also fixes linking qml plugins if qml is linked only indirectly and
privately.
the code for setting up rpath-link is slightly refactored as a side
effect, with no functional change.
the code for setting up rpath now also sees the longer list of
dependencies, but that's irrelevant, as qtcore always ends up among the
direct deps anyway iff any non-bootstrapped modules are used.
Change-Id: I90dca81a2836c6191ce5d092e16bf7660ee820bc
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
-rw-r--r-- | mkspecs/features/qt.prf | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/mkspecs/features/qt.prf b/mkspecs/features/qt.prf index a4e3b0247d..564f3d774d 100644 --- a/mkspecs/features/qt.prf +++ b/mkspecs/features/qt.prf @@ -168,10 +168,10 @@ for(ever) { } qt_module_deps = $$CLEAN_QT $$CLEAN_QT_PRIVATE -qt_module_deps = $$resolve_depends(qt_module_deps, "QT.") +all_qt_module_deps = $$resolve_depends(qt_module_deps, "QT.", ".depends" ".run_depends") !no_qt_rpath:!static:qtConfig(rpath):!qtConfig(static):\ - contains(qt_module_deps, core) { + contains(all_qt_module_deps, core) { relative_qt_rpath:!isEmpty(QMAKE_REL_RPATH_BASE):contains(INSTALLS, target):\ isEmpty(target.files):isEmpty(target.commands):isEmpty(target.extra) { # NOT the /dev property, as INSTALLS use host paths @@ -186,8 +186,8 @@ qt_module_deps = $$resolve_depends(qt_module_deps, "QT.") # libraries which were NOT specified on the command line. # This means that paths of direct dependencies (QT & QT_PRIVATE) # don't need to be listed, unlike their private dependencies' paths. - privdep = $$resolve_depends(qt_module_deps, "QT.", ".depends" ".run_depends") - privdep -= $$qt_module_deps + privdep = $$all_qt_module_deps + privdep -= $$resolve_depends(qt_module_deps, "QT.") rpaths = for(dep, privdep): \ rpaths += $$eval(QT.$${dep}.libs) @@ -195,7 +195,7 @@ qt_module_deps = $$resolve_depends(qt_module_deps, "QT.") } # static builds: link qml import plugins into the target. -contains(qt_module_deps, qml): \ +contains(all_qt_module_deps, qml): \ qtConfig(static):import_plugins:!host_build:!no_import_scan { exists($$[QT_INSTALL_QML/get]): \ QMLPATHS *= $$[QT_INSTALL_QML/get] @@ -254,14 +254,14 @@ contains(qt_module_deps, qml): \ import_plugins { autoplugs = - for (qtmod, qt_module_deps) { + for (qtmod, all_qt_module_deps) { for (ptype, QT.$${qtmod}.plugin_types) { nptype = $$replace(ptype, [-/], _) isEmpty(QTPLUGIN.$$nptype) { for (plug, QT_PLUGINS) { equals(QT_PLUGIN.$${plug}.TYPE, $$ptype) { for (dep, QT_PLUGIN.$${plug}.EXTENDS) { - !contains(qt_module_deps, $$dep) { + !contains(all_qt_module_deps, $$dep) { plug = break() } |