From 4a4a0bc38f01f67445354543cfae4dafb3e84028 Mon Sep 17 00:00:00 2001 From: Ying Wang Date: Wed, 28 Oct 2015 12:34:03 -0700 Subject: [PATCH] Sort out ANDROID_GOALS, KATI_GOALS and NINJA_GOALS. ANDROID_GOALS: any Android goals that need to be built. KATI_GOALS: goals that we need to pass to Kati. NINJA_GOALS: goals we need to pass to Ninja. For modifier Android goals (dist, INTERNAL_MODIFIER_TARGETS), we don't need to pass them to Ninja. See also commit 80e46c7c5cb7b1d80114876d301798a8624b4200. Restore the dist rule removed by the above commit. Previously "droid" was never passed to Ninja. That's incorrect. "make droid docs" should build both docs and droiod. Fixed with this change. Change-Id: I5c28061fe0ebe7848872ee349056d029b787ff71 --- core/distdir.mk | 5 +++++ core/main.mk | 2 +- core/ninja.mk | 33 +++++++++++++++++++-------------- 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/core/distdir.mk b/core/distdir.mk index 24beddc53..51ec46efe 100644 --- a/core/distdir.mk +++ b/core/distdir.mk @@ -22,6 +22,11 @@ dist: ; dist_goal := $(strip $(filter dist,$(MAKECMDGOALS))) MAKECMDGOALS := $(strip $(filter-out dist,$(MAKECMDGOALS))) +ifeq (,$(strip $(filter-out $(INTERNAL_MODIFIER_TARGETS),$(MAKECMDGOALS)))) +# The commandline was something like "make dist" or "make dist showcommands". +# Add a dependency on a real target. +dist: $(DEFAULT_GOAL) +endif ifdef dist_goal diff --git a/core/main.mk b/core/main.mk index 7901bd82f..7896d381e 100644 --- a/core/main.mk +++ b/core/main.mk @@ -426,7 +426,7 @@ ifdef is_sdk_build sdk_repo_goal := $(strip $(filter sdk_repo,$(MAKECMDGOALS))) MAKECMDGOALS := $(strip $(filter-out sdk_repo,$(MAKECMDGOALS))) -ifneq ($(words $(filter-out $(INTERNAL_MODIFIER_TARGETS) checkbuild emulator_tests target-files-package,$(MAKECMDGOALS))),1) +ifneq ($(words $(sort $(filter-out $(INTERNAL_MODIFIER_TARGETS) checkbuild emulator_tests target-files-package,$(MAKECMDGOALS)))),1) $(error The 'sdk' target may not be specified with any other targets) endif diff --git a/core/ninja.mk b/core/ninja.mk index 7a3166a3d..2e8f3c8ec 100644 --- a/core/ninja.mk +++ b/core/ninja.mk @@ -2,11 +2,16 @@ KATI ?= $(HOST_OUT_EXECUTABLES)/ckati MAKEPARALLEL ?= $(HOST_OUT_EXECUTABLES)/makeparallel KATI_OUTPUT_PATTERNS := $(OUT_DIR)/build%.ninja $(OUT_DIR)/ninja%.sh -NINJA_GOALS := droid showcommands -# A list of goals which affect parsing of make. + +# Modifier goals we don't need to pass to Ninja. +NINJA_EXCLUDE_GOALS := showcommands all dist +.PHONY : $(NINJA_EXCLUDE_GOALS) + +# A list of goals which affect parsing of makefiles and we need to pass to Kati. PARSE_TIME_MAKE_GOALS := \ $(PARSE_TIME_MAKE_GOALS) \ $(dont_bother_goals) \ + all \ APP-% \ DUMP_% \ ECLIPSE-% \ @@ -52,17 +57,21 @@ PARSE_TIME_MAKE_GOALS := \ -include vendor/google/build/ninja_config.mk -ANDROID_TARGETS := $(filter-out $(KATI_OUTPUT_PATTERNS) $(NINJA_GOALS),$(ORIGINAL_MAKECMDGOALS)) -EXTRA_TARGETS := $(filter-out $(KATI_OUTPUT_PATTERNS) $(NINJA_GOALS),$(filter-out $(ORIGINAL_MAKECMDGOALS),$(MAKECMDGOALS))) -KATI_TARGETS := $(filter $(PARSE_TIME_MAKE_GOALS),$(ANDROID_TARGETS)) +# Any Android goals that need to be built. +ANDROID_GOALS := $(filter-out $(KATI_OUTPUT_PATTERNS) $(KATI) $(MAKEPARALLEL),\ + $(sort $(ORIGINAL_MAKECMDGOALS) $(MAKECMDGOALS))) +# Goals we need to pass to Ninja. +NINJA_GOALS := $(filter-out $(NINJA_EXCLUDE_GOALS), $(ANDROID_GOALS)) +# Goals we need to pass to Kati. +KATI_GOALS := $(filter $(PARSE_TIME_MAKE_GOALS), $(ANDROID_GOALS)) define replace_space_and_slash $(subst /,_,$(subst $(space),_,$(sort $1))) endef KATI_NINJA_SUFFIX := -$(TARGET_PRODUCT) -ifneq ($(KATI_TARGETS),) -KATI_NINJA_SUFFIX := $(KATI_NINJA_SUFFIX)-$(call replace_space_and_slash,$(KATI_TARGETS)) +ifneq ($(KATI_GOALS),) +KATI_NINJA_SUFFIX := $(KATI_NINJA_SUFFIX)-$(call replace_space_and_slash,$(KATI_GOALS)) endif ifneq ($(ONE_SHOT_MAKEFILE),) KATI_NINJA_SUFFIX := $(KATI_NINJA_SUFFIX)-mmm-$(call replace_space_and_slash,$(ONE_SHOT_MAKEFILE)) @@ -72,14 +81,12 @@ KATI_NINJA_SUFFIX := $(KATI_NINJA_SUFFIX)-mmma-$(call replace_space_and_slash,$( endif my_checksum_suffix := -ifneq ($(KATI_NINJA_SUFFIX),) my_ninja_suffix_too_long := $(filter 1, $(shell v='$(KATI_NINJA_SUFFIX)' && echo $$(($${$(pound)v} > 64)))) ifneq ($(my_ninja_suffix_too_long),) # Replace the suffix with a checksum if it gets too long. my_checksum_suffix := $(KATI_NINJA_SUFFIX) KATI_NINJA_SUFFIX := -$(word 1, $(shell echo $(my_checksum_suffix) | $(MD5SUM))) endif -endif KATI_BUILD_NINJA := $(OUT_DIR)/build$(KATI_NINJA_SUFFIX).ninja KATI_NINJA_SH := $(OUT_DIR)/ninja$(KATI_NINJA_SUFFIX).sh @@ -97,8 +104,6 @@ endif ifneq (,$(filter showcommands,$(ORIGINAL_MAKECMDGOALS))) NINJA_ARGS += "-v" -PHONY: showcommands -showcommands: droid endif ifdef USE_GOMA @@ -112,13 +117,13 @@ else NINJA_MAKEPARALLEL := $(MAKEPARALLEL) --ninja endif -droid $(ANDROID_TARGETS) $(EXTRA_TARGETS): ninja_wrapper +$(sort $(DEFAULT_GOAL) $(ANDROID_GOALS)) : ninja_wrapper @#empty .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) + +$(hide) PATH=prebuilts/ninja/$(HOST_PREBUILT_TAG)/:$$PATH NINJA_STATUS="$(NINJA_STATUS)" $(NINJA_MAKEPARALLEL) $(KATI_NINJA_SH) $(NINJA_GOALS) -C $(TOP) $(NINJA_ARGS) KATI_FIND_EMULATOR := --use_find_emulator ifeq ($(KATI_EMULATE_FIND),false) @@ -126,7 +131,7 @@ ifeq ($(KATI_EMULATE_FIND),false) endif $(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 $(KATI_FIND_EMULATOR) -f build/core/main.mk $(KATI_TARGETS) --gen_all_targets BUILDING_WITH_NINJA=true + +$(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 $(KATI_FIND_EMULATOR) -f build/core/main.mk $(KATI_GOALS) --gen_all_targets BUILDING_WITH_NINJA=true KATI_CXX := $(CLANG_CXX) $(CLANG_HOST_GLOBAL_CFLAGS) $(CLANG_HOST_GLOBAL_CPPFLAGS) KATI_LD := $(CLANG_CXX) $(CLANG_HOST_GLOBAL_LDFLAGS)