• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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