diff options
| author | Marin Ivanov <[email protected]> | 2024-05-01 00:52:11 +0300 |
|---|---|---|
| committer | Marin Ivanov <[email protected]> | 2024-05-01 00:52:11 +0300 |
| commit | b0ab0f7856090f2aa9b1322b83616dea231a4032 (patch) | |
| tree | fa6863ec0f635851912d18f90588588483aabe0a /build.zig | |
| parent | 2327cefb55ff02cd032f494295efd87820976a27 (diff) | |
fix: build file
Diffstat (limited to 'build.zig')
| -rw-r--r-- | build.zig | 84 |
1 files changed, 39 insertions, 45 deletions
@@ -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); } |
