NAME=blinky

PREFIX?=arm-none-eabi-
CC=$(PREFIX)gcc
AS=$(PREFIX)as
OBJCOPY=$(PREFIX)objcopy

VPATH=src

.SECONDARY:

clean:
	rm -f lib/libopencm3/lib/libopencm3_stm32f4.a
	rm -f $(NAME).bin
	rm -f $(NAME).elf
	rm -f $(NAME).o

clobber:
	rm -f lib/libopencm3/lib/libopencm3_stm32f4.a
	rm -f $(NAME).bin
	$(MAKE) -C lib/libopencm3 clean

libopencm3:
	$(MAKE) -C lib/libopencm3 TARGETS=stm32/f4

flash: $(NAME).bin
	st-flash write $(NAME).bin 0x8000000

all: libopencm3 $(NAME).bin

%.o: %.c
	$(CC) -Og -g -Wall -std=c99 -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -Ilib/libopencm3/include -DSTM32F4 -c $< -o $@

%.elf: %.o
	$(CC) --static -nostartfiles -Tnucleo-f411re.ld -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -Llib/libopencm3/lib $< -lopencm3_stm32f4 -o $@

%.bin: %.elf
	$(OBJCOPY) $< -O binary $@

gdb:
	arm-none-eabi-gdb -ex 'target extended-remote :3333' $(NAME).elf

oocd:
	openocd -f /usr/share/openocd/scripts/interface/stlink.cfg -f /usr/share/openocd/scripts/target/stm32f4x.cfg
