diff options
-rw-r--r-- | share/qbs/modules/cpp/gcc.js | 18 | ||||
-rw-r--r-- | src/lib/corelib/language/jsimports.h | 2 | ||||
-rw-r--r-- | src/lib/corelib/language/resolvedfilecontext.cpp | 4 | ||||
-rw-r--r-- | src/lib/qtprofilesetup/qtmoduleinfo.cpp | 7 |
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... |