1# Common target platforms for Android Platform builds. 2# 3# Platforms represent distinct hardware environments: 4# 5# - CPU architecture 6# - Hardware capabilities 7# - Firmware differences 8# 9# Platforms do NOT represent different software packages, that is the 10# reposibility of the top-level targets being built. 11# 12# These model after the arch and OS definitions in build/soong/android/arch.go. 13 14load("@soong_injection//product_config:product_variables.bzl", "product_vars") 15load("//build/bazel/platforms:product_variables/product_platform.bzl", "android_platform", "product_variable_config") 16load("//build/bazel/platforms/arch/variants:constants.bzl", "constants") 17load( 18 "//prebuilts/clang/host/linux-x86:cc_toolchain_constants.bzl", 19 "arch_to_variants", 20 "variant_constraints", 21 "variant_name", 22) 23 24package(default_visibility = ["//visibility:public"]) 25 26product_variable_config( 27 name = "android_target", 28 product_config_vars = product_vars, 29) 30 31# Linux is the OS 32# for the Linux kernel plus the glibc runtime. 33android_platform( 34 name = "linux_x86", 35 constraint_values = [ 36 "//build/bazel/platforms/arch:x86", 37 "//build/bazel/platforms/os:linux", 38 ], 39 product = ":android_target", 40) 41 42android_platform( 43 name = "linux_x86_64", 44 constraint_values = [ 45 "//build/bazel/platforms/arch:x86_64", 46 "//build/bazel/platforms/os:linux", 47 ], 48 product = ":android_target", 49) 50 51# linux_bionic is the OS for the Linux kernel plus the Bionic libc runtime, but 52# without the rest of Android. 53android_platform( 54 name = "linux_bionic_arm64", 55 constraint_values = [ 56 "//build/bazel/platforms/arch:arm64", 57 "//build/bazel/platforms/os:linux_bionic", 58 ], 59 product = ":android_target", 60) 61 62android_platform( 63 name = "linux_bionic_x86_64", 64 constraint_values = [ 65 "//build/bazel/platforms/arch:x86_64", 66 "//build/bazel/platforms/os:linux_bionic", 67 ], 68 product = ":android_target", 69) 70 71# Darwin is the OS for MacOS host machines. 72android_platform( 73 name = "darwin_arm64", 74 constraint_values = [ 75 "//build/bazel/platforms/arch:arm64", 76 "//build/bazel/platforms/os:darwin", 77 ], 78 product = ":android_target", 79) 80 81android_platform( 82 name = "darwin_x86_64", 83 constraint_values = [ 84 "//build/bazel/platforms/arch:x86_64", 85 "//build/bazel/platforms/os:darwin", 86 ], 87 product = ":android_target", 88) 89 90# Windows is the OS for Windows host machines. 91android_platform( 92 name = "windows_x86", 93 constraint_values = [ 94 "//build/bazel/platforms/arch:x86", 95 "//build/bazel/platforms/os:windows", 96 ], 97 product = ":android_target", 98) 99 100android_platform( 101 name = "windows_x86_64", 102 constraint_values = [ 103 "//build/bazel/platforms/arch:x86_64", 104 "//build/bazel/platforms/os:windows", 105 ], 106 product = ":android_target", 107) 108 109alias( 110 name = "android_arm", 111 actual = ":android_arm_armv7-a-neon", # default to armv7-a-neon 112) 113 114alias( 115 name = "android_arm64", 116 actual = ":android_arm64_armv8-a", # default to armv8-a 117) 118 119[ 120 [ 121 android_platform( 122 name = "android_" + arch + variant_name(variant), 123 constraint_values = [ 124 "//build/bazel/platforms/arch:" + arch, 125 "//build/bazel/platforms/os:android", 126 ] + variant_constraints( 127 variant, 128 constants.AndroidArchToVariantToFeatures[arch], 129 ), 130 product = ":android_target", 131 ) 132 for variant in variants 133 ] 134 for arch, variants in arch_to_variants.items() 135] 136