diff --git a/cc/library.go b/cc/library.go index 1185385f3..bc6ff69e1 100644 --- a/cc/library.go +++ b/cc/library.go @@ -1738,12 +1738,9 @@ func LinkageMutator(mctx android.BottomUpMutatorContext) { isLLNDK := false if m, ok := mctx.Module().(*Module); ok { - isLLNDK = m.IsLlndk() // Don't count the vestigial llndk_library module as isLLNDK, it needs a static // variant so that a cc_library_prebuilt can depend on it. - if _, ok := m.linker.(*llndkStubDecorator); ok { - isLLNDK = false - } + isLLNDK = m.IsLlndk() && !isVestigialLLNDKModule(m) } buildStatic := library.BuildStaticVariant() && !isLLNDK buildShared := library.BuildSharedVariant() diff --git a/cc/llndk_library.go b/cc/llndk_library.go index d0fbc480e..0c4bcfdbc 100644 --- a/cc/llndk_library.go +++ b/cc/llndk_library.go @@ -100,6 +100,11 @@ func (stub *llndkStubDecorator) Name(name string) string { return name + llndkLibrarySuffix } +func (stub *llndkStubDecorator) linkerProps() []interface{} { + props := stub.libraryDecorator.linkerProps() + return append(props, &stub.Properties) +} + func (stub *llndkStubDecorator) linkerFlags(ctx ModuleContext, flags Flags) Flags { stub.libraryDecorator.libName = stub.implementationModuleName(ctx.ModuleName()) return stub.libraryDecorator.linkerFlags(ctx, flags) @@ -137,12 +142,6 @@ func NewLLndkStubLibrary() *Module { module.installer = nil module.library = stub - module.AddProperties( - &module.Properties, - &stub.Properties, - &library.MutatedProperties, - &library.flagExporter.Properties) - return module } @@ -156,8 +155,14 @@ func NewLLndkStubLibrary() *Module { // } func LlndkLibraryFactory() android.Module { module := NewLLndkStubLibrary() - android.InitAndroidArchModule(module, android.DeviceSupported, android.MultilibBoth) - return module + return module.Init() +} + +// isVestigialLLNDKModule returns true if m is a vestigial llndk_library module used to provide +// properties to the LLNDK variant of a cc_library. +func isVestigialLLNDKModule(m *Module) bool { + _, ok := m.linker.(*llndkStubDecorator) + return ok } type llndkHeadersDecorator struct {