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)