xref: /aosp_15_r20/bootable/libbootloader/gbl/toolchain/BUILD.android_rust_prebuilts.bazel (revision 5225e6b173e52d2efc6bcf950c27374fd72adabc)
1*5225e6b1SAndroid Build Coastguard Worker# Copyright (C) 2023 The Android Open Source Project
2*5225e6b1SAndroid Build Coastguard Worker#
3*5225e6b1SAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License");
4*5225e6b1SAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
5*5225e6b1SAndroid Build Coastguard Worker# You may obtain a copy of the License at
6*5225e6b1SAndroid Build Coastguard Worker#
7*5225e6b1SAndroid Build Coastguard Worker#     http://www.apache.org/licenses/LICENSE-2.0
8*5225e6b1SAndroid Build Coastguard Worker#
9*5225e6b1SAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
10*5225e6b1SAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS,
11*5225e6b1SAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*5225e6b1SAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
13*5225e6b1SAndroid Build Coastguard Worker# limitations under the License.
14*5225e6b1SAndroid Build Coastguard Worker
15*5225e6b1SAndroid Build Coastguard Workerload("@rules_rust//rust:defs.bzl", "rust_library", "rust_stdlib_filegroup")
16*5225e6b1SAndroid Build Coastguard Worker
17*5225e6b1SAndroid Build Coastguard Workerpackage(default_visibility = ["//visibility:public"])
18*5225e6b1SAndroid Build Coastguard Worker
19*5225e6b1SAndroid Build Coastguard Workerexports_files(["bin/*"])
20*5225e6b1SAndroid Build Coastguard Worker
21*5225e6b1SAndroid Build Coastguard Workerfilegroup(
22*5225e6b1SAndroid Build Coastguard Worker    name = "binaries",
23*5225e6b1SAndroid Build Coastguard Worker    srcs = glob([
24*5225e6b1SAndroid Build Coastguard Worker        "bin/*",
25*5225e6b1SAndroid Build Coastguard Worker        "lib/*",
26*5225e6b1SAndroid Build Coastguard Worker        "lib64/*",
27*5225e6b1SAndroid Build Coastguard Worker    ]),
28*5225e6b1SAndroid Build Coastguard Worker)
29*5225e6b1SAndroid Build Coastguard Worker
30*5225e6b1SAndroid Build Coastguard Worker# sysroot prebuilts for x86_64_unknown-linux-gnu
31*5225e6b1SAndroid Build Coastguard Workerrust_stdlib_filegroup(
32*5225e6b1SAndroid Build Coastguard Worker    name = "prebuilt_stdlibs",
33*5225e6b1SAndroid Build Coastguard Worker    srcs = glob(["lib/rustlib/x86_64-unknown-linux-gnu/lib/*"]),
34*5225e6b1SAndroid Build Coastguard Worker)
35*5225e6b1SAndroid Build Coastguard Worker
36*5225e6b1SAndroid Build Coastguard Worker# sysroot prebuilts for aarch64_unknown-uefi
37*5225e6b1SAndroid Build Coastguard Workerrust_stdlib_filegroup(
38*5225e6b1SAndroid Build Coastguard Worker    name = "aarch64-unknown-uefi_prebuilt_stdlibs",
39*5225e6b1SAndroid Build Coastguard Worker    srcs = glob(["lib/rustlib/aarch64-unknown-uefi/lib/*"]),
40*5225e6b1SAndroid Build Coastguard Worker)
41*5225e6b1SAndroid Build Coastguard Worker
42*5225e6b1SAndroid Build Coastguard Worker# sysroot prebuilts for x86_64-unknown-uefi
43*5225e6b1SAndroid Build Coastguard Workerrust_stdlib_filegroup(
44*5225e6b1SAndroid Build Coastguard Worker    name = "x86_64-unknown-uefi_prebuilt_stdlibs",
45*5225e6b1SAndroid Build Coastguard Worker    srcs = glob(["lib/rustlib/x86_64-unknown-uefi/lib/*"]),
46*5225e6b1SAndroid Build Coastguard Worker)
47*5225e6b1SAndroid Build Coastguard Worker
48*5225e6b1SAndroid Build Coastguard Worker# sysroot prebuilts for i686-unknown-uefi
49*5225e6b1SAndroid Build Coastguard Workerrust_stdlib_filegroup(
50*5225e6b1SAndroid Build Coastguard Worker    name = "i686-unknown-uefi_prebuilt_stdlibs",
51*5225e6b1SAndroid Build Coastguard Worker    srcs = glob(["lib/rustlib/i686-unknown-uefi/lib/*"]),
52*5225e6b1SAndroid Build Coastguard Worker)
53*5225e6b1SAndroid Build Coastguard Worker
54*5225e6b1SAndroid Build Coastguard Workerrust_library(
55*5225e6b1SAndroid Build Coastguard Worker    name = "liballoc",
56*5225e6b1SAndroid Build Coastguard Worker    srcs = glob(["src/stdlibs/library/alloc/src/**/*.rs"]),
57*5225e6b1SAndroid Build Coastguard Worker    compile_data = glob(["src/stdlibs/library/alloc/src/**/*.md"]),
58*5225e6b1SAndroid Build Coastguard Worker    crate_name = "alloc",
59*5225e6b1SAndroid Build Coastguard Worker    edition = "2021",
60*5225e6b1SAndroid Build Coastguard Worker    deps = [
61*5225e6b1SAndroid Build Coastguard Worker        "libcompiler_builtins",
62*5225e6b1SAndroid Build Coastguard Worker        "libcore",
63*5225e6b1SAndroid Build Coastguard Worker    ],
64*5225e6b1SAndroid Build Coastguard Worker)
65*5225e6b1SAndroid Build Coastguard Worker
66*5225e6b1SAndroid Build Coastguard WorkerCOMPILER_BUILTIN_X86_SRC = "src/stdlibs/vendor/compiler_builtins/src/x86.rs"
67*5225e6b1SAndroid Build Coastguard Worker
68*5225e6b1SAndroid Build Coastguard WorkerCOMPILER_BUILTIN_X86_PATCH = "@gbl//patches:rust-libcompiler-builtins-enable-chkstk-on-uefi.patch"
69*5225e6b1SAndroid Build Coastguard Worker
70*5225e6b1SAndroid Build Coastguard Worker# Apply patches to x86 to enable the compiler built-in for chkstk(), alloca() function.
71*5225e6b1SAndroid Build Coastguard Worker# TODO(b/337114254): Remove this patch once upstream is fixed.
72*5225e6b1SAndroid Build Coastguard Workergenrule(
73*5225e6b1SAndroid Build Coastguard Worker    name = "x86_uefi_chkstk_patch",
74*5225e6b1SAndroid Build Coastguard Worker    srcs = [
75*5225e6b1SAndroid Build Coastguard Worker        COMPILER_BUILTIN_X86_SRC,
76*5225e6b1SAndroid Build Coastguard Worker        COMPILER_BUILTIN_X86_PATCH,
77*5225e6b1SAndroid Build Coastguard Worker    ],
78*5225e6b1SAndroid Build Coastguard Worker    # Bazel does not let us override the same x86.rs. But module name needs to be the same. Thus we
79*5225e6b1SAndroid Build Coastguard Worker    # output as "x86/mod.rs" instead.
80*5225e6b1SAndroid Build Coastguard Worker    outs = ["src/stdlibs/vendor/compiler_builtins/src/x86/mod.rs"],
81*5225e6b1SAndroid Build Coastguard Worker    cmd = " cp $(location {}) $(OUTS) && patch -u -f $(OUTS) $(location {})"
82*5225e6b1SAndroid Build Coastguard Worker        .format(COMPILER_BUILTIN_X86_SRC, COMPILER_BUILTIN_X86_PATCH),
83*5225e6b1SAndroid Build Coastguard Worker)
84*5225e6b1SAndroid Build Coastguard Worker
85*5225e6b1SAndroid Build Coastguard Workerrust_library(
86*5225e6b1SAndroid Build Coastguard Worker    name = "libcompiler_builtins",
87*5225e6b1SAndroid Build Coastguard Worker    srcs = glob(
88*5225e6b1SAndroid Build Coastguard Worker        [
89*5225e6b1SAndroid Build Coastguard Worker            "src/stdlibs/vendor/compiler_builtins/src/**/*.rs",
90*5225e6b1SAndroid Build Coastguard Worker            "src/stdlibs/vendor/compiler_builtins/libm/src/**/*.rs",
91*5225e6b1SAndroid Build Coastguard Worker        ],
92*5225e6b1SAndroid Build Coastguard Worker    ),
93*5225e6b1SAndroid Build Coastguard Worker    compile_data = glob(["src/stdlibs/vendor/compiler_builtins/src/**/*.md"]),
94*5225e6b1SAndroid Build Coastguard Worker    crate_features = [
95*5225e6b1SAndroid Build Coastguard Worker        "compiler-builtins",
96*5225e6b1SAndroid Build Coastguard Worker        "core",
97*5225e6b1SAndroid Build Coastguard Worker        "default",
98*5225e6b1SAndroid Build Coastguard Worker        "mem",
99*5225e6b1SAndroid Build Coastguard Worker    ],
100*5225e6b1SAndroid Build Coastguard Worker    crate_name = "compiler_builtins",
101*5225e6b1SAndroid Build Coastguard Worker    edition = "2015",
102*5225e6b1SAndroid Build Coastguard Worker    rustc_flags = ["--cap-lints=allow"],
103*5225e6b1SAndroid Build Coastguard Worker    deps = ["libcore"],
104*5225e6b1SAndroid Build Coastguard Worker)
105*5225e6b1SAndroid Build Coastguard Worker
106*5225e6b1SAndroid Build Coastguard Workerrust_library(
107*5225e6b1SAndroid Build Coastguard Worker    name = "libcore",
108*5225e6b1SAndroid Build Coastguard Worker    srcs = glob([
109*5225e6b1SAndroid Build Coastguard Worker        "src/stdlibs/library/core/src/**/*.rs",
110*5225e6b1SAndroid Build Coastguard Worker        "src/stdlibs/library/stdarch/crates/core_arch/src/**/*.rs",
111*5225e6b1SAndroid Build Coastguard Worker        "src/stdlibs/library/portable-simd/crates/core_simd/src/**/*.rs",
112*5225e6b1SAndroid Build Coastguard Worker    ]),
113*5225e6b1SAndroid Build Coastguard Worker    compile_data = glob([
114*5225e6b1SAndroid Build Coastguard Worker        "src/stdlibs/library/core/src/**/*.md",
115*5225e6b1SAndroid Build Coastguard Worker        "src/stdlibs/library/core/primitive_docs/*.md",
116*5225e6b1SAndroid Build Coastguard Worker        "src/stdlibs/library/stdarch/crates/core_arch/src/**/*.md",
117*5225e6b1SAndroid Build Coastguard Worker        "src/stdlibs/library/portable-simd/crates/core_simd/src/**/*.md",
118*5225e6b1SAndroid Build Coastguard Worker    ]),
119*5225e6b1SAndroid Build Coastguard Worker    crate_features = ["stdsimd"],
120*5225e6b1SAndroid Build Coastguard Worker    crate_name = "core",
121*5225e6b1SAndroid Build Coastguard Worker    edition = "2021",
122*5225e6b1SAndroid Build Coastguard Worker    rustc_flags = ["--cap-lints=allow"],
123*5225e6b1SAndroid Build Coastguard Worker)
124