forked from openkylin/platform_build
145 lines
3.5 KiB
Makefile
145 lines
3.5 KiB
Makefile
# Read and dump the product configuration.
|
|
|
|
# Called from the product-config tool, not from the main build system.
|
|
|
|
#
|
|
# Ensure we are being called correctly
|
|
#
|
|
ifndef KATI
|
|
$(warning Kati must be used to call dumpconfig.mk, not make.)
|
|
$(error stopping)
|
|
endif
|
|
|
|
ifdef DEFAULT_GOAL
|
|
$(warning Calling dumpconfig.mk from inside the make build system is not)
|
|
$(warning supported. It is only meant to be called via kati by product-confing.)
|
|
$(error stopping)
|
|
endif
|
|
|
|
ifndef TARGET_PRODUCT
|
|
$(warning dumpconfig.mk requires TARGET_PRODUCT to be set)
|
|
$(error stopping)
|
|
endif
|
|
|
|
ifndef TARGET_BUILD_VARIANT
|
|
$(warning dumpconfig.mk requires TARGET_BUILD_VARIANT to be set)
|
|
$(error stopping)
|
|
endif
|
|
|
|
ifneq (build/make/core/config.mk,$(wildcard build/make/core/config.mk))
|
|
$(warning dumpconfig must be called from the root of the source tree)
|
|
$(error stopping)
|
|
endif
|
|
|
|
ifeq (,$(DUMPCONFIG_FILE))
|
|
$(warning dumpconfig requires DUMPCONFIG_FILE to be set)
|
|
$(error stopping)
|
|
endif
|
|
|
|
# Skip the second inclusion of all of the product config files, because
|
|
# we will do these checks in the product_config tool.
|
|
SKIP_ARTIFACT_PATH_REQUIREMENT_PRODUCTS_CHECK := true
|
|
|
|
# Before we do anything else output the format version.
|
|
$(file > $(DUMPCONFIG_FILE),dumpconfig_version,1)
|
|
$(file >> $(DUMPCONFIG_FILE),dumpconfig_file,$(DUMPCONFIG_FILE))
|
|
|
|
# Default goal for dumpconfig
|
|
dumpconfig:
|
|
$(file >> $(DUMPCONFIG_FILE),***DONE***)
|
|
@echo ***DONE***
|
|
|
|
# TODO(Remove): These need to be set externally
|
|
OUT_DIR := out
|
|
TMPDIR = /tmp/build-temp
|
|
BUILD_DATETIME_FILE := $(OUT_DIR)/build_date.txt
|
|
|
|
# Escape quotation marks for CSV, and wraps in quotation marks.
|
|
define escape-for-csv
|
|
"$(subst ","",$1)"
|
|
endef
|
|
|
|
# Args:
|
|
# $(1): include stack
|
|
define dump-import-start
|
|
$(eval $(file >> $(DUMPCONFIG_FILE),import,$(strip $(1))))
|
|
endef
|
|
|
|
# Args:
|
|
# $(1): include stack
|
|
define dump-import-done
|
|
$(eval $(file >> $(DUMPCONFIG_FILE),imported,$(strip $(1))))
|
|
endef
|
|
|
|
# Args:
|
|
# $(1): Current file
|
|
# $(2): Inherited file
|
|
define dump-inherit
|
|
$(eval $(file >> $(DUMPCONFIG_FILE),inherit,$(strip $(1)),$(strip $(2))))
|
|
endef
|
|
|
|
# Args:
|
|
# $(1): Config phase (PRODUCT, EXPAND, or DEVICE)
|
|
# $(2): Root nodes to import
|
|
# $(3): All variable names
|
|
# $(4): Single-value variables
|
|
# $(5): Makefile being processed
|
|
define dump-phase-start
|
|
$(eval $(file >> $(DUMPCONFIG_FILE),phase,$(strip $(1)),$(strip $(2)))) \
|
|
$(foreach var,$(3), \
|
|
$(eval $(file >> $(DUMPCONFIG_FILE),var,$(if $(filter $(4),$(var)),single,list),$(var))) \
|
|
) \
|
|
$(call dump-config-vals,$(strip $(5)),initial)
|
|
endef
|
|
|
|
# Args:
|
|
# $(1): Makefile being processed
|
|
define dump-phase-end
|
|
$(call dump-config-vals,$(strip $(1)),final)
|
|
endef
|
|
|
|
define dump-debug
|
|
$(eval $(file >> $(DUMPCONFIG_FILE),debug,$(1)))
|
|
endef
|
|
|
|
# Skip these when dumping. They're not used and they cause a lot of noise in the dump.
|
|
DUMPCONFIG_SKIP_VARS := \
|
|
.VARIABLES \
|
|
.KATI_SYMBOLS \
|
|
1 \
|
|
2 \
|
|
3 \
|
|
4 \
|
|
5 \
|
|
6 \
|
|
7 \
|
|
8 \
|
|
9 \
|
|
LOCAL_PATH \
|
|
MAKEFILE_LIST \
|
|
PARENT_PRODUCT_FILES \
|
|
current_mk \
|
|
_eiv_ev \
|
|
_eiv_i \
|
|
_eiv_sv \
|
|
_eiv_tv \
|
|
inherit_var \
|
|
np \
|
|
_node_import_context \
|
|
_included \
|
|
_include_stack \
|
|
_in \
|
|
_nic.%
|
|
|
|
# Args:
|
|
# $(1): Makefile that was included
|
|
# $(2): block (before,import,after,initial,final)
|
|
define dump-config-vals
|
|
$(foreach var,$(filter-out $(DUMPCONFIG_SKIP_VARS),$(.KATI_SYMBOLS)),\
|
|
$(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))))) \
|
|
)
|
|
endef
|
|
|
|
include build/make/core/config.mk
|
|
|