From 1cdbe4752bef972db5471e811e9a781749cd0380 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Wed, 23 Oct 2013 14:02:59 +0200 Subject: qmake: Expose qmake arguments as QMAKE_ARGS Allows project files or mkspecs to call qmake recursively using system() with the right arguments, which we use to fix the ios default_post.prf. Change-Id: I90d69e2b156bb0f0af1279188b11f81c84c24fb8 Reviewed-by: Oswald Buddenhagen --- mkspecs/macx-ios-clang/features/default_post.prf | 6 +++++- qmake/generators/makefile.cpp | 2 +- qmake/library/qmakeevaluator.cpp | 2 ++ qmake/library/qmakeglobals.h | 1 + qmake/option.cpp | 3 +-- qmake/option.h | 1 - 6 files changed, 10 insertions(+), 5 deletions(-) diff --git a/mkspecs/macx-ios-clang/features/default_post.prf b/mkspecs/macx-ios-clang/features/default_post.prf index 0d38c058c9..5121de1d12 100644 --- a/mkspecs/macx-ios-clang/features/default_post.prf +++ b/mkspecs/macx-ios-clang/features/default_post.prf @@ -27,7 +27,11 @@ equals(TEMPLATE, app) { TARGET_XCODE_PROJECT_DIR = $${TARGET}.xcodeproj - system("cd $$system_quote($$OUT_PWD) && $${QMAKE_QMAKE} $$system_quote($$_PRO_FILE_) -spec macx-xcode") + args = + for(arg, QMAKE_ARGS): \ + args += $$system_quote($$arg) + + system("cd $$system_quote($$OUT_PWD) && $$QMAKE_QMAKE $$args $$system_quote($$_PRO_FILE_) -spec macx-xcode") # We use xcodebuild to do the actual build, but filter out the verbose # output that shows all environment variables for each build step. diff --git a/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp index 9ebaf60843..f567b6c694 100644 --- a/qmake/generators/makefile.cpp +++ b/qmake/generators/makefile.cpp @@ -2261,7 +2261,7 @@ QString MakefileGenerator::buildArgs() { QString ret; - foreach (const QString &arg, Option::qmake_args) + foreach (const QString &arg, Option::globals->qmake_args) ret += " " + escapeFilePath(arg); return ret; } diff --git a/qmake/library/qmakeevaluator.cpp b/qmake/library/qmakeevaluator.cpp index c4dca12900..703c13a61a 100644 --- a/qmake/library/qmakeevaluator.cpp +++ b/qmake/library/qmakeevaluator.cpp @@ -982,6 +982,8 @@ void QMakeEvaluator::loadDefaults() vars[ProKey("_DATE_")] << ProString(QDateTime::currentDateTime().toString()); if (!m_option->qmake_abslocation.isEmpty()) vars[ProKey("QMAKE_QMAKE")] << ProString(m_option->qmake_abslocation); + if (!m_option->qmake_args.isEmpty()) + vars[ProKey("QMAKE_ARGS")] = ProStringList(m_option->qmake_args); #if defined(Q_OS_WIN32) vars[ProKey("QMAKE_HOST.os")] << ProString("Windows"); diff --git a/qmake/library/qmakeglobals.h b/qmake/library/qmakeglobals.h index b305b495bc..e9ba95b5a3 100644 --- a/qmake/library/qmakeglobals.h +++ b/qmake/library/qmakeglobals.h @@ -117,6 +117,7 @@ public: QProcessEnvironment environment; #endif QString qmake_abslocation; + QStringList qmake_args; QString qmakespec, xqmakespec; QString user_template, user_template_prefix; diff --git a/qmake/option.cpp b/qmake/option.cpp index da52542a7d..86d55835f8 100644 --- a/qmake/option.cpp +++ b/qmake/option.cpp @@ -82,7 +82,6 @@ char Option::field_sep; Option::QMAKE_MODE Option::qmake_mode = Option::QMAKE_GENERATE_NOTHING; //all modes -QStringList Option::qmake_args; int Option::warn_level = WarnLogic | WarnDeprecated; int Option::debug_level = 0; QFile Option::output; @@ -436,7 +435,7 @@ Option::init(int argc, char **argv) return ret; //return ret == QMAKE_CMDLINE_SHOW_USAGE ? usage(argv[0]) : false; } - Option::qmake_args = args; + globals->qmake_args = args; } globals->commitCommandLineArguments(cmdstate); globals->debugLevel = Option::debug_level; diff --git a/qmake/option.h b/qmake/option.h index af8e3b7ab8..d0436fe844 100644 --- a/qmake/option.h +++ b/qmake/option.h @@ -178,7 +178,6 @@ struct Option static QMAKE_MODE qmake_mode; //all modes - static QStringList qmake_args; static QFile output; static QString output_dir; static int debug_level; -- cgit v1.2.3