diff options
author | Joerg Bornemann <joerg.bornemann@digia.com> | 2014-03-11 15:56:52 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-03-20 08:35:24 +0100 |
commit | b73d6be6a0723d5f886f5a8faa9123534e998331 (patch) | |
tree | 786ad6dd3d53ccd21b1e8db3f1e49178879c0f2f /qmake/library | |
parent | 5fe0c9e9b02669c8690d78b5305e1291d0f807bf (diff) | |
download | qtbase-b73d6be6a0723d5f886f5a8faa9123534e998331.tar.gz |
qmake: add replacement function getenv
This is useful for querying environment variables which have
parentheses in their name. Such jewels exist on Windows.
The usual $$(VARNAME) syntax fails for those.
Change-Id: I1d2766cabdc7f637caa9ae6408967685e02f5029
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Diffstat (limited to 'qmake/library')
-rw-r--r-- | qmake/library/qmakebuiltins.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/qmake/library/qmakebuiltins.cpp b/qmake/library/qmakebuiltins.cpp index 96de34fd14..36f808197a 100644 --- a/qmake/library/qmakebuiltins.cpp +++ b/qmake/library/qmakebuiltins.cpp @@ -99,7 +99,7 @@ enum ExpandFunc { E_UPPER, E_LOWER, E_TITLE, E_FILES, E_PROMPT, E_RE_ESCAPE, E_VAL_ESCAPE, E_REPLACE, E_SORT_DEPENDS, E_RESOLVE_DEPENDS, E_ENUMERATE_VARS, E_SHADOWED, E_ABSOLUTE_PATH, E_RELATIVE_PATH, E_CLEAN_PATH, - E_SYSTEM_PATH, E_SHELL_PATH, E_SYSTEM_QUOTE, E_SHELL_QUOTE + E_SYSTEM_PATH, E_SHELL_PATH, E_SYSTEM_QUOTE, E_SHELL_QUOTE, E_GETENV }; enum TestFunc { @@ -156,6 +156,7 @@ void QMakeEvaluator::initFunctionStatics() { "shell_path", E_SHELL_PATH }, { "system_quote", E_SYSTEM_QUOTE }, { "shell_quote", E_SHELL_QUOTE }, + { "getenv", E_GETENV }, }; for (unsigned i = 0; i < sizeof(expandInits)/sizeof(expandInits[0]); ++i) statics.expands.insert(ProKey(expandInits[i].name), expandInits[i].func); @@ -1090,6 +1091,15 @@ ProStringList QMakeEvaluator::evaluateBuiltinExpand( ret << (rstr.isSharedWith(m_tmp1) ? args.at(0) : ProString(rstr).setSource(args.at(0))); } break; + case E_GETENV: + if (args.count() != 1) { + evalError(fL1S("getenv(arg) requires one argument.")); + } else { + const ProString &var = args.at(0); + const ProString &val = ProString(m_option->getEnv(var.toQString(m_tmp1))); + ret << val; + } + break; default: evalError(fL1S("Function '%1' is not implemented.").arg(func.toQString(m_tmp1))); break; |