summaryrefslogtreecommitdiff
path: root/build.zig
diff options
context:
space:
mode:
Diffstat (limited to 'build.zig')
-rw-r--r--build.zig202
1 files changed, 0 insertions, 202 deletions
diff --git a/build.zig b/build.zig
deleted file mode 100644
index b1cdab3..0000000
--- a/build.zig
+++ /dev/null
@@ -1,202 +0,0 @@
-//! Copyright (c) 2025 Freya Murphy <freya@freyacat.org>
-
-const std = @import("std");
-const builtin = @import("builtin");
-
-const c_flags = &[_][]const u8{
- // lang
- "-std=c11",
- // warnings
- "-Wall",
- "-Wextra",
- "-pedantic",
- // flags
- "-fno-pie",
- "-fno-stack-protector",
- "-fno-omit-frame-pointer",
- "-ffreestanding",
- "-fno-builtin",
- // symbols
- "-ggdb",
-};
-
-const kernel_src = &[_][]const u8{
- "kernel/entry.S", // must be first
- "kernel/main.c", // main function
- "kernel/cpu/cpu.c",
- "kernel/cpu/idt.c",
- "kernel/cpu/idt.S",
- "kernel/cpu/pic.c",
- "kernel/drivers.c",
- "kernel/drivers/acpi.c",
- "kernel/drivers/clock.c",
- "kernel/drivers/gpu.c",
- "kernel/drivers/gpu/bochs.c",
- "kernel/drivers/pci.c",
- "kernel/drivers/uart.c",
- "kernel/drivers/vga.c",
- "kernel/font.S",
- "kernel/fs/fs.c",
- "kernel/lib/atox.c",
- "kernel/lib/backtrace.c",
- "kernel/lib/bound.c",
- "kernel/lib/btoa.c",
- "kernel/lib/ctoi.c",
- "kernel/lib/isdigit.c",
- "kernel/lib/isprint.c",
- "kernel/lib/isspace.c",
- "kernel/lib/itoc.c",
- "kernel/lib/kalloc.c",
- "kernel/lib/kprintf.c",
- "kernel/lib/memcmp.c",
- "kernel/lib/memcpy.c",
- "kernel/lib/memcpyv.c",
- "kernel/lib/memmove.c",
- "kernel/lib/memmovev.c",
- "kernel/lib/memset.c",
- "kernel/lib/memsetv.c",
- "kernel/lib/panic.c",
- "kernel/lib/stpcpy.c",
- "kernel/lib/stpncpy.c",
- "kernel/lib/strcat.c",
- "kernel/lib/strcpy.c",
- "kernel/lib/strlen.c",
- "kernel/lib/strncmp.c",
- "kernel/lib/strncpy.c",
- "kernel/lib/strtoux.c",
- "kernel/lib/strtox.c",
- "kernel/lib/uxtoa.c",
- "kernel/lib/xtoa.c",
- "kernel/mboot/elf.c",
- "kernel/mboot/mboot.c",
- "kernel/mboot/mmap.c",
- "kernel/mboot/rsdp.c",
- "kernel/memory/memory.c",
- "kernel/memory/paging.c",
- "kernel/memory/physalloc.c",
- "kernel/memory/virtalloc.c",
- "kernel/procs/procs.c",
- "kernel/term.c",
-};
-
-const Prog = struct {
- name: []const u8,
- source: []const []const u8,
-};
-
-const AddSourcesOpts = struct { exe: *std.Build.Step.Compile, sources: []const []const []const u8, c_flags: []const []const u8 };
-
-fn add_sources(b: *std.Build, opts: AddSourcesOpts) void {
- // add asm and c source files
- for (opts.sources) |source| {
- for (source) |file| {
- if (std.mem.endsWith(u8, file, ".c")) {
- // c file
- opts.exe.addCSourceFile(.{ .file = b.path(file), .flags = opts.c_flags });
- } else {
- // assembly file
- opts.exe.addAssemblyFile(b.path(file));
- }
- }
- }
-}
-
-const BuildKernBinaryOpts = struct {
- name: []const u8,
- target: std.Build.ResolvedTarget,
- optimize: std.builtin.OptimizeMode,
- sources: []const []const []const u8,
- linker: ?[]const u8 = null,
- entry: []const u8 = "_start",
- strip: bool = false,
- include: ?[]const u8 = null,
-};
-
-fn build_kern_binary(b: *std.Build, opts: BuildKernBinaryOpts) void {
- // create compile step
- const exe = b.addExecutable(.{
- .name = opts.name,
- .target = opts.target,
- .optimize = opts.optimize,
- .strip = opts.strip,
- });
-
- // add include path
- if (opts.include != null) {
- exe.addIncludePath(b.path(opts.include.?));
- }
-
- // set entry
- exe.entry = .{ .symbol_name = opts.entry };
-
- // add asm and c source files
- add_sources(b, .{
- .exe = exe,
- .sources = opts.sources,
- .c_flags = c_flags,
- });
-
- if (opts.linker != null) {
- exe.setLinkerScript(b.path(opts.linker.?));
- }
-
- const step = b.addInstallArtifact(exe, .{ .dest_dir = .{
- .override = .{ .custom = "../bin" },
- } });
- b.getInstallStep().dependOn(&step.step);
-}
-
-const BuildNativeBinaryOpts = struct {
- name: []const u8,
- optimize: std.builtin.OptimizeMode,
- sources: []const []const []const u8,
-};
-
-fn build_native_binary(b: *std.Build, opts: BuildNativeBinaryOpts) void {
- // create compile step
- const exe = b.addExecutable(.{
- .name = opts.name,
- .target = b.graph.host,
- .optimize = opts.optimize,
- .strip = true,
- });
-
- // include libc
- exe.linkLibC();
-
- // add asm and c source files
- add_sources(b, .{
- .exe = exe,
- .sources = opts.sources,
- .c_flags = &.{},
- });
-
- const step = b.addInstallArtifact(exe, .{ .dest_dir = .{
- .override = .{ .custom = "../bin" },
- } });
- b.getInstallStep().dependOn(&step.step);
-}
-
-pub fn build(b: *std.Build) !void {
-
- // context
- const target64 = std.Build.resolveTargetQuery(b, .{
- .cpu_arch = std.Target.Cpu.Arch.x86_64,
- .os_tag = std.Target.Os.Tag.freestanding,
- .abi = std.Target.Abi.gnu,
- .ofmt = std.Target.ObjectFormat.elf,
- });
- const optimize = std.builtin.OptimizeMode.Debug;
-
- // kernel
- build_kern_binary(b, .{
- .name = "kernel",
- .target = target64,
- .optimize = optimize,
- .sources = &.{
- kernel_src,
- },
- .linker = "config/kernel.ld",
- .include = "kernel/include",
- });
-}