Create product variant for product partition

When PRODUCT_PRODUCT_VNDK_VERSION is set to 'current', product
modules are enforced to use only VNDK libs from the system partition
as BOARD_VNDK_VERSION does to vendor partition.

Modules with 'vendor_available: true' create product variant as well
as core and vendor variants. The product variant as an image variant
is used for the modules in /product or /system/product.

It must not affect the current build behavior without
PRODUCT_PRODUCT_VNDK_VERSION set.

Bug: 134099726
Bug: 138966004
Bug: 144534640
Test: build without PRODUCT_PRODUCT_VNDK_VERSION set
Change-Id: I4d3585c110d84493e45bf76d550dc240bb26137f
This commit is contained in:
Justin Yun
2019-11-18 19:52:14 +09:00
parent 120d73fe4f
commit 5f7f7e8a39
9 changed files with 363 additions and 90 deletions

View File

@@ -25,6 +25,7 @@ import (
var (
nativeBridgeSuffix = ".native_bridge"
productSuffix = ".product"
vendorSuffix = ".vendor"
recoverySuffix = ".recovery"
)
@@ -37,7 +38,7 @@ type AndroidMkContext interface {
Os() android.OsType
Host() bool
UseVndk() bool
vndkVersion() string
VndkVersion() string
static() bool
InRecovery() bool
}
@@ -92,7 +93,7 @@ func (c *Module) AndroidMk() android.AndroidMkData {
if c.UseVndk() {
fmt.Fprintln(w, "LOCAL_USE_VNDK := true")
if c.IsVndk() && !c.static() {
fmt.Fprintln(w, "LOCAL_SOONG_VNDK_VERSION := "+c.vndkVersion())
fmt.Fprintln(w, "LOCAL_SOONG_VNDK_VERSION := "+c.VndkVersion())
// VNDK libraries available to vendor are not installed because
// they are packaged in VNDK APEX and installed by APEX packages (apex/apex.go)
if !c.isVndkExt() {