BINARY := z180-stamp-stm32 P_BINARY := $(OBJPATH)/$(BINARY) TARGETS := $(BINARY).elf #$(BINARY).bin SRCS := z180-stamp-stm32.c serial.c z80-if.c hdrom.c LIBNAME = opencm3_stm32f1 DEFS = -DSTM32F1 -DDEBUG=2 OPENCM3_DIR := $(TOP)/libopencm3 LDSCRIPT := $(d)/stm32vl-discovery.ld FP_FLAGS ?= -msoft-float ARCH_FLAGS = -mthumb -mcpu=cortex-m3 $(FP_FLAGS) -mfix-cortex-m3-ldrd STLINK_PORT = :3333 ############################################################################### # Executables TOOLCHAINDIR := /usr/local/gcc-arm-none-eabi-4_8-2014q2/bin TOOLCHAIN := $(TOOLCHAINDIR)/arm-none-eabi CC := $(TOOLCHAIN)-gcc LD := $(TOOLCHAIN)-gcc AR := $(TOOLCHAIN)-ar AS := $(TOOLCHAIN)-as OBJCOPY := $(TOOLCHAIN)-objcopy OBJDUMP := $(TOOLCHAIN)-objdump GDB := $(TOOLCHAIN)-gdb ############################################################################### # Source files ifeq ($(VERBOSE),true) $(info Using $(OPENCM3_DIR) path to library) endif INCLUDES_$(d) := $(OPENCM3_DIR)/include LIBDIRS_$(d) := $(OPENCM3_DIR)/lib SCRIPT_DIR = $(OPENCM3_DIR)/scripts ############################################################################### # C flags CFLAGS_$(d) := -Os -g CFLAGS_$(d) += -Wextra -Wshadow -Wimplicit-function-declaration CFLAGS_$(d) += -Wredundant-decls #-Wstrict-prototypes CFLAGS_$(d) += -fno-common -ffunction-sections -fdata-sections CFLAGS_$(d) += -std=c99 CFLAGS_$(d) += $(ARCH_FLAGS) ############################################################################### # C & C++ preprocessor common flags CPPFLAGS_$(d) := $(DEFS) ############################################################################### # Linker flags LDFLAGS += --static -nostartfiles LDFLAGS += -T$(LDSCRIPT) LDFLAGS += -Wl,-Map=$(*).map LDFLAGS += -Wl,--gc-sections #ifeq ($(VERBOSE),true) #LDFLAGS += -Wl,--print-gc-sections #endif ############################################################################### # Used libraries LDLIBS += -l$(LIBNAME) LDLIBS += -Wl,--start-group -lc -lgcc -lnosys -Wl,--end-group ############################################################################### ############################################################################### $(BINARY).elf_DEPS = z180-stamp-stm32.o serial.o z80-if.o hdrom.o $(BINARY).elf_CMD = $(call echo_cmd,LINK $@) $(LD) $(LDFLAGS) $(ARCH_FLAGS) $^ $(LDLIBS) -o $@ .SUFFIXES: .elf .bin .hex .srec .list .map .images .SECONDEXPANSION: elf: $(P_BINARY).elf bin: $(P_BINARY).bin hex: $(P_BINARY).hex srec: $(P_BINARY).srec list: $(P_BINARY).list images: $(P_BINARY).images flash: $(P_BINARY).flash %.images: %.bin %.hex %.srec %.list $(call echo_cmd,Images generated: $*) %.bin: %.elf $(call echo_cmd,OBJCOPY $@) $(OBJCOPY) -Obinary $< $@ %.hex: %.elf $(call echo_cmd,OBJCOPY $@) $(OBJCOPY) -Oihex $< $@ %.srec: %.elf $(call echo_cmd,OBJCOPY $@) $(OBJCOPY) -Osrec $< $@ %.list: %.elf $(call echo_cmd,OBJDUMP $@) $(OBJDUMP) -S $< > $@ #$(OBJPATH)/%.elf: $(OBJS) $(LDSCRIPT) $(LIB_DIR)/lib$(LIBNAME).a # @#printf " LD $(*).elf\n" # $(LD) $(LDFLAGS) $(ARCH_FLAGS) $(OBJS_$(d)) $(LDLIBS) -o $(*).elf #%.o: %.c # @#printf " CC $(*).c\n" # $(Q)$(CC) $(CFLAGS) $(CPPFLAGS) $(ARCH_FLAGS) -o $(*).o -c $(*).c # #%.o: %.cxx # @#printf " CXX $(*).cxx\n" # $(Q)$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(ARCH_FLAGS) -o $(*).o -c $(*).cxx # #%.o: %.cpp # @#printf " CXX $(*).cpp\n" # $(Q)$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(ARCH_FLAGS) -o $(*).o -c $(*).cpp #clean: # @#printf " CLEAN\n" # $(Q)$(RM) *.o *.d *.elf *.bin *.hex *.srec *.list *.map %.flash: %.elf $(call echo_cmd,GDB $< (flash)) $(GDB) --batch \ -ex 'target extended-remote $(STLINK_PORT)' \ -ex 'monitor reset halt' \ -ex 'load' \ $< .PHONY: images elf bin hex srec list flash