CROSS ?= aarch64-linux-gnu-

SRC_DIR := src
BUILD_DIR := build
BOOT_DIR := boot

CC := $(CROSS)gcc
LD := $(CROSS)ld
OBJCOPY := $(CROSS)objcopy

CFLAGS := -Wall -Wextra -O2 -ffreestanding -nostdlib -nostartfiles
LDFLAGS := -nostdlib -T $(SRC_DIR)/link.ld

BLINK_OBJ := $(BUILD_DIR)/blink.o
KERNEL_ELF := $(BUILD_DIR)/kernel8.elf
KERNEL_IMG := $(BOOT_DIR)/kernel8.img

.PHONY: all clean

all: $(KERNEL_IMG)

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

$(BOOT_DIR):
	mkdir -p $(BOOT_DIR)

$(BLINK_OBJ): $(SRC_DIR)/blink.S | $(BUILD_DIR)
	$(CC) $(CFLAGS) -c $< -o $@

$(KERNEL_ELF): $(BLINK_OBJ) $(SRC_DIR)/link.ld | $(BUILD_DIR)
	$(LD) $(LDFLAGS) $(BLINK_OBJ) -o $@

$(KERNEL_IMG): $(KERNEL_ELF) | $(BOOT_DIR)
	$(OBJCOPY) -O binary $< $@

clean:
	rm -rf $(BUILD_DIR)
	rm -f $(KERNEL_IMG)
