aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--eval.cc2
-rw-r--r--main.cc4
-rw-r--r--value.cc2
-rw-r--r--value.h2
4 files changed, 8 insertions, 2 deletions
diff --git a/eval.cc b/eval.cc
index d0cbbef..3f03a9c 100644
--- a/eval.cc
+++ b/eval.cc
@@ -159,6 +159,8 @@ void Evaluator::DoInclude(const char* fname, bool should_exist) {
return;
}
+ Var* var_list = LookupVar("MAKEFILE_LIST");
+ var_list->AppendVar(this, NewLiteral(Intern(fname)));
for (AST* ast : mk->asts()) {
LOG("%s", ast->DebugString().c_str());
ast->Eval(this);
diff --git a/main.cc b/main.cc
index e77a240..c9e8de4 100644
--- a/main.cc
+++ b/main.cc
@@ -134,6 +134,10 @@ static int Run(const vector<StringPiece>& targets,
}
ev->set_is_bootstrap(false);
+ vars->Assign("MAKEFILE_LIST",
+ new SimpleVar(make_shared<string>(
+ StringPrintf(" %s", g_makefile)), "file"));
+
Makefile* mk = cache_mgr->ReadMakefile(g_makefile);
for (AST* ast : mk->asts()) {
LOG("%s", ast->DebugString().c_str());
diff --git a/value.cc b/value.cc
index 4527712..5f43a24 100644
--- a/value.cc
+++ b/value.cc
@@ -487,6 +487,6 @@ Value* NewExpr3(Value* v1, Value* v2, Value* v3) {
return e;
}
-Value* NewLiteral(const char* s) {
+Value* NewLiteral(StringPiece s) {
return new Literal(s);
}
diff --git a/value.h b/value.h
index eb8213a..02cf64f 100644
--- a/value.h
+++ b/value.h
@@ -48,6 +48,6 @@ string JoinValues(const vector<Value*>& vals, const char* sep);
Value* NewExpr3(Value* v1, Value* v2, Value* v3);
-Value* NewLiteral(const char* s);
+Value* NewLiteral(StringPiece s);
#endif // VALUE_H_