Loading java/droiddoc.go +10 −1 Original line number Diff line number Diff line Loading @@ -351,11 +351,16 @@ type ApiFilePath interface { ApiFilePath() android.Path } type ApiStubsSrcProvider interface { StubsSrcJar() android.Path } // Provider of information about API stubs, used by java_sdk_library. type ApiStubsProvider interface { ApiFilePath RemovedApiFilePath() android.Path StubsSrcJar() android.Path ApiStubsSrcProvider } // Loading Loading @@ -1932,6 +1937,10 @@ func (p *PrebuiltStubsSources) OutputFiles(tag string) (android.Paths, error) { } } func (d *PrebuiltStubsSources) StubsSrcJar() android.Path { return d.stubsSrcJar } func (p *PrebuiltStubsSources) GenerateAndroidBuildActions(ctx android.ModuleContext) { p.stubsSrcJar = android.PathForModuleOut(ctx, ctx.ModuleName()+"-"+"stubs.srcjar") Loading java/java_test.go +1 −0 Original line number Diff line number Diff line Loading @@ -575,6 +575,7 @@ func TestJavaSdkLibraryImport(t *testing.T) { }, test: { jars: ["c.jar"], stub_srcs: ["c.java"], }, } `) Loading java/sdk_library.go +70 −23 Original line number Diff line number Diff line Loading @@ -433,12 +433,30 @@ type sdkLibraryProperties struct { //Html_doc *bool } // Paths to outputs from java_sdk_library and java_sdk_library_import. // // Fields that are android.Paths are always set (during GenerateAndroidBuildActions). // OptionalPaths are always set by java_sdk_library but may not be set by // java_sdk_library_import as not all instances provide that information. type scopePaths struct { // The path (represented as Paths for convenience when returning) to the stubs header jar. // // That is the jar that is created by turbine. stubsHeaderPath android.Paths // The path (represented as Paths for convenience when returning) to the stubs implementation jar. // // This is not the implementation jar, it still only contains stubs. stubsImplPath android.Paths currentApiFilePath android.Path removedApiFilePath android.Path stubsSrcJar android.Path // The API specification file, e.g. system_current.txt. currentApiFilePath android.OptionalPath // The specification of API elements removed since the last release. removedApiFilePath android.OptionalPath // The stubs source jar. stubsSrcJar android.OptionalPath } func (paths *scopePaths) extractStubsLibraryInfoFromDependency(dep android.Module) error { Loading @@ -460,9 +478,18 @@ func (paths *scopePaths) treatDepAsApiStubsProvider(dep android.Module, action f } } func (paths *scopePaths) treatDepAsApiStubsSrcProvider(dep android.Module, action func(provider ApiStubsSrcProvider)) error { if apiStubsProvider, ok := dep.(ApiStubsSrcProvider); ok { action(apiStubsProvider) return nil } else { return fmt.Errorf("expected module that implements ApiStubsSrcProvider, e.g. droidstubs") } } func (paths *scopePaths) extractApiInfoFromApiStubsProvider(provider ApiStubsProvider) { paths.currentApiFilePath = provider.ApiFilePath() paths.removedApiFilePath = provider.RemovedApiFilePath() paths.currentApiFilePath = android.OptionalPathForPath(provider.ApiFilePath()) paths.removedApiFilePath = android.OptionalPathForPath(provider.RemovedApiFilePath()) } func (paths *scopePaths) extractApiInfoFromDep(dep android.Module) error { Loading @@ -471,12 +498,12 @@ func (paths *scopePaths) extractApiInfoFromDep(dep android.Module) error { }) } func (paths *scopePaths) extractStubsSourceInfoFromApiStubsProviders(provider ApiStubsProvider) { paths.stubsSrcJar = provider.StubsSrcJar() func (paths *scopePaths) extractStubsSourceInfoFromApiStubsProviders(provider ApiStubsSrcProvider) { paths.stubsSrcJar = android.OptionalPathForPath(provider.StubsSrcJar()) } func (paths *scopePaths) extractStubsSourceInfoFromDep(dep android.Module) error { return paths.treatDepAsApiStubsProvider(dep, func(provider ApiStubsProvider) { return paths.treatDepAsApiStubsSrcProvider(dep, func(provider ApiStubsSrcProvider) { paths.extractStubsSourceInfoFromApiStubsProviders(provider) }) } Loading Loading @@ -1314,10 +1341,10 @@ type sdkLibraryScopeProperties struct { Stub_srcs []string `android:"path"` // The current.txt Current_api string `android:"path"` Current_api *string `android:"path"` // The removed.txt Removed_api string `android:"path"` Removed_api *string `android:"path"` } type sdkLibraryImportProperties struct { Loading Loading @@ -1427,8 +1454,10 @@ func (module *sdkLibraryImport) createInternalModules(mctx android.DefaultableHo module.createJavaImportForStubs(mctx, apiScope, scopeProperties) if len(scopeProperties.Stub_srcs) > 0 { module.createPrebuiltStubsSources(mctx, apiScope, scopeProperties) } } javaSdkLibraries := javaSdkLibraries(mctx.Config()) javaSdkLibrariesLock.Lock() Loading Loading @@ -1479,22 +1508,40 @@ func (module *sdkLibraryImport) DepsMutator(ctx android.BottomUpMutatorContext) // Add dependencies to the prebuilt stubs library ctx.AddVariationDependencies(nil, apiScope.stubsTag, module.stubsLibraryModuleName(apiScope)) if len(scopeProperties.Stub_srcs) > 0 { // Add dependencies to the prebuilt stubs source library ctx.AddVariationDependencies(nil, apiScope.stubsSourceTag, module.stubsSourceModuleName(apiScope)) } } } func (module *sdkLibraryImport) GenerateAndroidBuildActions(ctx android.ModuleContext) { // Record the paths to the prebuilt stubs library. // Record the paths to the prebuilt stubs library and stubs source. ctx.VisitDirectDeps(func(to android.Module) { tag := ctx.OtherModuleDependencyTag(to) if lib, ok := to.(Dependency); ok { // Extract information from any of the scope specific dependencies. if scopeTag, ok := tag.(scopeDependencyTag); ok { apiScope := scopeTag.apiScope scopePaths := module.getScopePathsCreateIfNeeded(apiScope) scopePaths.stubsHeaderPath = lib.HeaderJars() } // Extract information from the dependency. The exact information extracted // is determined by the nature of the dependency which is determined by the tag. scopeTag.extractDepInfo(ctx, to, scopePaths) } }) // Populate the scope paths with information from the properties. for apiScope, scopeProperties := range module.scopeProperties { if len(scopeProperties.Jars) == 0 { continue } paths := module.getScopePathsCreateIfNeeded(apiScope) paths.currentApiFilePath = android.OptionalPathForModuleSrc(ctx, scopeProperties.Current_api) paths.removedApiFilePath = android.OptionalPathForModuleSrc(ctx, scopeProperties.Removed_api) } } func (module *sdkLibraryImport) sdkJars(ctx android.BaseModuleContext, sdkVersion sdkSpec) android.Paths { Loading Loading @@ -1685,9 +1732,9 @@ func (s *sdkLibrarySdkMemberProperties) PopulateFromVariant(ctx android.SdkMembe properties := scopeProperties{} properties.Jars = jars properties.SdkVersion = sdk.sdkVersionForStubsLibrary(ctx.SdkModuleContext(), apiScope) properties.StubsSrcJar = paths.stubsSrcJar properties.CurrentApiFile = paths.currentApiFilePath properties.RemovedApiFile = paths.removedApiFilePath properties.StubsSrcJar = paths.stubsSrcJar.Path() properties.CurrentApiFile = paths.currentApiFilePath.Path() properties.RemovedApiFile = paths.removedApiFilePath.Path() s.Scopes[apiScope] = properties } } Loading Loading
java/droiddoc.go +10 −1 Original line number Diff line number Diff line Loading @@ -351,11 +351,16 @@ type ApiFilePath interface { ApiFilePath() android.Path } type ApiStubsSrcProvider interface { StubsSrcJar() android.Path } // Provider of information about API stubs, used by java_sdk_library. type ApiStubsProvider interface { ApiFilePath RemovedApiFilePath() android.Path StubsSrcJar() android.Path ApiStubsSrcProvider } // Loading Loading @@ -1932,6 +1937,10 @@ func (p *PrebuiltStubsSources) OutputFiles(tag string) (android.Paths, error) { } } func (d *PrebuiltStubsSources) StubsSrcJar() android.Path { return d.stubsSrcJar } func (p *PrebuiltStubsSources) GenerateAndroidBuildActions(ctx android.ModuleContext) { p.stubsSrcJar = android.PathForModuleOut(ctx, ctx.ModuleName()+"-"+"stubs.srcjar") Loading
java/java_test.go +1 −0 Original line number Diff line number Diff line Loading @@ -575,6 +575,7 @@ func TestJavaSdkLibraryImport(t *testing.T) { }, test: { jars: ["c.jar"], stub_srcs: ["c.java"], }, } `) Loading
java/sdk_library.go +70 −23 Original line number Diff line number Diff line Loading @@ -433,12 +433,30 @@ type sdkLibraryProperties struct { //Html_doc *bool } // Paths to outputs from java_sdk_library and java_sdk_library_import. // // Fields that are android.Paths are always set (during GenerateAndroidBuildActions). // OptionalPaths are always set by java_sdk_library but may not be set by // java_sdk_library_import as not all instances provide that information. type scopePaths struct { // The path (represented as Paths for convenience when returning) to the stubs header jar. // // That is the jar that is created by turbine. stubsHeaderPath android.Paths // The path (represented as Paths for convenience when returning) to the stubs implementation jar. // // This is not the implementation jar, it still only contains stubs. stubsImplPath android.Paths currentApiFilePath android.Path removedApiFilePath android.Path stubsSrcJar android.Path // The API specification file, e.g. system_current.txt. currentApiFilePath android.OptionalPath // The specification of API elements removed since the last release. removedApiFilePath android.OptionalPath // The stubs source jar. stubsSrcJar android.OptionalPath } func (paths *scopePaths) extractStubsLibraryInfoFromDependency(dep android.Module) error { Loading @@ -460,9 +478,18 @@ func (paths *scopePaths) treatDepAsApiStubsProvider(dep android.Module, action f } } func (paths *scopePaths) treatDepAsApiStubsSrcProvider(dep android.Module, action func(provider ApiStubsSrcProvider)) error { if apiStubsProvider, ok := dep.(ApiStubsSrcProvider); ok { action(apiStubsProvider) return nil } else { return fmt.Errorf("expected module that implements ApiStubsSrcProvider, e.g. droidstubs") } } func (paths *scopePaths) extractApiInfoFromApiStubsProvider(provider ApiStubsProvider) { paths.currentApiFilePath = provider.ApiFilePath() paths.removedApiFilePath = provider.RemovedApiFilePath() paths.currentApiFilePath = android.OptionalPathForPath(provider.ApiFilePath()) paths.removedApiFilePath = android.OptionalPathForPath(provider.RemovedApiFilePath()) } func (paths *scopePaths) extractApiInfoFromDep(dep android.Module) error { Loading @@ -471,12 +498,12 @@ func (paths *scopePaths) extractApiInfoFromDep(dep android.Module) error { }) } func (paths *scopePaths) extractStubsSourceInfoFromApiStubsProviders(provider ApiStubsProvider) { paths.stubsSrcJar = provider.StubsSrcJar() func (paths *scopePaths) extractStubsSourceInfoFromApiStubsProviders(provider ApiStubsSrcProvider) { paths.stubsSrcJar = android.OptionalPathForPath(provider.StubsSrcJar()) } func (paths *scopePaths) extractStubsSourceInfoFromDep(dep android.Module) error { return paths.treatDepAsApiStubsProvider(dep, func(provider ApiStubsProvider) { return paths.treatDepAsApiStubsSrcProvider(dep, func(provider ApiStubsSrcProvider) { paths.extractStubsSourceInfoFromApiStubsProviders(provider) }) } Loading Loading @@ -1314,10 +1341,10 @@ type sdkLibraryScopeProperties struct { Stub_srcs []string `android:"path"` // The current.txt Current_api string `android:"path"` Current_api *string `android:"path"` // The removed.txt Removed_api string `android:"path"` Removed_api *string `android:"path"` } type sdkLibraryImportProperties struct { Loading Loading @@ -1427,8 +1454,10 @@ func (module *sdkLibraryImport) createInternalModules(mctx android.DefaultableHo module.createJavaImportForStubs(mctx, apiScope, scopeProperties) if len(scopeProperties.Stub_srcs) > 0 { module.createPrebuiltStubsSources(mctx, apiScope, scopeProperties) } } javaSdkLibraries := javaSdkLibraries(mctx.Config()) javaSdkLibrariesLock.Lock() Loading Loading @@ -1479,22 +1508,40 @@ func (module *sdkLibraryImport) DepsMutator(ctx android.BottomUpMutatorContext) // Add dependencies to the prebuilt stubs library ctx.AddVariationDependencies(nil, apiScope.stubsTag, module.stubsLibraryModuleName(apiScope)) if len(scopeProperties.Stub_srcs) > 0 { // Add dependencies to the prebuilt stubs source library ctx.AddVariationDependencies(nil, apiScope.stubsSourceTag, module.stubsSourceModuleName(apiScope)) } } } func (module *sdkLibraryImport) GenerateAndroidBuildActions(ctx android.ModuleContext) { // Record the paths to the prebuilt stubs library. // Record the paths to the prebuilt stubs library and stubs source. ctx.VisitDirectDeps(func(to android.Module) { tag := ctx.OtherModuleDependencyTag(to) if lib, ok := to.(Dependency); ok { // Extract information from any of the scope specific dependencies. if scopeTag, ok := tag.(scopeDependencyTag); ok { apiScope := scopeTag.apiScope scopePaths := module.getScopePathsCreateIfNeeded(apiScope) scopePaths.stubsHeaderPath = lib.HeaderJars() } // Extract information from the dependency. The exact information extracted // is determined by the nature of the dependency which is determined by the tag. scopeTag.extractDepInfo(ctx, to, scopePaths) } }) // Populate the scope paths with information from the properties. for apiScope, scopeProperties := range module.scopeProperties { if len(scopeProperties.Jars) == 0 { continue } paths := module.getScopePathsCreateIfNeeded(apiScope) paths.currentApiFilePath = android.OptionalPathForModuleSrc(ctx, scopeProperties.Current_api) paths.removedApiFilePath = android.OptionalPathForModuleSrc(ctx, scopeProperties.Removed_api) } } func (module *sdkLibraryImport) sdkJars(ctx android.BaseModuleContext, sdkVersion sdkSpec) android.Paths { Loading Loading @@ -1685,9 +1732,9 @@ func (s *sdkLibrarySdkMemberProperties) PopulateFromVariant(ctx android.SdkMembe properties := scopeProperties{} properties.Jars = jars properties.SdkVersion = sdk.sdkVersionForStubsLibrary(ctx.SdkModuleContext(), apiScope) properties.StubsSrcJar = paths.stubsSrcJar properties.CurrentApiFile = paths.currentApiFilePath properties.RemovedApiFile = paths.removedApiFilePath properties.StubsSrcJar = paths.stubsSrcJar.Path() properties.CurrentApiFile = paths.currentApiFilePath.Path() properties.RemovedApiFile = paths.removedApiFilePath.Path() s.Scopes[apiScope] = properties } } Loading