Expose the minimum supported SDK version to make.
Right now this is hard coded in two places (here and in
core/binary.mk). Keep it in one place so it's easier to change.
Test: make checkbuild
Bug: None
Change-Id: I2a2c784d4c667b326f871e6144db92753c16c85f
diff --git a/android/config.go b/android/config.go
index ee2f40f..330669d 100644
--- a/android/config.go
+++ b/android/config.go
@@ -378,6 +378,10 @@
return strconv.Itoa(c.PlatformSdkVersionInt())
}
+func (c *config) MinSupportedSdkVersion() int {
+ return 9
+}
+
// Codenames that are active in the current lunch target.
func (c *config) PlatformVersionActiveCodenames() []string {
return c.ProductVariables.Platform_version_active_codenames
diff --git a/android/makevars.go b/android/makevars.go
index 482fbde..024e015 100644
--- a/android/makevars.go
+++ b/android/makevars.go
@@ -19,11 +19,20 @@
"fmt"
"io/ioutil"
"os"
+ "strconv"
"github.com/google/blueprint"
"github.com/google/blueprint/proptools"
)
+func init() {
+ RegisterMakeVarsProvider(pctx, androidMakeVarsProvider)
+}
+
+func androidMakeVarsProvider(ctx MakeVarsContext) {
+ ctx.Strict("MIN_SUPPORTED_SDK_VERSION", strconv.Itoa(ctx.Config().MinSupportedSdkVersion()))
+}
+
///////////////////////////////////////////////////////////////////////////////
// Interface for other packages to use to declare make variables
type MakeVarsContext interface {
diff --git a/cc/cc.go b/cc/cc.go
index ba06be2..cfe748b 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -638,7 +638,7 @@
feature.begin(ctx)
}
if ctx.sdk() {
- version, err := normalizeNdkApiLevel(ctx.sdkVersion(), ctx.Arch())
+ version, err := normalizeNdkApiLevel(ctx, ctx.sdkVersion(), ctx.Arch())
if err != nil {
ctx.PropertyErrorf("sdk_version", err.Error())
}
diff --git a/cc/ndk_library.go b/cc/ndk_library.go
index 8fbffcf..fc7cd91 100644
--- a/cc/ndk_library.go
+++ b/cc/ndk_library.go
@@ -110,18 +110,20 @@
}
}
-func normalizeNdkApiLevel(apiLevel string, arch android.Arch) (string, error) {
+func normalizeNdkApiLevel(ctx android.BaseContext, apiLevel string,
+ arch android.Arch) (string, error) {
+
if apiLevel == "current" {
return apiLevel, nil
}
- minVersion := 9 // Minimum version supported by the NDK.
+ minVersion := ctx.AConfig().MinSupportedSdkVersion()
firstArchVersions := map[android.ArchType]int{
- android.Arm: 9,
+ android.Arm: minVersion,
android.Arm64: 21,
- android.Mips: 9,
+ android.Mips: minVersion,
android.Mips64: 21,
- android.X86: 9,
+ android.X86: minVersion,
android.X86_64: 21,
}
@@ -188,7 +190,7 @@
func generateStubApiVariants(mctx android.BottomUpMutatorContext, c *stubDecorator) {
platformVersion := mctx.AConfig().PlatformSdkVersionInt()
- firstSupportedVersion, err := normalizeNdkApiLevel(c.properties.First_version,
+ firstSupportedVersion, err := normalizeNdkApiLevel(mctx, c.properties.First_version,
mctx.Arch())
if err != nil {
mctx.PropertyErrorf("first_version", err.Error())