diff --git a/apex/apex_test.go b/apex/apex_test.go index f71e7ef16..506c6fe3b 100644 --- a/apex/apex_test.go +++ b/apex/apex_test.go @@ -6559,6 +6559,11 @@ func TestPrebuiltStubLibDep(t *testing.T) { if entry.mkEntries.EntryMap["LOCAL_NOT_AVAILABLE_FOR_PLATFORM"] != nil { t.Errorf("AndroidMk entry for \"stublib\" has LOCAL_NOT_AVAILABLE_FOR_PLATFORM set: %+v", entry.mkEntries) } + cflags := entry.mkEntries.EntryMap["LOCAL_EXPORT_CFLAGS"] + expected := "-D__STUBLIB_API__=1" + if !android.InList(expected, cflags) { + t.Errorf("LOCAL_EXPORT_CFLAGS expected to have %q, but got %q", expected, cflags) + } } }) } diff --git a/cc/library.go b/cc/library.go index 06b99054f..71b1f45b8 100644 --- a/cc/library.go +++ b/cc/library.go @@ -1274,9 +1274,7 @@ func (library *libraryDecorator) link(ctx ModuleContext, } // Add stub-related flags if this library is a stub library. - if library.buildStubs() && !library.skipAPIDefine { - library.reexportFlags("-D" + versioningMacroName(ctx.Module().(*Module).ImplementationModuleName(ctx)) + "=" + library.stubsVersion()) - } + library.exportVersioningMacroIfNeeded(ctx) // Propagate a Provider containing information about exported flags, deps, and include paths. library.flagExporter.setProvider(ctx) @@ -1284,6 +1282,14 @@ func (library *libraryDecorator) link(ctx ModuleContext, return out } +func (library *libraryDecorator) exportVersioningMacroIfNeeded(ctx android.BaseModuleContext) { + if library.buildStubs() && !library.skipAPIDefine { + name := versioningMacroName(ctx.Module().(*Module).ImplementationModuleName(ctx)) + ver := library.stubsVersion() + library.reexportFlags("-D" + name + "=" + ver) + } +} + // buildStatic returns true if this library should be built as a static library. func (library *libraryDecorator) buildStatic() bool { return library.MutatedProperties.BuildStatic && diff --git a/cc/prebuilt.go b/cc/prebuilt.go index 37df4ba0f..05be8d8c3 100644 --- a/cc/prebuilt.go +++ b/cc/prebuilt.go @@ -17,6 +17,7 @@ package cc import ( "android/soong/android" "path/filepath" + "strings" ) func init() { @@ -117,6 +118,8 @@ func (p *prebuiltLibraryLinker) link(ctx ModuleContext, return nil } + p.libraryDecorator.exportVersioningMacroIfNeeded(ctx) + in := android.PathForModuleSrc(ctx, srcs[0]) if p.static() { @@ -220,6 +223,11 @@ func (p *prebuiltLibraryLinker) disablePrebuilt() { p.properties.Srcs = nil } +// Implements versionedInterface +func (p *prebuiltLibraryLinker) implementationModuleName(name string) string { + return strings.TrimPrefix(name, "prebuilt_") +} + func NewPrebuiltLibrary(hod android.HostOrDeviceSupported) (*Module, *libraryDecorator) { module, library := NewLibrary(hod) module.compiler = nil