Merge "Add support for cc_library_headers to replace llndk_headers" am: 8fb66f48c7

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1687471

Change-Id: Id427b137b951f53dd1d70d26ad41755311819d95
This commit is contained in:
Colin Cross
2021-04-27 16:53:43 +00:00
committed by Automerger Merge Worker
6 changed files with 18 additions and 7 deletions

View File

@@ -1135,9 +1135,9 @@ func (c *Module) IsLlndkLibrary() bool {
return false return false
} }
func (m *Module) HasLlndkStubs() bool { func (m *Module) NeedsLlndkVariants() bool {
lib := moduleLibraryInterface(m) lib := moduleLibraryInterface(m)
return lib != nil && lib.hasLLNDKStubs() return lib != nil && (lib.hasLLNDKStubs() || lib.hasLLNDKHeaders())
} }
// isImplementationForLLNDKPublic returns true for any variant of a cc_library that has LLNDK stubs // isImplementationForLLNDKPublic returns true for any variant of a cc_library that has LLNDK stubs

View File

@@ -437,13 +437,13 @@ func MutateImage(mctx android.BaseModuleContext, m ImageMutatableModule) {
productVndkVersion = platformVndkVersion productVndkVersion = platformVndkVersion
} }
if m.IsLlndkLibrary() || m.IsLlndkHeaders() || m.HasLlndkStubs() { if m.IsLlndkLibrary() || m.IsLlndkHeaders() || m.NeedsLlndkVariants() {
// This is an LLNDK library. The implementation of the library will be on /system, // This is an LLNDK library. The implementation of the library will be on /system,
// and vendor and product variants will be created with LLNDK stubs. // and vendor and product variants will be created with LLNDK stubs.
// The LLNDK libraries need vendor variants even if there is no VNDK. // The LLNDK libraries need vendor variants even if there is no VNDK.
// The obsolete llndk_library and llndk_headers modules also need the vendor variants // The obsolete llndk_library and llndk_headers modules also need the vendor variants
// so the cc_library LLNDK stubs can depend on them. // so the cc_library LLNDK stubs can depend on them.
if m.HasLlndkStubs() { if m.NeedsLlndkVariants() {
coreVariantNeeded = true coreVariantNeeded = true
} }
if platformVndkVersion != "" { if platformVndkVersion != "" {

View File

@@ -868,6 +868,7 @@ type versionedInterface interface {
implementationModuleName(name string) string implementationModuleName(name string) string
hasLLNDKStubs() bool hasLLNDKStubs() bool
hasLLNDKHeaders() bool
} }
var _ libraryInterface = (*libraryDecorator)(nil) var _ libraryInterface = (*libraryDecorator)(nil)
@@ -1682,6 +1683,12 @@ func (library *libraryDecorator) hasVestigialLLNDKLibrary() bool {
return String(library.Properties.Llndk_stubs) != "" return String(library.Properties.Llndk_stubs) != ""
} }
// hasLLNDKHeaders returns true if this cc_library module has a variant that provides headers
// to a module that sets llndk.symbol_file.
func (library *libraryDecorator) hasLLNDKHeaders() bool {
return Bool(library.Properties.Llndk.Llndk_headers)
}
func (library *libraryDecorator) implementationModuleName(name string) string { func (library *libraryDecorator) implementationModuleName(name string) string {
return name return name
} }

View File

@@ -112,8 +112,8 @@ type LinkableInterface interface {
// IsLlndkLibrary returns true if this module is an LLNDK library module. // IsLlndkLibrary returns true if this module is an LLNDK library module.
IsLlndkLibrary() bool IsLlndkLibrary() bool
// HasLlndkStubs returns true if this module has LLNDK stubs. // NeedsLlndkVariants returns true if this module has LLNDK stubs or provides LLNDK headers.
HasLlndkStubs() bool NeedsLlndkVariants() bool
UseVndk() bool UseVndk() bool
MustUseVendorVariant() bool MustUseVendorVariant() bool

View File

@@ -69,6 +69,10 @@ type llndkLibraryProperties struct {
// vendor nor product libraries. This effectively hides this module from // vendor nor product libraries. This effectively hides this module from
// non-system modules. Default value is false. // non-system modules. Default value is false.
Private *bool Private *bool
// if true, make this module available to provide headers to other modules that set
// llndk.symbol_file.
Llndk_headers *bool
} }
type llndkStubDecorator struct { type llndkStubDecorator struct {

View File

@@ -274,7 +274,7 @@ func (mod *Module) KernelHeadersDecorator() bool {
return false return false
} }
func (m *Module) HasLlndkStubs() bool { func (m *Module) NeedsLlndkVariants() bool {
return false return false
} }