aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--share/qbs/modules/cpp/gcc.js18
-rw-r--r--src/lib/corelib/language/jsimports.h2
-rw-r--r--src/lib/corelib/language/resolvedfilecontext.cpp4
-rw-r--r--src/lib/qtprofilesetup/qtmoduleinfo.cpp7
4 files changed, 22 insertions, 9 deletions
diff --git a/share/qbs/modules/cpp/gcc.js b/share/qbs/modules/cpp/gcc.js
index 0ac6f8387..e800cd455 100644
--- a/share/qbs/modules/cpp/gcc.js
+++ b/share/qbs/modules/cpp/gcc.js
@@ -16,12 +16,9 @@ function linkerFlags(product, inputs) {
args.push('-Wl,-rpath,' + rpaths.join(",-rpath,"));
// Add filenames of internal library dependencies to the lists
- for (i in inputs.staticlibrary)
- staticLibraries.unshift(inputs.staticlibrary[i].filePath);
- for (i in inputs.dynamiclibrary_copy)
- dynamicLibraries.unshift(inputs.dynamiclibrary_copy[i].filePath);
- for (i in inputs.frameworkbundle)
- frameworks.unshift(inputs.frameworkbundle[i].filePath);
+ staticLibraries = concatLibsFromArtifacts(staticLibraries, inputs.staticlibrary);
+ dynamicLibraries = concatLibsFromArtifacts(dynamicLibraries, inputs.dynamiclibrary_copy);
+ frameworks = concatLibsFromArtifacts(frameworks, inputs.frameworkbundle);
// Flags for library search paths
if (libraryPaths)
@@ -548,3 +545,12 @@ function prepareLinker(project, product, inputs, outputs, input, output) {
return commands;
}
+
+function concatLibsFromArtifacts(libs, artifacts)
+{
+ if (!artifacts)
+ return libs;
+ var deps = artifacts.map(function (a) { return a.filePath; });
+ deps.reverse();
+ return concatLibs(deps, libs);
+}
diff --git a/src/lib/corelib/language/jsimports.h b/src/lib/corelib/language/jsimports.h
index 089dcabc3..5a0d13f66 100644
--- a/src/lib/corelib/language/jsimports.h
+++ b/src/lib/corelib/language/jsimports.h
@@ -32,6 +32,7 @@
#define QBS_JSIMPORTS_H
#include <tools/codelocation.h>
+#include <QHash>
#include <QSet>
#include <QStringList>
@@ -52,6 +53,7 @@ public:
QStringList filePaths;
CodeLocation location;
};
+inline uint qHash(const JsImport &jsi) { return qHash(jsi.location.toString()); }
typedef QList<JsImport> JsImports;
diff --git a/src/lib/corelib/language/resolvedfilecontext.cpp b/src/lib/corelib/language/resolvedfilecontext.cpp
index 40c2e63d5..703497fc9 100644
--- a/src/lib/corelib/language/resolvedfilecontext.cpp
+++ b/src/lib/corelib/language/resolvedfilecontext.cpp
@@ -73,8 +73,8 @@ void ResolvedFileContext::store(PersistentPool &pool) const
bool operator==(const ResolvedFileContext &a, const ResolvedFileContext &b)
{
return a.filePath() == b.filePath()
- && a.jsExtensions() == b.jsExtensions()
- && a.jsImports() == b.jsImports();
+ && a.jsExtensions().toSet() == b.jsExtensions().toSet()
+ && a.jsImports().toSet() == b.jsImports().toSet();
}
} // namespace Internal
diff --git a/src/lib/qtprofilesetup/qtmoduleinfo.cpp b/src/lib/qtprofilesetup/qtmoduleinfo.cpp
index 4ae256f8d..39aef9e5f 100644
--- a/src/lib/qtprofilesetup/qtmoduleinfo.cpp
+++ b/src/lib/qtprofilesetup/qtmoduleinfo.cpp
@@ -239,8 +239,13 @@ void QtModuleInfo::setupLibraries(const QtEnvironment &qtEnv, bool debugBuild,
const bool isMingw = qtEnv.mkspecName.startsWith(QLatin1String("win"))
&& qtEnv.mkspecName.contains(QLatin1String("g++"));
libFilePath = libDir;
- if (isMingw)
+
+ // QMAKE_PRL_TARGET has a "lib" prefix, except for mingw.
+ // Of course, the exception has an exception too: For static libs, mingw *does*
+ // have the "lib" prefix. TODO: Shoot the people responsible for this.
+ if (isMingw && !isStaticLibrary)
libFilePath += QLatin1String("lib");
+
libFilePath += QString::fromLatin1(simplifiedLine.mid(equalsOffset + 1).trimmed());
if (isNonStaticQt4OnWindows)
libFilePath += QString::number(4); // This is *not* part of QMAKE_PRL_TARGET...