summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDennis Kobert <dennis@kobert.dev>2019-10-24 18:06:27 +0200
committerDennis Kobert <dennis@kobert.dev>2019-10-24 18:06:27 +0200
commitfcc894b393a3c6907b3807ee973d89c3d9d51ff9 (patch)
tree80adbbd496439e10077d31b5fd76ca15f680e6b9
parent7e5ea00099f7afc2df997db306b5ef697bc67ab4 (diff)
parent327aa4c75f6f0b788398eb33294454c65823631c (diff)
Merge branch 'master' of kobert:/var/repos/uff-os
-rwxr-xr-xkernel/build.sh61
1 files changed, 53 insertions, 8 deletions
diff --git a/kernel/build.sh b/kernel/build.sh
index 069180b..f47a5b6 100755
--- a/kernel/build.sh
+++ b/kernel/build.sh
@@ -1,16 +1,52 @@
#!/usr/bin/sh
+ASM_PATH="./"
+TARGET_PATH="target/"
+TMP_PATH="$TARGET_PATH/temp/"
+OBJ_PATH="$TMP_PATH"
+LINK_SCRIPT_PATH="./"
+
+remove_target() {
+ rm -rf $TARGET_PATH &> /dev/null
+}
+
+create_target() {
+ mkdir $TARGET_PATH &> /dev/null
+ mkdir $TMP_PATH &> /dev/null
+}
+
cleanup_temp() {
- rm -f target/temp/* 2>&1 > /dev/null
+ rm -f $TMP_PATH/* &> /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
+# ---------------------------------------------------
+
+build_kernel_elf() {
+ create_target
+ nasm -felf64 $ASM_PATH/multiboot_header.asm -o $OBJ_PATH/multiboot_header.o
+ nasm -felf64 $ASM_PATH/boot.asm -o $OBJ_PATH/boot.o
+ ld -n -o $TARGET_PATH/kernel.bin -T $LINK_SCRIPT_PATH/linker.ld $OBJ_PATH/*.o
cleanup_temp
}
+build_kernel_iso_from_elf() {
+ create_target
+ echo NIY: build kernel from elf
+}
+
+build_kernel_iso() {
+ build_kernel_elf
+ build_kernel_iso_from_elf
+}
+
+build_init() {
+ create_target
+}
+
+build_clean() {
+ remove_target
+}
+
build_all() {
build_kernel
}
@@ -19,7 +55,11 @@ not_exec=true
for arg in "$@"; do
case "$arg" in
- "kernel") build_kernel;;
+ "kernel-elf") build_kernel_elf;;
+ "kernel-iso-from-elf") build_kernel_iso_from_elf;;
+ "kernel-iso") build_kernel_iso;;
+ "init") build_init;;
+ "clean") build_clean;;
"all") build_all;;
*)
echo "warn: ignoring unknown option '$arg'"
@@ -32,8 +72,13 @@ done
print_help() {
echo "usage: $0 option"
echo "options: "
- echo " kernel build the kernel"
- echo " all build kernel"
+ echo " init initialise directory"
+ echo " clean cleanup binaries"
+ echo
+ echo " kernel-elf build the kernel-elf"
+ echo " kernel-iso-from-elf build the kernel-iso from an existing kernel-elf"
+ echo " kernel-iso build the kernel-elf and the kernel-iso"
+ echo " all build kernel"
}
if $not_exec; then