summaryrefslogtreecommitdiff
path: root/aconfig
diff options
context:
space:
mode:
author Todd Lee <leetodd@google.com> 2025-01-29 22:14:53 +0000
committer Todd Lee <leetodd@google.com> 2025-01-30 14:45:26 +0000
commitc73d7b49a736f6e5e8660d5ffdcb27149031342f (patch)
treed9635afd19ae1f908e2295e36d4cbbf960d8f296 /aconfig
parentef57be9922faf3d4238e104d42fab559db5b5564 (diff)
Update all_aconfig_declarations for multiple API surfaces
Bug: b/391344176 Test: presubmits Flag: NONE exempt Ignore-AOSP-First: Contains non-AOSP specifics (wear) will cp Change-Id: I169b0ad63c4a5c92f3906f40c0924cf7e62c67e8
Diffstat (limited to 'aconfig')
-rw-r--r--aconfig/Android.bp31
-rw-r--r--aconfig/all_aconfig_declarations.go37
2 files changed, 46 insertions, 22 deletions
diff --git a/aconfig/Android.bp b/aconfig/Android.bp
index 6daa63c55..e8f7616d4 100644
--- a/aconfig/Android.bp
+++ b/aconfig/Android.bp
@@ -34,17 +34,22 @@ bootstrap_go_package {
// but other verticals/platforms can override via soong config setting.
all_aconfig_declarations {
name: "all_aconfig_declarations",
- api_signature_files: select(soong_config_variable("android_aconfig", "opt_platform_api_srcs"), {
- "wear_sdk_api_srcs": [
- ":wear-sdk-api-current.txt",
- ":wear-sdk-api-system-current.txt",
- ],
- default: [
- ":frameworks-base-api-current.txt",
- ":frameworks-base-api-system-current.txt",
- ":frameworks-base-api-system-server-current.txt",
- ":frameworks-base-api-module-lib-current.txt",
- ],
- }),
- finalized_flags_file: ":latest-finalized-flags",
+ api_surfaces: {
+ platform: {
+ api_signature_files: [
+ ":frameworks-base-api-current.txt",
+ ":frameworks-base-api-system-current.txt",
+ ":frameworks-base-api-system-server-current.txt",
+ ":frameworks-base-api-module-lib-current.txt",
+ ],
+ finalized_flags_file: ":latest-finalized-flags",
+ },
+ wear: {
+ api_signature_files: [
+ ":wear-sdk-api-current.txt",
+ ":wear-sdk-api-system-current.txt",
+ ],
+ finalized_flags_file: ":latest-finalized-wear-flags",
+ },
+ },
}
diff --git a/aconfig/all_aconfig_declarations.go b/aconfig/all_aconfig_declarations.go
index ec200997e..6f6a11e9c 100644
--- a/aconfig/all_aconfig_declarations.go
+++ b/aconfig/all_aconfig_declarations.go
@@ -19,8 +19,6 @@ import (
"slices"
"android/soong/android"
-
- "github.com/google/blueprint/proptools"
)
// A singleton module that collects all of the aconfig flags declared in the
@@ -42,9 +40,18 @@ type allAconfigReleaseDeclarationsSingleton struct {
intermediateTextProtoPath android.OutputPath
}
+type apiSurfaceContributorStruct struct {
+ Api_signature_files []string `android:"arch_variant,path"`
+ Finalized_flags_file string `android:"arch_variant,path"`
+}
+
+type apiSurfacesStruct struct {
+ Platform apiSurfaceContributorStruct
+ Wear apiSurfaceContributorStruct
+}
+
type allAconfigReleaseDeclarationsProperties struct {
- Api_signature_files proptools.Configurable[[]string] `android:"arch_variant,path"`
- Finalized_flags_file string `android:"arch_variant,path"`
+ Api_surfaces apiSurfacesStruct
}
type allAconfigDeclarationsSingleton struct {
@@ -64,16 +71,26 @@ func (this *allAconfigDeclarationsSingleton) sortedConfigNames() []string {
}
func (this *allAconfigDeclarationsSingleton) GenerateAndroidBuildActions(ctx android.ModuleContext) {
+ // PLATFORM API surface (android platform: API surface provided via android.jar)
+ platformOutput := this.GenerateFinalizedFlagsForApiSurfaces(ctx, this.properties.Api_surfaces.Platform, "platform")
+ // WEAR API surface (wear-os platform: API surface provided via wear-sdk.jar)
+ wearOutput := this.GenerateFinalizedFlagsForApiSurfaces(ctx, this.properties.Api_surfaces.Wear, "wear")
+
+ ctx.Phony("all_aconfig_declarations", platformOutput, wearOutput)
+}
+
+func (this *allAconfigDeclarationsSingleton) GenerateFinalizedFlagsForApiSurfaces(ctx android.ModuleContext, apiSurface apiSurfaceContributorStruct, surfaceName string) android.Path {
apiSignatureFiles := android.Paths{}
- for _, apiSignatureFile := range this.properties.Api_signature_files.GetOrDefault(ctx, nil) {
+ for _, apiSignatureFile := range apiSurface.Api_signature_files {
if path := android.PathForModuleSrc(ctx, apiSignatureFile); path != nil {
apiSignatureFiles = append(apiSignatureFiles, path)
}
}
- finalizedFlagsFile := android.PathForModuleSrc(ctx, this.properties.Finalized_flags_file)
+ finalizedFlagsFile := android.PathForModuleSrc(ctx, apiSurface.Finalized_flags_file)
+ // parsed flags file is a universal blob, used by all API surfaces (contains all known flags)
parsedFlagsFile := android.PathForIntermediates(ctx, "all_aconfig_declarations.pb")
- output := android.PathForIntermediates(ctx, "finalized-flags.txt")
+ output := android.PathForIntermediates(ctx, "finalized-flags-"+surfaceName+".txt")
ctx.Build(pctx, android.BuildParams{
Rule: RecordFinalizedFlagsRule,
@@ -85,7 +102,8 @@ func (this *allAconfigDeclarationsSingleton) GenerateAndroidBuildActions(ctx and
"parsed_flags_file": "--parsed-flags-file " + parsedFlagsFile.String(),
},
})
- ctx.Phony("all_aconfig_declarations", output)
+
+ return output
}
func (this *allAconfigDeclarationsSingleton) GenerateSingletonBuildActions(ctx android.SingletonContext) {
@@ -154,5 +172,6 @@ func (this *allAconfigDeclarationsSingleton) MakeVars(ctx android.MakeVarsContex
ctx.DistForGoalWithFilename(goal, this.releaseMap[rcName].intermediateTextProtoPath, assembleFileName(rcName, "flags.textproto"))
}
}
- ctx.DistForGoalWithFilename("sdk", android.PathForIntermediates(ctx, "finalized-flags.txt"), "finalized-flags.txt")
+ ctx.DistForGoalWithFilename("sdk", android.PathForIntermediates(ctx, "finalized-flags-platform.txt"), "finalized-flags.txt")
+ ctx.DistForGoalWithFilename("sdk", android.PathForIntermediates(ctx, "finalized-flags-wear.txt"), "apistubs/clockwork/finalized-flags.txt")
}