xref: /aosp_15_r20/build/bazel/rules/apex/BUILD (revision 7594170e27e0732bc44b93d1440d87a54b6ffe7c)
1load("@bazel_skylib//rules:common_settings.bzl", "bool_flag", "bool_setting", "string_list_setting", "string_setting")
2load("@env//:env.bzl", "env")
3load("@soong_injection//api_levels:platform_versions.bzl", "platform_versions")
4load("//build/bazel/flags:common.bzl", "is_env_true")
5load("//build/bazel/platforms/arch/variants:constants.bzl", "arch_variant_to_constraints")
6load("//build/bazel/rules:metadata.bzl", "metadata")
7load("//build/bazel/rules/apex:toolchain.bzl", "apex_toolchain")
8load("//build/bazel/rules/common:api.bzl", "api")
9load(":apex_aab_test.bzl", "apex_aab_test_suite")
10load(":apex_key_test.bzl", "apex_key_test_suite")
11load(":apex_mk_test.bzl", "apex_mk_test_suite")
12load(":apex_test.bzl", "apex_test_suite")
13
14# Setup package and default_metadata_file for _test_apex_sbom in apex_test.bzl
15package(default_package_metadata = [":default_metadata_file"])
16
17metadata(name = "default_metadata_file")
18
19string_setting(
20    name = "api_domain",
21    build_setting_default = "system",
22    visibility = ["//visibility:public"],
23)
24
25string_setting(
26    name = "apex_name",
27    build_setting_default = "",
28    visibility = ["//visibility:public"],
29)
30
31string_setting(
32    name = "base_apex_name",
33    build_setting_default = "",
34    visibility = ["//visibility:public"],
35)
36
37string_setting(
38    name = "override_apex_manifest_default_version",
39    build_setting_default = env.get("OVERRIDE_APEX_MANIFEST_DEFAULT_VERSION", ""),
40    visibility = ["//visibility:public"],
41)
42
43bool_setting(
44    name = "within_apex",
45    build_setting_default = False,
46    visibility = ["//visibility:public"],
47)
48
49config_setting(
50    name = "system",
51    constraint_values = [
52        arch_variant_to_constraints["android"],
53    ],
54    flag_values = {
55        ":api_domain": "system",
56        ":within_apex": "False",
57    },
58)
59
60# config setting to build sdk variants
61config_setting(
62    name = "unbundled_app",
63    constraint_values = [
64        arch_variant_to_constraints["android"],
65    ],
66    flag_values = {
67        ":api_domain": "unbundled_app",
68        ":within_apex": "False",
69    },
70)
71
72config_setting(
73    name = "unbundled_app.arm",
74    constraint_values = [
75        arch_variant_to_constraints["android"],
76        arch_variant_to_constraints["arm"],
77    ],
78    flag_values = {
79        ":api_domain": "unbundled_app",
80        ":within_apex": "False",
81    },
82)
83
84config_setting(
85    name = "in_apex",
86    flag_values = {
87        ":within_apex": "True",
88    },
89)
90
91config_setting(
92    name = "non_apex",
93    flag_values = {
94        ":apex_name": "",
95    },
96)
97
98config_setting(
99    name = "android-in_apex",
100    constraint_values = [
101        arch_variant_to_constraints["android"],
102    ],
103    flag_values = {
104        ":within_apex": "True",
105    },
106)
107
108config_setting(
109    name = "android-non_apex",
110    constraint_values = [
111        arch_variant_to_constraints["android"],
112    ],
113    flag_values = {
114        ":within_apex": "False",
115    },
116)
117
118config_setting(
119    name = "linux_bionic-in_apex",
120    constraint_values = [
121        arch_variant_to_constraints["linux_bionic"],
122    ],
123    flag_values = {
124        ":within_apex": "True",
125    },
126)
127
128config_setting(
129    name = "linux_bionic-non_apex",
130    constraint_values = [
131        arch_variant_to_constraints["linux_bionic"],
132    ],
133    flag_values = {
134        ":within_apex": "False",
135    },
136)
137
138string_list_setting(
139    name = "apex_direct_deps",
140    build_setting_default = [],
141    visibility = ["//visibility:public"],
142)
143
144string_setting(
145    name = "min_sdk_version",
146    build_setting_default = "",
147    visibility = ["//visibility:public"],
148)
149
150[
151    config_setting(
152        name = "min_sdk_version_" + str(level),
153        flag_values = {
154            ":min_sdk_version": str(level),
155        },
156    )
157    for level in api.api_levels.values()
158]
159
160bool_flag(
161    name = "unsafe_disable_apex_allowed_deps_check",
162    build_setting_default = is_env_true(env.get("UNSAFE_DISABLE_APEX_ALLOWED_DEPS_CHECK")),
163    visibility = ["//visibility:public"],
164)
165
166bool_flag(
167    name = "unbundled_build_target_sdk_with_api_fingerprint",
168    build_setting_default = is_env_true(env.get("UNBUNDLED_BUILD_TARGET_SDK_WITH_API_FINGERPRINT")),
169    visibility = ["//visibility:public"],
170)
171
172string_setting(
173    name = "platform_sdk_codename",
174    build_setting_default = platform_versions.platform_sdk_codename,
175    visibility = ["//visibility:public"],
176)
177
178toolchain_type(name = "apex_toolchain_type")
179
180apex_toolchain(
181    name = "apex_toolchain",
182    aapt2 = "//frameworks/base/tools/aapt2",
183    android_jar = "//prebuilts/sdk/current:public/android.jar",
184    apex_compression_tool = "//system/apex/tools:apex_compression_tool",
185    apexer = "//system/apex/apexer",
186    avbtool = "//external/avb:avbtool",
187    conv_apex_manifest = "//system/apex/apexer:conv_apex_manifest",
188    dexdeps = "//dalvik/tools/dexdeps",  # tool input for gen_java_usedby_apex
189    e2fsdroid = "//external/e2fsprogs/contrib/android:e2fsdroid",
190    gen_java_usedby_apex = "//build/soong/scripts:gen_java_usedby_apex.sh",
191    gen_ndk_usedby_apex = "//build/soong/scripts:gen_ndk_usedby_apex.sh",
192    jsonmodify = "//build/soong/scripts:jsonmodify",
193    manifest_fixer = "//build/soong/scripts:manifest_fixer",
194    mke2fs = "//external/e2fsprogs/misc:mke2fs",
195    notice_generator = "//build/bazel/compliance:bazel_notice_gen",
196    readelf = "//prebuilts/clang/host/linux-x86:llvm-readelf",
197    resize2fs = "//external/e2fsprogs/resize:resize2fs",
198    sefcontext_compile = "//external/selinux/libselinux:sefcontext_compile",
199    soong_zip = "//build/soong/zip/cmd:soong_zip",
200)
201
202toolchain(
203    name = "apex_toolchain_def",
204    exec_compatible_with = [
205        "//build/bazel_common_rules/platforms/arch:x86_64",
206        "//build/bazel_common_rules/platforms/os:linux",
207    ],
208    target_compatible_with = [
209        "//build/bazel_common_rules/platforms/os:android",
210    ],
211    toolchain = ":apex_toolchain",
212    toolchain_type = "//build/bazel/rules/apex:apex_toolchain_type",
213)
214
215apex_test_suite(
216    name = "apex_tests",
217)
218
219apex_aab_test_suite(
220    name = "apex_aab_tests",
221)
222
223apex_key_test_suite(
224    name = "apex_key_tests",
225)
226
227apex_mk_test_suite(
228    name = "apex_mk_tests",
229)
230
231filegroup(
232    name = "signapk_deploy_jar",
233    srcs = ["//build/make/tools/signapk:signapk_deploy.jar"],
234    visibility = ["//visibility:public"],
235)
236