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