Fix llndk_library init
llndk_library modules were not calling module.Init(), which caused them not to register ModuleBase.VendorProperties. Unregistered property structs lose their values during cloning, which caused the shared variants of llndk_library modules to not have IsLLNDK set. Call module.Init(), which registers ModuleBase.VendorProperties. Also add a helper function to filter out llndk_library modules that now show up in the list of modules with IsLLNDK set. Bug: 170784825 Test: m checkbuild Change-Id: Iafde85f6a95e85a618f6f7d7a210398febb6b158
This commit is contained in:
@@ -1738,12 +1738,9 @@ func LinkageMutator(mctx android.BottomUpMutatorContext) {
|
|||||||
|
|
||||||
isLLNDK := false
|
isLLNDK := false
|
||||||
if m, ok := mctx.Module().(*Module); ok {
|
if m, ok := mctx.Module().(*Module); ok {
|
||||||
isLLNDK = m.IsLlndk()
|
|
||||||
// Don't count the vestigial llndk_library module as isLLNDK, it needs a static
|
// 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.
|
// variant so that a cc_library_prebuilt can depend on it.
|
||||||
if _, ok := m.linker.(*llndkStubDecorator); ok {
|
isLLNDK = m.IsLlndk() && !isVestigialLLNDKModule(m)
|
||||||
isLLNDK = false
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
buildStatic := library.BuildStaticVariant() && !isLLNDK
|
buildStatic := library.BuildStaticVariant() && !isLLNDK
|
||||||
buildShared := library.BuildSharedVariant()
|
buildShared := library.BuildSharedVariant()
|
||||||
|
@@ -100,6 +100,11 @@ func (stub *llndkStubDecorator) Name(name string) string {
|
|||||||
return name + llndkLibrarySuffix
|
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 {
|
func (stub *llndkStubDecorator) linkerFlags(ctx ModuleContext, flags Flags) Flags {
|
||||||
stub.libraryDecorator.libName = stub.implementationModuleName(ctx.ModuleName())
|
stub.libraryDecorator.libName = stub.implementationModuleName(ctx.ModuleName())
|
||||||
return stub.libraryDecorator.linkerFlags(ctx, flags)
|
return stub.libraryDecorator.linkerFlags(ctx, flags)
|
||||||
@@ -137,12 +142,6 @@ func NewLLndkStubLibrary() *Module {
|
|||||||
module.installer = nil
|
module.installer = nil
|
||||||
module.library = stub
|
module.library = stub
|
||||||
|
|
||||||
module.AddProperties(
|
|
||||||
&module.Properties,
|
|
||||||
&stub.Properties,
|
|
||||||
&library.MutatedProperties,
|
|
||||||
&library.flagExporter.Properties)
|
|
||||||
|
|
||||||
return module
|
return module
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -156,8 +155,14 @@ func NewLLndkStubLibrary() *Module {
|
|||||||
// }
|
// }
|
||||||
func LlndkLibraryFactory() android.Module {
|
func LlndkLibraryFactory() android.Module {
|
||||||
module := NewLLndkStubLibrary()
|
module := NewLLndkStubLibrary()
|
||||||
android.InitAndroidArchModule(module, android.DeviceSupported, android.MultilibBoth)
|
return module.Init()
|
||||||
return module
|
}
|
||||||
|
|
||||||
|
// 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 {
|
type llndkHeadersDecorator struct {
|
||||||
|
Reference in New Issue
Block a user