Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2f1bd70c authored by Cole Faust's avatar Cole Faust Committed by Gerrit Code Review
Browse files

Merge "Make starlark board configuration work with sdk_phone_x86_64"

parents fdb8f17a 985fa48a
Loading
Loading
Loading
Loading
+30 −5
Original line number Diff line number Diff line
@@ -185,19 +185,44 @@ else
  .KATI_READONLY := TARGET_DEVICE_DIR
endif

# Dumps all variables that match [A-Z][A-Z0-9_]* to the file at $(1)
# It is used to print only the variables that are likely to be relevant to the
# board configuration.
define dump-public-variables
$(file >$(OUT_DIR)/dump-public-variables-temp.txt,$(subst $(space),$(newline),$(.VARIABLES)))\
$(file >$(1),\
$(foreach v, $(shell grep -he "^[A-Z][A-Z0-9_]*$$" $(OUT_DIR)/dump-public-variables-temp.txt | grep -vhe "^SOONG_"),\
$(v) := $(strip $($(v)))$(newline)))
endef

# TODO(colefaust) change this if to RBC_PRODUCT_CONFIG when
# the board configuration is known to work on everything
# the product config works on.
ifndef RBC_BOARD_CONFIG
include $(board_config_mk)
else
  rc := $(shell build/soong/scripts/rbc-run $(board_config_mk) \
      BUILDING_GSI=$(BUILDING_GSI) >$(OUT_DIR)/rbcboardtemp.mk || echo $$?)
  ifneq (,$(rc))
    $(error board configuration converter failed: $(rc))
  $(shell mkdir -p $(OUT_DIR)/rbc)

  $(call dump-public-variables, $(OUT_DIR)/rbc/make_vars_pre_board_config.mk)

  $(shell $(OUT_DIR)/soong/mk2rbc \
    --mode=write -r --outdir $(OUT_DIR)/rbc \
    --boardlauncher=$(OUT_DIR)/rbc/boardlauncher.rbc \
    --input_variables=$(OUT_DIR)/rbc/make_vars_pre_board_config.mk \
    $(board_config_mk))
  ifneq ($(.SHELLSTATUS),0)
    $(error board configuration converter failed: $(.SHELLSTATUS))
  endif

  $(shell $(OUT_DIR)/soong/rbcrun \
    RBC_OUT="make,global" \
    $(OUT_DIR)/rbc/boardlauncher.rbc \
    >$(OUT_DIR)/rbc/rbc_board_config_results.mk)
  ifneq ($(.SHELLSTATUS),0)
    $(error board configuration runner failed: $(.SHELLSTATUS))
  endif

  include $(OUT_DIR)/rbcboardtemp.mk
  include $(OUT_DIR)/rbc/rbc_board_config_results.mk
endif

ifneq (,$(and $(TARGET_ARCH),$(TARGET_ARCH_SUITE)))
+1 −1
Original line number Diff line number Diff line
@@ -1379,7 +1379,7 @@ else ifdef FULL_BUILD

  # Verify the artifact path requirements made by included products.
  is_asan := $(if $(filter address,$(SANITIZE_TARGET)),true)
  ifeq (,$(or $(is_asan),$(DISABLE_ARTIFACT_PATH_REQUIREMENTS),$(RBC_PRODUCT_CONFIG)))
  ifeq (,$(or $(is_asan),$(DISABLE_ARTIFACT_PATH_REQUIREMENTS),$(RBC_PRODUCT_CONFIG),$(RBC_BOARD_CONFIG)))
    include $(BUILD_SYSTEM)/artifact_path_requirements.mk
  endif
else
+3 −3
Original line number Diff line number Diff line
@@ -81,7 +81,7 @@ $(products_graph): PRIVATE_PRODUCTS := $(all_products)
$(products_graph): PRIVATE_PRODUCTS_FILTER := $(products_list)

$(products_graph): $(this_makefile)
ifeq (,$(RBC_PRODUCT_CONFIG)$(RBC_NO_PRODUCT_GRAPH))
ifeq (,$(RBC_PRODUCT_CONFIG)$(RBC_NO_PRODUCT_GRAPH)$(RBC_BOARD_CONFIG))
	@echo Product graph DOT: $@ for $(PRIVATE_PRODUCTS_FILTER)
	$(hide) echo 'digraph {' > $@.in
	$(hide) echo 'graph [ ratio=.5 ];' >> $@.in
@@ -148,7 +148,7 @@ $(call product-debug-filename, $(p)): \
	$(hide) cat $$< | build/make/tools/product_debug.py > $$@
endef

ifeq (,$(RBC_PRODUCT_CONFIG)$(RBC_NO_PRODUCT_GRAPH))
ifeq (,$(RBC_PRODUCT_CONFIG)$(RBC_NO_PRODUCT_GRAPH)$(RBC_BOARD_CONFIG))
product_debug_files:=
$(foreach p,$(all_products), \
			$(eval $(call transform-product-debug, $(p))) \
+4 −4
Original line number Diff line number Diff line
@@ -206,10 +206,10 @@ endif
ifndef RBC_PRODUCT_CONFIG
$(call import-products, $(current_product_makefile))
else
  rc := $(shell build/soong/scripts/rbc-run $(current_product_makefile) \
      >$(OUT_DIR)/rbctemp.mk || echo $$?)
  ifneq (,$(rc))
    $(error product configuration converter failed: $(rc))
  $(shell build/soong/scripts/rbc-run $(current_product_makefile) \
      >$(OUT_DIR)/rbctemp.mk)
  ifneq ($(.SHELLSTATUS),0)
    $(error product configuration converter failed: $(.SHELLSTATUS))
  endif
  include $(OUT_DIR)/rbctemp.mk
  PRODUCTS += $(current_product_makefile)
+35 −19
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@ load("//build/make/core:envsetup.rbc", _envsetup_init = "init")
"""Runtime functions."""

_soong_config_namespaces_key = "$SOONG_CONFIG_NAMESPACES"
def _global_init(version_info):
def _init_globals(version_info):
    """Returns dict created from the runtime environment."""
    globals = dict()

@@ -50,7 +50,8 @@ def _global_init(version_info):


def __print_attr(attr, value):
    if not value:
    # Allow using empty strings to clear variables, but not None values
    if value == None:
        return
    if type(value) == "list":
        if _options.rearrange:
@@ -74,6 +75,9 @@ def _printvars(state):
        __print_attr(attr, val)
    if _options.print_globals:
        print()
        _printglobals(globals, globals_base)

def _printglobals(globals, globals_base):
    for attr, val in sorted(globals.items()):
        if attr == _soong_config_namespaces_key:
            __print_attr("SOONG_CONFIG_NAMESPACES", val.keys())
@@ -109,7 +113,7 @@ def _product_configuration(top_pcm_name, top_pcm, version_info):
    # PCM means "Product Configuration Module", i.e., a Starlark file
    # whose body consists of a single init function.

    globals_base = _global_init(version_info)
    globals_base = _init_globals(version_info)
    globals = dict(**globals_base)

    config_postfix = []  # Configs in postfix order
@@ -203,6 +207,16 @@ def _product_configuration(top_pcm_name, top_pcm, version_info):

    return (globals, configs[top_pcm_name][1], globals_base)


def _board_configuration(board_config_init, input_variables_init):
    globals = {}
    h = __h_new()
    input_variables_init(globals, h)
    globals_base = dict(**globals)
    board_config_init(globals, h)
    return (globals, h[1], globals_base)


def _substitute_inherited(configs, pcm_name, cfg):
    """Substitutes inherited values in all the attributes.

@@ -645,7 +659,7 @@ rblf = struct(
    filter = _filter,
    filter_out = _filter_out,
    find_and_copy = _find_and_copy,
    global_init = _global_init,
    init_globals = _init_globals,
    inherit = _inherit,
    indirect = _indirect,
    mkinfo = _mkinfo,
@@ -655,7 +669,9 @@ rblf = struct(
    mkstrip = _mkstrip,
    mksubst = _mksubst,
    printvars = _printvars,
    printglobals = _printglobals,
    product_configuration = _product_configuration,
    board_configuration = _board_configuration,
    product_copy_files_by_pattern = _product_copy_files_by_pattern,
    require_artifacts_in_path = _require_artifacts_in_path,
    require_artifacts_in_path_relaxed = _require_artifacts_in_path_relaxed,