Build modules from source for module products.
This overrides the branch default
(BRANCH_DEFAULT_MODULE_BUILD_FROM_SOURCE) if it is set to use
prebuilts.
Test: build/soong/soong_ui.bash --dumpvar-mode MODULE_BUILD_FROM_SOURCE
returns false with BRANCH_DEFAULT_MODULE_BUILD_FROM_SOURCE:=false
in internal
Test: env TARGET_PRODUCT=module_arm64 \
build/soong/soong_ui.bash --dumpvar-mode MODULE_BUILD_FROM_SOURCE
returns true with BRANCH_DEFAULT_MODULE_BUILD_FROM_SOURCE:=false
in internal
Test: env TARGET_PRODUCT=mainline_modules_x86 \
build/soong/soong_ui.bash --dumpvar-mode MODULE_BUILD_FROM_SOURCE
returns true with BRANCH_DEFAULT_MODULE_BUILD_FROM_SOURCE:=false
in internal
Test: env TARGET_PRODUCT=redfin \
build/soong/soong_ui.bash --dumpvar-mode MODULE_BUILD_FROM_SOURCE
returns false with BRANCH_DEFAULT_MODULE_BUILD_FROM_SOURCE:=false
in internal
Bug: 222723757
Change-Id: I0faea006b0e95eff40bbfbe00cc74ba5985beeba
diff --git a/core/android_soong_config_vars.mk b/core/android_soong_config_vars.mk
index 777aec5..6c32da4 100644
--- a/core/android_soong_config_vars.mk
+++ b/core/android_soong_config_vars.mk
@@ -52,9 +52,9 @@
# However, sdk/win_sdk/sdk_addon builds might not include com.google.android.xxx
# packages, so for those we respect the default behavior.
MODULE_BUILD_FROM_SOURCE := true
-else ifeq (,$(filter-out modules_% mainline_modules_%,$(TARGET_PRODUCT)))
- # Always build from source in unbundled builds using the module targets.
- MODULE_BUILD_FROM_SOURCE := true
+else ifneq (,$(PRODUCT_MODULE_BUILD_FROM_SOURCE))
+ # Let products override the branch default.
+ MODULE_BUILD_FROM_SOURCE := $(PRODUCT_MODULE_BUILD_FROM_SOURCE)
else
MODULE_BUILD_FROM_SOURCE := $(BRANCH_DEFAULT_MODULE_BUILD_FROM_SOURCE)
endif
@@ -64,10 +64,6 @@
else ifneq (,$(findstring .android.art,$(TARGET_BUILD_APPS)))
# Build ART modules from source if they are listed in TARGET_BUILD_APPS.
ART_MODULE_BUILD_FROM_SOURCE := true
-else ifeq (,$(filter-out modules_% mainline_modules_%,$(TARGET_PRODUCT)))
- # Always build from source for the module targets. This ought to be covered by
- # the TARGET_BUILD_APPS check above, but there are test builds that don't set it.
- ART_MODULE_BUILD_FROM_SOURCE := true
else
# Do the same as other modules by default.
ART_MODULE_BUILD_FROM_SOURCE := $(MODULE_BUILD_FROM_SOURCE)
diff --git a/core/product.mk b/core/product.mk
index 4ddc4fe..1f304cd 100644
--- a/core/product.mk
+++ b/core/product.mk
@@ -370,6 +370,10 @@
# "/system/framework/foo.jar" will be "system/framework/foo.jar.fsv_meta".
_product_single_value_vars += PRODUCT_SYSTEM_FSVERITY_GENERATE_METADATA
+# If true, sets the default for MODULE_BUILD_FROM_SOURCE. This overrides
+# BRANCH_DEFAULT_MODULE_BUILD_FROM_SOURCE but not an explicitly set value.
+_product_single_value_vars += PRODUCT_MODULE_BUILD_FROM_SOURCE
+
.KATI_READONLY := _product_single_value_vars _product_list_vars
_product_var_list :=$= $(_product_single_value_vars) $(_product_list_vars)