aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-07-28 14:52:37 +0900
committerShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-07-28 14:54:09 +0900
commit7409aee3b69a7de63af7a4c3dd7ea87d84fed0f1 (patch)
treefc4c3bc1fac831d46c4586f2faa12131420f3a46
parentf90f73c2f110e06789acf55ab260ee001770eed3 (diff)
downloadandroid_build_kati-7409aee3b69a7de63af7a4c3dd7ea87d84fed0f1.tar.gz
android_build_kati-7409aee3b69a7de63af7a4c3dd7ea87d84fed0f1.tar.bz2
android_build_kati-7409aee3b69a7de63af7a4c3dd7ea87d84fed0f1.zip
[C++] Run $(wildcard) at generation time, not ninja time
Also add a test case to wildcard_cache.mk
-rw-r--r--func.cc9
-rw-r--r--testcase/wildcard.mk2
-rw-r--r--testcase/wildcard_cache.mk6
-rw-r--r--testcase/wildcard_multi.mk2
4 files changed, 8 insertions, 11 deletions
diff --git a/func.cc b/func.cc
index b174a72..e0f9e52 100644
--- a/func.cc
+++ b/func.cc
@@ -253,13 +253,8 @@ void JoinFunc(const vector<Value*>& args, Evaluator* ev, string* s) {
void WildcardFunc(const vector<Value*>& args, Evaluator* ev, string* s) {
COLLECT_STATS("func wildcard time");
shared_ptr<string> pat = args[0]->Eval(ev);
- if (ev->avoid_io()) {
- *s += "$(/bin/ls -d ";
- *s += *pat;
- *s += " 2> /dev/null)";
- return;
- }
-
+ // Note GNU make does not delay the execution of $(wildcard) so we
+ // do not need to check avoid_io here.
WordWriter ww(s);
vector<string>* files;
for (StringPiece tok : WordScanner(*pat)) {
diff --git a/testcase/wildcard.mk b/testcase/wildcard.mk
index b739f9c..884605e 100644
--- a/testcase/wildcard.mk
+++ b/testcase/wildcard.mk
@@ -1,5 +1,3 @@
-# TODO(ninja): Fix
-
MAKEVER:=$(shell make --version | ruby -n0e 'puts $$_[/Make (\d)/,1]')
files = $(wildcard M*)
diff --git a/testcase/wildcard_cache.mk b/testcase/wildcard_cache.mk
index e8fb12d..1c9174a 100644
--- a/testcase/wildcard_cache.mk
+++ b/testcase/wildcard_cache.mk
@@ -12,3 +12,9 @@ foo,bar:
echo $(files)
touch foo,bar
echo $(files)
+
+$(shell mkdir dir)
+$(info $(wildcard dir/not_exist))
+$(shell touch dir/file)
+# This should show nothing.
+$(info $(wildcard dir/file))
diff --git a/testcase/wildcard_multi.mk b/testcase/wildcard_multi.mk
index 1db9377..9054ca3 100644
--- a/testcase/wildcard_multi.mk
+++ b/testcase/wildcard_multi.mk
@@ -1,5 +1,3 @@
-# TODO(ninja): Fix
-
files = $(wildcard P* M*)
test1: