From 5afde92bd76421a49b9eb76e6071b32fd3ca41df Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 16 May 2017 18:06:24 +0200 Subject: make mkspecs not mess up -rpath-link adding shared install paths via QMAKE_LFLAGS in the spec has the tiny side effect that they are searched _first_, which is generally a really bad idea - they should be _last_. for that purpose, introduce QMAKE_RPATHLINKDIR_POST, and migrate all specs to use it. QMAKE_RPATHDIR_POST is added for consistency, but not actually used. Task-number: QTBUG-59457 Change-Id: Iac6cda5e9111ef8cca454a69861fe8408bb40589 Reviewed-by: Joerg Bornemann --- mkspecs/common/qcc-base-qnx.conf | 2 +- mkspecs/devices/common/linux_device_post.conf | 5 +++-- mkspecs/devices/linux-drive-cx-g++/qmake.conf | 10 +++++----- mkspecs/devices/linux-jetson-tk1-g++/qmake.conf | 8 ++++---- mkspecs/devices/linux-jetson-tk1-pro-g++/qmake.conf | 10 +++++----- mkspecs/devices/linux-jetson-tx1-g++/qmake.conf | 10 +++++----- mkspecs/devices/linux-mipsel-broadcom-97425-g++/qmake.conf | 3 +-- mkspecs/devices/linux-rasp-pi-g++/qmake.conf | 2 +- mkspecs/devices/linux-rasp-pi2-g++/qmake.conf | 2 +- mkspecs/devices/linux-rasp-pi3-g++/qmake.conf | 5 ++--- mkspecs/devices/linux-snowball-g++/qmake.conf | 5 +++-- mkspecs/devices/linux-tegra2-g++/qmake.conf | 7 ++++--- qmake/generators/unix/unixmake.cpp | 2 ++ 13 files changed, 37 insertions(+), 34 deletions(-) diff --git a/mkspecs/common/qcc-base-qnx.conf b/mkspecs/common/qcc-base-qnx.conf index e300dfe8d9..148645b4e9 100644 --- a/mkspecs/common/qcc-base-qnx.conf +++ b/mkspecs/common/qcc-base-qnx.conf @@ -40,7 +40,7 @@ isEmpty(QNX_DIR) { QMAKE_INCDIR_POST = $${QNX_DIR}/usr/include $${QNX_DIR}/usr/include/freetype2 QMAKE_LIBDIR_POST = $${QNX_DIR}/$${QNX_CPUDIR}/lib $${QNX_DIR}/$${QNX_CPUDIR}/usr/lib -QMAKE_LFLAGS += -Wl,-rpath-link,$${QNX_DIR}/$${QNX_CPUDIR}/lib -Wl,-rpath-link,$${QNX_DIR}/$${QNX_CPUDIR}/usr/lib +QMAKE_RPATHLINKDIR_POST += $${QNX_DIR}/$${QNX_CPUDIR}/lib $${QNX_DIR}/$${QNX_CPUDIR}/usr/lib QMAKE_CXXFLAGS_CXX11 = -Wc,-std=gnu++11 QMAKE_CXXFLAGS_CXX14 = -Wc,-std=gnu++1y diff --git a/mkspecs/devices/common/linux_device_post.conf b/mkspecs/devices/common/linux_device_post.conf index cf1608f32b..9a434dba77 100644 --- a/mkspecs/devices/common/linux_device_post.conf +++ b/mkspecs/devices/common/linux_device_post.conf @@ -3,8 +3,9 @@ defineTest(qtConfSanitizeMkspec) { } contains(DISTRO_OPTS, deb-multi-arch) { - QMAKE_LFLAGS += -Wl,-rpath-link,$$[QT_SYSROOT]/usr/lib/$${GCC_MACHINE_DUMP} \ - -Wl,-rpath-link,$$[QT_SYSROOT]/lib/$${GCC_MACHINE_DUMP} + QMAKE_RPATHLINKDIR_POST += \ + $$[QT_SYSROOT]/usr/lib/$${GCC_MACHINE_DUMP} \ + $$[QT_SYSROOT]/lib/$${GCC_MACHINE_DUMP} } contains(DISTRO_OPTS, boot2qt) { diff --git a/mkspecs/devices/linux-drive-cx-g++/qmake.conf b/mkspecs/devices/linux-drive-cx-g++/qmake.conf index 3cff38ff8b..a0dcaddec9 100644 --- a/mkspecs/devices/linux-drive-cx-g++/qmake.conf +++ b/mkspecs/devices/linux-drive-cx-g++/qmake.conf @@ -26,11 +26,11 @@ QMAKE_LIBDIR_POST += \ $$[QT_SYSROOT]/lib/aarch64-linux-gnu \ $$[QT_SYSROOT]/usr/lib/aarch64-linux-gnu -QMAKE_LFLAGS += \ - -Wl,-rpath-link,$${VIBRANTE_SDK_TOPDIR}/lib-target \ - -Wl,-rpath-link,$$[QT_SYSROOT]/usr/lib \ - -Wl,-rpath-link,$$[QT_SYSROOT]/usr/lib/aarch64-linux-gnu \ - -Wl,-rpath-link,$$[QT_SYSROOT]/lib/aarch64-linux-gnu +QMAKE_RPATHLINKDIR_POST += \ + $${VIBRANTE_SDK_TOPDIR}/lib-target \ + $$[QT_SYSROOT]/usr/lib \ + $$[QT_SYSROOT]/usr/lib/aarch64-linux-gnu \ + $$[QT_SYSROOT]/lib/aarch64-linux-gnu DISTRO_OPTS += aarch64 diff --git a/mkspecs/devices/linux-jetson-tk1-g++/qmake.conf b/mkspecs/devices/linux-jetson-tk1-g++/qmake.conf index 32996f59e6..4c733e8b77 100644 --- a/mkspecs/devices/linux-jetson-tk1-g++/qmake.conf +++ b/mkspecs/devices/linux-jetson-tk1-g++/qmake.conf @@ -20,10 +20,10 @@ QMAKE_LIBDIR_POST += \ $$[QT_SYSROOT]/lib/arm-linux-gnueabihf \ $$[QT_SYSROOT]/usr/lib/arm-linux-gnueabihf -QMAKE_LFLAGS += \ - -Wl,-rpath-link,$$[QT_SYSROOT]/usr/lib \ - -Wl,-rpath-link,$$[QT_SYSROOT]/usr/lib/arm-linux-gnueabihf \ - -Wl,-rpath-link,$$[QT_SYSROOT]/lib/arm-linux-gnueabihf +QMAKE_RPATHLINKDIR_POST += \ + $$[QT_SYSROOT]/usr/lib \ + $$[QT_SYSROOT]/usr/lib/arm-linux-gnueabihf \ + $$[QT_SYSROOT]/lib/arm-linux-gnueabihf DISTRO_OPTS += hard-float COMPILER_FLAGS += -mtune=cortex-a15 -march=armv7-a -mfpu=neon-vfpv4 diff --git a/mkspecs/devices/linux-jetson-tk1-pro-g++/qmake.conf b/mkspecs/devices/linux-jetson-tk1-pro-g++/qmake.conf index 64b25e0182..fb89721798 100644 --- a/mkspecs/devices/linux-jetson-tk1-pro-g++/qmake.conf +++ b/mkspecs/devices/linux-jetson-tk1-pro-g++/qmake.conf @@ -24,11 +24,11 @@ QMAKE_LIBDIR_POST += \ $$[QT_SYSROOT]/lib/arm-linux-gnueabihf \ $$[QT_SYSROOT]/usr/lib/arm-linux-gnueabihf -QMAKE_LFLAGS += \ - -Wl,-rpath-link,$${VIBRANTE_SDK_TOPDIR}/lib-target \ - -Wl,-rpath-link,$$[QT_SYSROOT]/usr/lib \ - -Wl,-rpath-link,$$[QT_SYSROOT]/usr/lib/arm-linux-gnueabihf \ - -Wl,-rpath-link,$$[QT_SYSROOT]/lib/arm-linux-gnueabihf +QMAKE_RPATHLINKDIR_POST += \ + $${VIBRANTE_SDK_TOPDIR}/lib-target \ + $$[QT_SYSROOT]/usr/lib \ + $$[QT_SYSROOT]/usr/lib/arm-linux-gnueabihf \ + $$[QT_SYSROOT]/lib/arm-linux-gnueabihf DISTRO_OPTS += hard-float COMPILER_FLAGS += -mtune=cortex-a15 -march=armv7-a -mfpu=neon-vfpv4 -DWIN_INTERFACE_CUSTOM diff --git a/mkspecs/devices/linux-jetson-tx1-g++/qmake.conf b/mkspecs/devices/linux-jetson-tx1-g++/qmake.conf index f45be457fd..f9dec441f6 100644 --- a/mkspecs/devices/linux-jetson-tx1-g++/qmake.conf +++ b/mkspecs/devices/linux-jetson-tx1-g++/qmake.conf @@ -34,11 +34,11 @@ QMAKE_LIBDIR_POST += \ $$[QT_SYSROOT]/lib/aarch64-linux-gnu \ $$[QT_SYSROOT]/usr/lib/aarch64-linux-gnu -QMAKE_LFLAGS += \ - -Wl,-rpath-link,$$[QT_SYSROOT]/usr/lib \ - -Wl,-rpath-link,$$[QT_SYSROOT]/usr/lib/aarch64-linux-gnu \ - -Wl,-rpath-link,$$[QT_SYSROOT]/usr/lib/aarch64-linux-gnu/tegra \ - -Wl,-rpath-link,$$[QT_SYSROOT]/lib/aarch64-linux-gnu +QMAKE_RPATHLINKDIR_POST += \ + $$[QT_SYSROOT]/usr/lib \ + $$[QT_SYSROOT]/usr/lib/aarch64-linux-gnu \ + $$[QT_SYSROOT]/usr/lib/aarch64-linux-gnu/tegra \ + $$[QT_SYSROOT]/lib/aarch64-linux-gnu DISTRO_OPTS += aarch64 COMPILER_FLAGS += -mtune=cortex-a57.cortex-a53 -march=armv8-a diff --git a/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qmake.conf b/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qmake.conf index 2a4e558186..c7b6970fea 100644 --- a/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qmake.conf +++ b/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qmake.conf @@ -54,8 +54,7 @@ QMAKE_LIBS_EGL = QMAKE_INCDIR_POST += $${BRCM_APPLIBS_PATH}/opensource/zlib/zlib-1.2.3 QMAKE_LIBDIR_POST += $${BRCM_APPLIBS_PATH}/opensource/zlib/zlib-1.2.3 - -QMAKE_LFLAGS += -Wl,-rpath-link,$$QMAKE_LIBDIR_OPENGL_ES2 -Wl,-rpath-link,$${BRCM_APPLIBS_PATH}/opensource/zlib/zlib-1.2.3 +QMAKE_RPATHLINKDIR_POST += $$QMAKE_LIBDIR_OPENGL_ES2 $${BRCM_APPLIBS_PATH}/opensource/zlib/zlib-1.2.3 # DirectFB platform hooks for this hardware QT_CONFIG += directfb_egl egl diff --git a/mkspecs/devices/linux-rasp-pi-g++/qmake.conf b/mkspecs/devices/linux-rasp-pi-g++/qmake.conf index 89177b7fa2..5497b0ce1b 100644 --- a/mkspecs/devices/linux-rasp-pi-g++/qmake.conf +++ b/mkspecs/devices/linux-rasp-pi-g++/qmake.conf @@ -4,7 +4,7 @@ include(../common/linux_device_pre.conf) -QMAKE_LFLAGS += -Wl,-rpath-link,$$[QT_SYSROOT]/opt/vc/lib +QMAKE_RPATHLINKDIR_POST += $$[QT_SYSROOT]/opt/vc/lib QMAKE_LIBDIR_OPENGL_ES2 = $$[QT_SYSROOT]/opt/vc/lib QMAKE_LIBDIR_EGL = $$QMAKE_LIBDIR_OPENGL_ES2 diff --git a/mkspecs/devices/linux-rasp-pi2-g++/qmake.conf b/mkspecs/devices/linux-rasp-pi2-g++/qmake.conf index 2911f08873..ffe8f5739a 100644 --- a/mkspecs/devices/linux-rasp-pi2-g++/qmake.conf +++ b/mkspecs/devices/linux-rasp-pi2-g++/qmake.conf @@ -2,7 +2,7 @@ include(../common/linux_device_pre.conf) -QMAKE_LFLAGS += -Wl,-rpath-link,$$[QT_SYSROOT]/opt/vc/lib +QMAKE_RPATHLINKDIR_POST += $$[QT_SYSROOT]/opt/vc/lib QMAKE_LIBDIR_OPENGL_ES2 = $$[QT_SYSROOT]/opt/vc/lib QMAKE_LIBDIR_EGL = $$QMAKE_LIBDIR_OPENGL_ES2 diff --git a/mkspecs/devices/linux-rasp-pi3-g++/qmake.conf b/mkspecs/devices/linux-rasp-pi3-g++/qmake.conf index 10862ccd70..2bb70ffb5a 100644 --- a/mkspecs/devices/linux-rasp-pi3-g++/qmake.conf +++ b/mkspecs/devices/linux-rasp-pi3-g++/qmake.conf @@ -8,13 +8,12 @@ include(../common/linux_device_pre.conf) # and possibly no pkg-config, have some static values as well: # I consider it a bug that this is required, but our EGL config.test _requires_ it -QMAKE_LFLAGS += -Wl,-rpath-link,$$[QT_SYSROOT]/opt/vc/lib +QMAKE_RPATHLINKDIR_POST += $$[QT_SYSROOT]/opt/vc/lib VC_LIBRARY_PATH = /opt/vc/lib VC_INCLUDE_PATH = =/opt/vc/include -# terrible, they do not appear to resolve "=" in rpath! -VC_LINK_LINE = -L=$${VC_LIBRARY_PATH} -Wl,-rpath-link,$$[QT_SYSROOT]$${VC_LIBRARY_PATH} +VC_LINK_LINE = -L=$${VC_LIBRARY_PATH} QMAKE_LIBDIR_OPENGL_ES2 = =$${VC_LIBRARY_PATH} QMAKE_LIBDIR_EGL = $$QMAKE_LIBDIR_OPENGL_ES2 diff --git a/mkspecs/devices/linux-snowball-g++/qmake.conf b/mkspecs/devices/linux-snowball-g++/qmake.conf index 9791119363..ff0f3ab1ae 100644 --- a/mkspecs/devices/linux-snowball-g++/qmake.conf +++ b/mkspecs/devices/linux-snowball-g++/qmake.conf @@ -27,7 +27,8 @@ QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy QMAKE_NM = $${CROSS_COMPILE}nm -P QMAKE_STRIP = $${CROSS_COMPILE}strip -QMAKE_LFLAGS += -Wl,-rpath-link,$$[QT_SYSROOT]/usr/lib/arm-linux-gnueabihf \ - -Wl,-rpath-link,$$[QT_SYSROOT]/lib/arm-linux-gnueabihf +QMAKE_RPATHLINKDIR_POST += \ + $$[QT_SYSROOT]/usr/lib/arm-linux-gnueabihf \ + $$[QT_SYSROOT]/lib/arm-linux-gnueabihf load(qt_config) diff --git a/mkspecs/devices/linux-tegra2-g++/qmake.conf b/mkspecs/devices/linux-tegra2-g++/qmake.conf index 4db576d791..3f6da7668d 100644 --- a/mkspecs/devices/linux-tegra2-g++/qmake.conf +++ b/mkspecs/devices/linux-tegra2-g++/qmake.conf @@ -16,9 +16,10 @@ QMAKE_LIBDIR_POST += $$[QT_SYSROOT]/usr/lib \ $$[QT_SYSROOT]/lib/arm-linux-gnueabi \ $$[QT_SYSROOT]/usr/lib/arm-linux-gnueabi -QMAKE_LFLAGS += -Wl,-rpath-link,$$[QT_SYSROOT]/usr/lib \ - -Wl,-rpath-link,$$[QT_SYSROOT]/usr/lib/arm-linux-gnueabi \ - -Wl,-rpath-link,$$[QT_SYSROOT]/lib/arm-linux-gnueabi +QMAKE_RPATHLINKDIR_POST += \ + $$[QT_SYSROOT]/usr/lib \ + $$[QT_SYSROOT]/usr/lib/arm-linux-gnueabi \ + $$[QT_SYSROOT]/lib/arm-linux-gnueabi TEGRA2_CFLAGS = -mtune=cortex-a9 -march=armv7-a -mhard-float -mfloat-abi=softfp -mfpu=vfpv3-d16 QMAKE_CFLAGS += $$TEGRA2_CFLAGS diff --git a/qmake/generators/unix/unixmake.cpp b/qmake/generators/unix/unixmake.cpp index 2f1bbeea25..30f99174f8 100644 --- a/qmake/generators/unix/unixmake.cpp +++ b/qmake/generators/unix/unixmake.cpp @@ -96,6 +96,8 @@ UnixMakefileGenerator::init() project->values("QMAKE_LFLAGS") += project->values("QMAKE_LFLAGS_PREBIND"); project->values("QMAKE_INCDIR") += project->values("QMAKE_INCDIR_POST"); project->values("QMAKE_LIBDIR") += project->values("QMAKE_LIBDIR_POST"); + project->values("QMAKE_RPATHDIR") += project->values("QMAKE_RPATHDIR_POST"); + project->values("QMAKE_RPATHLINKDIR") += project->values("QMAKE_RPATHLINKDIR_POST"); if(!project->isEmpty("QMAKE_INCDIR")) project->values("INCLUDEPATH") += project->values("QMAKE_INCDIR"); ProStringList ldadd; -- cgit v1.2.3