set quiet := true

OS_NAME   := os()
ARCH_NAME := arch()

OVMF_ARM := if OS_NAME == "macos" {
    if ARCH_NAME == "aarch64" {
        "/opt/homebrew/share/qemu/edk2-aarch64-code.fd"
    } else {
        "/usr/local/share/qemu/edk2-aarch64-code.fd"
    }
} else {
    "/usr/share/edk2/aarch64/QEMU_EFI.fd"
}

ACCEL := if OS_NAME == "macos" {
    if ARCH_NAME == "aarch64" { "-accel hvf" } else { "" }
} else {
    ""
}

HB_PREFIX := if ARCH_NAME == "aarch64" { "/opt/homebrew" } else { "/usr/local" }
export PATH := HB_PREFIX + "/bin:" + HB_PREFIX + "/sbin:" + env_var("PATH")

ACCEL_INFO := if ACCEL == "" { "none (TCG)" } else { ACCEL }

CPU := if ARCH_NAME == "aarch64" { "host" } else { "max" } 

export BUILD_DIR := justfile_directory() + "/.build"
export TEMP_DIR  := BUILD_DIR + "/temp"
export BOOT_BIN  := BUILD_DIR + "/bootloader/BOOTAA64.EFI"
export IMG_FILE  := BUILD_DIR + "/ksOS.img"

mod Bootloader

_default:
    just --list

_prep:
    @mkdir -p {{BUILD_DIR}}/bootloader
    @mkdir -p {{TEMP_DIR}}/bootloader

@build: _prep
    @echo "🛠️ Building everything..."
    just Bootloader build

@_image: build
    @echo "💾 Creating image..."
    @dd if=/dev/zero of={{IMG_FILE}} bs=1M count=64 status=none
    @mkfs.fat -F 32 {{IMG_FILE}} > /dev/null
    @mmd -i {{IMG_FILE}} ::/EFI ::/EFI/BOOT
    @mcopy -i {{IMG_FILE}} {{BOOT_BIN}} ::/EFI/BOOT/BOOTAA64.EFI

@run: _image
    @echo "🚀 Launching..."
    qemu-system-aarch64 {{ACCEL}} \
        -machine virt \
        -cpu {{CPU}} \
        -m 512M \
        -device virtio-gpu-pci \
        -display cocoa,show-cursor=on \
        -drive if=pflash,format=raw,readonly=on,file={{OVMF_ARM}} \
        -drive file={{IMG_FILE}},format=raw,if=none,id=hd0 \
        -device virtio-blk-device,drive=hd0 \
        -serial mon:stdio

@clean:
    rm -rf {{BUILD_DIR}}