exports LOCAL_SOONG_VNDK_VERSION for VNDK libs
For vndk_prebuilt_shared module, it is set by 'version' property.
For other vndk libs(e.g. cc_library with vndk.enabled), it is set as
PLATFORM_VNDK_VERSION.
Background:
To support "skip installing current VNDK".
You can get a system.img without current VNDK libs.
This may help when you want a smaller system.img given that the image
will be used with a specific version (not current) of vendor image.
Bug: 132140714
Test: m TARGET_SKIP_CURRENT_VNDK=true && see if current VNDK is not
installed
Change-Id: I1c603efc3e95fe8bdf870f2de91994077899fca7
diff --git a/cc/androidmk.go b/cc/androidmk.go
index c7883e2..d7f7448 100644
--- a/cc/androidmk.go
+++ b/cc/androidmk.go
@@ -89,6 +89,9 @@
fmt.Fprintln(w, "LOCAL_SOONG_LINK_TYPE :=", c.makeLinkType)
if c.useVndk() {
fmt.Fprintln(w, "LOCAL_USE_VNDK := true")
+ if c.isVndk() && !c.static() {
+ fmt.Fprintln(w, "LOCAL_SOONG_VNDK_VERSION := "+c.vndkVersion())
+ }
}
},
},
diff --git a/cc/cc.go b/cc/cc.go
index a3b9a92..96acf81 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -534,6 +534,13 @@
return false
}
+func (c *Module) vndkVersion() string {
+ if vndkdep := c.vndkdep; vndkdep != nil {
+ return vndkdep.Properties.Vndk.Version
+ }
+ return ""
+}
+
func (c *Module) isPgoCompile() bool {
if pgo := c.pgo; pgo != nil {
return pgo.Properties.PgoCompile
diff --git a/cc/vndk.go b/cc/vndk.go
index a1d67af..60a3d78 100644
--- a/cc/vndk.go
+++ b/cc/vndk.go
@@ -49,6 +49,10 @@
// Extending another module
Extends *string
+
+ // for vndk_prebuilt_shared, this is set by "version" property.
+ // Otherwise, this is set as PLATFORM_VNDK_VERSION.
+ Version string `blueprint:"mutated"`
}
}
@@ -325,6 +329,14 @@
return
}
+ if m.isVndk() {
+ if lib, ok := m.linker.(*vndkPrebuiltLibraryDecorator); ok {
+ m.vndkdep.Properties.Vndk.Version = lib.version()
+ } else {
+ m.vndkdep.Properties.Vndk.Version = mctx.DeviceConfig().PlatformVndkVersion()
+ }
+ }
+
if _, ok := m.linker.(*llndkStubDecorator); ok {
processLlndkLibrary(mctx, m)
return