DEVICE?=stm32f401 TARGET?=stm32f4x CPU?=cortex-m4 APP=mam-arm02.elf BINDIR=bin SRCDIR=src INCDIR=include OBJDIR=obj DEPDIR=$(OBJDIR)/.deps DEVICEDIR=devices/$(DEVICE) GENERALDIR=devices/general PROJSRCS_C=$(wildcard $(SRCDIR)/*.c) PROJSRCS_S=$(wildcard $(SRCDIR)/*.S) GENERALSRCS_C=$(wildcard $(GENERALDIR)/*.c) GENERALSRCS_S=$(wildcard $(GENERALDIR)/*.S) DEVICESRCS_C=$(wildcard $(DEVICEDIR)/*.c) DEVICESRCS_S=$(wildcard $(DEVICEDIR)/*.S) SRCS_C=$(PROJSRCS_C) $(GENERALSRCS_C) $(DEVICESRCS_C) SRCS_S=$(PROJSRCS_S) $(GENERALSRCS_S) $(DEVICESRCS_S) OBJS_C=$(patsubst %.c,$(OBJDIR)/%.o,$(SRCS_C)) OBJS_S=$(patsubst %.S,$(OBJDIR)/%.S.o,$(SRCS_S)) SRCS=$(SRCS_C) $(SRCS_S) OBJS=$(OBJS_C) $(OBJS_S) DEPFILES=$(patsubst %.c,$(DEPDIR)/%.d,$(SRCS_C)) DEPFLAGS = -MT $@ -MMD -MP -MF $(DEPDIR)/$*.d CFLAGS=-I$(INCDIR) \ -I$(DEVICEDIR)/$(INCDIR) \ -mthumb -mcpu=$(CPU) -nostdlib -g \ -DSTM32F401xx # TODO use these cflags if you want to run # with newlib. Also don't forget to rename # and/or modify syscalls.c.example under # devices/general # CFLAGS=-I$(INCDIR) \ # -I$(DEVICEDIR)/$(INCDIR) \ # -mthumb -mcpu=$(CPU) --specs=nano.specs -g LDFLAGS=-T$(DEVICEDIR)/linker_script.ld CC=arm-none-eabi-gcc LD=arm-none-eabi-ld OPENOCD=openocd $(BINDIR)/$(APP): $(OBJS) | $(BINDIR) $(CC) $^ -o $@ $(CFLAGS) $(LDFLAGS) $(DEPFLAGS) %.o : %.c $(OBJDIR)/%.o: %.c | $(DEPDIR) $(OBJDIR) mkdir -p "$(dir $@)" mkdir -p $(dir $(DEPDIR)/$*.d) $(CC) -c $< -o $@ $(CFLAGS) $(DEPFLAGS) %.S.o : %.S $(OBJDIR)/%.S.o: %.S mkdir -p "$(dir $@)" $(CC) -c $< -o $@ $(CFLAGS) .PHONY: openocd flash clean openocd: $(OPENOCD) -f interface/stlink.cfg -f target/$(TARGET).cfg flash: $(BINDIR)/$(APP) $(OPENOCD) -f interface/stlink.cfg -f target/$(TARGET).cfg -c "program $(BINDIR)/$(APP) verify reset exit" clean: rm -rf $(OBJDIR) $(BINDIR) $(DEPDIR) $(BINDIR): ; mkdir -p $@ $(OBJDIR): ; mkdir -p $@ $(DEPDIR): ; mkdir -p $@ $(DEPFILES): include $(wildcard $(DEPFILES))