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