summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAda Christine <adachristine18@gmail.com>2026-05-18 18:20:37 +0000
committerAda Christine <adachristine18@gmail.com>2026-05-18 18:20:37 +0000
commitc8a25997dae70b7083725ebaa030ff363134a191 (patch)
treeabf7c2cc6a91ec9a1cd8a4a4d661e428b86c5dfd
parent9fbfc6e951e565ef98c49c1dcfc4b6a39514f17d (diff)
build and debug system
-rw-r--r--Makefile27
-rwxr-xr-xdebug.sh33
-rwxr-xr-xqemu.sh47
3 files changed, 74 insertions, 33 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..f1305e1
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,27 @@
+BOOT_DIR := loader
+BOOT_FILE := $(BOOT_DIR)/loader.efi
+
+CORE_DIR := kc/core
+CORE_FILE := $(CORE_DIR)/kernel.os
+
+TARGETS := $(BOOT_FILE) $(CORE_FILE)
+DIRS := $(BOOT_DIR) $(CORE_DIR)
+
+DIRS_CLEAN := $(addprefix clean-,$(DIRS))
+DIRS_DISTCLEAN := $(addprefix dist,$(DIRS_CLEAN))
+
+all: $(TARGETS)
+clean: $(DIRS_CLEAN)
+distclean: $(DIRS_DISTCLEAN)
+
+$(DIRS_CLEAN): clean-%:
+ $(MAKE) -C $* clean
+
+$(DIRS_DISTCLEAN): distclean-%:
+ $(MAKE) -C $* distclean
+
+$(TARGETS):
+ $(MAKE) -C $(dir $@)
+
+.PHONY: all clean distclean $(TARGETS) $(DIRS) $(DIRS_CLEAN) $(DIRS_DISTCLEAN)
+
diff --git a/debug.sh b/debug.sh
deleted file mode 100755
index dd662a6..0000000
--- a/debug.sh
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/env bash
-
-make -C kc/core &&
-make -C kc/boot &&
-make -C loader &&
-
-BOOT_DIR=EFI/BOOT
-BOOT_FILE=BOOTX64.EFI
-SYS_DIR=adasoft/sophia
-OVMF_DIR=/usr/share/ovmf/x64
-
-LOADER_FILE=loader/loader.efi
-
-SHIM_FILE=kc/boot/efi.os
-KERNEL_FILE=kc/core/kernel.os
-
-tempdir=$(mktemp -d) &&
-rundir=${tempdir}/run &&
-
-cp ${OVMF_DIR}/OVMF_VARS.fd ${tempdir} &&
-
-mkdir -p ${rundir}/${BOOT_DIR} ${rundir}/${SYS_DIR} &&
-cp ${LOADER_FILE} ${rundir}/${BOOT_DIR}/${BOOT_FILE} &&
-cp ${SHIM_FILE} ${KERNEL_FILE} ${rundir}/${SYS_DIR} &&
-
-qemu-system-x86_64 -d int \
- -drive if=pflash,format=raw,unit=0,file=/usr/share/ovmf/x64/OVMF_CODE.fd,readonly=on \
- -drive if=pflash,format=raw,unit=1,file=${tempdir}/OVMF_VARS.fd \
- -net none -drive file=fat:rw:${rundir} -monitor stdio \
- -serial file:sophia.log -no-shutdown -no-reboot -s -S
-
-rm -rf ${tempdir}
-
diff --git a/qemu.sh b/qemu.sh
new file mode 100755
index 0000000..e901ff3
--- /dev/null
+++ b/qemu.sh
@@ -0,0 +1,47 @@
+#!/usr/bin/env bash
+
+BOOT_DIR=loader
+BOOT_FILE=${BOOT_DIR}/loader.efi
+
+SHIM_DIR=kc/boot
+SHIM_FILE=${SHIM_DIR}/efi.os
+
+CORE_DIR=kc/core
+CORE_FILE=${CORE_DIR}/kernel.os
+
+FIRMWARE_DIR=/usr/share/ovmf/x64
+FIRMWARE_FILE=${FIRMWARE_DIR}/OVMF_CODE.4m.fd
+FIRMWARE_VARS=${FIRMWARE_DIR}/OVMF_VARS.4m.fd
+
+INSTALL_PREFIX=adasoft/sophia
+
+make &&
+
+tempdir=$(mktemp -d) &&
+rundir=${tempdir}/run
+
+varsfile=${tempdir}/$(basename ${FIRMWARE_VARS})
+
+efidir=${rundir}/efi
+efibootdir=${efidir}/boot
+bootdir=${efidir}/adasoft/sophia
+bootfile=${efibootdir}/BOOTX64.EFI
+servdir=${rundir}/adasoft/sophia
+
+mkdir -p ${efidir} ${efibootdir} &&
+mkdir -p ${bootdir} ${servdir} &&
+
+cp ${FIRMWARE_VARS} ${varsfile} &&
+cp ${BOOT_FILE} ${bootdir} &&
+cp ${BOOT_FILE} ${bootfile} &&
+cp ${SHIM_FILE} ${servdir} &&
+cp ${CORE_FILE} ${servdir} &&
+
+qemu-system-x86_64 -d int \
+ -drive if=pflash,format=raw,unit=0,file=${FIRMWARE_FILE},readonly=on \
+ -drive if=pflash,format=raw,unit=1,file=${varsfile} \
+ -net none -drive file=fat:rw:${rundir} -monitor stdio \
+ -serial file:sophia.log -no-shutdown -no-reboot -s
+
+rm -rf ${tempdir}
+