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;