Create only one vendor variant depending on path
Not all vendor modules are meant to be working with multiple versions of vndk unmodified. This restricts all vendor or vendor_available modules to only one variant. Modules under proprietary directories will only have BOARD_VNDK_VERSION variant, while modules under AOSP directories will only have PLATFORM_VNDK_VERSION variant. Bug: 157106227 Bug: 157133296 Test: capture snapshot from R Test: try building master with R snapshot Change-Id: I4ebe1da8d887cd76722fa8ab5ae9305da09074d4
This commit is contained in:
parent
502679e061
commit
af578ffacc
30
cc/cc.go
30
cc/cc.go
|
@ -3046,20 +3046,32 @@ func (m *Module) ImageMutatorBegin(mctx android.BaseModuleContext) {
|
|||
// This will be available in /system, /vendor and /product
|
||||
// or a /system directory that is available to vendor and product.
|
||||
coreVariantNeeded = true
|
||||
vendorVariants = append(vendorVariants, platformVndkVersion)
|
||||
productVariants = append(productVariants, platformVndkVersion)
|
||||
// VNDK modules must not create BOARD_VNDK_VERSION variant because its
|
||||
// code is PLATFORM_VNDK_VERSION.
|
||||
// On the other hand, vendor_available modules which are not VNDK should
|
||||
// also build BOARD_VNDK_VERSION because it's installed in /vendor.
|
||||
// vendor_available modules are also available to /product.
|
||||
if !m.IsVndk() {
|
||||
|
||||
// We assume that modules under proprietary paths are compatible for
|
||||
// BOARD_VNDK_VERSION. The other modules are regarded as AOSP, or
|
||||
// PLATFORM_VNDK_VERSION.
|
||||
if isVendorProprietaryPath(mctx.ModuleDir()) {
|
||||
vendorVariants = append(vendorVariants, boardVndkVersion)
|
||||
} else {
|
||||
vendorVariants = append(vendorVariants, platformVndkVersion)
|
||||
}
|
||||
|
||||
// vendor_available modules are also available to /product.
|
||||
productVariants = append(productVariants, platformVndkVersion)
|
||||
// VNDK is always PLATFORM_VNDK_VERSION
|
||||
if !m.IsVndk() {
|
||||
productVariants = append(productVariants, productVndkVersion)
|
||||
}
|
||||
} else if vendorSpecific && String(m.Properties.Sdk_version) == "" {
|
||||
// This will be available in /vendor (or /odm) only
|
||||
vendorVariants = append(vendorVariants, boardVndkVersion)
|
||||
// We assume that modules under proprietary paths are compatible for
|
||||
// BOARD_VNDK_VERSION. The other modules are regarded as AOSP, or
|
||||
// PLATFORM_VNDK_VERSION.
|
||||
if isVendorProprietaryPath(mctx.ModuleDir()) {
|
||||
vendorVariants = append(vendorVariants, boardVndkVersion)
|
||||
} else {
|
||||
vendorVariants = append(vendorVariants, platformVndkVersion)
|
||||
}
|
||||
} else {
|
||||
// This is either in /system (or similar: /data), or is a
|
||||
// modules built with the NDK. Modules built with the NDK
|
||||
|
|
|
@ -79,8 +79,14 @@ func (g *GenruleExtraProperties) ExtraImageVariations(ctx android.BaseModuleCont
|
|||
|
||||
var variants []string
|
||||
if Bool(g.Vendor_available) || ctx.SocSpecific() || ctx.DeviceSpecific() {
|
||||
variants = append(variants, VendorVariationPrefix+ctx.DeviceConfig().PlatformVndkVersion())
|
||||
if vndkVersion := ctx.DeviceConfig().VndkVersion(); vndkVersion != "current" {
|
||||
vndkVersion := ctx.DeviceConfig().VndkVersion()
|
||||
// If vndkVersion is current, we can always use PlatformVndkVersion.
|
||||
// If not, we assume modules under proprietary paths are compatible for
|
||||
// BOARD_VNDK_VERSION. The other modules are regarded as AOSP, that is
|
||||
// PLATFORM_VNDK_VERSION.
|
||||
if vndkVersion == "current" || !isVendorProprietaryPath(ctx.ModuleDir()) {
|
||||
variants = append(variants, VendorVariationPrefix+ctx.DeviceConfig().PlatformVndkVersion())
|
||||
} else {
|
||||
variants = append(variants, VendorVariationPrefix+vndkVersion)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue