summaryrefslogtreecommitdiffstats
path: root/qmake
diff options
context:
space:
mode:
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);