aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Albert <danalbert@google.com>2017-03-31 23:17:13 +0000
committerandroid-build-merger <android-build-merger@google.com>2017-03-31 23:17:13 +0000
commitd8db841138a1d7ed338c120af9aebbc4c5e108f4 (patch)
treeb04c79d90fdb9ffd4cdd030213ab1b01daf918c9
parentd6f6ad8073e2a4fddcbc8985d3bda5916ce1f1ef (diff)
parent30c9d6e771ef76c4f809b0674ee9a3edd2aa88ab (diff)
downloadbuild_soong-d8db841138a1d7ed338c120af9aebbc4c5e108f4.tar.gz
build_soong-d8db841138a1d7ed338c120af9aebbc4c5e108f4.tar.bz2
build_soong-d8db841138a1d7ed338c120af9aebbc4c5e108f4.zip
Generate file to map codenames to API levels.
am: 30c9d6e771 Change-Id: Ic2290130b7b675f3e82ba805bfe3b5a4fde6e249
-rw-r--r--Android.bp1
-rw-r--r--android/api_levels.go63
-rw-r--r--android/config.go4
-rw-r--r--android/defs.go7
-rw-r--r--android/variable.go3
5 files changed, 77 insertions, 1 deletions
diff --git a/Android.bp b/Android.bp
index e3948924..c87903f0 100644
--- a/Android.bp
+++ b/Android.bp
@@ -47,6 +47,7 @@ bootstrap_go_package {
],
srcs: [
"android/androidmk.go",
+ "android/api_levels.go",
"android/arch.go",
"android/config.go",
"android/defaults.go",
diff --git a/android/api_levels.go b/android/api_levels.go
new file mode 100644
index 00000000..c77ced16
--- /dev/null
+++ b/android/api_levels.go
@@ -0,0 +1,63 @@
+// Copyright 2017 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package android
+
+import (
+ "encoding/json"
+
+ "github.com/google/blueprint"
+)
+
+func init() {
+ RegisterSingletonType("api_levels", ApiLevelsSingleton)
+}
+
+func ApiLevelsSingleton() blueprint.Singleton {
+ return &apiLevelsSingleton{}
+}
+
+type apiLevelsSingleton struct{}
+
+func createApiLevelsJson(ctx blueprint.SingletonContext, file string,
+ apiLevelsMap map[string]int) {
+
+ jsonStr, err := json.Marshal(apiLevelsMap)
+ if err != nil {
+ ctx.Errorf(err.Error())
+ }
+
+ ctx.Build(pctx, blueprint.BuildParams{
+ Rule: WriteFile,
+ Outputs: []string{file},
+ Args: map[string]string{
+ "content": string(jsonStr[:]),
+ },
+ })
+}
+
+func GetApiLevelsJson(ctx PathContext) Path {
+ return PathForOutput(ctx, "api_levels.json")
+}
+
+func (a *apiLevelsSingleton) GenerateBuildActions(ctx blueprint.SingletonContext) {
+ baseApiLevel := 9000
+ apiLevelsMap := map[string]int{}
+ for i, codename := range ctx.Config().(Config).PlatformVersionAllCodenames() {
+ apiLevelsMap[codename] = baseApiLevel + i
+ }
+
+ apiLevelsJson := GetApiLevelsJson(ctx)
+ createApiLevelsJson(ctx, apiLevelsJson.String(), apiLevelsMap)
+}
diff --git a/android/config.go b/android/config.go
index 686eeb8e..3c254851 100644
--- a/android/config.go
+++ b/android/config.go
@@ -353,6 +353,10 @@ func (c *config) PlatformSdkVersion() string {
return strconv.Itoa(c.PlatformSdkVersionInt())
}
+func (c *config) PlatformVersionAllCodenames() []string {
+ return c.ProductVariables.Platform_version_all_codenames
+}
+
func (c *config) BuildNumber() string {
return "000000"
}
diff --git a/android/defs.go b/android/defs.go
index d7e2a9f7..6f463162 100644
--- a/android/defs.go
+++ b/android/defs.go
@@ -80,6 +80,13 @@ var (
Description: "concatenate licenses $out",
})
+ WriteFile = pctx.AndroidStaticRule("WriteFile",
+ blueprint.RuleParams{
+ Command: "echo '$content' > $out",
+ Description: "writing file $out",
+ },
+ "content")
+
// Used only when USE_GOMA=true is set, to restrict non-goma jobs to the local parallelism value
localPool = blueprint.NewBuiltinPool("local_pool")
)
diff --git a/android/variable.go b/android/variable.go
index c5b957be..b0ab2d0c 100644
--- a/android/variable.go
+++ b/android/variable.go
@@ -82,7 +82,8 @@ type productVariables struct {
// Suffix to add to generated Makefiles
Make_suffix *string `json:",omitempty"`
- Platform_sdk_version *int `json:",omitempty"`
+ Platform_sdk_version *int `json:",omitempty"`
+ Platform_version_all_codenames []string `json:",omitempty"`
DeviceName *string `json:",omitempty"`
DeviceArch *string `json:",omitempty"`