diff options
Diffstat (limited to 'api/api.go')
-rw-r--r-- | api/api.go | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/api/api.go b/api/api.go index 14fe09ee36da..3b0e300c88f3 100644 --- a/api/api.go +++ b/api/api.go @@ -21,6 +21,7 @@ import ( "android/soong/android" "android/soong/genrule" + "android/soong/java" ) const art = "art.module.public.api" @@ -73,6 +74,13 @@ type genruleProps struct { Visibility []string } +type libraryProps struct { + Name *string + Sdk_version *string + Static_libs []string + Visibility []string +} + // Struct to pass parameters for the various merged [current|removed].txt file modules we create. type MergedTxtDefinition struct { // "current.txt" or "removed.txt" @@ -169,6 +177,25 @@ func createFilteredApiVersions(ctx android.LoadHookContext, modules []string) { ctx.CreateModule(genrule.GenRuleFactory, &props) } +func createMergedModuleLibStubs(ctx android.LoadHookContext, modules []string) { + // The user of this module compiles against the "core" SDK, so remove core libraries to avoid dupes. + modules = removeAll(modules, []string{art, conscrypt, i18n}) + props := libraryProps{} + props.Name = proptools.StringPtr("framework-updatable-stubs-module_libs_api") + props.Static_libs = appendStr(modules, ".stubs.module_lib") + props.Sdk_version = proptools.StringPtr("module_current") + props.Visibility = []string{"//frameworks/base"} + ctx.CreateModule(java.LibraryFactory, &props) +} + +func appendStr(modules []string, s string) []string { + a := make([]string, 0, len(modules)) + for _, module := range modules { + a = append(a, module+s) + } + return a +} + func createSrcs(base string, modules []string, tag string) []string { a := make([]string, 0, len(modules)+1) a = append(a, base) @@ -246,6 +273,8 @@ func (a *CombinedApis) createInternalModules(ctx android.LoadHookContext) { createMergedStubsSrcjar(ctx, bootclasspath) + createMergedModuleLibStubs(ctx, bootclasspath) + createMergedAnnotations(ctx, bootclasspath) createFilteredApiVersions(ctx, bootclasspath) |