aboutsummaryrefslogtreecommitdiff
path: root/build.zig
blob: e8a2fb7197ede2972c4eb55baa3d0993fdc456cc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
const std = @import("std");

pub const version = "1.0.0";
pub const kernel_location = "/system/akiba/mirai.kernel";
pub const font_location = "/system/akiba/fonts/akiba.psf";

pub fn build(b: *std.Build) void {
    const hikari_target = b.resolveTargetQuery(.{
        .cpu_arch = .x86_64,
        .os_tag = .uefi,
        .abi = .msvc,
    });

    const hikari_module = b.createModule(.{
        .root_source_file = b.path("hikari/hikari.zig"),
        .target = hikari_target,
        .optimize = .ReleaseSafe,
    });

    const hikari = b.addExecutable(.{
        .name = "hikari",
        .root_module = hikari_module,
    });

    const hikari_copy = b.addInstallFile(
        hikari.getEmittedBin(),
        "EFI/BOOT/BOOTX64.EFI",
    );
    hikari_copy.step.dependOn(&hikari.step);

    const hikari_step = b.step("hikari", "Build Hikari bootloader");
    hikari_step.dependOn(&hikari_copy.step);

    const mirai_target = b.resolveTargetQuery(.{
        .cpu_arch = .x86_64,
        .os_tag = .freestanding,
        .abi = .none,
    });

    const mirai_module = b.createModule(.{
        .root_source_file = b.path("mirai/mirai.zig"),
        .target = mirai_target,
        .optimize = .ReleaseSafe,
        .code_model = .kernel,
    });

    const mirai = b.addExecutable(.{
        .name = "mirai",
        .root_module = mirai_module,
    });

    mirai.entry = .{ .symbol_name = "mirai_entry" };
    mirai.setLinkerScript(b.path("linker/mirai.linker"));

    const mirai_copy = b.addInstallFile(
        mirai.getEmittedBin(),
        "system/akiba/mirai.kernel",
    );
    mirai_copy.step.dependOn(&mirai.step);

    const mirai_step = b.step("mirai", "Build Mirai kernel");
    mirai_step.dependOn(&mirai_copy.step);

    const native_target = b.standardTargetOptions(.{});
    const native_optimize = b.standardOptimizeOption(.{});

    const mkafsdisk_module = b.createModule(.{
        .root_source_file = b.path("toolchain/mkafsdisk/main.zig"),
        .target = native_target,
        .optimize = native_optimize,
    });

    const mkafsdisk = b.addExecutable(.{
        .name = "mkafsdisk",
        .root_module = mkafsdisk_module,
    });

    const mkafsdisk_install = b.addInstallArtifact(mkafsdisk, .{});

    const mkafsdisk_step = b.step("mkafsdisk", "Build mkafsdisk tool");
    mkafsdisk_step.dependOn(&mkafsdisk_install.step);

    const all_step = b.step("all", "Build everything");
    all_step.dependOn(&hikari_copy.step);
    all_step.dependOn(&mirai_copy.step);
    all_step.dependOn(&mkafsdisk_install.step);

    b.default_step = all_step;

    const clean_step = b.step("clean", "Remove build artifacts");
    clean_step.dependOn(&b.addRemoveDirTree(b.path("zig-out")).step);
    clean_step.dependOn(&b.addRemoveDirTree(b.path(".zig-cache")).step);
}