32 lines
1.1 KiB
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), .{});
|
|
} |