aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2015-10-28 13:28:11 -0700
committerColin Cross <ccross@android.com>2015-10-28 13:31:40 -0700
commit42470e915dadea5cb6245704f358874a4ac867ec (patch)
tree7da95f960f639344735b5f5764ae741ca7633e65
parent506113d2671e8f3dd5a46b63b7996accec6acb35 (diff)
downloadbuild-42470e915dadea5cb6245704f358874a4ac867ec.tar.gz
Remove use of .INTERMEDIATE
make 3.81 has a bug where combining an up-to-date .INTERMEDIATE rule with -j causes an infinite loop (http://savannah.gnu.org/bugs/?15919). .INTERMEDIATE was only necessary to support multiple outputs while only running a command once, remove .INTERMEDIATE by replacing $(KATI_OUTPUTS) dependencies with $(KATI_BUILD_NINJA). We can assume that $(KATI_NINJA_SH) will be updated at the same time as $(KATI_BUILD_NINJA), and not explicitly depend on it. Also remove generateonly and fastincremental, which are no longer necessary and were overcomplicating ninja.mk. kati now always runs due to FORCE, and ninja is run by a phony rule that depends on $(KATI_BUILD_NINJA). Bug: 25344116 Change-Id: I99d2713b1532ea11d83da9a11b1be26cfe13a5d2
-rw-r--r--core/ninja.mk24
1 files changed, 5 insertions, 19 deletions
diff --git a/core/ninja.mk b/core/ninja.mk
index 81298e52bc..def5823ed4 100644
--- a/core/ninja.mk
+++ b/core/ninja.mk
@@ -2,7 +2,7 @@ KATI ?= $(HOST_OUT_EXECUTABLES)/ckati
MAKEPARALLEL ?= $(HOST_OUT_EXECUTABLES)/makeparallel
KATI_OUTPUT_PATTERNS := $(OUT_DIR)/build%.ninja $(OUT_DIR)/ninja%.sh
-NINJA_GOALS := fastincremental generateonly droid showcommands
+NINJA_GOALS := droid showcommands
# A list of goals which affect parsing of make.
PARSE_TIME_MAKE_GOALS := \
$(PARSE_TIME_MAKE_GOALS) \
@@ -91,8 +91,6 @@ $(shell mkdir -p $(dir $(my_ninja_suffix_file)) && \
echo $(my_checksum_suffix) > $(my_ninja_suffix_file))
endif
-KATI_OUTPUTS := $(KATI_BUILD_NINJA) $(KATI_NINJA_SH)
-
ifeq (,$(NINJA_STATUS))
NINJA_STATUS := [%p %s/%t]$(space)
endif
@@ -114,27 +112,15 @@ else
NINJA_MAKEPARALLEL := $(MAKEPARALLEL) --ninja
endif
-ifeq (,$(filter generateonly,$(ORIGINAL_MAKECMDGOALS)))
-fastincremental droid $(ANDROID_TARGETS) $(EXTRA_TARGETS): ninja.intermediate
+droid $(ANDROID_TARGETS) $(EXTRA_TARGETS): ninja_wrapper
@#empty
-.INTERMEDIATE: ninja.intermediate
-ninja.intermediate: $(KATI_OUTPUTS) $(MAKEPARALLEL)
+.PHONY: ninja_wrapper
+ninja_wrapper: $(KATI_BUILD_NINJA) $(MAKEPARALLEL)
@echo Starting build with ninja
+$(hide) PATH=prebuilts/ninja/$(HOST_PREBUILT_TAG)/:$$PATH NINJA_STATUS="$(NINJA_STATUS)" $(NINJA_MAKEPARALLEL) $(KATI_NINJA_SH) $(filter-out dist,$(ANDROID_TARGETS)) -C $(TOP) $(NINJA_ARGS)
-else
-generateonly droid $(ANDROID_TARGETS) $(EXTRA_TARGETS): $(KATI_OUTPUTS)
- @#empty
-endif
-
-ifeq (,$(filter fastincremental,$(ORIGINAL_MAKECMDGOALS)))
-KATI_FORCE := FORCE
-endif
-
-$(KATI_OUTPUTS): kati.intermediate $(KATI_FORCE)
-.INTERMEDIATE: kati.intermediate
-kati.intermediate: $(KATI) $(MAKEPARALLEL)
+$(KATI_BUILD_NINJA): $(KATI) $(MAKEPARALLEL) FORCE
@echo Running kati to generate build$(KATI_NINJA_SUFFIX).ninja...
+$(hide) $(KATI_MAKEPARALLEL) $(KATI) --ninja --ninja_dir=$(OUT_DIR) --ninja_suffix=$(KATI_NINJA_SUFFIX) --regen --ignore_dirty=$(OUT_DIR)/% --ignore_optional_include=$(OUT_DIR)/%.P --detect_android_echo --use_find_emulator -f build/core/main.mk $(KATI_TARGETS) --gen_all_targets BUILDING_WITH_NINJA=true