diff options
author | Colin Cross <ccross@android.com> | 2015-10-28 13:28:11 -0700 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2015-10-28 13:31:40 -0700 |
commit | 42470e915dadea5cb6245704f358874a4ac867ec (patch) | |
tree | 7da95f960f639344735b5f5764ae741ca7633e65 | |
parent | 506113d2671e8f3dd5a46b63b7996accec6acb35 (diff) | |
download | build-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.mk | 24 |
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 |