summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xkernel/build.sh44
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