| 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", |
| ) |