diff options
author | Dmitrii Merkurev <dimorinny@google.com> | 2023-12-18 23:09:28 +0000 |
---|---|---|
committer | Dmitrii Merkurev <dimorinny@google.com> | 2023-12-18 23:09:28 +0000 |
commit | dfd9d57ca99d49f296189de8728b81b94ed2e16a (patch) | |
tree | 83ea5822e941db430f471d0ad6756be0d52bd00b | |
parent | ba349e45de475a356e0a1bfccadd8610d49e2943 (diff) | |
download | lk-main.tar.gz |
Bug: 291553072
Change-Id: I902b835860241e258aea907aaf5daa8ad42f1e12
Signed-off-by: Dmitrii Merkurev <dimorinny@google.com>
-rw-r--r-- | BUILD | 102 | ||||
-rw-r--r-- | bazel.WORKSPACE | 5 | ||||
-rwxr-xr-x | bazel.sh | 1 |
3 files changed, 108 insertions, 0 deletions
@@ -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 |