aboutsummaryrefslogtreecommitdiff
path: root/build.zig
diff options
context:
space:
mode:
authorMarin Ivanov <[email protected]>2024-05-01 00:52:11 +0300
committerMarin Ivanov <[email protected]>2024-05-01 00:52:11 +0300
commitb0ab0f7856090f2aa9b1322b83616dea231a4032 (patch)
treefa6863ec0f635851912d18f90588588483aabe0a /build.zig
parent2327cefb55ff02cd032f494295efd87820976a27 (diff)
fix: build file
Diffstat (limited to 'build.zig')
-rw-r--r--build.zig84
1 files changed, 39 insertions, 45 deletions
diff --git a/build.zig b/build.zig
index 0eae457..1e3d52e 100644
--- a/build.zig
+++ b/build.zig
@@ -1,76 +1,70 @@
const std = @import("std");
-const Builder = @import("std").build.Builder;
+const fs = std.fs;
+const Build = @import("std").Build;
const Target = @import("std").Target;
const CrossTarget = @import("std").zig.CrossTarget;
const Feature = @import("std").Target.Cpu.Feature;
-
-pub fn build(b: *Builder) void {
+
+pub fn build(b: *Build) !void {
+ const debug = b.option(bool, "debug", "Enable debug") orelse false;
+
const features = Target.x86.Feature;
-
var disabled_features = Feature.Set.empty;
var enabled_features = Feature.Set.empty;
-
disabled_features.addFeature(@intFromEnum(features.mmx));
disabled_features.addFeature(@intFromEnum(features.sse));
disabled_features.addFeature(@intFromEnum(features.sse2));
disabled_features.addFeature(@intFromEnum(features.avx));
disabled_features.addFeature(@intFromEnum(features.avx2));
enabled_features.addFeature(@intFromEnum(features.soft_float));
-
- const target = CrossTarget{
+
+ const kernel_target_query = Target.Query{
.cpu_arch = Target.Cpu.Arch.x86_64,
.os_tag = Target.Os.Tag.freestanding,
.abi = Target.Abi.none,
.cpu_features_sub = disabled_features,
- .cpu_features_add = enabled_features
+ .cpu_features_add = enabled_features,
};
-
- const mode = b.standardReleaseOptions();
-
- const kernel = b.addExecutable("kernel.elf", "src/main.zig");
- kernel.setTarget(target);
- kernel.setBuildMode(mode);
+ const kernel_target = b.resolveTargetQuery(kernel_target_query);
+
+ var optimize = std.builtin.OptimizeMode.Debug;
+ if (!debug) {
+ optimize = b.standardOptimizeOption(.{});
+ }
+
+ const kernel = b.addExecutable(.{
+ .name = "kernel.elf",
+ .root_source_file = .{ .path = "src/main.zig" },
+ .optimize = optimize,
+ .target = kernel_target,
+ });
kernel.setLinkerScriptPath(.{ .path = "src/linker.ld" });
- kernel.code_model = .kernel;
- kernel.install();
-
+ kernel.entry = .disabled;
+ b.installArtifact(kernel);
+
const kernel_step = b.step("kernel", "Build the kernel");
- kernel_step.dependOn(&kernel.install_step.?.step);
-
- const iso_dir = b.fmt("{s}/iso_root", .{b.cache_root});
- const kernel_path = b.getInstallPath(kernel.install_step.?.dest_dir, kernel.out_filename);
+ //kernel_step.dependOn(&kernel.install_step.?.step);
+
+ const iso_dir = b.fmt("{?s}/iso_root", .{b.cache_root.path});
+ // const kernel_path = b.install_path ++ "/" ++ kernel.out_filename;
+ // const kernel_path = b.getInstallPath(kernel.install_step.?.dest_dir, kernel.out_filename);
+ const kernel_path = try fs.path.join(b.allocator, &[_][]const u8{ b.install_path, kernel.out_filename });
const iso_path = b.fmt("{s}/disk.iso", .{b.exe_dir});
-
- const iso_cmd_str = &[_][]const u8{
- "/bin/sh", "-c",
- std.mem.concat(b.allocator, u8, &[_][]const u8{
- "mkdir -p ", iso_dir, " && ",
- "cp ", kernel_path, " ", iso_dir, " && ",
- "cp src/grub.cfg ", iso_dir, " && ",
- "grub-mkrescue -o ", iso_path, " ", iso_dir
- }) catch unreachable
- };
-
+
+ const iso_cmd_str = &[_][]const u8{ "/bin/sh", "-c", std.mem.concat(b.allocator, u8, &[_][]const u8{ "mkdir -p ", iso_dir, " && ", "cp ", kernel_path, " ", iso_dir, " && ", "cp src/grub.cfg ", iso_dir, " && ", "grub-mkrescue -o ", iso_path, " ", iso_dir }) catch unreachable };
+
const iso_cmd = b.addSystemCommand(iso_cmd_str);
iso_cmd.step.dependOn(kernel_step);
-
+
const iso_step = b.step("iso", "Build an ISO image");
iso_step.dependOn(&iso_cmd.step);
b.default_step.dependOn(iso_step);
-
- const run_cmd_str = &[_][]const u8{
- "qemu-system-x86_64",
- "-cdrom", iso_path,
- "-debugcon", "stdio",
- "-vga", "virtio",
- "-m", "4G",
- "-machine", "q35,accel=kvm:whpx:tcg",
- "-no-reboot", "-no-shutdown"
- };
-
+
+ const run_cmd_str = &[_][]const u8{ "qemu-system-x86_64", "-cdrom", iso_path, "-debugcon", "stdio", "-vga", "virtio", "-m", "4G", "-machine", "q35,accel=kvm:whpx:tcg", "-no-reboot", "-no-shutdown" };
+
const run_cmd = b.addSystemCommand(run_cmd_str);
run_cmd.step.dependOn(b.getInstallStep());
-
+
const run_step = b.step("run", "Run the kernel");
run_step.dependOn(&run_cmd.step);
}