ninja.mk revision cb1bd116ed9282526484fb414c103aae46fd2bfc
1KATI ?= $(HOST_OUT_EXECUTABLES)/ckati
2
3KATI_OUTPUT_PATTERNS := $(PRODUCT_OUT)/build%.ninja $(PRODUCT_OUT)/ninja%.sh
4NINJA_GOALS := fastincremental generateonly droid showcommands
5# A list of goals which affect parsing of make.
6PARSE_TIME_MAKE_GOALS := \
7	$(PARSE_TIME_MAKE_GOALS) \
8	$(dont_bother_goals) \
9	%tests \
10	APP-% \
11	DUMP_% \
12	ECLIPSE-% \
13	PRODUCT-% \
14	boottarball-nodeps \
15	btnod \
16	build-art% \
17	build_kernel-nodeps \
18	checkbuild \
19	clean-oat% \
20	continuous_instrumentation_tests \
21	continuous_native_tests \
22	cts \
23	custom_images \
24	deps-license \
25	dicttool_aosp \
26	dist \
27	dump-products \
28	dumpvar-% \
29	eng \
30	fusion \
31	oem_image \
32	online-system-api-sdk-docs \
33	pdk \
34	platform \
35	platform-java \
36	product-graph \
37	samplecode \
38	sdk \
39	sdk_addon \
40	sdk_repo \
41	snod \
42	stnod \
43	systemimage-nodeps \
44	systemtarball-nodeps \
45	target-files-package \
46	test-art% \
47	user \
48	userdataimage \
49	userdebug \
50	valgrind-test-art% \
51	win_sdk \
52	winsdk-tools
53
54-include vendor/google/build/ninja_config.mk
55
56ANDROID_TARGETS := $(filter-out $(KATI_OUTPUT_PATTERNS) $(NINJA_GOALS),$(ORIGINAL_MAKECMDGOALS))
57EXTRA_TARGETS := $(filter-out $(KATI_OUTPUT_PATTERNS) $(NINJA_GOALS),$(filter-out $(ORIGINAL_MAKECMDGOALS),$(MAKECMDGOALS)))
58KATI_TARGETS := $(if $(filter $(PARSE_TIME_MAKE_GOALS),$(ANDROID_TARGETS)),$(ANDROID_TARGETS),)
59
60define replace_space_and_slash
61$(subst /,_,$(subst $(space),_,$(sort $1)))
62endef
63
64KATI_NINJA_SUFFIX :=
65ifneq ($(KATI_TARGETS),)
66KATI_NINJA_SUFFIX := $(KATI_NINJA_SUFFIX)-$(call replace_space_and_slash,$(KATI_TARGETS))
67endif
68ifneq ($(ONE_SHOT_MAKEFILE),)
69KATI_NINJA_SUFFIX := $(KATI_NINJA_SUFFIX)-mmm-$(call replace_space_and_slash,$(ONE_SHOT_MAKEFILE))
70endif
71ifneq ($(BUILD_MODULES_IN_PATHS),)
72KATI_NINJA_SUFFIX := $(KATI_NINJA_SUFFIX)-mmma-$(call replace_space_and_slash,$(BUILD_MODULES_IN_PATHS))
73endif
74
75KATI_BUILD_NINJA := $(PRODUCT_OUT)/build$(KATI_NINJA_SUFFIX).ninja
76KATI_NINJA_SH := $(PRODUCT_OUT)/ninja$(KATI_NINJA_SUFFIX).sh
77KATI_OUTPUTS := $(KATI_BUILD_NINJA) $(KATI_NINJA_SH)
78
79ifeq (,$(NINJA_STATUS))
80NINJA_STATUS := [%p %s/%t]$(space)
81endif
82
83ifneq (,$(filter showcommands,$(ORIGINAL_MAKECMDGOALS)))
84NINJA_ARGS += "-v"
85PHONY: showcommands
86showcommands: droid
87endif
88
89ifeq (,$(filter generateonly,$(ORIGINAL_MAKECMDGOALS)))
90fastincremental droid $(ANDROID_TARGETS) $(EXTRA_TARGETS): ninja.intermediate
91	@#empty
92
93.INTERMEDIATE: ninja.intermediate
94ninja.intermediate: $(KATI_OUTPUTS)
95	@echo Starting build with ninja
96	$(hide) PATH=prebuilts/ninja/$(HOST_PREBUILT_TAG)/:$$PATH NINJA_STATUS="$(NINJA_STATUS)" $(KATI_NINJA_SH) -C $(TOP) $(NINJA_ARGS) $(ANDROID_TARGETS)
97else
98generateonly droid $(ANDROID_TARGETS) $(EXTRA_TARGETS): $(KATI_OUTPUTS)
99	@#empty
100endif
101
102ifeq (,$(filter fastincremental,$(ORIGINAL_MAKECMDGOALS)))
103KATI_FORCE := FORCE
104endif
105
106$(KATI_OUTPUTS): kati.intermediate $(KATI_FORCE)
107
108.INTERMEDIATE: kati.intermediate
109kati.intermediate: $(KATI)
110	@echo Running kati to generate build$(KATI_NINJA_SUFFIX).ninja...
111	@#TODO: use separate ninja file for mm or single target build
112	$(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
113
114KATI_CXX := $(CLANG_CXX) $(CLANG_HOST_GLOBAL_CPPFLAGS)
115KATI_LD := $(CLANG_CXX) $(CLANG_HOST_GLOBAL_LDFLAGS)
116# Build static ckati. Unfortunately Mac OS X doesn't officially support static exectuables.
117ifeq ($(BUILD_OS),linux)
118KATI_LD += -static
119endif
120
121KATI_INTERMEDIATES_PATH := $(HOST_OUT_INTERMEDIATES)/EXECUTABLES/ckati_intermediates
122KATI_BIN_PATH := $(HOST_OUT_EXECUTABLES)
123include build/kati/Makefile.ckati
124
125.PHONY: FORCE
126FORCE:
127