Merge changes I904b4374,I6b4ea062 am: 4f67b03e8b
am: 4cc87fe37b
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1571886 MUST ONLY BE SUBMITTED BY AUTOMERGER Change-Id: I40ba4dec294d942d303d6610da953d9b3d3c6e8d
This commit is contained in:
21
cc/cc.go
21
cc/cc.go
@@ -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() {
|
||||
|
@@ -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) {
|
||||
|
@@ -106,6 +106,8 @@ type LinkableInterface interface {
|
||||
IsVndkExt() bool
|
||||
IsVndkPrivate() bool
|
||||
HasVendorVariant() bool
|
||||
HasProductVariant() bool
|
||||
HasNonSystemVariants() bool
|
||||
InProduct() bool
|
||||
|
||||
SdkVersion() string
|
||||
|
@@ -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
|
||||
}
|
||||
|
Reference in New Issue
Block a user