const std = @import("std"); pub fn buildKernelBin(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.builtin.OptimizeMode) *std.Build.Step.Compile { const kernel = b.addExecutable(.{ .name = "kernel.bin", .use_llvm = true, .use_lld = true, .root_module = b.createModule(.{ .root_source_file = b.path("init/main.zig"), .target = target, .optimize = optimize, .code_model = .kernel, }), }); switch (target.result.cpu.arch) { .x86_64 => { kernel.setLinkerScript(b.path("arch/x86/kernel_bin.ld")); }, else => { @panic("target architecture unsupported"); } } kernel.entry = .{ .symbol_name = "kernel_start", }; kernel.link_gc_sections = false; return kernel; } pub fn buildKernelBinInstall(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.builtin.OptimizeMode) *std.Build.Step.InstallArtifact { return b.addInstallArtifact(buildKernelBin(b, target, optimize), .{}); }