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

Commit b7ee86ff authored by Anton Hansson's avatar Anton Hansson
Browse files

Refactor and further simplify the RRO logic

Make the runtime vs static resource overlays a little clearer.
This will help adding more logic around determining if an RRO
needs to be generated in /vendor, /product or both.

Bug: 127758779
Test: verify noop on presubmit targets
Change-Id: I43111a1d9bb3405c559faaef56a75a5ad7672ba0
parent fd06b02b
Loading
Loading
Loading
Loading
+42 −43
Original line number Diff line number Diff line
@@ -109,14 +109,8 @@ include $(BUILD_SYSTEM)/force_aapt2.mk
# Process Support Library dependencies.
include $(BUILD_SYSTEM)/support_libraries.mk

package_resource_overlays := $(strip \
    $(wildcard $(foreach dir, $(PRODUCT_PACKAGE_OVERLAYS), \
      $(addprefix $(dir)/, $(LOCAL_RESOURCE_DIR)))) \
    $(wildcard $(foreach dir, $(DEVICE_PACKAGE_OVERLAYS), \
      $(addprefix $(dir)/, $(LOCAL_RESOURCE_DIR)))))

# Determine whether auto-RRO is enabled for this package.
enforce_rro_enabled :=
ifneq ($(package_resource_overlays),)
ifeq ($(PRODUCT_ENFORCE_RRO_TARGETS),*)
  # * means all system APKs, so enable conditionally based on module path.

@@ -137,23 +131,28 @@ ifneq ($(package_resource_overlays),)
else ifneq (,$(filter $(LOCAL_PACKAGE_NAME), $(PRODUCT_ENFORCE_RRO_TARGETS)))
  enforce_rro_enabled := true
endif
endif

all_package_resource_overlays := $(strip \
    $(wildcard $(foreach dir, $(PRODUCT_PACKAGE_OVERLAYS), \
      $(addprefix $(dir)/, $(LOCAL_RESOURCE_DIR)))) \
    $(wildcard $(foreach dir, $(DEVICE_PACKAGE_OVERLAYS), \
      $(addprefix $(dir)/, $(LOCAL_RESOURCE_DIR)))))

static_resource_overlays :=
runtime_resource_overlays :=
ifdef enforce_rro_enabled
  ifneq ($(PRODUCT_ENFORCE_RRO_EXCLUDED_OVERLAYS),)
    static_only_resource_overlays := $(filter $(addsuffix %,$(PRODUCT_ENFORCE_RRO_EXCLUDED_OVERLAYS)),$(package_resource_overlays))
    ifneq ($(static_only_resource_overlays),)
      package_resource_overlays := $(filter-out $(static_only_resource_overlays),$(package_resource_overlays))
      LOCAL_RESOURCE_DIR := $(static_only_resource_overlays) $(LOCAL_RESOURCE_DIR)
      ifeq ($(package_resource_overlays),)
        enforce_rro_enabled :=
      endif
    endif
    static_resource_overlays += $(filter $(addsuffix %,$(PRODUCT_ENFORCE_RRO_EXCLUDED_OVERLAYS)),$(all_package_resource_overlays))
  endif
  runtime_resource_overlays := $(filter-out $(static_resource_overlays),$(all_package_resource_overlays))
else
  LOCAL_RESOURCE_DIR := $(package_resource_overlays) $(LOCAL_RESOURCE_DIR)
  static_resource_overlays := $(all_package_resource_overlays)
endif

# Add the static overlays. Auto-RRO is created later, as it depends on
# other logic in this file.
LOCAL_RESOURCE_DIR := $(static_resource_overlays) $(LOCAL_RESOURCE_DIR)

all_assets := $(strip \
    $(foreach dir, $(LOCAL_ASSET_DIR), \
      $(addprefix $(dir)/, \
@@ -784,7 +783,7 @@ endif # skip_definition
# Reset internal variables.
all_res_assets :=

ifdef enforce_rro_enabled
ifdef runtime_resource_overlays
  ifdef LOCAL_EXPORT_PACKAGE_RESOURCES
    enforce_rro_use_res_lib := true
  else
@@ -804,6 +803,6 @@ $(call append_enforce_rro_sources, \
      $(enforce_rro_is_manifest_package_name), \
      $(enforce_rro_manifest_package_info), \
      $(enforce_rro_use_res_lib), \
    $(package_resource_overlays) \
      $(runtime_resource_overlays) \
  )
endif  # enforce_rro_enabled
endif