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>bb10
parent
10fba42d71
commit
022f8ebd13
|
|
@ -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()) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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:";
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue