CC ?= clang
QEMU ?= qemu-system-riscv32
FW ?= /usr/share/qemu/opensbi-riscv32-generic-fw_dynamic.bin

CFLAGS = -fuse-ld=lld -std=c11 -O2 -g3 -Wall -Wextra \
  --target=riscv32 -march=rv32imac -mabi=ilp32 \
  -ffreestanding -nostdlib

all: kernel.elf

kernel.elf: kernel.c common.c common.h kernel.h kernel.ld
	$(CC) $(CFLAGS) -Wl,-T,kernel.ld -Wl,-Map,kernel.map -o $@ kernel.c common.c

run: kernel.elf
	$(QEMU) -machine virt -nographic -serial mon:stdio --no-reboot \
	  -bios $(FW) -kernel kernel.elf

clean:
	rm -f *.o *.elf *.map qemu.log
