aboutsummaryrefslogtreecommitdiffstats
path: root/main.cc
diff options
context:
space:
mode:
authorShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-06-26 06:47:10 +0900
committerShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-06-26 16:42:23 +0900
commit45a0c76779c3ea40bce4af89c039f8d853cd2d43 (patch)
tree31f68202592db579ece529c2e93cd30f89ab8c51 /main.cc
parent0ea9e9163eb86269af2ddae2649780cb491cc7ed (diff)
downloadandroid_build_kati-45a0c76779c3ea40bce4af89c039f8d853cd2d43.tar.gz
android_build_kati-45a0c76779c3ea40bce4af89c039f8d853cd2d43.tar.bz2
android_build_kati-45a0c76779c3ea40bce4af89c039f8d853cd2d43.zip
[C++] Implement export and unexport
Diffstat (limited to 'main.cc')
-rw-r--r--main.cc13
1 files changed, 13 insertions, 0 deletions
diff --git a/main.cc b/main.cc
index 4028b2e..a8a6f11 100644
--- a/main.cc
+++ b/main.cc
@@ -163,6 +163,19 @@ static int Run(const vector<StringPiece>& targets,
vector<DepNode*> nodes;
MakeDep(ev, ev->rules(), ev->rule_vars(), targets, &nodes);
+ for (const auto& p : ev->exports()) {
+ const string& name = p.first.as_string();
+ if (p.second) {
+ Var* v = ev->LookupVar(name);
+ shared_ptr<string> value = v->Eval(ev);
+ LOG("setenv(%s, %s)", name.c_str(), value->c_str());
+ setenv(name.c_str(), value->c_str(), 1);
+ } else {
+ LOG("unsetenv(%s)", name.c_str());
+ unsetenv(name.c_str());
+ }
+ }
+
Exec(nodes, ev);
for (AST* ast : bootstrap_asts)