Commit ddd749b1 authored by Oswald Buddenhagen's avatar Oswald Buddenhagen

introduce a new way to pass arbitrary arguments to the project file

this is done by recognizing the -- option and putting everything that
follows it into the QMAKE_EXTRA_ARGS variable.

the purpose of this is being able to pass "alien" arguments (for example
configure options) without having to marshal them into a qmake variable
assignment manually. this is expected to greatly enhance the convenience
when no wrapper script (i.e., configure itself) is used (which will be
the case outside qtbase).

Change-Id: I47735bdab2811d17d7d394fbf638ebd14332ea73
Reviewed-by: default avatarLars Knoll <lars.knoll@theqtcompany.com>
(cherry picked from qtbase/26d44fce3dfb9dbd3b5be2a031fff8c1bb903960)
Reviewed-by: Jake Petroules's avatarJake Petroules <jake.petroules@qt.io>
parent ca1f4a26
......@@ -133,6 +133,11 @@ QMakeGlobals::ArgumentReturn QMakeGlobals::addCommandLineArguments(
break;
default:
if (arg.startsWith(QLatin1Char('-'))) {
if (arg == QLatin1String("--")) {
state.extraargs = args.mid(*pos + 1);
*pos = args.size();
return ArgumentsOk;
}
if (arg == QLatin1String("-after"))
state.after = true;
else if (arg == QLatin1String("-config"))
......@@ -178,6 +183,12 @@ void QMakeGlobals::commitCommandLineArguments(QMakeCmdLineParserState &state)
{
if (!state.preconfigs.isEmpty())
state.precmds << (fL1S("CONFIG += ") + state.preconfigs.join(QLatin1Char(' ')));
if (!state.extraargs.isEmpty()) {
QString extra = fL1S("QMAKE_EXTRA_ARGS =");
foreach (const QString &ea, state.extraargs)
extra += QLatin1Char(' ') + QMakeEvaluator::quoteValue(ProString(ea));
state.precmds << extra;
}
precmds = state.precmds.join(QLatin1Char('\n'));
if (!state.postconfigs.isEmpty())
state.postcmds << (fL1S("CONFIG += ") + state.postconfigs.join(QLatin1Char(' ')));
......
......@@ -81,7 +81,7 @@ class QMAKE_EXPORT QMakeCmdLineParserState
public:
QMakeCmdLineParserState(const QString &_pwd) : pwd(_pwd), after(false) {}
QString pwd;
QStringList precmds, preconfigs, postcmds, postconfigs;
QStringList precmds, preconfigs, postcmds, postconfigs, extraargs;
bool after;
void flush() { after = false; }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment