diff options
author | 2022-01-12 17:28:39 +0000 | |
---|---|---|
committer | 2022-01-17 19:07:07 +0000 | |
commit | 07a1295cfa31271803e7e57b465b5a5178a9b093 (patch) | |
tree | 2f813c35dcd5824b22a84d9f63036ac2942af68b /api/api.go | |
parent | cc18e03e440124cc084f72ce7217b631d034333b (diff) |
Temporarily add support for conditional modules
Some bootclasspath libraries are currently conditionally included
in the SDK. Add support for that in api.go.
Bug: 169103987
Test: mmm frameworks/base/api
Merged-In: I7704a884675eb58c429a59f99a663cf09807ecec
Change-Id: I7704a884675eb58c429a59f99a663cf09807ecec
Diffstat (limited to 'api/api.go')
-rw-r--r-- | api/api.go | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/api/api.go b/api/api.go index a61d5c2c3497..6cc129a360fd 100644 --- a/api/api.go +++ b/api/api.go @@ -15,6 +15,8 @@ package api import ( + "sort" + "github.com/google/blueprint/proptools" "android/soong/android" @@ -32,6 +34,8 @@ import ( type CombinedApisProperties struct { // Module libraries in the bootclasspath Bootclasspath []string + // Module libraries on the bootclasspath if include_nonpublic_framework_api is true. + Conditional_bootclasspath []string // Module libraries in system server System_server_classpath []string } @@ -169,10 +173,10 @@ func remove(s []string, v string) []string { return s2 } -func createMergedTxts(ctx android.LoadHookContext, props CombinedApisProperties) { +func createMergedTxts(ctx android.LoadHookContext, bootclasspath, system_server_classpath []string) { var textFiles []MergedTxtDefinition // Two module libraries currently do not support @SystemApi so only have the public scope. - bcpWithSystemApi := props.Bootclasspath + bcpWithSystemApi := bootclasspath bcpWithSystemApi = remove(bcpWithSystemApi, "conscrypt.module.public.api") bcpWithSystemApi = remove(bcpWithSystemApi, "i18n.module.public.api") @@ -181,7 +185,7 @@ func createMergedTxts(ctx android.LoadHookContext, props CombinedApisProperties) textFiles = append(textFiles, MergedTxtDefinition{ TxtFilename: f, BaseTxt: ":non-updatable-" + f, - Modules: props.Bootclasspath, + Modules: bootclasspath, ModuleTag: "{.public" + tagSuffix[i], Scope: "public", }) @@ -202,7 +206,7 @@ func createMergedTxts(ctx android.LoadHookContext, props CombinedApisProperties) textFiles = append(textFiles, MergedTxtDefinition{ TxtFilename: f, BaseTxt: ":non-updatable-system-server-" + f, - Modules: props.System_server_classpath, + Modules: system_server_classpath, ModuleTag: "{.system-server" + tagSuffix[i], Scope: "system-server", }) @@ -213,12 +217,17 @@ func createMergedTxts(ctx android.LoadHookContext, props CombinedApisProperties) } func (a *CombinedApis) createInternalModules(ctx android.LoadHookContext) { - createMergedTxts(ctx, a.properties) + bootclasspath := a.properties.Bootclasspath + if ctx.Config().VendorConfig("ANDROID").Bool("include_nonpublic_framework_api") { + bootclasspath = append(bootclasspath, a.properties.Conditional_bootclasspath...) + sort.Strings(bootclasspath) + } + createMergedTxts(ctx, bootclasspath, a.properties.System_server_classpath) - createMergedStubsSrcjar(ctx, a.properties.Bootclasspath) + createMergedStubsSrcjar(ctx, bootclasspath) // Conscrypt and i18n currently do not enable annotations - annotationModules := a.properties.Bootclasspath + annotationModules := bootclasspath annotationModules = remove(annotationModules, "conscrypt.module.public.api") annotationModules = remove(annotationModules, "i18n.module.public.api") createMergedAnnotations(ctx, annotationModules) @@ -230,7 +239,7 @@ func (a *CombinedApis) createInternalModules(ctx android.LoadHookContext) { // 3) It's a compromise. Ideally we wouldn't be filtering out any module APIs, and have // per-module lint databases that excludes just that module's APIs. Alas, that's more // difficult to achieve. - filteredModules := a.properties.Bootclasspath + filteredModules := bootclasspath filteredModules = remove(filteredModules, "art.module.public.api") createFilteredApiVersions(ctx, filteredModules) } |