diff options
-rw-r--r-- | qmake/generators/makefile.cpp | 52 | ||||
-rw-r--r-- | qmake/generators/makefile.h | 2 | ||||
-rw-r--r-- | qmake/option.cpp | 20 | ||||
-rw-r--r-- | qmake/option.h | 3 |
4 files changed, 22 insertions, 55 deletions
diff --git a/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp index 1bdf10c131..d109ae053b 100644 --- a/qmake/generators/makefile.cpp +++ b/qmake/generators/makefile.cpp @@ -2147,50 +2147,12 @@ QString MakefileGenerator::fixifySpecdir(const QString &spec, const QString &out return spec; } -QString MakefileGenerator::buildArgs(const QString &outdir) +QString MakefileGenerator::buildArgs() { QString ret; - //special variables - if(!project->isEmpty("QMAKE_ABSOLUTE_SOURCE_PATH")) - ret += " QMAKE_ABSOLUTE_SOURCE_PATH=" + escapeFilePath(project->first("QMAKE_ABSOLUTE_SOURCE_PATH")); - - //warnings - else if(Option::warn_level == WarnNone) - ret += " -Wnone"; - else if(Option::warn_level == WarnAll) - ret += " -Wall"; - else if(Option::warn_level & WarnParser) - ret += " -Wparser"; - //other options - if(!Option::user_template.isEmpty()) - ret += " -t " + Option::user_template; - if(!Option::user_template_prefix.isEmpty()) - ret += " -tp " + Option::user_template_prefix; - if(!Option::mkfile::do_cache) - ret += " -nocache"; - if(!Option::mkfile::do_deps) - ret += " -nodepend"; - if(!Option::mkfile::do_dep_heuristics) - ret += " -nodependheuristics"; - if(!Option::mkfile::qmakespec_commandline.isEmpty()) - ret += " -spec " + fixifySpecdir(Option::mkfile::qmakespec, outdir); - if (!Option::mkfile::xqmakespec_commandline.isEmpty()) - ret += " -xspec " + fixifySpecdir(Option::mkfile::xqmakespec, outdir); - - //arguments - for(QStringList::Iterator it = Option::before_user_vars.begin(); - it != Option::before_user_vars.end(); ++it) { - if((*it).left(qstrlen("QMAKE_ABSOLUTE_SOURCE_PATH")) != "QMAKE_ABSOLUTE_SOURCE_PATH") - ret += " " + escapeFilePath((*it)); - } - if(Option::after_user_vars.count()) { - ret += " -after "; - for(QStringList::Iterator it = Option::after_user_vars.begin(); - it != Option::after_user_vars.end(); ++it) { - if((*it).left(qstrlen("QMAKE_ABSOLUTE_SOURCE_PATH")) != "QMAKE_ABSOLUTE_SOURCE_PATH") - ret += " " + escapeFilePath((*it)); - } - } + + foreach (const QString &arg, Option::qmake_args) + ret += " " + escapeFilePath(arg); return ret; } @@ -2201,7 +2163,7 @@ QString MakefileGenerator::build_args(const QString &outdir) QString ret = "$(QMAKE)"; // general options and arguments - ret += buildArgs(outdir); + ret += buildArgs(); //output QString ofile = Option::fixPathToTargetOS(fileFixify(Option::output.fileName())); @@ -2358,7 +2320,7 @@ MakefileGenerator::writeSubTargetCall(QTextStream &t, if (!in_directory.isEmpty()) t << "\n\t" << mkdir_p_asstring(out_directory); pfx = "( " + chkfile + " " + out + " " + chkglue - + "$(QMAKE) " + in + buildArgs(in_directory) + " -o " + out + + "$(QMAKE) " + in + buildArgs() + " -o " + out + " ) && "; } writeSubMakeCall(t, out_directory_cdin + pfx, makefilein); @@ -2447,7 +2409,7 @@ MakefileGenerator::writeSubTargets(QTextStream &t, QList<MakefileGenerator::SubT t << mkdir_p_asstring(out_directory) << out_directory_cdin; } - t << "$(QMAKE) " << in << buildArgs(in_directory) << " -o " << out; + t << "$(QMAKE) " << in << buildArgs() << " -o " << out; if (!dont_recurse) writeSubMakeCall(t, out_directory_cdin, makefilein + " qmake_all"); else diff --git a/qmake/generators/makefile.h b/qmake/generators/makefile.h index 10b54224a6..47d04b0a12 100644 --- a/qmake/generators/makefile.h +++ b/qmake/generators/makefile.h @@ -194,7 +194,7 @@ protected: QString specdir(); //subclasses can use these to query information about how the generator was "run" - QString buildArgs(const QString &outdir=QString()); + QString buildArgs(); QString fixifySpecdir(const QString &spec, const QString &outdir); virtual QStringList &findDependencies(const QString &file); diff --git a/qmake/option.cpp b/qmake/option.cpp index db212e6daf..24c3fe53a8 100644 --- a/qmake/option.cpp +++ b/qmake/option.cpp @@ -79,6 +79,7 @@ Option::QMAKE_MODE Option::qmake_mode = Option::QMAKE_GENERATE_NOTHING; //all modes QString Option::qmake_abslocation; +QStringList Option::qmake_args; int Option::warn_level = WarnLogic | WarnDeprecated; int Option::debug_level = 0; QFile Option::output; @@ -110,8 +111,6 @@ QString Option::mkfile::source_root; QString Option::mkfile::build_root; QString Option::mkfile::cachefile; QStringList Option::mkfile::project_files; -QString Option::mkfile::qmakespec_commandline; -QString Option::mkfile::xqmakespec_commandline; static Option::QMAKE_MODE default_mode(QString progname) { @@ -223,7 +222,9 @@ Option::parseCommandLine(QStringList &args) if (arg.size() > 1 && arg.startsWith('-')) { /* options */ QString opt = arg.mid(1); if(opt == "o" || opt == "output") { - Option::output.setFileName(args.at(++x)); + Option::output.setFileName(args.at(x + 1)); + args.erase(args.begin() + x, args.begin() + x + 2); + continue; } else if(opt == "after") { before = false; } else if(opt == "t" || opt == "template") { @@ -260,8 +261,12 @@ Option::parseCommandLine(QStringList &args) Option::warn_level = WarnNone; } else if(opt == "r" || opt == "recursive") { Option::recursive = true; + args.removeAt(x); + continue; } else if(opt == "nr" || opt == "norecursive") { Option::recursive = false; + args.removeAt(x); + continue; } else if(opt == "config") { user_configs += args.at(++x); } else { @@ -282,11 +287,9 @@ Option::parseCommandLine(QStringList &args) } else if(opt == "cache") { Option::mkfile::cachefile = args.at(++x); } else if(opt == "platform" || opt == "spec") { - Option::mkfile::qmakespec = cleanSpec(args.at(++x)); - Option::mkfile::qmakespec_commandline = args.at(x); + Option::mkfile::qmakespec = args[x] = cleanSpec(args.at(++x)); } else if (opt == "xplatform" || opt == "xspec") { - Option::mkfile::xqmakespec = cleanSpec(args.at(++x)); - Option::mkfile::xqmakespec_commandline = args.at(x); + Option::mkfile::xqmakespec = args[x] = cleanSpec(args.at(x)); } else { fprintf(stderr, "***Unknown option -%s\n", opt.toLatin1().constData()); return Option::QMAKE_CMDLINE_SHOW_USAGE | Option::QMAKE_CMDLINE_ERROR; @@ -333,6 +336,8 @@ Option::parseCommandLine(QStringList &args) if(!handled) { return Option::QMAKE_CMDLINE_SHOW_USAGE | Option::QMAKE_CMDLINE_ERROR; } + args.removeAt(x); + continue; } } x++; @@ -474,6 +479,7 @@ Option::init(int argc, char **argv) return ret; //return ret == QMAKE_CMDLINE_SHOW_USAGE ? usage(argv[0]) : false; } + Option::qmake_args = args; } //last chance for defaults diff --git a/qmake/option.h b/qmake/option.h index 0b3fe2dd8f..cab8426db0 100644 --- a/qmake/option.h +++ b/qmake/option.h @@ -161,6 +161,7 @@ struct Option //all modes static QString qmake_abslocation; + static QStringList qmake_args; static QFile output; static QString output_dir; static int debug_level; @@ -195,8 +196,6 @@ struct Option static QString cachefile; static int cachefile_depth; static QStringList project_files; - static QString qmakespec_commandline; - static QString xqmakespec_commandline; }; private: |