diff options
author | Oswald Buddenhagen <oswald.buddenhagen@qt.io> | 2018-12-19 12:46:52 +0100 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@qt.io> | 2019-04-15 05:41:08 +0000 |
commit | 5b3dfa470ed7ea40103daa785286ab71fb7aa230 (patch) | |
tree | 599a4ba8654dff600e9dee7c8dd40e56b176b6ff /mkspecs/features/qt.prf | |
parent | 2a815855a9b91a3537ab3d804ad1ee47d741b64f (diff) |
qmake: link qt libraries by full path
this avoids the scenario where the linker would pick up the wrong qt
libraries for LIBS_PRIVATE because LIBS added the "wrong" path first.
this is also consistent with configure-supplied dependencies as of
recently.
as a side effect, this also removes pretenses of lsb linker handling, as
it makes no sense after the change and is certainly obsolete anyway.
Fixes: QTBUG-50921
Change-Id: I84398c9143f393c2eefb3c69a31bd9f633669924
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'mkspecs/features/qt.prf')
-rw-r--r-- | mkspecs/features/qt.prf | 31 |
1 files changed, 13 insertions, 18 deletions
diff --git a/mkspecs/features/qt.prf b/mkspecs/features/qt.prf index d8d5acaafd..89f4946c50 100644 --- a/mkspecs/features/qt.prf +++ b/mkspecs/features/qt.prf @@ -145,12 +145,14 @@ import_plugins:qtConfig(static) { # the plugin path. Unknown plugins must rely on the default link path. plug_type = $$eval(QT_PLUGIN.$${plug}.TYPE) !isEmpty(plug_type) { + plug_name = $$QMAKE_PREFIX_STATICLIB$${plug}$$qtPlatformTargetSuffix().$$QMAKE_EXTENSION_STATICLIB plug_path = $$eval(QT_PLUGIN.$${plug}.PATH) isEmpty(plug_path): \ plug_path = $$[QT_INSTALL_PLUGINS/get] - LIBS += -L$$plug_path/$$plug_type + LIBS += $$plug_path/$$plug_type/$$plug_name + } else { + LIBS += -l$${plug}$$qtPlatformTargetSuffix() } - LIBS += -l$${plug}$$qtPlatformTargetSuffix() } } @@ -195,8 +197,6 @@ for(ever) { qtProcessModuleFlags(DEFINES, QT.$${QTLIB}.DEFINES) MODULE_INCLUDES -= $$QMAKE_DEFAULT_INCDIRS - MODULE_LIBS_ADD = $$MODULE_LIBS - MODULE_LIBS_ADD -= $$QMAKE_DEFAULT_LIBDIRS # Frameworks shouldn't need include paths, but much code does not use # module-qualified #includes, so by default we add paths which point @@ -209,23 +209,17 @@ for(ever) { !isEmpty(MODULE_MODULE) { contains(MODULE_CONFIG, lib_bundle) { framework = $$MODULE_MODULE + # Linking frameworks by absolute path does not work. LIBS$$var_sfx += -framework $$framework } else { - !isEmpty(MODULE_LIBS_ADD): \ - LIBS$$var_sfx += -L$$MODULE_LIBS_ADD - lib = $$MODULE_MODULE$$qtPlatformTargetSuffix() - LIBS$$var_sfx += -l$$lib - - contains(MODULE_CONFIG, staticlib): \ - PRE_TARGETDEPS *= $$MODULE_LIBS/$${QMAKE_PREFIX_STATICLIB}$${lib}.$${QMAKE_EXTENSION_STATICLIB} - - !isEmpty(QMAKE_LSB) { - !isEmpty(MODULE_LIBS_ADD): \ - QMAKE_LFLAGS *= --lsb-libpath=$$MODULE_LIBS_ADD - QMAKE_LFLAGS *= --lsb-shared-libs=$$lib - QMAKE_LIBDIR *= /opt/lsb/lib + win32|contains(MODULE_CONFIG, staticlib) { + lib = $$MODULE_LIBS/$$QMAKE_PREFIX_STATICLIB$${lib}.$$QMAKE_EXTENSION_STATICLIB + PRE_TARGETDEPS += $$lib + } else { + lib = $$MODULE_LIBS/$$QMAKE_PREFIX_SHLIB$${lib}.$$QMAKE_EXTENSION_SHLIB } + LIBS$$var_sfx += $$lib } } QMAKE_USE$$var_sfx += $$MODULE_USES @@ -295,7 +289,8 @@ contains(all_qt_module_deps, qml): \ for (key, IMPORTS._KEYS_) { PATH = $$eval(IMPORTS.$${key}.path) PLUGIN = $$eval(IMPORTS.$${key}.plugin) - !isEmpty(PATH):!isEmpty(PLUGIN): LIBS *= -L$$PATH -l$${PLUGIN}$$qtPlatformTargetSuffix() + !isEmpty(PATH):!isEmpty(PLUGIN): \ + LIBS += $$PATH/$$QMAKE_PREFIX_STATICLIB$${PLUGIN}$$qtPlatformTargetSuffix().$$QMAKE_EXTENSION_STATICLIB } # create qml_plugin_import.cpp |