Loading cc/androidmk.go +0 −14 Original line number Diff line number Diff line Loading @@ -580,20 +580,6 @@ func (c *ndkPrebuiltStlLinker) AndroidMkEntries(ctx AndroidMkContext, entries *a entries.Class = "SHARED_LIBRARIES" } func (c *vendorPublicLibraryStubDecorator) AndroidMkEntries(ctx AndroidMkContext, entries *android.AndroidMkEntries) { entries.Class = "SHARED_LIBRARIES" entries.SubName = vendorPublicLibrarySuffix entries.ExtraEntries = append(entries.ExtraEntries, func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) { c.libraryDecorator.androidMkWriteExportedFlags(entries) _, _, ext := android.SplitFileExt(entries.OutputFile.Path().Base()) entries.SetString("LOCAL_BUILT_MODULE_STEM", "$(LOCAL_MODULE)"+ext) entries.SetBool("LOCAL_UNINSTALLABLE_MODULE", true) entries.SetBool("LOCAL_NO_NOTICE_FILE", true) }) } func (p *prebuiltLinker) AndroidMkEntries(ctx AndroidMkContext, entries *android.AndroidMkEntries) { entries.ExtraEntries = append(entries.ExtraEntries, func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) { if p.properties.Check_elf_files != nil { Loading cc/cc.go +21 −18 Original line number Diff line number Diff line Loading @@ -447,6 +447,10 @@ type VendorProperties struct { // IsVNDKProduct is set if a VNDK module sets the product_available property. IsVNDKProduct bool `blueprint:"mutated"` // IsVendorPublicLibrary is set for the core and product variants of a library that has // vendor_public_library stubs. IsVendorPublicLibrary bool `blueprint:"mutated"` } // ModuleContextIntf is an interface (on a module context helper) consisting of functions related Loading Loading @@ -475,6 +479,7 @@ type ModuleContextIntf interface { isVndk() bool isVndkSp() bool IsVndkExt() bool IsVendorPublicLibrary() bool inProduct() bool inVendor() bool inRamdisk() bool Loading Loading @@ -1126,6 +1131,16 @@ func (m *Module) NeedsLlndkVariants() bool { return lib != nil && (lib.hasLLNDKStubs() || lib.hasLLNDKHeaders()) } func (m *Module) NeedsVendorPublicLibraryVariants() bool { lib := moduleLibraryInterface(m) return lib != nil && (lib.hasVendorPublicLibrary()) } // IsVendorPublicLibrary returns true for vendor public libraries. func (c *Module) IsVendorPublicLibrary() bool { return c.VendorProperties.IsVendorPublicLibrary } // isImplementationForLLNDKPublic returns true for any variant of a cc_library that has LLNDK stubs // and does not set llndk.vendor_available: false. func (c *Module) isImplementationForLLNDKPublic() bool { Loading Loading @@ -1437,6 +1452,10 @@ func (ctx *moduleContextImpl) IsVndkExt() bool { return ctx.mod.IsVndkExt() } func (ctx *moduleContextImpl) IsVendorPublicLibrary() bool { return ctx.mod.IsVendorPublicLibrary() } func (ctx *moduleContextImpl) mustUseVendorVariant() bool { return ctx.mod.MustUseVendorVariant() } Loading Loading @@ -1599,6 +1618,8 @@ func (c *Module) setSubnameProperty(actx android.ModuleContext) { // added for product variant only when we have vendor and product variants with core // variant. The suffix is not added for vendor-only or product-only module. c.Properties.SubName += c.getNameSuffixWithVndkVersion(actx) } else if c.IsVendorPublicLibrary() { c.Properties.SubName += vendorPublicLibrarySuffix } else if _, ok := c.linker.(*vndkPrebuiltLibraryDecorator); ok { // .vendor suffix is added for backward compatibility with VNDK snapshot whose names with // such suffixes are already hard-coded in prebuilts/vndk/.../Android.bp. Loading Loading @@ -2043,8 +2064,6 @@ func (c *Module) DepsMutator(actx android.BottomUpMutatorContext) { // The caller can then know to add the variantLibs dependencies differently from the // nonvariantLibs vendorPublicLibraries := vendorPublicLibraries(actx.Config()) rewriteLibs := func(list []string) (nonvariantLibs []string, variantLibs []string) { variantLibs = []string{} nonvariantLibs = []string{} Loading @@ -2055,16 +2074,6 @@ func (c *Module) DepsMutator(actx android.BottomUpMutatorContext) { nonvariantLibs = append(nonvariantLibs, rewriteSnapshotLib(entry, getSnapshot().SharedLibs)) } else if ctx.useSdk() && inList(name, *getNDKKnownLibs(ctx.Config())) { variantLibs = append(variantLibs, name+ndkLibrarySuffix) } else if (ctx.Platform() || ctx.ProductSpecific()) && inList(name, *vendorPublicLibraries) { vendorPublicLib := name + vendorPublicLibrarySuffix if actx.OtherModuleExists(vendorPublicLib) { nonvariantLibs = append(nonvariantLibs, vendorPublicLib) } else { // This can happen if vendor_public_library module is defined in a // namespace that isn't visible to the current module. In that case, // link to the original library. nonvariantLibs = append(nonvariantLibs, name) } } else if ctx.useVndk() { nonvariantLibs = append(nonvariantLibs, rewriteSnapshotLib(entry, getSnapshot().SharedLibs)) } else { Loading Loading @@ -2921,13 +2930,9 @@ func baseLibName(depName string) string { } func MakeLibName(ctx android.ModuleContext, c LinkableInterface, ccDep LinkableInterface, depName string) string { vendorPublicLibraries := vendorPublicLibraries(ctx.Config()) libName := baseLibName(depName) ccDepModule, _ := ccDep.(*Module) isLLndk := ccDepModule != nil && ccDepModule.IsLlndk() isVendorPublicLib := inList(libName, *vendorPublicLibraries) nonSystemVariantsExist := ccDep.HasNonSystemVariants() || isLLndk if ccDepModule != nil { Loading @@ -2949,8 +2954,6 @@ func MakeLibName(ctx android.ModuleContext, c LinkableInterface, ccDep LinkableI // The vendor and product modules in Make will have been renamed to not conflict with the // core module, so update the dependency name here accordingly. return libName + ccDep.SubName() } else if (ctx.Platform() || ctx.ProductSpecific()) && isVendorPublicLib { return libName + vendorPublicLibrarySuffix } else if ccDep.InRamdisk() && !ccDep.OnlyInRamdisk() { return libName + ramdiskSuffix } else if ccDep.InVendorRamdisk() && !ccDep.OnlyInVendorRamdisk() { Loading cc/image.go +16 −0 Original line number Diff line number Diff line Loading @@ -452,6 +452,17 @@ func MutateImage(mctx android.BaseModuleContext, m ImageMutatableModule) { if productVndkVersion != "" { productVariants = append(productVariants, productVndkVersion) } } else if m.NeedsVendorPublicLibraryVariants() { // A vendor public library has the implementation on /vendor, with stub variants // for system and product. coreVariantNeeded = true vendorVariants = append(vendorVariants, boardVndkVersion) if platformVndkVersion != "" { productVariants = append(productVariants, platformVndkVersion) } if productVndkVersion != "" { productVariants = append(productVariants, productVndkVersion) } } else if boardVndkVersion == "" { // If the device isn't compiling against the VNDK, we always // use the core mode. Loading Loading @@ -677,4 +688,9 @@ func (c *Module) SetImageVariation(ctx android.BaseModuleContext, variant string m.Properties.VndkVersion = strings.TrimPrefix(variant, ProductVariationPrefix) squashProductSrcs(m) } if c.NeedsVendorPublicLibraryVariants() && (variant == android.CoreVariation || strings.HasPrefix(variant, ProductVariationPrefix)) { c.VendorProperties.IsVendorPublicLibrary = true } } cc/library.go +33 −1 Original line number Diff line number Diff line Loading @@ -120,6 +120,9 @@ type LibraryProperties struct { // If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from // the module pointed to by llndk_stubs if it is set. Llndk llndkLibraryProperties // If this is a vendor public library, properties to describe the vendor public library stubs. Vendor_public_library vendorPublicLibraryProperties } // StaticProperties is a properties stanza to affect only attributes of the "static" variants of a Loading Loading @@ -786,6 +789,13 @@ func (library *libraryDecorator) compile(ctx ModuleContext, flags Flags, deps Pa } return objs } if ctx.IsVendorPublicLibrary() { objs, versionScript := compileStubLibrary(ctx, flags, String(library.Properties.Vendor_public_library.Symbol_file), "current", "") if !Bool(library.Properties.Vendor_public_library.Unversioned) { library.versionScriptPath = android.OptionalPathForPath(versionScript) } return objs } if library.buildStubs() { symbolFile := String(library.Properties.Stubs.Symbol_file) if symbolFile != "" && !strings.HasSuffix(symbolFile, ".map.txt") { Loading Loading @@ -883,6 +893,7 @@ type versionedInterface interface { implementationModuleName(name string) string hasLLNDKStubs() bool hasLLNDKHeaders() bool hasVendorPublicLibrary() bool } var _ libraryInterface = (*libraryDecorator)(nil) Loading Loading @@ -978,6 +989,12 @@ func (library *libraryDecorator) linkerDeps(ctx DepsContext, deps Deps) Deps { deps.ReexportHeaderLibHeaders = append([]string(nil), library.Properties.Llndk.Export_llndk_headers...) return deps } if ctx.IsVendorPublicLibrary() { headers := library.Properties.Vendor_public_library.Export_public_headers deps.HeaderLibs = append([]string(nil), headers...) deps.ReexportHeaderLibHeaders = append([]string(nil), headers...) return deps } if library.static() { // Compare with nil because an empty list needs to be propagated. Loading Loading @@ -1434,6 +1451,14 @@ func (library *libraryDecorator) link(ctx ModuleContext, } } if ctx.IsVendorPublicLibrary() { // override the module's export_include_dirs with vendor_public_library.override_export_include_dirs // if it is set. if override := library.Properties.Vendor_public_library.Override_export_include_dirs; override != nil { library.flagExporter.Properties.Export_include_dirs = override } } // Linking this library consists of linking `deps.Objs` (.o files in dependencies // of this library), together with `objs` (.o files created by compiling this // library). Loading Loading @@ -1695,6 +1720,12 @@ func (library *libraryDecorator) hasLLNDKHeaders() bool { return Bool(library.Properties.Llndk.Llndk_headers) } // hasVendorPublicLibrary returns true if this cc_library module has a variant that will build // vendor public library stubs. func (library *libraryDecorator) hasVendorPublicLibrary() bool { return String(library.Properties.Vendor_public_library.Symbol_file) != "" } func (library *libraryDecorator) implementationModuleName(name string) string { return name } Loading Loading @@ -1994,11 +2025,12 @@ func createVersionVariations(mctx android.BottomUpMutatorContext, versions []str m := mctx.Module().(*Module) isLLNDK := m.IsLlndk() isVendorPublicLibrary := m.IsVendorPublicLibrary() modules := mctx.CreateLocalVariations(variants...) for i, m := range modules { if variants[i] != "" || isLLNDK { if variants[i] != "" || isLLNDK || isVendorPublicLibrary { // A stubs or LLNDK stubs variant. c := m.(*Module) c.sanitize = nil Loading cc/linkable.go +3 −0 Original line number Diff line number Diff line Loading @@ -109,6 +109,9 @@ type LinkableInterface interface { // NeedsLlndkVariants returns true if this module has LLNDK stubs or provides LLNDK headers. NeedsLlndkVariants() bool // NeedsVendorPublicLibraryVariants returns true if this module has vendor public library stubs. NeedsVendorPublicLibraryVariants() bool UseVndk() bool MustUseVendorVariant() bool IsVndk() bool Loading Loading
cc/androidmk.go +0 −14 Original line number Diff line number Diff line Loading @@ -580,20 +580,6 @@ func (c *ndkPrebuiltStlLinker) AndroidMkEntries(ctx AndroidMkContext, entries *a entries.Class = "SHARED_LIBRARIES" } func (c *vendorPublicLibraryStubDecorator) AndroidMkEntries(ctx AndroidMkContext, entries *android.AndroidMkEntries) { entries.Class = "SHARED_LIBRARIES" entries.SubName = vendorPublicLibrarySuffix entries.ExtraEntries = append(entries.ExtraEntries, func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) { c.libraryDecorator.androidMkWriteExportedFlags(entries) _, _, ext := android.SplitFileExt(entries.OutputFile.Path().Base()) entries.SetString("LOCAL_BUILT_MODULE_STEM", "$(LOCAL_MODULE)"+ext) entries.SetBool("LOCAL_UNINSTALLABLE_MODULE", true) entries.SetBool("LOCAL_NO_NOTICE_FILE", true) }) } func (p *prebuiltLinker) AndroidMkEntries(ctx AndroidMkContext, entries *android.AndroidMkEntries) { entries.ExtraEntries = append(entries.ExtraEntries, func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) { if p.properties.Check_elf_files != nil { Loading
cc/cc.go +21 −18 Original line number Diff line number Diff line Loading @@ -447,6 +447,10 @@ type VendorProperties struct { // IsVNDKProduct is set if a VNDK module sets the product_available property. IsVNDKProduct bool `blueprint:"mutated"` // IsVendorPublicLibrary is set for the core and product variants of a library that has // vendor_public_library stubs. IsVendorPublicLibrary bool `blueprint:"mutated"` } // ModuleContextIntf is an interface (on a module context helper) consisting of functions related Loading Loading @@ -475,6 +479,7 @@ type ModuleContextIntf interface { isVndk() bool isVndkSp() bool IsVndkExt() bool IsVendorPublicLibrary() bool inProduct() bool inVendor() bool inRamdisk() bool Loading Loading @@ -1126,6 +1131,16 @@ func (m *Module) NeedsLlndkVariants() bool { return lib != nil && (lib.hasLLNDKStubs() || lib.hasLLNDKHeaders()) } func (m *Module) NeedsVendorPublicLibraryVariants() bool { lib := moduleLibraryInterface(m) return lib != nil && (lib.hasVendorPublicLibrary()) } // IsVendorPublicLibrary returns true for vendor public libraries. func (c *Module) IsVendorPublicLibrary() bool { return c.VendorProperties.IsVendorPublicLibrary } // isImplementationForLLNDKPublic returns true for any variant of a cc_library that has LLNDK stubs // and does not set llndk.vendor_available: false. func (c *Module) isImplementationForLLNDKPublic() bool { Loading Loading @@ -1437,6 +1452,10 @@ func (ctx *moduleContextImpl) IsVndkExt() bool { return ctx.mod.IsVndkExt() } func (ctx *moduleContextImpl) IsVendorPublicLibrary() bool { return ctx.mod.IsVendorPublicLibrary() } func (ctx *moduleContextImpl) mustUseVendorVariant() bool { return ctx.mod.MustUseVendorVariant() } Loading Loading @@ -1599,6 +1618,8 @@ func (c *Module) setSubnameProperty(actx android.ModuleContext) { // added for product variant only when we have vendor and product variants with core // variant. The suffix is not added for vendor-only or product-only module. c.Properties.SubName += c.getNameSuffixWithVndkVersion(actx) } else if c.IsVendorPublicLibrary() { c.Properties.SubName += vendorPublicLibrarySuffix } else if _, ok := c.linker.(*vndkPrebuiltLibraryDecorator); ok { // .vendor suffix is added for backward compatibility with VNDK snapshot whose names with // such suffixes are already hard-coded in prebuilts/vndk/.../Android.bp. Loading Loading @@ -2043,8 +2064,6 @@ func (c *Module) DepsMutator(actx android.BottomUpMutatorContext) { // The caller can then know to add the variantLibs dependencies differently from the // nonvariantLibs vendorPublicLibraries := vendorPublicLibraries(actx.Config()) rewriteLibs := func(list []string) (nonvariantLibs []string, variantLibs []string) { variantLibs = []string{} nonvariantLibs = []string{} Loading @@ -2055,16 +2074,6 @@ func (c *Module) DepsMutator(actx android.BottomUpMutatorContext) { nonvariantLibs = append(nonvariantLibs, rewriteSnapshotLib(entry, getSnapshot().SharedLibs)) } else if ctx.useSdk() && inList(name, *getNDKKnownLibs(ctx.Config())) { variantLibs = append(variantLibs, name+ndkLibrarySuffix) } else if (ctx.Platform() || ctx.ProductSpecific()) && inList(name, *vendorPublicLibraries) { vendorPublicLib := name + vendorPublicLibrarySuffix if actx.OtherModuleExists(vendorPublicLib) { nonvariantLibs = append(nonvariantLibs, vendorPublicLib) } else { // This can happen if vendor_public_library module is defined in a // namespace that isn't visible to the current module. In that case, // link to the original library. nonvariantLibs = append(nonvariantLibs, name) } } else if ctx.useVndk() { nonvariantLibs = append(nonvariantLibs, rewriteSnapshotLib(entry, getSnapshot().SharedLibs)) } else { Loading Loading @@ -2921,13 +2930,9 @@ func baseLibName(depName string) string { } func MakeLibName(ctx android.ModuleContext, c LinkableInterface, ccDep LinkableInterface, depName string) string { vendorPublicLibraries := vendorPublicLibraries(ctx.Config()) libName := baseLibName(depName) ccDepModule, _ := ccDep.(*Module) isLLndk := ccDepModule != nil && ccDepModule.IsLlndk() isVendorPublicLib := inList(libName, *vendorPublicLibraries) nonSystemVariantsExist := ccDep.HasNonSystemVariants() || isLLndk if ccDepModule != nil { Loading @@ -2949,8 +2954,6 @@ func MakeLibName(ctx android.ModuleContext, c LinkableInterface, ccDep LinkableI // The vendor and product modules in Make will have been renamed to not conflict with the // core module, so update the dependency name here accordingly. return libName + ccDep.SubName() } else if (ctx.Platform() || ctx.ProductSpecific()) && isVendorPublicLib { return libName + vendorPublicLibrarySuffix } else if ccDep.InRamdisk() && !ccDep.OnlyInRamdisk() { return libName + ramdiskSuffix } else if ccDep.InVendorRamdisk() && !ccDep.OnlyInVendorRamdisk() { Loading
cc/image.go +16 −0 Original line number Diff line number Diff line Loading @@ -452,6 +452,17 @@ func MutateImage(mctx android.BaseModuleContext, m ImageMutatableModule) { if productVndkVersion != "" { productVariants = append(productVariants, productVndkVersion) } } else if m.NeedsVendorPublicLibraryVariants() { // A vendor public library has the implementation on /vendor, with stub variants // for system and product. coreVariantNeeded = true vendorVariants = append(vendorVariants, boardVndkVersion) if platformVndkVersion != "" { productVariants = append(productVariants, platformVndkVersion) } if productVndkVersion != "" { productVariants = append(productVariants, productVndkVersion) } } else if boardVndkVersion == "" { // If the device isn't compiling against the VNDK, we always // use the core mode. Loading Loading @@ -677,4 +688,9 @@ func (c *Module) SetImageVariation(ctx android.BaseModuleContext, variant string m.Properties.VndkVersion = strings.TrimPrefix(variant, ProductVariationPrefix) squashProductSrcs(m) } if c.NeedsVendorPublicLibraryVariants() && (variant == android.CoreVariation || strings.HasPrefix(variant, ProductVariationPrefix)) { c.VendorProperties.IsVendorPublicLibrary = true } }
cc/library.go +33 −1 Original line number Diff line number Diff line Loading @@ -120,6 +120,9 @@ type LibraryProperties struct { // If this is an LLNDK library, properties to describe the LLNDK stubs. Will be copied from // the module pointed to by llndk_stubs if it is set. Llndk llndkLibraryProperties // If this is a vendor public library, properties to describe the vendor public library stubs. Vendor_public_library vendorPublicLibraryProperties } // StaticProperties is a properties stanza to affect only attributes of the "static" variants of a Loading Loading @@ -786,6 +789,13 @@ func (library *libraryDecorator) compile(ctx ModuleContext, flags Flags, deps Pa } return objs } if ctx.IsVendorPublicLibrary() { objs, versionScript := compileStubLibrary(ctx, flags, String(library.Properties.Vendor_public_library.Symbol_file), "current", "") if !Bool(library.Properties.Vendor_public_library.Unversioned) { library.versionScriptPath = android.OptionalPathForPath(versionScript) } return objs } if library.buildStubs() { symbolFile := String(library.Properties.Stubs.Symbol_file) if symbolFile != "" && !strings.HasSuffix(symbolFile, ".map.txt") { Loading Loading @@ -883,6 +893,7 @@ type versionedInterface interface { implementationModuleName(name string) string hasLLNDKStubs() bool hasLLNDKHeaders() bool hasVendorPublicLibrary() bool } var _ libraryInterface = (*libraryDecorator)(nil) Loading Loading @@ -978,6 +989,12 @@ func (library *libraryDecorator) linkerDeps(ctx DepsContext, deps Deps) Deps { deps.ReexportHeaderLibHeaders = append([]string(nil), library.Properties.Llndk.Export_llndk_headers...) return deps } if ctx.IsVendorPublicLibrary() { headers := library.Properties.Vendor_public_library.Export_public_headers deps.HeaderLibs = append([]string(nil), headers...) deps.ReexportHeaderLibHeaders = append([]string(nil), headers...) return deps } if library.static() { // Compare with nil because an empty list needs to be propagated. Loading Loading @@ -1434,6 +1451,14 @@ func (library *libraryDecorator) link(ctx ModuleContext, } } if ctx.IsVendorPublicLibrary() { // override the module's export_include_dirs with vendor_public_library.override_export_include_dirs // if it is set. if override := library.Properties.Vendor_public_library.Override_export_include_dirs; override != nil { library.flagExporter.Properties.Export_include_dirs = override } } // Linking this library consists of linking `deps.Objs` (.o files in dependencies // of this library), together with `objs` (.o files created by compiling this // library). Loading Loading @@ -1695,6 +1720,12 @@ func (library *libraryDecorator) hasLLNDKHeaders() bool { return Bool(library.Properties.Llndk.Llndk_headers) } // hasVendorPublicLibrary returns true if this cc_library module has a variant that will build // vendor public library stubs. func (library *libraryDecorator) hasVendorPublicLibrary() bool { return String(library.Properties.Vendor_public_library.Symbol_file) != "" } func (library *libraryDecorator) implementationModuleName(name string) string { return name } Loading Loading @@ -1994,11 +2025,12 @@ func createVersionVariations(mctx android.BottomUpMutatorContext, versions []str m := mctx.Module().(*Module) isLLNDK := m.IsLlndk() isVendorPublicLibrary := m.IsVendorPublicLibrary() modules := mctx.CreateLocalVariations(variants...) for i, m := range modules { if variants[i] != "" || isLLNDK { if variants[i] != "" || isLLNDK || isVendorPublicLibrary { // A stubs or LLNDK stubs variant. c := m.(*Module) c.sanitize = nil Loading
cc/linkable.go +3 −0 Original line number Diff line number Diff line Loading @@ -109,6 +109,9 @@ type LinkableInterface interface { // NeedsLlndkVariants returns true if this module has LLNDK stubs or provides LLNDK headers. NeedsLlndkVariants() bool // NeedsVendorPublicLibraryVariants returns true if this module has vendor public library stubs. NeedsVendorPublicLibraryVariants() bool UseVndk() bool MustUseVendorVariant() bool IsVndk() bool Loading