aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--BUILD102
-rw-r--r--bazel.WORKSPACE5
-rwxr-xr-xbazel.sh1
3 files changed, 108 insertions, 0 deletions
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