osdev/build.zig
2025-05-04 08:42:28 -07:00

32 lines
1 KiB
Zig

pub fn build(b: *Build) !void {
const optimize = std.builtin.OptimizeMode.Debug;
const target = b.resolveTargetQuery(.{
.cpu_arch = .x86,
.os_tag = .freestanding,
.abi = .none,
});
const exe = b.addExecutable(.{
.root_source_file = b.path("kernel.zig"),
.name = "multiboot",
.target = target,
.optimize = optimize,
});
exe.addCSourceFile(.{
.file = b.path("boot.s"),
});
exe.setLinkerScript(b.path("linker.ld"));
const iso_dir = b.addWriteFiles();
_ = iso_dir.addCopyFile(exe.getEmittedBin(), "boot/os.bin");
_ = iso_dir.addCopyFile(b.path("grub.cfg"), "boot/grub/grub.cfg");
const make_iso = b.addSystemCommand(&.{"i686-elf-grub-mkrescue"});
make_iso.addArg("-o");
const iso = make_iso.addOutputFileArg("lab.iso");
make_iso.addDirectoryArg(iso_dir.getDirectory());
b.getInstallStep()
.dependOn(&b.addInstallFile(iso, "lab.iso").step);
}
const std = @import("std");
const Build = std.Build;