| # 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 \ |
| 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 |
| |