From dfd9d57ca99d49f296189de8728b81b94ed2e16a Mon Sep 17 00:00:00 2001 From: Dmitrii Merkurev Date: Mon, 18 Dec 2023 23:09:28 +0000 Subject: add bazel targets to build riscv and arm64 lk Bug: 291553072 Change-Id: I902b835860241e258aea907aaf5daa8ad42f1e12 Signed-off-by: Dmitrii Merkurev --- BUILD | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ bazel.WORKSPACE | 5 +++ bazel.sh | 1 + 3 files changed, 108 insertions(+) create mode 100644 BUILD create mode 100644 bazel.WORKSPACE create mode 100755 bazel.sh diff --git a/BUILD b/BUILD new file mode 100644 index 00000000..ed186cea --- /dev/null +++ b/BUILD @@ -0,0 +1,102 @@ +load("@bazel_tools//tools/python:toolchain.bzl", "py_runtime_pair") +load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir") + +clang = "prebuilts/clang/host/linux-x86/clang-r498229b" + +make = "./prebuilts/build-tools/linux-x86/bin/make" + +clang_bin = "../{toolchain}/bin/".format(toolchain = clang) + +filegroup( + name = "lk_srcs", + srcs = glob(["**"]), +) + +filegroup( + name = "lk_toochain", + srcs = [ + "//prebuilts/build-tools:linux-x86", + "//{toolchain}:binaries".format(toolchain = clang), + ], +) + +environment_variables = { + "CC": clang_bin + "clang -target {clang_target}", + "LD": clang_bin + "ld.lld", + "OBJDUMP": clang_bin + "llvm-objdump", + "OBJCOPY": clang_bin + "llvm-objcopy", + "CPPFILT": clang_bin + "llvm-cxxfilt", + "SIZE": clang_bin + "llvm-size", + "NM": clang_bin + "llvm-nm", + "STRIP": clang_bin + "llvm-strip", + "LIBGCC": "", +} + +environment = " ".join(['{}="{}"'.format(k, v) for k, v in environment_variables.items()]) + +build_command = "{make} -C lk {environment} {lk_target} && cp -R lk/build-{lk_target}/lk.elf $@" + +genrule( + name = "qemu_riscv64", + srcs = [ + ":lk_srcs", + ":lk_toochain", + ], + outs = [ + "qemu_riscv64/lk.elf", + ], + cmd = build_command.format( + environment = environment.format(clang_target = "riscv64-unknown-elf"), + lk_target = "qemu-virt-riscv64-test", + make = make, + ), + tools = [ + ":lk_toochain", + ], +) + +copy_to_dist_dir( + name = "qemu_riscv64_dist", + data = [":qemu_riscv64"], + dist_dir = "out/lk/dist", + flat = True, +) + +genrule( + name = "qemu_arm64", + srcs = [ + ":lk_srcs", + ":lk_toochain", + ], + outs = [ + "qemu_arm64/lk.elf", + ], + cmd = build_command.format( + environment = environment.format(clang_target = "aarch64-unknown-elf"), + lk_target = "qemu-virt-arm64-test", + make = make, + ), + tools = [ + ":lk_toochain", + ], +) + +copy_to_dist_dir( + name = "qemu_arm64_dist", + data = [":qemu_arm64"], + dist_dir = "out/lk/dist", + flat = True, +) + +# Use SWIG enabled Python +py_runtime_pair( + name = "py_runtime_pair", + py2_runtime = "//prebuilts/build-tools:python2", + py3_runtime = "//{toolchain}:python3".format(toolchain = clang), +) + +toolchain( + name = "py_toolchain", + toolchain = ":py_runtime_pair", + toolchain_type = "@bazel_tools//tools/python:toolchain_type", +) diff --git a/bazel.WORKSPACE b/bazel.WORKSPACE new file mode 100644 index 00000000..8b5fb587 --- /dev/null +++ b/bazel.WORKSPACE @@ -0,0 +1,5 @@ +# Call this before define_kleaf_workspace so we +# always prefer the u-boot py_toolchain. +# As a side effect, all u-boot targets, including those that do not need +# this special python, will use this special python. +register_toolchains("//lk:py_toolchain") \ No newline at end of file diff --git a/bazel.sh b/bazel.sh new file mode 100755 index 00000000..964b89b4 --- /dev/null +++ b/bazel.sh @@ -0,0 +1 @@ +"./prebuilts/bazel/linux-x86_64/bazel" "$@" \ No newline at end of file -- cgit v1.2.3