wires

summary refs log tree commit diff
path: root/build.zig
diff options
context:
space:
mode:
authorwires <wires@noreply.wires.systems>2025-03-19 17:09:41 -0400
committerwires <wires@noreply.wires.systems>2025-03-19 17:09:41 -0400
commit8466e9b4d2fbca85d53d8dadc87914b4766c43de (patch)
tree99a0d7a23e805f4ad3e30814ee9a09ebb00ae08b /build.zig
downloadzosimos-8466e9b4d2fbca85d53d8dadc87914b4766c43de.tar.gz
initial commit
Diffstat (limited to 'build.zig')
-rw-r--r--build.zig47
1 files changed, 47 insertions, 0 deletions
diff --git a/build.zig b/build.zig
new file mode 100644
index 0000000..2c55128
--- /dev/null
+++ b/build.zig
@@ -0,0 +1,47 @@
+const std = @import("std");
+
+pub fn build(b: *std.Build) void {
+    const target = b.resolveTargetQuery(.{
+        .cpu_arch = .aarch64,
+        .os_tag = .freestanding,
+    });
+
+    const optimize = b.standardOptimizeOption(.{});
+
+    const kernel = b.addExecutable(.{
+        .name = "kernel.elf",
+        .root_source_file = b.path("src/main.zig"),
+        .target = target,
+        .optimize = optimize,
+    });
+    kernel.setLinkerScript(b.path("src/Link.ld"));
+    kernel.addIncludePath(b.path("include"));
+    kernel.addAssemblyFile(b.path("src/startup.s"));
+
+    b.installArtifact(kernel);
+
+    const kernel_bin = b.addObjCopy(kernel.getEmittedBin(), .{
+        .format = .bin,
+        .basename = "kernel.img",
+    });
+    const install_kernel = b.addInstallFile(
+        kernel_bin.getOutput(),
+        "boot/kernel8.img",
+    );
+    b.getInstallStep().dependOn(&install_kernel.step);
+
+    const firmware = b.dependency("rpi_firmware", .{});
+    b.installDirectory(.{
+        .source_dir = firmware.path("boot"),
+        .install_dir = .prefix,
+        .install_subdir = "boot",
+        .include_extensions = &.{
+            "start4.elf",
+            "start4db.elf",
+            "fixup4.dat",
+            "bcm2711-rpi-4-b.dtb",
+        },
+    });
+
+    b.installFile("config.txt", "boot/config.txt");
+}