xref: /aosp_15_r20/build/make/core/dumpconfig.mk (revision 9e94795a3d4ef5c1d47486f9a02bb378756cea8a)
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