Skip to content

Commit

Permalink
Merge remote-tracking branch 'cm/cm-11.0' into cm-11.0
Browse files Browse the repository at this point in the history
  • Loading branch information
androidarmv6-gerrit2 committed Jan 4, 2015
2 parents ef6989d + 29357f5 commit ec9c6b5
Showing 1 changed file with 56 additions and 7 deletions.
63 changes: 56 additions & 7 deletions core/product.mk
Original file line number Diff line number Diff line change
Expand Up @@ -114,24 +114,66 @@ define dump-products
$(foreach p,$(PRODUCTS),$(call dump-product,$(p)))
endef

#
# Internal function. Appends inherited product variables to an existing one.
#
# $(1): Product variable to operate on
# $(2): Value to append
#
define inherit-product_append-var
$(eval $(1) := $($(1)) $(INHERIT_TAG)$(strip $(2)))
endef

#
# Internal function. Prepends inherited product variables to an existing one.
#
# $(1): Product variable to operate on
# $(2): Value to prepend
#
define inherit-product_prepend-var
$(eval $(1) := $(INHERIT_TAG)$(strip $(2)) $($(1)))
endef

#
# Internal function. Tracks visited notes during inheritance resolution.
#
# $(1): Product being inherited
#
define inherit-product_track-node
$(eval inherit_var := \
PRODUCTS.$(strip $(word 1,$(_include_stack))).INHERITS_FROM) \
$(eval $(inherit_var) := $(sort $($(inherit_var)) $(strip $(1)))) \
$(eval inherit_var:=) \
$(eval ALL_PRODUCTS := $(sort $(ALL_PRODUCTS) $(word 1,$(_include_stack))))
endef

#
# $(1): product to inherit
#
# Does three things:
# 1. Inherits all of the variables from $1.
# 1. Inherits all of the variables from $1, prioritizing existing settings.
# 2. Records the inheritance in the .INHERITS_FROM variable
# 3. Records that we've visited this node, in ALL_PRODUCTS
#
define inherit-product
$(foreach v,$(_product_var_list), \
$(eval $(v) := $($(v)) $(INHERIT_TAG)$(strip $(1)))) \
$(eval inherit_var := \
PRODUCTS.$(strip $(word 1,$(_include_stack))).INHERITS_FROM) \
$(eval $(inherit_var) := $(sort $($(inherit_var)) $(strip $(1)))) \
$(eval inherit_var:=) \
$(eval ALL_PRODUCTS := $(sort $(ALL_PRODUCTS) $(word 1,$(_include_stack))))
$(call inherit-product_append-var,$(v),$(1))) \
$(call inherit-product_track-node,$(1))
endef

#
# $(1): product to inherit
#
# Does three things:
# 1. Inherits all of the variables from $1, prioritizing inherited settings.
# 2. Records the inheritance in the .INHERITS_FROM variable
# 3. Records that we've visited this node, in ALL_PRODUCTS
#
define prepend-product
$(foreach v,$(_product_var_list), \
$(call inherit-product_prepend-var,$(v),$(1))) \
$(call inherit-product_track-node,$(1))
endef

#
# Do inherit-product only if $(1) exists
Expand All @@ -140,6 +182,13 @@ define inherit-product-if-exists
$(if $(wildcard $(1)),$(call inherit-product,$(1)),)
endef

#
# Do inherit-product-prepend only if $(1) exists
#
define prepend-product-if-exists
$(if $(wildcard $(1)),$(call prepend-product,$(1)),)
endef

#
# $(1): product makefile list
#
Expand Down

0 comments on commit ec9c6b5

Please sign in to comment.