From f5415d7cc68d84d9f5183f48498011675a19df47 Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Thu, 17 Aug 2017 16:19:59 -0700 Subject: 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 --- android/config.go | 4 ++++ android/makevars.go | 9 +++++++++ cc/cc.go | 2 +- cc/ndk_library.go | 14 ++++++++------ 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/android/config.go b/android/config.go index ee2f40fd..330669dc 100644 --- a/android/config.go +++ b/android/config.go @@ -378,6 +378,10 @@ func (c *config) PlatformSdkVersion() string { 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 482fbdea..024e0152 100644 --- a/android/makevars.go +++ b/android/makevars.go @@ -19,11 +19,20 @@ import ( "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 ba06be24..cfe748b7 100644 --- a/cc/cc.go +++ b/cc/cc.go @@ -638,7 +638,7 @@ func (c *Module) begin(ctx BaseModuleContext) { 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 8fbffcf0..fc7cd918 100644 --- a/cc/ndk_library.go +++ b/cc/ndk_library.go @@ -110,18 +110,20 @@ func intMax(a int, b int) int { } } -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 shouldUseVersionScript(stub *stubDecorator) (bool, error) { 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()) -- cgit v1.2.3