--- /dev/null
+use("hal")
+
+sources([
+ "exceptions/interrupts.c",
+ "exceptions/isrdef.c",
+ "exceptions/intr_routines.c",
+ "exceptions/isrm.c",
+ "exceptions/intrhnds.S",
+])
+
+sources([
+ "boot/mb_parser.c",
+ "boot/kpt_setup.c",
+ "boot/boot_helper.c"
+])
+
+sources([
+ "mm/fault.c",
+ "mm/tlb.c",
+ "mm/pmm.c",
+ "mm/gdt.c",
+ "mm/vmutils.c"
+])
+
+sources([
+ "klib/fast_crc.c",
+ "klib/fast_str.c",
+ "exec/exec.c",
+ "hart.c",
+ "arch.c",
+ "gdbstub.c",
+ "trace.c",
+ "hart.c",
+ "failsafe.S"
+])
+
+sources({
+ config("arch"): {
+ "x86_64": [
+ "hart64.c",
+ "syscall64.S",
+ "exceptions/interrupt64.S",
+ "boot/x86_64/boot64.S",
+ "boot/x86_64/init64.c",
+ "boot/x86_64/prologue64.S",
+ "boot/x86_64/kremap64.c",
+ "exec/elf64.c"
+ ],
+ "i386": [
+ "hart32.c",
+ "syscall32.S",
+ "exceptions/interrupt32.S",
+ "boot/i386/boot32.S",
+ "boot/i386/init32.c",
+ "boot/i386/prologue32.S",
+ "boot/i386/kremap32.c",
+ "exec/elf32.c"
+ ]
+ }
+})
+
+headers([
+ "includes"
+])
+
+
+if config("arch") == "x86_64":
+ compile_opts([
+ "-m64",
+ "-fno-unwind-tables",
+ "-fno-asynchronous-unwind-tables",
+ "-mcmodel=large"
+ ])
+ linking_opts([
+ "-m64",
+ ])
+else:
+ compile_opts("-m32")
+ linking_opts("-m32")
+
+if not config("x86_enable_sse_feature"):
+ compile_opts("-mno-sse")
\ No newline at end of file