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