const std = @import("std"); pub fn build(b: *std.Build) !void { var disabled_features = std.Target.Cpu.Feature.Set.empty; var enabled_features = std.Target.Cpu.Feature.Set.empty; disabled_features.addFeature(@intFromEnum(std.Target.x86.Feature.mmx)); disabled_features.addFeature(@intFromEnum(std.Target.x86.Feature.sse)); disabled_features.addFeature(@intFromEnum(std.Target.x86.Feature.sse2)); disabled_features.addFeature(@intFromEnum(std.Target.x86.Feature.avx)); disabled_features.addFeature(@intFromEnum(std.Target.x86.Feature.avx2)); enabled_features.addFeature(@intFromEnum(std.Target.x86.Feature.soft_float)); const target = b.resolveTargetQuery(.{ .cpu_arch = std.Target.Cpu.Arch.x86, .abi = std.Target.Abi.none, .os_tag = std.Target.Os.Tag.freestanding, .cpu_features_sub = disabled_features, .cpu_features_add = enabled_features, }); const kernel = b.addExecutable(.{ .name = "kernel.elf", .root_module = b.createModule(.{ .root_source_file = b.path("src/main.zig"), .target = target, .optimize = .ReleaseFast, .code_model = .kernel, }), }); kernel.setLinkerScript(b.path("kernel.ld")); b.installArtifact(kernel); const qemu = b.addSystemCommand(&[_][]const u8{ "qemu-system-x86_64", }); qemu.addArg("-kernel"); qemu.addFileArg(kernel.getEmittedBin()); const run = b.step("run", "Run QEMU"); run.dependOn(&qemu.step); }