github.com/westcoastroms/westcoastroms-build@v0.0.0-20190928114312-2350e5a73030/build/soong/android/api_levels.go (about)

     1  // Copyright 2017 Google Inc. All rights reserved.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //     http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  package android
    16  
    17  import (
    18  	"encoding/json"
    19  )
    20  
    21  func init() {
    22  	RegisterSingletonType("api_levels", ApiLevelsSingleton)
    23  }
    24  
    25  func ApiLevelsSingleton() Singleton {
    26  	return &apiLevelsSingleton{}
    27  }
    28  
    29  type apiLevelsSingleton struct{}
    30  
    31  func createApiLevelsJson(ctx SingletonContext, file WritablePath,
    32  	apiLevelsMap map[string]int) {
    33  
    34  	jsonStr, err := json.Marshal(apiLevelsMap)
    35  	if err != nil {
    36  		ctx.Errorf(err.Error())
    37  	}
    38  
    39  	ctx.Build(pctx, BuildParams{
    40  		Rule:        WriteFile,
    41  		Description: "generate " + file.Base(),
    42  		Output:      file,
    43  		Args: map[string]string{
    44  			"content": string(jsonStr[:]),
    45  		},
    46  	})
    47  }
    48  
    49  func GetApiLevelsJson(ctx PathContext) WritablePath {
    50  	return PathForOutput(ctx, "api_levels.json")
    51  }
    52  
    53  func (a *apiLevelsSingleton) GenerateBuildActions(ctx SingletonContext) {
    54  	baseApiLevel := 9000
    55  	apiLevelsMap := map[string]int{
    56  		"G":     9,
    57  		"I":     14,
    58  		"J":     16,
    59  		"J-MR1": 17,
    60  		"J-MR2": 18,
    61  		"K":     19,
    62  		"L":     21,
    63  		"L-MR1": 22,
    64  		"M":     23,
    65  		"N":     24,
    66  		"N-MR1": 25,
    67  		"O":     26,
    68  		"O-MR1": 27,
    69  		"P":     28,
    70  	}
    71  	for i, codename := range ctx.Config().PlatformVersionCombinedCodenames() {
    72  		apiLevelsMap[codename] = baseApiLevel + i
    73  	}
    74  
    75  	apiLevelsJson := GetApiLevelsJson(ctx)
    76  	createApiLevelsJson(ctx, apiLevelsJson, apiLevelsMap)
    77  }