This repository was archived by the owner on Jun 20, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathbuild.zig
More file actions
58 lines (45 loc) · 1.77 KB
/
build.zig
File metadata and controls
58 lines (45 loc) · 1.77 KB
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
const std = @import("std");
const z = std.zig;
const builtin = @import("builtin");
const Builder = std.build.Builder;
pub fn build(b: *Builder) void {
const target = z.CrossTarget{
.cpu_arch = .x86_64,
.os_tag = .freestanding,
};
const mode = b.standardReleaseOptions();
const exe = b.addObject("kernel", "src/kernel.zig");
exe.setTarget(target);
exe.setBuildMode(builtin.Mode.ReleaseSafe);
//exe.strip = true;
exe.setOutputDir("./obj/");
const tests = b.addTest("src/kernel.zig");
tests.step.dependOn(&exe.step);
const bootstrap = b.addSystemCommand(&[_][]const u8{
"nasm", "src/bootstrap/boot.S", "-f", "elf64", "-o", "obj/boot.o",
});
bootstrap.step.dependOn(&tests.step);
const mbHeader = b.addSystemCommand(&[_][]const u8{
"nasm", "src/bootstrap/mbheader.S", "-f", "elf64", "-o", "obj/head.o",
});
mbHeader.step.dependOn(&bootstrap.step);
const stub = b.addSystemCommand(&[_][]const u8{
"nasm", "src/bootstrap/stub.S", "-f", "elf64", "-o", "obj/stub.o",
});
stub.step.dependOn(&mbHeader.step);
const linkKernel = b.addSystemCommand(&[_][]const u8{
"ld", "-T", "link.ld", "-o", "isofiles/boot/kernel.bin", "obj/kernel.o", "obj/boot.o", "obj/head.o", "obj/stub.o",
});
linkKernel.step.dependOn(&stub.step);
const mkRescue = b.addSystemCommand(&[_][]const u8{
"grub-mkrescue", "-o", "os.iso", "isofiles",
});
mkRescue.step.dependOn(&linkKernel.step);
const qemu = b.addSystemCommand(&[_][]const u8{
"qemu-system-x86_64", "-cdrom", "os.iso",
});
qemu.step.dependOn(&mkRescue.step);
const run_step = b.step("run", "Runs the OS in QEMU");
run_step.dependOn(&qemu.step);
b.default_step.dependOn(&mkRescue.step);
}