introduce QMAKE_RPATHLINKDIR (and QMAKE_LFLAGS_RPATHLINK)
authorOswald Buddenhagen <oswald.buddenhagen@digia.com>
Mon, 3 Dec 2012 11:34:37 +0000 (12:34 +0100)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Mon, 3 Dec 2012 15:26:37 +0000 (16:26 +0100)
complementary to QMAKE_RPATHDIR. this avoids that we need to sprinkle
linux/gcc specific code all over the place.

Task-number: QTBUG-27427
Change-Id: Iebafd1749d1a0d803704902473df8c743f074ddc
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
mkspecs/common/gcc-base-unix.conf
mkspecs/features/qt_functions.prf
qmake/generators/unix/unixmake.cpp

index dc8d7e4..dadaeca 100644 (file)
@@ -15,6 +15,7 @@ QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB
 QMAKE_LFLAGS_SONAME += -Wl,-soname,
 QMAKE_LFLAGS_THREAD +=
 QMAKE_LFLAGS_RPATH   = -Wl,-rpath,
+QMAKE_LFLAGS_RPATHLINK = -Wl,-rpath-link,
 
 # -Bsymbolic-functions (ld) support
 QMAKE_LFLAGS_BSYMBOLIC_FUNC = -Wl,-Bsymbolic-functions
index d73d402..ec5becb 100644 (file)
@@ -115,12 +115,12 @@ defineTest(qtAddModule) {
            PRE_TARGETDEPS *= $$MODULE_LIBS/$${QMAKE_PREFIX_STATICLIB}$${lib}.$${QMAKE_EXTENSION_STATICLIB}
 
        # Make sure we can link to uninstalled libraries
-       unix:!mac:!isEmpty(QT.$${1}.libs) { # Use unmodified path, so /usr/lib also works
+       !isEmpty(QT.$${1}.libs) { # Use unmodified path, so /usr/lib also works
             for(rpl, QT.$${1}.rpath_link): \
-                QMAKE_LFLAGS *= -Wl,-rpath-link,$$rpl
+                QMAKE_RPATHLINKDIR *= $$rpl
             !auto_use_privates:!isEqual(2, UsePrivate): \
                 for(rpl, QT.$${1}.rpath_link_private): \
-                    QMAKE_LFLAGS *= -Wl,-rpath-link,$$rpl
+                    QMAKE_RPATHLINKDIR *= $$rpl
        }
     }
     # Only link to this module if a libs directory is set, else this is just a module
@@ -139,6 +139,7 @@ defineTest(qtAddModule) {
     export(QMAKE_LFLAGS)
     export(QMAKE_LIBDIR)
     export(QMAKE_RPATHDIR)
+    export(QMAKE_RPATHLINKDIR)
     export(PRE_TARGETDEPS)
     return(true)
 }
index 82fd47f..8a1a29c 100644 (file)
@@ -170,6 +170,13 @@ UnixMakefileGenerator::init()
                 project->values("QMAKE_LFLAGS") += var("QMAKE_LFLAGS_RPATH") + escapeFilePath(QFileInfo(rpathdirs[i].toQString()).absoluteFilePath());
         }
     }
+    if (!project->isEmpty("QMAKE_RPATHLINKDIR")) {
+        const ProStringList &rpathdirs = project->values("QMAKE_RPATHLINKDIR");
+        for (int i = 0; i < rpathdirs.size(); ++i) {
+            if (!project->isEmpty("QMAKE_LFLAGS_RPATHLINK"))
+                project->values("QMAKE_LFLAGS") += var("QMAKE_LFLAGS_RPATHLINK") + escapeFilePath(QFileInfo(rpathdirs[i].toQString()).absoluteFilePath());
+        }
+    }
 
     if(project->isActiveConfig("GNUmake") && !project->isEmpty("QMAKE_CFLAGS_DEPS"))
         include_deps = true; //do not generate deps