Add kernel. Link everything

This commit is contained in:
2026-08-25 18:52:12 +03:00
parent 1893b8f054
commit 8e4a0c9607
4 changed files with 182 additions and 5 deletions
+39
View File
@@ -61,6 +61,40 @@ bool build_c(Nob_Cmd *cmd) {
return true;
}
bool link_everything(Nob_Cmd *cmd) {
Nob_File_Paths objectFiles = {0};
nob_da_append(&objectFiles, BUILD_FOLDER "kernel.o");
nob_da_append(&objectFiles, BUILD_FOLDER "boot.o");
nob_cmd_append(cmd,
"i686-elf-gcc",
"-T", SRC_FOLDER "linker.ld",
"-o", BUILD_FOLDER "kernel",
"-ffreestanding",
"-O2",
"-nostdlib");
for (size_t i = 0; i < objectFiles.count; ++i) {
nob_cmd_append(cmd, objectFiles.items[i]);
}
nob_cmd_append(cmd, "-lgcc");
if (!nob_cmd_run(cmd))
return false;
return true;
}
bool check_kernel(Nob_Cmd *cmd) {
nob_cmd_append(cmd, "grub-file", "--is-x86-multiboot", BUILD_FOLDER "kernel");
if (!nob_cmd_run(cmd))
return false;
return true;
}
bool clean_build() {
}
int main(int argc, char **argv) {
NOB_GO_REBUILD_URSELF(argc, argv);
@@ -71,10 +105,15 @@ int main(int argc, char **argv) {
if (!render_clangd_config())
return 1;
if (!build_assembly(&cmd))
return 1;
if (!build_c(&cmd))
return 1;
if (!link_everything(&cmd))
return 1;
if (!check_kernel(&cmd))
return 1;
return 0;
}