Add kernel. Link everything
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user