blob: 6d75877a96951db35a4626bd2313445853332255 [file] [log] [blame]
Colin Cross3b324cb2015-07-16 17:27:52 -07001KATI ?= $(HOST_OUT_EXECUTABLES)/ckati
2
Shinichiro Hamajibfd01872015-09-01 14:24:18 +09003KATI_OUTPUT_PATTERNS := $(PRODUCT_OUT)/build%.ninja $(PRODUCT_OUT)/ninja%.sh
Colin Cross3b324cb2015-07-16 17:27:52 -07004NINJA_GOALS := fastincremental generateonly droid showcommands
Shinichiro Hamajid762bca2015-09-04 14:38:37 +09005# 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
Colin Cross3b324cb2015-07-16 17:27:52 -070055
Shinichiro Hamajibfd01872015-09-01 14:24:18 +090056ANDROID_TARGETS := $(filter-out $(KATI_OUTPUT_PATTERNS) $(NINJA_GOALS),$(ORIGINAL_MAKECMDGOALS))
Shinichiro Hamajid762bca2015-09-04 14:38:37 +090057KATI_TARGETS := $(if $(filter $(PARSE_TIME_MAKE_GOALS),$(ANDROID_TARGETS)),$(ANDROID_TARGETS),)
Shinichiro Hamajibfd01872015-09-01 14:24:18 +090058
Shinichiro Hamaji909e7f42015-09-04 11:41:33 +090059define replace_space_and_slash
60$(subst /,_,$(subst $(space),_,$(sort $1)))
61endef
62
Shinichiro Hamajibfd01872015-09-01 14:24:18 +090063KATI_NINJA_SUFFIX :=
Shinichiro Hamajid762bca2015-09-04 14:38:37 +090064ifneq ($(KATI_TARGETS),)
65KATI_NINJA_SUFFIX := $(KATI_NINJA_SUFFIX)-$(call replace_space_and_slash,$(KATI_TARGETS))
Shinichiro Hamajibfd01872015-09-01 14:24:18 +090066endif
67ifneq ($(ONE_SHOT_MAKEFILE),)
Shinichiro Hamaji909e7f42015-09-04 11:41:33 +090068KATI_NINJA_SUFFIX := $(KATI_NINJA_SUFFIX)-mmm-$(call replace_space_and_slash,$(ONE_SHOT_MAKEFILE))
69endif
70ifneq ($(BUILD_MODULES_IN_PATHS),)
71KATI_NINJA_SUFFIX := $(KATI_NINJA_SUFFIX)-mmma-$(call replace_space_and_slash,$(BUILD_MODULES_IN_PATHS))
Shinichiro Hamajibfd01872015-09-01 14:24:18 +090072endif
73
74KATI_BUILD_NINJA := $(PRODUCT_OUT)/build$(KATI_NINJA_SUFFIX).ninja
75KATI_NINJA_SH := $(PRODUCT_OUT)/ninja$(KATI_NINJA_SUFFIX).sh
76KATI_OUTPUTS := $(KATI_BUILD_NINJA) $(KATI_NINJA_SH)
Colin Cross3b324cb2015-07-16 17:27:52 -070077
78ifeq (,$(NINJA_STATUS))
79NINJA_STATUS := [%p %s/%t]$(space)
80endif
81
Ying Wangbb1da5e2015-07-28 17:57:45 -070082ifneq (,$(filter showcommands,$(ORIGINAL_MAKECMDGOALS)))
Colin Cross3b324cb2015-07-16 17:27:52 -070083NINJA_ARGS += "-v"
84PHONY: showcommands
85showcommands: droid
86endif
87
Ying Wangbb1da5e2015-07-28 17:57:45 -070088ifeq (,$(filter generateonly,$(ORIGINAL_MAKECMDGOALS)))
Colin Cross3b324cb2015-07-16 17:27:52 -070089fastincremental droid $(ANDROID_TARGETS): ninja.intermediate
90 @#empty
91
92.INTERMEDIATE: ninja.intermediate
93ninja.intermediate: $(KATI_OUTPUTS)
94 @echo Starting build with ninja
Shinichiro Hamajibfd01872015-09-01 14:24:18 +090095 $(hide) PATH=prebuilts/ninja/$(HOST_PREBUILT_TAG)/:$$PATH NINJA_STATUS="$(NINJA_STATUS)" $(KATI_NINJA_SH) -C $(TOP) $(NINJA_ARGS) $(ANDROID_TARGETS)
Colin Cross3b324cb2015-07-16 17:27:52 -070096else
97generateonly droid $(ANDROID_TARGETS): $(KATI_OUTPUTS)
98 @#empty
99endif
100
Ying Wangbb1da5e2015-07-28 17:57:45 -0700101ifeq (,$(filter fastincremental,$(ORIGINAL_MAKECMDGOALS)))
Colin Cross3b324cb2015-07-16 17:27:52 -0700102KATI_FORCE := FORCE
103endif
104
105$(KATI_OUTPUTS): kati.intermediate $(KATI_FORCE)
106
107.INTERMEDIATE: kati.intermediate
108kati.intermediate: $(KATI)
Shinichiro Hamajibfd01872015-09-01 14:24:18 +0900109 @echo Running kati to generate build$(KATI_NINJA_SUFFIX).ninja...
Colin Cross3b324cb2015-07-16 17:27:52 -0700110 @#TODO: use separate ninja file for mm or single target build
Shinichiro Hamajid762bca2015-09-04 14:38:37 +0900111 $(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
Colin Cross3b324cb2015-07-16 17:27:52 -0700112
113KATI_CXX := $(CLANG_CXX) $(CLANG_HOST_GLOBAL_CPPFLAGS)
114KATI_LD := $(CLANG_CXX) $(CLANG_HOST_GLOBAL_LDFLAGS)
Ying Wang0a0e6ea2015-08-03 18:15:43 -0700115# Build static ckati. Unfortunately Mac OS X doesn't officially support static exectuables.
116ifeq ($(BUILD_OS),linux)
117KATI_LD += -static
118endif
119
Colin Cross3b324cb2015-07-16 17:27:52 -0700120KATI_INTERMEDIATES_PATH := $(HOST_OUT_INTERMEDIATES)/EXECUTABLES/ckati_intermediates
121KATI_BIN_PATH := $(HOST_OUT_EXECUTABLES)
122include build/kati/Makefile.ckati
123
124.PHONY: FORCE
125FORCE: