From 0106560e34c3dd0044a2e269189b14f0f573cd94 Mon Sep 17 00:00:00 2001 From: Juan Yescas Date: Wed, 9 Aug 2023 08:34:37 -0700 Subject: [PATCH] soong: Add product variable DevicePageSizeAgnostic The product variable DevicePageSizeAgnostic will determine whether AOSP is kernel page size agnostic or not. Test: source build/envsetup.sh lunch aosp_cf_arm64_phone_pgagnostic m cat out/soong/build.aosp_cf_arm64_phone_pgagnostic.ninja | grep __BIONIC_NO_PAGE_SIZE_MACRO Bug: 289419664 Change-Id: I33a1a4f1967d7e78432b7b8d90357d16b2002dcc --- android/config.go | 6 ++++++ android/variable.go | 8 ++------ bp2build/bp2build_product_config.go | 2 +- cc/config/arm64_device.go | 10 +++++++++- 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/android/config.go b/android/config.go index eb894932f..efc977b01 100644 --- a/android/config.go +++ b/android/config.go @@ -190,6 +190,12 @@ func (c Config) MaxPageSizeSupported() string { return String(c.config.productVariables.DeviceMaxPageSizeSupported) } +// PageSizeAgnostic returns true when AOSP is page size agnostic, +// othersise it returns false. +func (c Config) PageSizeAgnostic() bool { + return Bool(c.config.productVariables.DevicePageSizeAgnostic) +} + // The release version passed to aconfig, derived from RELEASE_VERSION func (c Config) ReleaseVersion() string { return c.config.productVariables.ReleaseVersion diff --git a/android/variable.go b/android/variable.go index 03a80c161..d59e36718 100644 --- a/android/variable.go +++ b/android/variable.go @@ -95,10 +95,6 @@ type variableProperties struct { Cflags []string } - Device_page_size_agnostic struct { - Cflags []string `android:"arch_variant"` - } `android:"arch_variant"` - Override_rs_driver struct { Cflags []string } @@ -232,6 +228,7 @@ type ProductVariables struct { DeviceCurrentApiLevelForVendorModules *string `json:",omitempty"` DeviceSystemSdkVersions []string `json:",omitempty"` DeviceMaxPageSizeSupported *string `json:",omitempty"` + DevicePageSizeAgnostic *bool `json:",omitempty"` RecoverySnapshotVersion *string `json:",omitempty"` @@ -287,7 +284,6 @@ type ProductVariables struct { Safestack *bool `json:",omitempty"` HostStaticBinaries *bool `json:",omitempty"` Binder32bit *bool `json:",omitempty"` - Device_page_size_agnostic *bool `json:",omitempty"` UseGoma *bool `json:",omitempty"` UseRBE *bool `json:",omitempty"` UseRBEJAVAC *bool `json:",omitempty"` @@ -532,6 +528,7 @@ func (v *ProductVariables) SetDefaultConfig() { DeviceSecondaryCpuVariant: stringPtr("generic"), DeviceSecondaryAbi: []string{"armeabi-v7a", "armeabi"}, DeviceMaxPageSizeSupported: stringPtr("4096"), + DevicePageSizeAgnostic: boolPtr(false), AAPTConfig: []string{"normal", "large", "xlarge", "hdpi", "xhdpi", "xxhdpi"}, AAPTPreferredConfig: stringPtr("xhdpi"), @@ -544,7 +541,6 @@ func (v *ProductVariables) SetDefaultConfig() { Safestack: boolPtr(false), TrimmedApex: boolPtr(false), Build_from_text_stub: boolPtr(false), - Device_page_size_agnostic: boolPtr(false), BootJars: ConfiguredJarList{apexes: []string{}, jars: []string{}}, ApexBootJars: ConfiguredJarList{apexes: []string{}, jars: []string{}}, diff --git a/bp2build/bp2build_product_config.go b/bp2build/bp2build_product_config.go index 12a9b15ef..e8c2ef7e0 100644 --- a/bp2build/bp2build_product_config.go +++ b/bp2build/bp2build_product_config.go @@ -256,7 +256,7 @@ func platformMappingSingleProduct( result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:device_abi=%s\n", strings.Join(productVariables.DeviceAbi, ","))) result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:device_max_page_size_supported=%s\n", proptools.String(productVariables.DeviceMaxPageSizeSupported))) result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:device_name=%s\n", proptools.String(productVariables.DeviceName))) - result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:device_page_size_agnostic=%t\n", proptools.Bool(productVariables.Device_page_size_agnostic))) + result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:device_page_size_agnostic=%t\n", proptools.Bool(productVariables.DevicePageSizeAgnostic))) result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:device_product=%s\n", proptools.String(productVariables.DeviceProduct))) result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:enable_cfi=%t\n", proptools.BoolDefault(productVariables.EnableCFI, true))) result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:enforce_vintf_manifest=%t\n", proptools.Bool(productVariables.Enforce_vintf_manifest))) diff --git a/cc/config/arm64_device.go b/cc/config/arm64_device.go index ca2e05fc3..12722a7de 100644 --- a/cc/config/arm64_device.go +++ b/cc/config/arm64_device.go @@ -100,7 +100,15 @@ func init() { return strings.Join(flags, " ") }) - exportedVars.ExportStringListStaticVariable("Arm64Cflags", arm64Cflags) + exportedVars.ExportStringList("Arm64Cflags", arm64Cflags) + pctx.VariableFunc("Arm64Cflags", func(ctx android.PackageVarContext) string { + flags := arm64Cflags + if ctx.Config().PageSizeAgnostic() { + flags = append(flags, "-D__BIONIC_NO_PAGE_SIZE_MACRO") + } + return strings.Join(flags, " ") + }) + exportedVars.ExportStringListStaticVariable("Arm64Cppflags", arm64Cppflags) exportedVars.ExportVariableReferenceDict("Arm64ArchVariantCflags", arm64ArchVariantCflagsVar)