From 022f8ebd1387623c5d524c7dc71ae3237ff05d81 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Mon, 16 Jul 2012 14:29:48 +0200 Subject: 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 Reviewed-by: Joerg Bornemann --- qmake/generators/win32/mingw_make.cpp | 26 +++-------------- qmake/generators/win32/mingw_make.h | 1 - qmake/generators/win32/msvc_nmake.cpp | 10 ++----- qmake/generators/win32/msvc_nmake.h | 1 - qmake/generators/win32/msvc_vcproj.cpp | 9 ++---- qmake/generators/win32/winmakefile.cpp | 51 ++++++++++++---------------------- qmake/generators/win32/winmakefile.h | 1 - 7 files changed, 25 insertions(+), 74 deletions(-) (limited to 'qmake') 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 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 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 processed; QList 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); -- cgit v1.2.3