Qmake: Fix Makefile tests

Task-number: QTCREATORBUG-16981
Change-Id: Ia8cc0f84e3dab2d5eeeb634bb76403b5a84ef563
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Tobias Hunger
2016-10-07 15:11:10 +02:00
parent fd1c290a48
commit 219b2ce490
2 changed files with 19 additions and 15 deletions

View File

@@ -66,7 +66,9 @@ static QString trimLine(const QString &line)
return line.mid(firstSpace).trimmed(); return line.mid(firstSpace).trimmed();
} }
void MakeFileParse::parseArgs(const QString &args, QList<QMakeAssignment> *assignments, QList<QMakeAssignment> *afterAssignments) void MakeFileParse::parseArgs(const QString &args, const QString &project,
QList<QMakeAssignment> *assignments,
QList<QMakeAssignment> *afterAssignments)
{ {
QRegExp regExp(QLatin1String("([^\\s\\+-]*)\\s*(\\+=|=|-=|~=)(.*)")); QRegExp regExp(QLatin1String("([^\\s\\+-]*)\\s*(\\+=|=|-=|~=)(.*)"));
bool after = false; bool after = false;
@@ -78,6 +80,8 @@ void MakeFileParse::parseArgs(const QString &args, QList<QMakeAssignment> *assig
// Ignoring // Ignoring
ignoreNext = false; ignoreNext = false;
ait.deleteArg(); ait.deleteArg();
} else if (ait.value() == project) {
ait.deleteArg();
} else if (ait.value() == QLatin1String("-after")) { } else if (ait.value() == QLatin1String("-after")) {
after = true; after = true;
ait.deleteArg(); ait.deleteArg();
@@ -110,7 +114,6 @@ void MakeFileParse::parseArgs(const QString &args, QList<QMakeAssignment> *assig
ait.deleteArg(); ait.deleteArg();
} }
} }
ait.deleteArg(); // The .pro file is always the last arg
} }
void dumpQMakeAssignments(const QList<QMakeAssignment> &list) void dumpQMakeAssignments(const QList<QMakeAssignment> &list)
@@ -279,29 +282,29 @@ MakeFileParse::MakeFileParse(const QString &makefile)
m_qmakePath = findQMakeBinaryFromMakefile(makefile); m_qmakePath = findQMakeBinaryFromMakefile(makefile);
qCDebug(logging()) << " qmake:" << m_qmakePath; qCDebug(logging()) << " qmake:" << m_qmakePath;
QString line = findQMakeLine(makefile, QLatin1String("# Project:")).trimmed(); QString project = findQMakeLine(makefile, QLatin1String("# Project:")).trimmed();
if (line.isEmpty()) { if (project.isEmpty()) {
m_state = CouldNotParse; m_state = CouldNotParse;
qCDebug(logging()) << "**No Project line"; qCDebug(logging()) << "**No Project line";
return; return;
} }
line.remove(0, line.indexOf(QLatin1Char(':')) + 1); project.remove(0, project.indexOf(QLatin1Char(':')) + 1);
line = line.trimmed(); project = project.trimmed();
// Src Pro file // Src Pro file
m_srcProFile = QDir::cleanPath(QFileInfo(makefile).absoluteDir().filePath(line)); m_srcProFile = QDir::cleanPath(QFileInfo(makefile).absoluteDir().filePath(project));
qCDebug(logging()) << " source .pro file:" << m_srcProFile; qCDebug(logging()) << " source .pro file:" << m_srcProFile;
line = findQMakeLine(makefile, QLatin1String("# Command:")); QString command = findQMakeLine(makefile, QLatin1String("# Command:")).trimmed();
if (line.trimmed().isEmpty()) { if (command.isEmpty()) {
m_state = CouldNotParse; m_state = CouldNotParse;
qCDebug(logging()) << "**No Command line found"; qCDebug(logging()) << "**No Command line found";
return; return;
} }
line = trimLine(line); command = trimLine(command);
parseCommandLine(line); parseCommandLine(command, project);
m_state = Okay; m_state = Okay;
} }
@@ -352,13 +355,13 @@ const QLoggingCategory &MakeFileParse::logging()
return category; return category;
} }
void MakeFileParse::parseCommandLine(const QString &command) void MakeFileParse::parseCommandLine(const QString &command, const QString &project)
{ {
QList<QMakeAssignment> assignments; QList<QMakeAssignment> assignments;
QList<QMakeAssignment> afterAssignments; QList<QMakeAssignment> afterAssignments;
// Split up args into assignments and other arguments, writes m_unparsedArguments // Split up args into assignments and other arguments, writes m_unparsedArguments
parseArgs(command, &assignments, &afterAssignments); parseArgs(command, project, &assignments, &afterAssignments);
qCDebug(logging()) << " Initial assignments:"; qCDebug(logging()) << " Initial assignments:";
dumpQMakeAssignments(assignments); dumpQMakeAssignments(assignments);

View File

@@ -62,10 +62,11 @@ public:
static const QLoggingCategory &logging(); static const QLoggingCategory &logging();
void parseCommandLine(const QString &command); void parseCommandLine(const QString &command, const QString &project);
private: private:
void parseArgs(const QString &args, QList<QMakeAssignment> *assignments, QList<QMakeAssignment> *afterAssignments); void parseArgs(const QString &args, const QString &project,
QList<QMakeAssignment> *assignments, QList<QMakeAssignment> *afterAssignments);
void parseAssignments(QList<QMakeAssignment> *assignments); void parseAssignments(QList<QMakeAssignment> *assignments);
class QmakeBuildConfig class QmakeBuildConfig