Stop versioning NDK stubs pre-M.
Test: make ndk # readelf various stubs to check version info
Bug: https://github.com/android-ndk/ndk/issues/622
Change-Id: Ic2930cfe5ee8377bb89bfb1bc051b6975f6e57d3
Merged-In: Ic2930cfe5ee8377bb89bfb1bc051b6975f6e57d3
(cherry picked from commit c229f38e93da71bcf9beca3683f5a603b7dd3bca)
diff --git a/android/api_levels.go b/android/api_levels.go
index b1b954c..1b56625 100644
--- a/android/api_levels.go
+++ b/android/api_levels.go
@@ -16,6 +16,7 @@
import (
"encoding/json"
+ "strconv"
)
func init() {
@@ -50,28 +51,48 @@
return PathForOutput(ctx, "api_levels.json")
}
-func (a *apiLevelsSingleton) GenerateBuildActions(ctx SingletonContext) {
- baseApiLevel := 9000
- apiLevelsMap := map[string]int{
- "G": 9,
- "I": 14,
- "J": 16,
- "J-MR1": 17,
- "J-MR2": 18,
- "K": 19,
- "L": 21,
- "L-MR1": 22,
- "M": 23,
- "N": 24,
- "N-MR1": 25,
- "O": 26,
- "O-MR1": 27,
- "P": 28,
- }
- for i, codename := range ctx.Config().PlatformVersionCombinedCodenames() {
- apiLevelsMap[codename] = baseApiLevel + i
- }
+func getApiLevelsMap(config Config) map[string]int {
+ return config.Once("ApiLevelsMap", func() interface{} {
+ baseApiLevel := 9000
+ apiLevelsMap := map[string]int{
+ "G": 9,
+ "I": 14,
+ "J": 16,
+ "J-MR1": 17,
+ "J-MR2": 18,
+ "K": 19,
+ "L": 21,
+ "L-MR1": 22,
+ "M": 23,
+ "N": 24,
+ "N-MR1": 25,
+ "O": 26,
+ "O-MR1": 27,
+ "P": 28,
+ }
+ for i, codename := range config.PlatformVersionCombinedCodenames() {
+ apiLevelsMap[codename] = baseApiLevel + i
+ }
+ return apiLevelsMap
+ }).(map[string]int)
+}
+
+// Converts an API level string into its numeric form.
+// * Codenames are decoded.
+// * Numeric API levels are simply converted.
+// * "minimum" and "current" are not currently handled since the former is
+// NDK specific and the latter has inconsistent meaning.
+func ApiStrToNum(ctx BaseContext, apiLevel string) (int, error) {
+ num, ok := getApiLevelsMap(ctx.Config())[apiLevel]
+ if ok {
+ return num, nil
+ }
+ return strconv.Atoi(apiLevel)
+}
+
+func (a *apiLevelsSingleton) GenerateBuildActions(ctx SingletonContext) {
+ apiLevelsMap := getApiLevelsMap(ctx.Config())
apiLevelsJson := GetApiLevelsJson(ctx)
createApiLevelsJson(ctx, apiLevelsJson, apiLevelsMap)
}