diff options
Diffstat (limited to 'rules/common/sdk_version.bzl')
-rw-r--r-- | rules/common/sdk_version.bzl | 45 |
1 files changed, 32 insertions, 13 deletions
diff --git a/rules/common/sdk_version.bzl b/rules/common/sdk_version.bzl index 7b853762..33f2f61c 100644 --- a/rules/common/sdk_version.bzl +++ b/rules/common/sdk_version.bzl @@ -17,18 +17,25 @@ load("//build/bazel/rules/common:api.bzl", "api") # Only scopes that are available in prebuilts (and "none") are listed # here for now, but the list should eventually match Soong's SdkKind # enum. -ALL_KINDS = [ - "public", - "system", - "test", - "system_server", - "module", - "core", - "none", +_KIND_PUBLIC = "public" +_KIND_SYSTEM = "system" +_KIND_TEST = "test" +_KIND_SYSTEM_SERVER = "system_server" +_KIND_MODULE = "module" +_KIND_CORE = "core" +_KIND_NONE = "none" +_ALL_KINDS = [ + _KIND_PUBLIC, + _KIND_SYSTEM, + _KIND_TEST, + _KIND_SYSTEM_SERVER, + _KIND_MODULE, + _KIND_CORE, + _KIND_NONE, ] # Starlark implementation of SdkSpecFrom at https://cs.android.com/android/platform/build/soong/+/master:android/sdk_version.go;l=248-299;drc=69f4218c4feaeca953237cd9e76a9a8cc423d3e3. -def sdk_spec_from(sdk_version): +def _sdk_spec_from(sdk_version): """Parses an sdk_version string into kind and api_level. Args: @@ -49,17 +56,29 @@ def sdk_spec_from(sdk_version): if sdk_version == "core_platform": fail("Only prebuilt SDK versions are available, sdk_version core_platform is not yet supported.") if sdk_version == "none": - return struct(kind = "none", api_level = api.NONE_API_LEVEL) + return struct(kind = _KIND_NONE, api_level = api.NONE_API_LEVEL) if type(sdk_version) != type(""): fail("sdk_version must be a string") sep_index = sdk_version.rfind("_") api_level_string = sdk_version if sep_index < 0 else sdk_version[sep_index + 1:] api_level = api.parse_api_level_from_version(api_level_string) - kind = "public" if sep_index == -1 else sdk_version[:sep_index] - if kind not in ALL_KINDS: + kind = _KIND_PUBLIC if sep_index == -1 else sdk_version[:sep_index] + if kind not in _ALL_KINDS: fail("kind %s parsed from sdk_version %s must be one of %s" % ( kind, sdk_version, - ",".join(ALL_KINDS), + ",".join(_ALL_KINDS), )) return struct(kind = kind, api_level = api_level) + +sdk_version = struct( + KIND_PUBLIC = _KIND_PUBLIC, + KIND_SYSTEM = _KIND_SYSTEM, + KIND_TEST = _KIND_TEST, + KIND_SYSTEM_SERVER = _KIND_SYSTEM_SERVER, + KIND_MODULE = _KIND_MODULE, + KIND_CORE = _KIND_CORE, + KIND_NONE = _KIND_NONE, + ALL_KINDS = _ALL_KINDS, + sdk_spec_from = _sdk_spec_from, +) |