ARMGNU ?= arm-none-eabi

KSIZE = 0x1000

LINKAUTO = memmap.auto
TARGET = kernel7.bin
SDTARGET = /Volumes/boot/kernel7.img
DEPS = *.h

COPS = -Wall -O2 -nostdlib -nostartfiles -ffreestanding 

all : $(TARGET)

$(LINKAUTO) : memmap Makefile
	cat memmap > $(LINKAUTO)
	perl -i -p0e 's/__SIZE__/$(KSIZE)/g' $(LINKAUTO)

clean :
	rm -f *.o
	rm -f *.bin
	rm -f *.hex
	rm -f *.elf
	rm -f *.list
	rm -f *.img
	rm -f *.auto

cp : $(TARGET)
	cp $(TARGET) $(SDTARGET)

.s.o : 
	$(ARMGNU)-as $< -o $@

.c.o : $(DEPS)
	$(ARMGNU)-gcc $(COPS) -c $< -o $@

OBJECTS := $(patsubst %.s,%.o,$(wildcard *.s)) $(patsubst %.c,%.o,$(wildcard *.c))

$(TARGET) : $(OBJECTS) $(LINKAUTO)
	$(ARMGNU)-ld $(OBJECTS) -T $(LINKAUTO) -o kernel7.elf
	$(ARMGNU)-objdump -D kernel7.elf > kernel7.list
	$(ARMGNU)-objcopy kernel7.elf -O ihex kernel7.hex
	$(ARMGNU)-objcopy kernel7.elf -O binary $(TARGET)
	rm -f $(LINKAUTO)

