BUILD ?= build PREFIX ?= arm-none-eabi all: $(BUILD)/tbm LDSCRIPT = support/stm32f0-discovery.ld CFLAGS += -Iinclude CFLAGS += -Wall -Wundef -Wextra -Wshadow -Wimplicit-function-declaration CFLAGS += -Wredundant-decls -Wmissing-prototypes -Wstrict-prototypes CFLAGS += -fno-common --function-sections -fdata-sections LDFLAGS += -static -nostartfiles LDFLAGS += -Wl,--gc-sections LIBS += -Wl,--start-group -lc -lgcc -lnosys -Wl,--end-group # Set up libopencm3. OPENCM3_DIR ?= libopencm3 OPENCM3_LIBNAME = opencm3_stm32f0 CFLAGS += -I$(OPENCM3_DIR)/include CFLAGS += -DSTM32F0 -msoft-float -mthumb -mcpu=cortex-m0 LDFLAGS += -L$(OPENCM3_DIR)/lib LIBS += -l$(OPENCM3_LIBNAME) STLINK_PORT ?= :4242 obj-y += source/main.o obj-y += source/shell.o obj-y += source/spi_flash.o obj-y += source/usart.o obj = $(addprefix $(BUILD)/, $(obj-y)) # Include the dependencies. -include $(obj:.o=.d) # Set up the toolchain. CC := $(PREFIX)-gcc LD := $(PREFIX)-gcc GDB := $(PREFIX)-gdb MAKE := make .SECONDARY: clean: @echo "CLEAN" @rm -rf $(BUILD) $(OPENCM3_DIR)/lib/lib$(OPENCM3_LIBNAME).a: @if [ ! -e libopencm3/.git ]; then \ git submodule init; \ git submodule update; \ fi @$(MAKE) -C $(OPENCM3_DIR) # Rule to compile C source code. $(BUILD)/%.o: %.c @echo "CC $<" @mkdir -p $(dir $@) @$(CC) -c $< -o $@ $(CFLAGS) -MT $@ -MMD -MP -MF $(@:.o=.d) $(BUILD)/tbm: $(obj) $(LDSCRIPT) $(OPENCM3_DIR)/lib/lib$(OPENCM3_LIBNAME).a @echo "LD $@" @mkdir -p $(dir $@) @$(LD) -o $@ $(CFLAGS) $(LDFLAGS) -T $(LDSCRIPT) $(obj) $(LIBS) run: $(BUILD)/tbm @echo "GDB $<" @$(GDB) --batch \ -ex 'target extended-remote $(STLINK_PORT)' \ -x flash.scr \ $< .PHONY: clean run