diff options
Diffstat (limited to 'kernel/build.sh')
-rwxr-xr-x | kernel/build.sh | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/kernel/build.sh b/kernel/build.sh new file mode 100755 index 0000000..069180b --- /dev/null +++ b/kernel/build.sh @@ -0,0 +1,44 @@ +#!/usr/bin/sh + +cleanup_temp() { + rm -f target/temp/* 2>&1 > /dev/null +} + +build_kernel() { + nasm -felf64 multiboot_header.asm -o target/temp/multiboot_header.o + nasm -felf64 boot.asm -o target/temp/boot.o + ld -n -o target/kernel.bin -T linker.ld target/temp/*.o + cleanup_temp +} + +build_all() { + build_kernel +} + +not_exec=true + +for arg in "$@"; do + case "$arg" in + "kernel") build_kernel;; + "all") build_all;; + *) + echo "warn: ignoring unknown option '$arg'" + continue;; + esac + not_exec=false + break +done + +print_help() { + echo "usage: $0 option" + echo "options: " + echo " kernel build the kernel" + echo " all build kernel" +} + +if $not_exec; then + echo "error: please specify an argument" + echo + print_help + exit -1 +fi |