TARGET = firmware

FIRMWARE := $(TARGET).bin

INSTALL_DIR := ../../maps

DIR    := ../../gcc-arm-none-eabi-9-2019-q4-major/bin
GCC    := $(DIR)/arm-none-eabi-gcc
AS     := $(DIR)/arm-none-eabi-as
OBJDUMP:= $(DIR)/arm-none-eabi-objdump
OBJCOPY:= $(DIR)/arm-none-eabi-objcopy

C_OBJECTS = $(patsubst %.c, %.c.o, $(wildcard *.c))
S_OBJECTS = $(patsubst %.s, %.s.o, $(wildcard *.s))
HEADERS = $(wildcard *.h)

CFLAGS := \
	-mcpu=cortex-m3 \
	-mthumb \
	-march=armv7-m \
    	-fno-exceptions \
	-fomit-frame-pointer
AFLAGS := -mcpu=cortex-m3

all: $(FIRMWARE)

%.c.o: %.c $(HEADERS)
	$(GCC) $(CFLAGS) -c $< -o $@

%.s.o : %.s
	$(AS) $< -o $@
	
	
.PRECIOUS: $(FIRMWARE) $(OBJECTS)

$(FIRMWARE): $(C_OBJECTS) $(S_OBJECTS)
	$(GCC)  $(C_OBJECTS) $(S_OBJECTS) -T ./STM32F100VB_FLASH.ld -nostdlib -nostartfiles -nodefaultlibs -fomit-frame-pointer -mcpu=cortex-m3 -mthumb -o $@
	$(OBJDUMP) -D $@ > $@.lst
	$(OBJCOPY) -O binary $@

.PHONY: install
install: $(FIRMWARE)
	cp $(FIRMWARE) $(INSTALL_DIR)/
	cp $(FIRMWARE).lst $(INSTALL_DIR)/


clean:
	-rm -f *.o
	-rm -f *.lst
	-rm -f *.bin
