1*9e94795aSAndroid Build Coastguard Worker# Read and dump the product configuration. 2*9e94795aSAndroid Build Coastguard Worker 3*9e94795aSAndroid Build Coastguard Worker# Called from the product-config tool, not from the main build system. 4*9e94795aSAndroid Build Coastguard Worker 5*9e94795aSAndroid Build Coastguard Worker# 6*9e94795aSAndroid Build Coastguard Worker# Ensure we are being called correctly 7*9e94795aSAndroid Build Coastguard Worker# 8*9e94795aSAndroid Build Coastguard Workerifndef KATI 9*9e94795aSAndroid Build Coastguard Worker $(warning Kati must be used to call dumpconfig.mk, not make.) 10*9e94795aSAndroid Build Coastguard Worker $(error stopping) 11*9e94795aSAndroid Build Coastguard Workerendif 12*9e94795aSAndroid Build Coastguard Worker 13*9e94795aSAndroid Build Coastguard Workerifdef DEFAULT_GOAL 14*9e94795aSAndroid Build Coastguard Worker $(warning Calling dumpconfig.mk from inside the make build system is not) 15*9e94795aSAndroid Build Coastguard Worker $(warning supported. It is only meant to be called via kati by product-confing.) 16*9e94795aSAndroid Build Coastguard Worker $(error stopping) 17*9e94795aSAndroid Build Coastguard Workerendif 18*9e94795aSAndroid Build Coastguard Worker 19*9e94795aSAndroid Build Coastguard Workerifndef TARGET_PRODUCT 20*9e94795aSAndroid Build Coastguard Worker $(warning dumpconfig.mk requires TARGET_PRODUCT to be set) 21*9e94795aSAndroid Build Coastguard Worker $(error stopping) 22*9e94795aSAndroid Build Coastguard Workerendif 23*9e94795aSAndroid Build Coastguard Worker 24*9e94795aSAndroid Build Coastguard Workerifndef TARGET_BUILD_VARIANT 25*9e94795aSAndroid Build Coastguard Worker $(warning dumpconfig.mk requires TARGET_BUILD_VARIANT to be set) 26*9e94795aSAndroid Build Coastguard Worker $(error stopping) 27*9e94795aSAndroid Build Coastguard Workerendif 28*9e94795aSAndroid Build Coastguard Worker 29*9e94795aSAndroid Build Coastguard Workerifneq (build/make/core/config.mk,$(wildcard build/make/core/config.mk)) 30*9e94795aSAndroid Build Coastguard Worker $(warning dumpconfig must be called from the root of the source tree) 31*9e94795aSAndroid Build Coastguard Worker $(error stopping) 32*9e94795aSAndroid Build Coastguard Workerendif 33*9e94795aSAndroid Build Coastguard Worker 34*9e94795aSAndroid Build Coastguard Workerifeq (,$(DUMPCONFIG_FILE)) 35*9e94795aSAndroid Build Coastguard Worker $(warning dumpconfig requires DUMPCONFIG_FILE to be set) 36*9e94795aSAndroid Build Coastguard Worker $(error stopping) 37*9e94795aSAndroid Build Coastguard Workerendif 38*9e94795aSAndroid Build Coastguard Worker 39*9e94795aSAndroid Build Coastguard Worker# Skip the second inclusion of all of the product config files, because 40*9e94795aSAndroid Build Coastguard Worker# we will do these checks in the product_config tool. 41*9e94795aSAndroid Build Coastguard WorkerSKIP_ARTIFACT_PATH_REQUIREMENT_PRODUCTS_CHECK := true 42*9e94795aSAndroid Build Coastguard Worker 43*9e94795aSAndroid Build Coastguard Worker# Before we do anything else output the format version. 44*9e94795aSAndroid Build Coastguard Worker$(file > $(DUMPCONFIG_FILE),dumpconfig_version,1) 45*9e94795aSAndroid Build Coastguard Worker$(file >> $(DUMPCONFIG_FILE),dumpconfig_file,$(DUMPCONFIG_FILE)) 46*9e94795aSAndroid Build Coastguard Worker 47*9e94795aSAndroid Build Coastguard Worker# Default goal for dumpconfig 48*9e94795aSAndroid Build Coastguard Workerdumpconfig: 49*9e94795aSAndroid Build Coastguard Worker $(file >> $(DUMPCONFIG_FILE),***DONE***) 50*9e94795aSAndroid Build Coastguard Worker @echo ***DONE*** 51*9e94795aSAndroid Build Coastguard Worker 52*9e94795aSAndroid Build Coastguard Worker# TODO(Remove): These need to be set externally 53*9e94795aSAndroid Build Coastguard WorkerOUT_DIR := out 54*9e94795aSAndroid Build Coastguard WorkerTMPDIR = /tmp/build-temp 55*9e94795aSAndroid Build Coastguard WorkerBUILD_DATETIME_FILE := $(OUT_DIR)/build_date.txt 56*9e94795aSAndroid Build Coastguard Worker 57*9e94795aSAndroid Build Coastguard Worker# Escape quotation marks for CSV, and wraps in quotation marks. 58*9e94795aSAndroid Build Coastguard Workerdefine escape-for-csv 59*9e94795aSAndroid Build Coastguard Worker"$(subst ","",$(subst $(newline), ,$1))" 60*9e94795aSAndroid Build Coastguard Workerendef 61*9e94795aSAndroid Build Coastguard Worker 62*9e94795aSAndroid Build Coastguard Worker# Args: 63*9e94795aSAndroid Build Coastguard Worker# $(1): include stack 64*9e94795aSAndroid Build Coastguard Workerdefine dump-import-start 65*9e94795aSAndroid Build Coastguard Worker$(eval $(file >> $(DUMPCONFIG_FILE),import,$(strip $(1)))) 66*9e94795aSAndroid Build Coastguard Workerendef 67*9e94795aSAndroid Build Coastguard Worker 68*9e94795aSAndroid Build Coastguard Worker# Args: 69*9e94795aSAndroid Build Coastguard Worker# $(1): include stack 70*9e94795aSAndroid Build Coastguard Workerdefine dump-import-done 71*9e94795aSAndroid Build Coastguard Worker$(eval $(file >> $(DUMPCONFIG_FILE),imported,$(strip $(1)),$(filter-out $(1),$(MAKEFILE_LIST)))) 72*9e94795aSAndroid Build Coastguard Workerendef 73*9e94795aSAndroid Build Coastguard Worker 74*9e94795aSAndroid Build Coastguard Worker# Args: 75*9e94795aSAndroid Build Coastguard Worker# $(1): Current file 76*9e94795aSAndroid Build Coastguard Worker# $(2): Inherited file 77*9e94795aSAndroid Build Coastguard Workerdefine dump-inherit 78*9e94795aSAndroid Build Coastguard Worker$(eval $(file >> $(DUMPCONFIG_FILE),inherit,$(strip $(1)),$(strip $(2)))) 79*9e94795aSAndroid Build Coastguard Workerendef 80*9e94795aSAndroid Build Coastguard Worker 81*9e94795aSAndroid Build Coastguard Worker# Args: 82*9e94795aSAndroid Build Coastguard Worker# $(1): Config phase (PRODUCT, EXPAND, or DEVICE) 83*9e94795aSAndroid Build Coastguard Worker# $(2): Root nodes to import 84*9e94795aSAndroid Build Coastguard Worker# $(3): All variable names 85*9e94795aSAndroid Build Coastguard Worker# $(4): Single-value variables 86*9e94795aSAndroid Build Coastguard Worker# $(5): Makefile being processed 87*9e94795aSAndroid Build Coastguard Workerdefine dump-phase-start 88*9e94795aSAndroid Build Coastguard Worker$(eval $(file >> $(DUMPCONFIG_FILE),phase,$(strip $(1)),$(strip $(2)))) \ 89*9e94795aSAndroid Build Coastguard Worker$(foreach var,$(3), \ 90*9e94795aSAndroid Build Coastguard Worker $(eval $(file >> $(DUMPCONFIG_FILE),var,$(if $(filter $(4),$(var)),single,list),$(var))) \ 91*9e94795aSAndroid Build Coastguard Worker) \ 92*9e94795aSAndroid Build Coastguard Worker$(call dump-config-vals,$(strip $(5)),initial) 93*9e94795aSAndroid Build Coastguard Workerendef 94*9e94795aSAndroid Build Coastguard Worker 95*9e94795aSAndroid Build Coastguard Worker# Args: 96*9e94795aSAndroid Build Coastguard Worker# $(1): Makefile being processed 97*9e94795aSAndroid Build Coastguard Workerdefine dump-phase-end 98*9e94795aSAndroid Build Coastguard Worker$(call dump-config-vals,$(strip $(1)),final) 99*9e94795aSAndroid Build Coastguard Workerendef 100*9e94795aSAndroid Build Coastguard Worker 101*9e94795aSAndroid Build Coastguard Workerdefine dump-debug 102*9e94795aSAndroid Build Coastguard Worker$(eval $(file >> $(DUMPCONFIG_FILE),debug,$(1))) 103*9e94795aSAndroid Build Coastguard Workerendef 104*9e94795aSAndroid Build Coastguard Worker 105*9e94795aSAndroid Build Coastguard Worker# Skip these when dumping. They're not used and they cause a lot of noise in the dump. 106*9e94795aSAndroid Build Coastguard WorkerDUMPCONFIG_SKIP_VARS := \ 107*9e94795aSAndroid Build Coastguard Worker .VARIABLES \ 108*9e94795aSAndroid Build Coastguard Worker .KATI_SYMBOLS \ 109*9e94795aSAndroid Build Coastguard Worker 1 \ 110*9e94795aSAndroid Build Coastguard Worker 2 \ 111*9e94795aSAndroid Build Coastguard Worker 3 \ 112*9e94795aSAndroid Build Coastguard Worker 4 \ 113*9e94795aSAndroid Build Coastguard Worker 5 \ 114*9e94795aSAndroid Build Coastguard Worker 6 \ 115*9e94795aSAndroid Build Coastguard Worker 7 \ 116*9e94795aSAndroid Build Coastguard Worker 8 \ 117*9e94795aSAndroid Build Coastguard Worker 9 \ 118*9e94795aSAndroid Build Coastguard Worker LOCAL_PATH \ 119*9e94795aSAndroid Build Coastguard Worker MAKEFILE_LIST \ 120*9e94795aSAndroid Build Coastguard Worker current_mk \ 121*9e94795aSAndroid Build Coastguard Worker _eiv_ev \ 122*9e94795aSAndroid Build Coastguard Worker _eiv_i \ 123*9e94795aSAndroid Build Coastguard Worker _eiv_sv \ 124*9e94795aSAndroid Build Coastguard Worker _eiv_tv \ 125*9e94795aSAndroid Build Coastguard Worker inherit_var \ 126*9e94795aSAndroid Build Coastguard Worker np \ 127*9e94795aSAndroid Build Coastguard Worker _node_import_context \ 128*9e94795aSAndroid Build Coastguard Worker _included \ 129*9e94795aSAndroid Build Coastguard Worker _include_stack \ 130*9e94795aSAndroid Build Coastguard Worker _in \ 131*9e94795aSAndroid Build Coastguard Worker _nic.% 132*9e94795aSAndroid Build Coastguard Worker 133*9e94795aSAndroid Build Coastguard Worker# Args: 134*9e94795aSAndroid Build Coastguard Worker# $(1): Makefile that was included 135*9e94795aSAndroid Build Coastguard Worker# $(2): block (before,import,after,initial,final) 136*9e94795aSAndroid Build Coastguard Workerdefine dump-config-vals 137*9e94795aSAndroid Build Coastguard Worker$(foreach var,$(filter-out $(DUMPCONFIG_SKIP_VARS),$(.KATI_SYMBOLS)),\ 138*9e94795aSAndroid Build Coastguard Worker $(eval $(file >> $(DUMPCONFIG_FILE),val,$(call escape-for-csv,$(1)),$(2),$(call escape-for-csv,$(var)),$(call escape-for-csv,$($(var))),$(call escape-for-csv,$(KATI_variable_location $(var))))) \ 139*9e94795aSAndroid Build Coastguard Worker) 140*9e94795aSAndroid Build Coastguard Workerendef 141*9e94795aSAndroid Build Coastguard Worker 142*9e94795aSAndroid Build Coastguard Workerinclude build/make/core/config.mk 143*9e94795aSAndroid Build Coastguard Worker 144