CROSS_COMPILE ?= riscv64-unknown-elf-
CC := $(CROSS_COMPILE)gcc
OBJCOPY := $(CROSS_COMPILE)objcopy
DTC ?= dtc

ARCH_FLAGS := -march=rv32im_zicsr_zifencei -mabi=ilp32
BUILD_DIR := build
NEXT_STAGE_ELF := $(BUILD_DIR)/next_stage.elf
NEXT_STAGE_BIN := $(BUILD_DIR)/next_stage.bin
DTB_BIN := $(BUILD_DIR)/minimal.dtb

.PHONY: all clean

all: $(NEXT_STAGE_BIN) $(DTB_BIN)

$(BUILD_DIR):
	mkdir -p $(BUILD_DIR)

$(NEXT_STAGE_ELF): next_stage.S next_stage.ld | $(BUILD_DIR)
	$(CC) $(ARCH_FLAGS) -nostdlib -static -T next_stage.ld -o $@ $<

$(NEXT_STAGE_BIN): $(NEXT_STAGE_ELF)
	$(OBJCOPY) -O binary $< $@

$(DTB_BIN): minimal.dts | $(BUILD_DIR)
	$(DTC) -I dts -O dtb -o $@ $<

clean:
	rm -rf $(BUILD_DIR)
