OSDN Git Service

Use the same build.ninja for normal make targets
authorShinichiro Hamaji <hamaji@google.com>
Fri, 4 Sep 2015 05:38:37 +0000 (14:38 +0900)
committerShinichiro Hamaji <hamaji@google.com>
Wed, 9 Sep 2015 06:48:10 +0000 (15:48 +0900)
$(PARSE_TIME_MAKE_GOALS) is a list of known goals which affect
parsing of make (e.g., there is $(filter XXX,$(MAKECMDGOALS))).
If the make targets contain one of them, we keep using a
different build.ninja for each combination of make targets.
Otherwise, we use the same build.ninja which has all phony
targets.

Also load vendor/google/build/ninja_config.mk so it can add
Google-specific goals to $(PARSE_TIME_MAKE_GOALS).

Bug: 23685536
Change-Id: I3da5c76fa7644a05a55c374a754212f4fb794818

core/ninja.mk

index 4925493..6d75877 100644 (file)
@@ -2,16 +2,67 @@ KATI ?= $(HOST_OUT_EXECUTABLES)/ckati
 
 KATI_OUTPUT_PATTERNS := $(PRODUCT_OUT)/build%.ninja $(PRODUCT_OUT)/ninja%.sh
 NINJA_GOALS := fastincremental generateonly droid showcommands
+# A list of goals which affect parsing of make.
+PARSE_TIME_MAKE_GOALS := \
+       $(PARSE_TIME_MAKE_GOALS) \
+       $(dont_bother_goals) \
+       %tests \
+       APP-% \
+       DUMP_% \
+       ECLIPSE-% \
+       PRODUCT-% \
+       boottarball-nodeps \
+       btnod \
+       build-art% \
+       build_kernel-nodeps \
+       checkbuild \
+       clean-oat% \
+       continuous_instrumentation_tests \
+       continuous_native_tests \
+       cts \
+       custom_images \
+       deps-license \
+       dicttool_aosp \
+       dist \
+       dump-products \
+       dumpvar-% \
+       eng \
+       fusion \
+       oem_image \
+       online-system-api-sdk-docs \
+       pdk \
+       platform \
+       platform-java \
+       product-graph \
+       samplecode \
+       sdk \
+       sdk_addon \
+       sdk_repo \
+       snod \
+       stnod \
+       systemimage-nodeps \
+       systemtarball-nodeps \
+       target-files-package \
+       test-art% \
+       user \
+       userdataimage \
+       userdebug \
+       valgrind-test-art% \
+       win_sdk \
+       winsdk-tools
+
+-include vendor/google/build/ninja_config.mk
 
 ANDROID_TARGETS := $(filter-out $(KATI_OUTPUT_PATTERNS) $(NINJA_GOALS),$(ORIGINAL_MAKECMDGOALS))
+KATI_TARGETS := $(if $(filter $(PARSE_TIME_MAKE_GOALS),$(ANDROID_TARGETS)),$(ANDROID_TARGETS),)
 
 define replace_space_and_slash
 $(subst /,_,$(subst $(space),_,$(sort $1)))
 endef
 
 KATI_NINJA_SUFFIX :=
-ifneq ($(ANDROID_TARGETS),)
-KATI_NINJA_SUFFIX := $(KATI_NINJA_SUFFIX)-$(call replace_space_and_slash,$(ANDROID_TARGETS))
+ifneq ($(KATI_TARGETS),)
+KATI_NINJA_SUFFIX := $(KATI_NINJA_SUFFIX)-$(call replace_space_and_slash,$(KATI_TARGETS))
 endif
 ifneq ($(ONE_SHOT_MAKEFILE),)
 KATI_NINJA_SUFFIX := $(KATI_NINJA_SUFFIX)-mmm-$(call replace_space_and_slash,$(ONE_SHOT_MAKEFILE))
@@ -57,7 +108,7 @@ $(KATI_OUTPUTS): kati.intermediate $(KATI_FORCE)
 kati.intermediate: $(KATI)
        @echo Running kati to generate build$(KATI_NINJA_SUFFIX).ninja...
        @#TODO: use separate ninja file for mm or single target build
-       $(hide) $(KATI) --ninja --ninja_dir=$(PRODUCT_OUT) --ninja_suffix=$(KATI_NINJA_SUFFIX) --regen --ignore_dirty=$(OUT_DIR)/% --ignore_optional_include=$(OUT_DIR)/%.P --detect_android_echo --use_find_emulator $(KATI_REMOTE_NUM_JOBS_FLAG) -f build/core/main.mk $(ANDROID_TARGETS) USE_NINJA=false
+       $(hide) $(KATI) --ninja --ninja_dir=$(PRODUCT_OUT) --ninja_suffix=$(KATI_NINJA_SUFFIX) --regen --ignore_dirty=$(OUT_DIR)/% --ignore_optional_include=$(OUT_DIR)/%.P --detect_android_echo --use_find_emulator $(KATI_REMOTE_NUM_JOBS_FLAG) -f build/core/main.mk $(or $(KATI_TARGETS),--gen_all_phony_targets) USE_NINJA=false
 
 KATI_CXX := $(CLANG_CXX) $(CLANG_HOST_GLOBAL_CPPFLAGS)
 KATI_LD := $(CLANG_CXX) $(CLANG_HOST_GLOBAL_LDFLAGS)