DEVICE?=stm32f446
CPU?=cortex-m4
APP=blink.elf
BINDIR=bin
SRCDIR=src
INCDIR=include
OBJDIR=obj
DEVICEDIR=devices/$(DEVICE)
GENERALDIR=devices/general
PROJSRCS=$(wildcard $(SRCDIR)/*.c)
GENERALSRCS=$(wildcard $(GENERALDIR)/*.c)
DEVICESRCS=$(wildcard $(DEVICEDIR)/*.c)
SRCS=$(PROJSRCS) $(GENERALSRCS) $(DEVICESRCS)
OBJS=$(patsubst %.c,obj/%.o,$(SRCS))
CFLAGS=-I$(INCDIR) -I$(DEVICEDIR)/$(INCDIR) -mthumb -mcpu=$(CPU) -nostdlib
LDFLAGS=-T$(DEVICEDIR)/linker_script.ld -nostdlib
CC=arm-none-eabi-gcc
LD=arm-none-eabi-ld
OPENOCD=openocd
$(BINDIR)/$(APP): $(OBJS)
mkdir -p $(BINDIR)
$(LD) $^ -o $@ $(LDFLAGS)
$(OBJDIR)/src/%.o: $(SRCDIR)/%.c
mkdir -p "$(OBJDIR)/src"
$(CC) -c $< -o $@ $(CFLAGS)
$(OBJDIR)/$(DEVICEDIR)/%.o: $(DEVICEDIR)/%.c
mkdir -p "$(OBJDIR)/$(DEVICEDIR)"
$(CC) -c $< -o $@ $(CFLAGS)
$(OBJDIR)/$(GENERALDIR)/%.o: $(GENERALDIR)/%.c
mkdir -p "$(OBJDIR)/$(GENERALDIR)"
$(CC) -c $< -o $@ $(CFLAGS)
.PHONY: openocd flash clean
openocd:
$(OPENOCD) -f interface/stlink.cfg -f target/stm32f4x.cfg
flash: $(BINDIR)/$(APP)
$(OPENOCD) -f interface/stlink.cfg -f target/stm32f4x.cfg -c "program $(BINDIR)/$(APP) verify reset exit"
clean:
rm -rf $(OBJDIR) $(BINDIR)