Merge changes I904b4374,I6b4ea062 am: 4f67b03e8b

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

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I2b7149c0c5d6788ebdf03c80aa39a1188c6d89ca
This commit is contained in:
Treehugger Robot
2021-02-05 02:49:26 +00:00
committed by Automerger Merge Worker
4 changed files with 38 additions and 14 deletions

View File

@@ -1535,6 +1535,11 @@ func (c *Module) getNameSuffixWithVndkVersion(ctx android.ModuleContext) string
var vndkVersion string
var nameSuffix string
if c.InProduct() {
if c.ProductSpecific() {
// If the module is product specific with 'product_specific: true',
// do not add a name suffix because it is a base module.
return ""
}
vndkVersion = ctx.DeviceConfig().ProductVndkVersion()
nameSuffix = productSuffix
} else {
@@ -2891,12 +2896,12 @@ func (c *Module) makeLibName(ctx android.ModuleContext, ccDep LinkableInterface,
ccDepModule, _ := ccDep.(*Module)
isLLndk := ccDepModule != nil && ccDepModule.IsLlndk()
isVendorPublicLib := inList(libName, *vendorPublicLibraries)
bothVendorAndCoreVariantsExist := ccDep.HasVendorVariant() || isLLndk
nonSystemVariantsExist := ccDep.HasNonSystemVariants() || isLLndk
if c, ok := ccDep.(*Module); ok {
if ccDepModule != nil {
// Use base module name for snapshots when exporting to Makefile.
if snapshotPrebuilt, ok := c.linker.(snapshotInterface); ok {
baseName := c.BaseModuleName()
if snapshotPrebuilt, ok := ccDepModule.linker.(snapshotInterface); ok {
baseName := ccDepModule.BaseModuleName()
return baseName + snapshotPrebuilt.snapshotAndroidMkSuffix()
}
@@ -2907,10 +2912,10 @@ func (c *Module) makeLibName(ctx android.ModuleContext, ccDep LinkableInterface,
// The vendor module is a no-vendor-variant VNDK library. Depend on the
// core module instead.
return libName
} else if c.UseVndk() && bothVendorAndCoreVariantsExist {
// The vendor module in Make will have been renamed to not conflict with the core
// module, so update the dependency name here accordingly.
return libName + c.getNameSuffixWithVndkVersion(ctx)
} else if ccDep.UseVndk() && nonSystemVariantsExist && ccDepModule != nil {
// 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 + ccDepModule.Properties.SubName
} else if (ctx.Platform() || ctx.ProductSpecific()) && isVendorPublicLib {
return libName + vendorPublicLibrarySuffix
} else if ccDep.InRamdisk() && !ccDep.OnlyInRamdisk() {

View File

@@ -2711,6 +2711,14 @@ const runtimeLibAndroidBp = `
nocrt : true,
system_shared_libs : [],
}
cc_library {
name: "libproduct_vendor",
product_specific: true,
vendor_available: true,
no_libcrt : true,
nocrt : true,
system_shared_libs : [],
}
cc_library {
name: "libcore",
runtime_libs: ["liball_available"],
@@ -2728,7 +2736,7 @@ const runtimeLibAndroidBp = `
cc_library {
name: "libvendor2",
vendor: true,
runtime_libs: ["liball_available", "libvendor1"],
runtime_libs: ["liball_available", "libvendor1", "libproduct_vendor"],
no_libcrt : true,
nocrt : true,
system_shared_libs : [],
@@ -2751,7 +2759,7 @@ const runtimeLibAndroidBp = `
cc_library {
name: "libproduct2",
product_specific: true,
runtime_libs: ["liball_available", "libproduct1"],
runtime_libs: ["liball_available", "libproduct1", "libproduct_vendor"],
no_libcrt : true,
nocrt : true,
system_shared_libs : [],
@@ -2781,7 +2789,7 @@ func TestRuntimeLibs(t *testing.T) {
checkRuntimeLibs(t, []string{"liball_available.vendor"}, module)
module = ctx.ModuleForTests("libvendor2", variant).Module().(*Module)
checkRuntimeLibs(t, []string{"liball_available.vendor", "libvendor1"}, module)
checkRuntimeLibs(t, []string{"liball_available.vendor", "libvendor1", "libproduct_vendor.vendor"}, module)
// runtime_libs for product variants have '.product' suffixes if the modules have both core
// and product variants.
@@ -2791,7 +2799,7 @@ func TestRuntimeLibs(t *testing.T) {
checkRuntimeLibs(t, []string{"liball_available.product"}, module)
module = ctx.ModuleForTests("libproduct2", variant).Module().(*Module)
checkRuntimeLibs(t, []string{"liball_available.product", "libproduct1"}, module)
checkRuntimeLibs(t, []string{"liball_available.product", "libproduct1", "libproduct_vendor"}, module)
}
func TestExcludeRuntimeLibs(t *testing.T) {
@@ -2817,10 +2825,10 @@ func TestRuntimeLibsNoVndk(t *testing.T) {
checkRuntimeLibs(t, []string{"liball_available"}, module)
module = ctx.ModuleForTests("libvendor2", variant).Module().(*Module)
checkRuntimeLibs(t, []string{"liball_available", "libvendor1"}, module)
checkRuntimeLibs(t, []string{"liball_available", "libvendor1", "libproduct_vendor"}, module)
module = ctx.ModuleForTests("libproduct2", variant).Module().(*Module)
checkRuntimeLibs(t, []string{"liball_available", "libproduct1"}, module)
checkRuntimeLibs(t, []string{"liball_available", "libproduct1", "libproduct_vendor"}, module)
}
func checkStaticLibs(t *testing.T, expected []string, module *Module) {

View File

@@ -106,6 +106,8 @@ type LinkableInterface interface {
IsVndkExt() bool
IsVndkPrivate() bool
HasVendorVariant() bool
HasProductVariant() bool
HasNonSystemVariants() bool
InProduct() bool
SdkVersion() string

View File

@@ -71,6 +71,15 @@ func (mod *Module) HasVendorVariant() bool {
return Bool(mod.VendorProperties.Vendor_available) || Bool(mod.VendorProperties.Odm_available)
}
// Always returns false because rust modules do not support product variant.
func (mod *Module) HasProductVariant() bool {
return Bool(mod.VendorProperties.Product_available)
}
func (mod *Module) HasNonSystemVariants() bool {
return mod.HasVendorVariant() || mod.HasProductVariant()
}
func (c *Module) InProduct() bool {
return false
}