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
diff --git a/api/api.go b/api/api.go
index a61d5c2..6cc129a 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 @@
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 @@
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 @@
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 @@
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 (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 @@
// 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)
}