BINARY = rtdriver
OBJS = obj/rtdriver.o
PREFIX ?= arm-none-eabi
CC = $(PREFIX)-gcc
LD = $(PREFIX)-gcc
OBJCOPY = $(PREFIX)-objcopy
OBJDUMP = $(PREFIX)-objdump
GDB = $(PREFIX)-gdb
TOOLCHAIN_DIR = `dirname \`which $(CC)\``/../$(PREFIX)
ARCH_FLAGS = -mthumb -mcpu=cortex-m3 -msoft-float
CFLAGS += -Os -g -Wall -Wextra -I inc -I$(TOOLCHAIN_DIR)/include \
-fno-common $(ARCH_FLAGS) -MD -DSTM32F1
LDSCRIPT = linker.ld
LDFLAGS += -Wl,--start-group -lc -lgcc -lnosys -Wl,--end-group \
-L$(TOOLCHAIN_DIR)/lib/stm32/f1/ \
-T$(LDSCRIPT) -nostartfiles -Wl,--gc-sections \
$(ARCH_FLAGS) -mfix-cortex-m3-ldrd
ifneq ($(V),1)
Q := @
NULL := 2>/dev/null
else
LDFLAGS += -Wl,--print-gc-sections
endif
.SUFFIXES: .elf .bin .hex .srec .list .images
.SECONDEXPANSION:
.SECONDARY:
all: images
gdb: images
$(GDB) bin/$(BINARY).elf
upload: images
stm32flash -k -w bin/$(BINARY).bin /dev/ttyUSB0
images: $(OBJS) bin/$(BINARY).elf bin/$(BINARY).bin bin/$(BINARY).hex bin/$(BINARY).srec bin/$(BINARY).list
bin/%.bin: bin/%.elf
@echo " OBJCOPY $@"
$(Q)$(OBJCOPY) -Obinary $< $@
bin/%.hex: bin/%.elf
@echo " OBJCOPY $@"
$(Q)$(OBJCOPY) -Oihex $< $@
bin/%.srec: bin/%.elf
@echo " OBJCOPY $@"
$(Q)$(OBJCOPY) -Osrec $< $@
bin/%.list: bin/%.elf
@echo " OBJDUMP $@"
$(Q)$(OBJDUMP) -S $< > $@
bin/%.elf: $(OBJS) $(LDSCRIPT)
@echo " LD $@"
$(Q)$(LD) -o $@ $(OBJS) -lopencm3_stm32f1 $(LDFLAGS)
obj/%.o: src/%.c Makefile
@echo " CC $@"
$(Q)$(CC) $(CFLAGS) -o $@ -c $<
obj/%.o: src/%.s Makefile
@echo " ASM $@"
$(Q)$(CC) $(CFLAGS) -o $@ -c $<
clean:
$(Q)rm -f obj/*
$(Q)rm -f bin/*
.PHONY: all clean images upload gdb