Files
YukiOS/kernel/build.zig

32 lines
1.1 KiB
Zig

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), .{});
}