From 6dcd944deeed28bdd001eea5289d04116c9d23f4 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 16 May 2017 17:28:22 +0200 Subject: [PATCH] make mkspecs not mess up library and include search paths adding shared install paths to QMAKE_{INCDIR,LIBDIR} 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, make QMAKE_{INCDIR,LIBDIR}_POST live up to their names (i.e., search them actually last) and migrate all affected specs to use them. Task-number: QTBUG-40825 Change-Id: Ie0de81c3cc49e193186d2fedd7d6c77590c8ef79 Reviewed-by: Joerg Bornemann --- mkspecs/common/android-base-tail.conf | 4 ++-- mkspecs/common/qcc-base-qnx.conf | 4 ++-- mkspecs/devices/common/freebsd_device_pre.conf | 2 +- mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qmake.conf | 4 ++-- mkspecs/devices/linux-arm-trident-pnx8473-g++/qmake.conf | 6 +++--- mkspecs/devices/linux-drive-cx-g++/qmake.conf | 4 ++-- mkspecs/devices/linux-jetson-tk1-g++/qmake.conf | 4 ++-- mkspecs/devices/linux-jetson-tk1-pro-g++/qmake.conf | 4 ++-- mkspecs/devices/linux-jetson-tx1-g++/qmake.conf | 4 ++-- mkspecs/devices/linux-mipsel-broadcom-97425-g++/qmake.conf | 4 ++-- mkspecs/devices/linux-tegra2-g++/qmake.conf | 4 ++-- mkspecs/features/default_post.prf | 3 --- mkspecs/freebsd-clang/qmake.conf | 4 ++-- mkspecs/freebsd-g++/qmake.conf | 4 ++-- mkspecs/netbsd-g++/qmake.conf | 4 ++-- mkspecs/openbsd-g++/qmake.conf | 4 ++-- qmake/generators/unix/unixmake.cpp | 2 ++ qmake/generators/win32/winmakefile.cpp | 3 +++ 18 files changed, 35 insertions(+), 33 deletions(-) diff --git a/mkspecs/common/android-base-tail.conf b/mkspecs/common/android-base-tail.conf index 23bd6696ded..2610918c4e5 100644 --- a/mkspecs/common/android-base-tail.conf +++ b/mkspecs/common/android-base-tail.conf @@ -74,8 +74,8 @@ else: \ LIBGCC_PATH = $$dirname(LIBGCC_PATH_FULL) -QMAKE_INCDIR = $$ANDROID_SOURCES_CXX_STL_INCDIR $$QMAKE_ANDROID_PLATFORM_INCDIR -QMAKE_LIBDIR = $$ANDROID_SOURCES_CXX_STL_LIBDIR $$QMAKE_ANDROID_PLATFORM_LIBDIR $$LIBGCC_PATH +QMAKE_INCDIR_POST = $$ANDROID_SOURCES_CXX_STL_INCDIR $$QMAKE_ANDROID_PLATFORM_INCDIR +QMAKE_LIBDIR_POST = $$ANDROID_SOURCES_CXX_STL_LIBDIR $$QMAKE_ANDROID_PLATFORM_LIBDIR $$LIBGCC_PATH QMAKE_INCDIR_X11 = QMAKE_LIBDIR_X11 = QMAKE_INCDIR_OPENGL = $$QMAKE_ANDROID_PLATFORM_INCDIR diff --git a/mkspecs/common/qcc-base-qnx.conf b/mkspecs/common/qcc-base-qnx.conf index 624bdd36569..e300dfe8d9f 100644 --- a/mkspecs/common/qcc-base-qnx.conf +++ b/mkspecs/common/qcc-base-qnx.conf @@ -38,8 +38,8 @@ isEmpty(QNX_DIR) { error("QNX_TARGET environment variable not set") } -QMAKE_INCDIR = $${QNX_DIR}/usr/include $${QNX_DIR}/usr/include/freetype2 -QMAKE_LIBDIR = $${QNX_DIR}/$${QNX_CPUDIR}/lib $${QNX_DIR}/$${QNX_CPUDIR}/usr/lib +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_CXXFLAGS_CXX11 = -Wc,-std=gnu++11 diff --git a/mkspecs/devices/common/freebsd_device_pre.conf b/mkspecs/devices/common/freebsd_device_pre.conf index 97d70b52657..8eb76f60f1b 100644 --- a/mkspecs/devices/common/freebsd_device_pre.conf +++ b/mkspecs/devices/common/freebsd_device_pre.conf @@ -24,4 +24,4 @@ QMAKE_STRIP = $${CROSS_COMPILE}strip # it messes up system include order. --sysroot is # sufficient. See link for details: # https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=213217 -QMAKE_LIBDIR = $$[QT_SYSROOT]/usr/lib +QMAKE_LIBDIR_POST = $$[QT_SYSROOT]/usr/lib diff --git a/mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qmake.conf b/mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qmake.conf index 99b8f22f97a..f65e9730d05 100644 --- a/mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qmake.conf +++ b/mkspecs/devices/linux-arm-hisilicon-hix5hd2-g++/qmake.conf @@ -19,8 +19,8 @@ include(../common/linux_device_pre.conf) -QMAKE_INCDIR += /usr/arm-linux-gnueabihf/include -QMAKE_LIBDIR += /usr/arm-linux-gnueabihf/lib +QMAKE_INCDIR_POST += /usr/arm-linux-gnueabihf/include +QMAKE_LIBDIR_POST += /usr/arm-linux-gnueabihf/lib QMAKE_LIBS += -lrt diff --git a/mkspecs/devices/linux-arm-trident-pnx8473-g++/qmake.conf b/mkspecs/devices/linux-arm-trident-pnx8473-g++/qmake.conf index b131f65a79a..5619c205fb3 100644 --- a/mkspecs/devices/linux-arm-trident-pnx8473-g++/qmake.conf +++ b/mkspecs/devices/linux-arm-trident-pnx8473-g++/qmake.conf @@ -50,9 +50,9 @@ QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy QMAKE_NM = $${CROSS_COMPILE}nm -P QMAKE_STRIP = $${CROSS_COMPILE}strip -QMAKE_INCDIR += $${TRIDENT_SHINER_SDK_BUILDTREE}/target/output/objs/$${TRIDENT_SHINER_SDK_BUILDSPEC}/comps/generic_apps/usr/include -QMAKE_LIBDIR += $${TRIDENT_SHINER_SDK_BUILDTREE}/target/output/objs/$${TRIDENT_SHINER_SDK_BUILDSPEC}/comps/generic_apps/usr/lib -QMAKE_LIBDIR += $${TRIDENT_SHINER_SDK_BUILDTREE}/target/output/objs/$${TRIDENT_SHINER_SDK_BUILDSPEC}/comps/generated/lib/armgnu_linux_el_cortex-a9 +QMAKE_INCDIR_POST += $${TRIDENT_SHINER_SDK_BUILDTREE}/target/output/objs/$${TRIDENT_SHINER_SDK_BUILDSPEC}/comps/generic_apps/usr/include +QMAKE_LIBDIR_POST += $${TRIDENT_SHINER_SDK_BUILDTREE}/target/output/objs/$${TRIDENT_SHINER_SDK_BUILDSPEC}/comps/generic_apps/usr/lib +QMAKE_LIBDIR_POST += $${TRIDENT_SHINER_SDK_BUILDTREE}/target/output/objs/$${TRIDENT_SHINER_SDK_BUILDSPEC}/comps/generated/lib/armgnu_linux_el_cortex-a9 QMAKE_INCDIR_EGL = $${TRIDENT_SHINER_SDK_INCDIR_EGL_OPENGL_ES2} QMAKE_LIBDIR_EGL = $${TRIDENT_SHINER_SDK_LIBDIR_EGL_OPENGL_ES2} diff --git a/mkspecs/devices/linux-drive-cx-g++/qmake.conf b/mkspecs/devices/linux-drive-cx-g++/qmake.conf index a658f29deb2..3cff38ff8ba 100644 --- a/mkspecs/devices/linux-drive-cx-g++/qmake.conf +++ b/mkspecs/devices/linux-drive-cx-g++/qmake.conf @@ -16,11 +16,11 @@ include(../common/linux_device_pre.conf) -QMAKE_INCDIR += \ +QMAKE_INCDIR_POST += \ $${VIBRANTE_SDK_TOPDIR}/include \ $$[QT_SYSROOT]/usr/include -QMAKE_LIBDIR += \ +QMAKE_LIBDIR_POST += \ $${VIBRANTE_SDK_TOPDIR}/lib-target \ $$[QT_SYSROOT]/usr/lib \ $$[QT_SYSROOT]/lib/aarch64-linux-gnu \ diff --git a/mkspecs/devices/linux-jetson-tk1-g++/qmake.conf b/mkspecs/devices/linux-jetson-tk1-g++/qmake.conf index 493b55384f7..32996f59e63 100644 --- a/mkspecs/devices/linux-jetson-tk1-g++/qmake.conf +++ b/mkspecs/devices/linux-jetson-tk1-g++/qmake.conf @@ -11,11 +11,11 @@ include(../common/linux_device_pre.conf) -QMAKE_INCDIR += \ +QMAKE_INCDIR_POST += \ $$[QT_SYSROOT]/usr/include \ $$[QT_SYSROOT]/usr/include/arm-linux-gnueabihf -QMAKE_LIBDIR += \ +QMAKE_LIBDIR_POST += \ $$[QT_SYSROOT]/usr/lib \ $$[QT_SYSROOT]/lib/arm-linux-gnueabihf \ $$[QT_SYSROOT]/usr/lib/arm-linux-gnueabihf diff --git a/mkspecs/devices/linux-jetson-tk1-pro-g++/qmake.conf b/mkspecs/devices/linux-jetson-tk1-pro-g++/qmake.conf index 1f44c471519..64b25e01827 100644 --- a/mkspecs/devices/linux-jetson-tk1-pro-g++/qmake.conf +++ b/mkspecs/devices/linux-jetson-tk1-pro-g++/qmake.conf @@ -14,11 +14,11 @@ include(../common/linux_device_pre.conf) -QMAKE_INCDIR += \ +QMAKE_INCDIR_POST += \ $${VIBRANTE_SDK_TOPDIR}/include \ $$[QT_SYSROOT]/usr/include -QMAKE_LIBDIR += \ +QMAKE_LIBDIR_POST += \ $${VIBRANTE_SDK_TOPDIR}/lib-target \ $$[QT_SYSROOT]/usr/lib \ $$[QT_SYSROOT]/lib/arm-linux-gnueabihf \ diff --git a/mkspecs/devices/linux-jetson-tx1-g++/qmake.conf b/mkspecs/devices/linux-jetson-tx1-g++/qmake.conf index 06cf329f3a1..f45be457fdd 100644 --- a/mkspecs/devices/linux-jetson-tx1-g++/qmake.conf +++ b/mkspecs/devices/linux-jetson-tx1-g++/qmake.conf @@ -25,11 +25,11 @@ include(../common/linux_device_pre.conf) -QMAKE_INCDIR += \ +QMAKE_INCDIR_POST += \ $$[QT_SYSROOT]/usr/include \ $$[QT_SYSROOT]/usr/include/aarch64-linux-gnu -QMAKE_LIBDIR += \ +QMAKE_LIBDIR_POST += \ $$[QT_SYSROOT]/usr/lib \ $$[QT_SYSROOT]/lib/aarch64-linux-gnu \ $$[QT_SYSROOT]/usr/lib/aarch64-linux-gnu diff --git a/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qmake.conf b/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qmake.conf index 9211551daf4..2a4e5581867 100644 --- a/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qmake.conf +++ b/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qmake.conf @@ -52,8 +52,8 @@ QMAKE_LIBDIR_OPENGL_ES2 = $${BRCM_ROCKFORD_PATH}/middleware/v3d/lib_$${BRCM_PLAT QMAKE_LIBS_OPENGL_ES2 = -lv3ddriver -lrt QMAKE_LIBS_EGL = -INCLUDEPATH += $${BRCM_APPLIBS_PATH}/opensource/zlib/zlib-1.2.3 -QMAKE_LIBDIR += $${BRCM_APPLIBS_PATH}/opensource/zlib/zlib-1.2.3 +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 diff --git a/mkspecs/devices/linux-tegra2-g++/qmake.conf b/mkspecs/devices/linux-tegra2-g++/qmake.conf index adadc4d5b0c..4db576d7917 100644 --- a/mkspecs/devices/linux-tegra2-g++/qmake.conf +++ b/mkspecs/devices/linux-tegra2-g++/qmake.conf @@ -10,9 +10,9 @@ include(../common/linux_device_pre.conf) -QMAKE_INCDIR += $$[QT_SYSROOT]/usr/include +QMAKE_INCDIR_POST += $$[QT_SYSROOT]/usr/include -QMAKE_LIBDIR += $$[QT_SYSROOT]/usr/lib \ +QMAKE_LIBDIR_POST += $$[QT_SYSROOT]/usr/lib \ $$[QT_SYSROOT]/lib/arm-linux-gnueabi \ $$[QT_SYSROOT]/usr/lib/arm-linux-gnueabi diff --git a/mkspecs/features/default_post.prf b/mkspecs/features/default_post.prf index d6caf870f72..0e672234498 100644 --- a/mkspecs/features/default_post.prf +++ b/mkspecs/features/default_post.prf @@ -139,6 +139,3 @@ utf8_source { } !precompile_header: SOURCES += $$NO_PCH_SOURCES - -QMAKE_INCDIR += $$QMAKE_INCDIR_POST -QMAKE_LIBDIR += $$QMAKE_LIBDIR_POST diff --git a/mkspecs/freebsd-clang/qmake.conf b/mkspecs/freebsd-clang/qmake.conf index 10bb4a37235..f59fbd3c7de 100644 --- a/mkspecs/freebsd-clang/qmake.conf +++ b/mkspecs/freebsd-clang/qmake.conf @@ -8,8 +8,8 @@ QMAKE_PLATFORM = freebsd include(../common/bsd/bsd.conf) # Addon software goes into /usr/local on FreeBSD, by default we will look there -QMAKE_INCDIR = /usr/local/include -QMAKE_LIBDIR = /usr/local/lib +QMAKE_INCDIR_POST = /usr/local/include +QMAKE_LIBDIR_POST = /usr/local/lib QMAKE_LFLAGS_NOUNDEF = -Wl,--no-undefined diff --git a/mkspecs/freebsd-g++/qmake.conf b/mkspecs/freebsd-g++/qmake.conf index 1f4448889eb..4df444480d5 100644 --- a/mkspecs/freebsd-g++/qmake.conf +++ b/mkspecs/freebsd-g++/qmake.conf @@ -8,8 +8,8 @@ QMAKE_PLATFORM = freebsd include(../common/bsd/bsd.conf) # Addon software goes into /usr/local on FreeBSD, by default we will look there -QMAKE_INCDIR = /usr/local/include -QMAKE_LIBDIR = /usr/local/lib +QMAKE_INCDIR_POST = /usr/local/include +QMAKE_LIBDIR_POST = /usr/local/lib include(../common/gcc-base-unix.conf) include(../common/g++-unix.conf) diff --git a/mkspecs/netbsd-g++/qmake.conf b/mkspecs/netbsd-g++/qmake.conf index a4b26837cea..c7e067a5c78 100644 --- a/mkspecs/netbsd-g++/qmake.conf +++ b/mkspecs/netbsd-g++/qmake.conf @@ -8,8 +8,8 @@ QMAKE_PLATFORM = netbsd include(../common/bsd/bsd.conf) # Addon software goes into /usr/pkg on NetBSD, by default we will look there -QMAKE_INCDIR = /usr/pkg/include -QMAKE_LIBDIR = /usr/pkg/lib +QMAKE_INCDIR_POST = /usr/pkg/include +QMAKE_LIBDIR_POST = /usr/pkg/lib # System provided X11 defaults to X11R7 path on NetBSD since 5.0 QMAKE_INCDIR_X11 = /usr/X11R7/include diff --git a/mkspecs/openbsd-g++/qmake.conf b/mkspecs/openbsd-g++/qmake.conf index 6124d31439f..4a142e476e7 100644 --- a/mkspecs/openbsd-g++/qmake.conf +++ b/mkspecs/openbsd-g++/qmake.conf @@ -8,8 +8,8 @@ QMAKE_PLATFORM = openbsd include(../common/bsd/bsd.conf) # Addon software goes into /usr/local on OpenBSD, by default we will look there -QMAKE_INCDIR = /usr/local/include -QMAKE_LIBDIR = /usr/local/lib +QMAKE_INCDIR_POST = /usr/local/include +QMAKE_LIBDIR_POST = /usr/local/lib # System provided X11 defaults to X11R6 path on OpenBSD QMAKE_INCDIR_X11 = /usr/X11R6/include diff --git a/qmake/generators/unix/unixmake.cpp b/qmake/generators/unix/unixmake.cpp index b86594d1911..2f1bbeea25e 100644 --- a/qmake/generators/unix/unixmake.cpp +++ b/qmake/generators/unix/unixmake.cpp @@ -94,6 +94,8 @@ UnixMakefileGenerator::init() !project->values("QMAKE_LIB_FLAG").isEmpty() && project->isActiveConfig("dll")) 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"); if(!project->isEmpty("QMAKE_INCDIR")) project->values("INCLUDEPATH") += project->values("QMAKE_INCDIR"); ProStringList ldadd; diff --git a/qmake/generators/win32/winmakefile.cpp b/qmake/generators/win32/winmakefile.cpp index 6f2f43c03c0..75bb5d236df 100644 --- a/qmake/generators/win32/winmakefile.cpp +++ b/qmake/generators/win32/winmakefile.cpp @@ -174,6 +174,9 @@ void Win32MakefileGenerator::processVars() else if (project->first("TEMPLATE").startsWith("vc")) project->values("MAKEFILE") = project->values("QMAKE_PROJECT_NAME"); + project->values("QMAKE_INCDIR") += project->values("QMAKE_INCDIR_POST"); + project->values("QMAKE_LIBDIR") += project->values("QMAKE_LIBDIR_POST"); + if (!project->values("QMAKE_INCDIR").isEmpty()) project->values("INCLUDEPATH") += project->values("QMAKE_INCDIR");