summaryrefslogtreecommitdiffstats
path: root/qmake
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@nokia.com>2012-07-16 14:29:48 +0200
committerQt by Nokia <qt-info@nokia.com>2012-07-27 16:29:38 +0200
commit022f8ebd1387623c5d524c7dc71ae3237ff05d81 (patch)
tree157c99d9f3f4b4b40820522f3adca79cce8d9397 /qmake
parent10fba42d714ad97538bbd0be6bc0b7fcb19d4688 (diff)
merge QMAKE_LIBDIR into QMAKE_LIBS early
dealing with the directories separately doesn't buy us anything. it's easier to mix them into the libs, as that contains some paths, too, both in projects and in prl files. this brings the windows generators in line with the unix ones. Change-Id: I1f58f7edd8e21d28bfabf04384bac2e315aaf446 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
Diffstat (limited to 'qmake')
-rw-r--r--qmake/generators/win32/mingw_make.cpp26
-rw-r--r--qmake/generators/win32/mingw_make.h1
-rw-r--r--qmake/generators/win32/msvc_nmake.cpp10
-rw-r--r--qmake/generators/win32/msvc_nmake.h1
-rw-r--r--qmake/generators/win32/msvc_vcproj.cpp9
-rw-r--r--qmake/generators/win32/winmakefile.cpp51
-rw-r--r--qmake/generators/win32/winmakefile.h1
7 files changed, 25 insertions, 74 deletions
diff --git a/qmake/generators/win32/mingw_make.cpp b/qmake/generators/win32/mingw_make.cpp
index fd7f07aedd..cb83f25a80 100644
--- a/qmake/generators/win32/mingw_make.cpp
+++ b/qmake/generators/win32/mingw_make.cpp
@@ -74,13 +74,6 @@ QString MingwMakefileGenerator::getLibTarget()
bool MingwMakefileGenerator::findLibraries()
{
QList<QMakeLocalFileName> dirs;
- {
- const QStringList &libpaths = project->values("QMAKE_LIBDIR");
- for (QStringList::ConstIterator libpathit = libpaths.begin();
- libpathit != libpaths.end(); ++libpathit)
- dirs.append(QMakeLocalFileName((*libpathit)));
- }
-
const QString lflags[] = { "QMAKE_LIBS", "QMAKE_LIBS_PRIVATE", QString() };
for (int i = 0; !lflags[i].isNull(); i++) {
QStringList &l = project->values(lflags[i]);
@@ -259,6 +252,8 @@ void MingwMakefileGenerator::init()
project->values("TARGET_PRL").append(project->first("TARGET"));
+ project->values("QMAKE_L_FLAG") << "-L";
+
processVars();
if (!project->values("RES_FILE").isEmpty()) {
@@ -341,25 +336,12 @@ void MingwMakefileGenerator::writeLibsPart(QTextStream &t)
} else {
t << "LINK = " << var("QMAKE_LINK") << endl;
t << "LFLAGS = " << var("QMAKE_LFLAGS") << endl;
- t << "LIBS = ";
- if(!project->values("QMAKE_LIBDIR").isEmpty())
- writeLibDirPart(t);
- t << var("QMAKE_LIBS").replace(QRegExp("(\\slib|^lib)")," -l") << ' '
+ t << "LIBS = "
+ << var("QMAKE_LIBS").replace(QRegExp("(\\slib|^lib)")," -l") << ' '
<< var("QMAKE_LIBS_PRIVATE").replace(QRegExp("(\\slib|^lib)")," -l") << endl;
}
}
-void MingwMakefileGenerator::writeLibDirPart(QTextStream &t)
-{
- QStringList libDirs = project->values("QMAKE_LIBDIR");
- for (int i = 0; i < libDirs.size(); ++i) {
- libDirs[i].remove("\"");
- if (libDirs[i].endsWith("\\"))
- libDirs[i].chop(1);
- }
- t << valGlue(libDirs, "-L" + quote, quote + " -L" + quote, quote) << " ";
-}
-
void MingwMakefileGenerator::writeObjectsPart(QTextStream &t)
{
if (project->values("OBJECTS").count() < var("QMAKE_LINK_OBJECT_MAX").toInt()) {
diff --git a/qmake/generators/win32/mingw_make.h b/qmake/generators/win32/mingw_make.h
index 376eacd667..3d05c2809d 100644
--- a/qmake/generators/win32/mingw_make.h
+++ b/qmake/generators/win32/mingw_make.h
@@ -60,7 +60,6 @@ private:
void writeMingwParts(QTextStream &);
void writeIncPart(QTextStream &t);
void writeLibsPart(QTextStream &t);
- void writeLibDirPart(QTextStream &t);
void writeObjectsPart(QTextStream &t);
void writeBuildRulesPart(QTextStream &t);
void writeRcFilePart(QTextStream &t);
diff --git a/qmake/generators/win32/msvc_nmake.cpp b/qmake/generators/win32/msvc_nmake.cpp
index 69ead084ac..cf4fb96872 100644
--- a/qmake/generators/win32/msvc_nmake.cpp
+++ b/qmake/generators/win32/msvc_nmake.cpp
@@ -243,6 +243,8 @@ void NmakeMakefileGenerator::init()
return;
}
+ project->values("QMAKE_L_FLAG") << "/LIBPATH:";
+
processVars();
if (!project->values("RES_FILE").isEmpty()) {
@@ -294,14 +296,6 @@ void NmakeMakefileGenerator::init()
}
}
-void NmakeMakefileGenerator::writeLibDirPart(QTextStream &t)
-{
- QStringList libDirs = project->values("QMAKE_LIBDIR");
- for (int i = 0; i < libDirs.size(); ++i)
- libDirs[i].remove("\"");
- t << valGlue(libDirs,"/LIBPATH:\"","\" /LIBPATH:\"","\"") << " ";
-}
-
void NmakeMakefileGenerator::writeImplicitRulesPart(QTextStream &t)
{
t << ".SUFFIXES:";
diff --git a/qmake/generators/win32/msvc_nmake.h b/qmake/generators/win32/msvc_nmake.h
index d0e6ec7aaf..1e32b5637d 100644
--- a/qmake/generators/win32/msvc_nmake.h
+++ b/qmake/generators/win32/msvc_nmake.h
@@ -50,7 +50,6 @@ class NmakeMakefileGenerator : public Win32MakefileGenerator
{
bool init_flag;
void writeNmakeParts(QTextStream &);
- void writeLibDirPart(QTextStream &t);
bool writeMakefile(QTextStream &);
void writeImplicitRulesPart(QTextStream &t);
void writeBuildRulesPart(QTextStream &t);
diff --git a/qmake/generators/win32/msvc_vcproj.cpp b/qmake/generators/win32/msvc_vcproj.cpp
index 7820330da0..7291c42ed9 100644
--- a/qmake/generators/win32/msvc_vcproj.cpp
+++ b/qmake/generators/win32/msvc_vcproj.cpp
@@ -697,6 +697,8 @@ void VcprojGenerator::init()
if (project->values("QMAKESPEC").isEmpty())
project->values("QMAKESPEC").append(qgetenv("QMAKESPEC"));
+ project->values("QMAKE_L_FLAG") << "/LIBPATH:";
+
processVars();
if(!project->values("VERSION").isEmpty()) {
@@ -1008,13 +1010,6 @@ void VcprojGenerator::initLinkerTool()
VCConfiguration &conf = vcProject.Configuration;
conf.linker.parseOptions(project->values("QMAKE_LFLAGS"));
- foreach (const QString &libDir, project->values("QMAKE_LIBDIR")) {
- if (libDir.startsWith("/LIBPATH:"))
- conf.linker.AdditionalLibraryDirectories += libDir.mid(9);
- else
- conf.linker.AdditionalLibraryDirectories += libDir;
- }
-
if (!project->values("DEF_FILE").isEmpty())
conf.linker.ModuleDefinitionFile = project->first("DEF_FILE");
diff --git a/qmake/generators/win32/winmakefile.cpp b/qmake/generators/win32/winmakefile.cpp
index acd50c7f3f..17563043b6 100644
--- a/qmake/generators/win32/winmakefile.cpp
+++ b/qmake/generators/win32/winmakefile.cpp
@@ -107,12 +107,6 @@ bool
Win32MakefileGenerator::findLibraries()
{
QList<QMakeLocalFileName> dirs;
- {
- const QStringList &libpaths = project->values("QMAKE_LIBDIR");
- for (QStringList::ConstIterator libpathit = libpaths.begin();
- libpathit != libpaths.end(); ++libpathit)
- dirs.append(QMakeLocalFileName((*libpathit)));
- }
const QString lflags[] = { "QMAKE_LIBS", "QMAKE_LIBS_PRIVATE", QString() };
for (int i = 0; !lflags[i].isNull(); i++) {
QStringList &l = project->values(lflags[i]);
@@ -222,13 +216,9 @@ Win32MakefileGenerator::findLibraries()
void
Win32MakefileGenerator::processPrlFiles()
{
+ const QString libArg = project->first("QMAKE_L_FLAG");
QHash<QString, bool> processed;
QList<QMakeLocalFileName> libdirs;
- {
- const QStringList &libpaths = project->values("QMAKE_LIBDIR");
- for (QStringList::ConstIterator libpathit = libpaths.begin(); libpathit != libpaths.end(); ++libpathit)
- libdirs.append(QMakeLocalFileName((*libpathit)));
- }
for(bool ret = false; true; ret = false) {
//read in any prl files included..
QStringList l_out;
@@ -237,13 +227,11 @@ Win32MakefileGenerator::processPrlFiles()
QString opt = (*it).trimmed();
if((opt[0] == '\'' || opt[0] == '"') && opt[(int)opt.length()-1] == opt[0])
opt = opt.mid(1, opt.length()-2);
- if(opt.startsWith("/")) {
- if(opt.startsWith("/LIBPATH:")) {
- QMakeLocalFileName l(opt.mid(9));
- if(!libdirs.contains(l))
- libdirs.append(l);
- }
- } else if(!processed.contains(opt)) {
+ if (opt.startsWith(libArg)) {
+ QMakeLocalFileName l(opt.mid(libArg.length()));
+ if (!libdirs.contains(l))
+ libdirs.append(l);
+ } else if (!opt.startsWith("/") && !processed.contains(opt)) {
if(processPrlFile(opt)) {
processed.insert(opt, true);
ret = true;
@@ -336,13 +324,19 @@ void Win32MakefileGenerator::processVars()
if(!(*incDir_it).isEmpty())
(*incDir_it) = Option::fixPathToTargetOS((*incDir_it), false, false);
}
+
+ QString libArg = project->first("QMAKE_L_FLAG");
+ QStringList libs;
QStringList &libDir = project->values("QMAKE_LIBDIR");
for(QStringList::Iterator libDir_it = libDir.begin(); libDir_it != libDir.end(); ++libDir_it) {
- if(!(*libDir_it).isEmpty())
- (*libDir_it) = Option::fixPathToTargetOS((*libDir_it), false, false);
+ if (!(*libDir_it).isEmpty()) {
+ (*libDir_it).remove("\"");
+ if ((*libDir_it).endsWith("\\"))
+ (*libDir_it).chop(1);
+ libs << libArg + escapeFilePath(Option::fixPathToTargetOS((*libDir_it), false, false));
+ }
}
-
- project->values("QMAKE_LIBS") += escapeFilePaths(project->values("LIBS"));
+ project->values("QMAKE_LIBS") += libs + escapeFilePaths(project->values("LIBS"));
project->values("QMAKE_LIBS_PRIVATE") += escapeFilePaths(project->values("LIBS_PRIVATE"));
if (project->values("TEMPLATE").contains("app")) {
@@ -768,21 +762,10 @@ void Win32MakefileGenerator::writeLibsPart(QTextStream &t)
} else {
t << "LINK = " << var("QMAKE_LINK") << endl;
t << "LFLAGS = " << var("QMAKE_LFLAGS") << endl;
- t << "LIBS = ";
- if(!project->values("QMAKE_LIBDIR").isEmpty())
- writeLibDirPart(t);
- t << var("QMAKE_LIBS") << " " << var("QMAKE_LIBS_PRIVATE") << endl;
+ t << "LIBS = " << var("QMAKE_LIBS") << " " << var("QMAKE_LIBS_PRIVATE") << endl;
}
}
-void Win32MakefileGenerator::writeLibDirPart(QTextStream &t)
-{
- QStringList libDirs = project->values("QMAKE_LIBDIR");
- for (int i = 0; i < libDirs.size(); ++i)
- libDirs[i].remove("\"");
- t << valGlue(libDirs,"-L\"","\" -L\"","\"") << " ";
-}
-
void Win32MakefileGenerator::writeObjectsPart(QTextStream &t)
{
t << "OBJECTS = " << valList(escapeDependencyPaths(project->values("OBJECTS"))) << endl;
diff --git a/qmake/generators/win32/winmakefile.h b/qmake/generators/win32/winmakefile.h
index 12633285ff..26a7208dee 100644
--- a/qmake/generators/win32/winmakefile.h
+++ b/qmake/generators/win32/winmakefile.h
@@ -56,7 +56,6 @@ protected:
virtual void writeCleanParts(QTextStream &t);
virtual void writeStandardParts(QTextStream &t);
virtual void writeIncPart(QTextStream &t);
- virtual void writeLibDirPart(QTextStream &t);
virtual void writeLibsPart(QTextStream &t);
virtual void writeObjectsPart(QTextStream &t);
virtual void writeImplicitRulesPart(QTextStream &t);