]> cloudbase.mooo.com Git - z180-stamp.git/blob - stm32/Rules.mk
ddc8db34c4824eb6ab23f9a08d162c5309d3fabd
[z180-stamp.git] / stm32 / Rules.mk
1
2 BINARY := z180-stamp-stm32
3 P_BINARY := $(OBJPATH)/$(BINARY)
4
5 TARGETS := $(BINARY).elf
6
7 ###############################################################################
8 # Source files
9
10 SRCS := z180-stamp-stm32.c serial.c z80-if.c hdrom.c
11
12 SRCS_VPATH := ../Z180
13
14 LIBNAME = opencm3_stm32f1
15 DEFS = -DSTM32F1 -DDEBUG=2
16 OPENCM3_DIR := $(TOP)/libopencm3
17 LDSCRIPT := $(d)/stm32vl-discovery.ld
18
19 FP_FLAGS ?= -msoft-float
20 ARCH_FLAGS = -mthumb -mcpu=cortex-m3 $(FP_FLAGS) -mfix-cortex-m3-ldrd
21
22 STLINK_PORT = :3333
23
24 ###############################################################################
25 # Executables
26
27 TOOLCHAINDIR := /usr/local/gcc-arm-none-eabi-4_8-2014q2/bin
28 TOOLCHAIN := $(TOOLCHAINDIR)/arm-none-eabi
29
30 CC := $(TOOLCHAIN)-gcc
31 LD := $(TOOLCHAIN)-gcc
32 AR := $(TOOLCHAIN)-ar
33 AS := $(TOOLCHAIN)-as
34 OBJCOPY := $(TOOLCHAIN)-objcopy
35 OBJDUMP := $(TOOLCHAIN)-objdump
36 GDB := $(TOOLCHAIN)-gdb
37
38 ###############################################################################
39
40
41 ifeq ($(VERBOSE),true)
42 $(info Using $(OPENCM3_DIR) path to library)
43 endif
44
45 INCLUDES_$(d) := $(OPENCM3_DIR)/include
46 LIBDIRS_$(d) := $(OPENCM3_DIR)/lib
47
48 SCRIPT_DIR = $(OPENCM3_DIR)/scripts
49
50 ###############################################################################
51 # C flags
52
53 CFLAGS_$(d) := -Os -g
54 CFLAGS_$(d) += -Wextra -Wshadow -Wimplicit-function-declaration
55 CFLAGS_$(d) += -Wredundant-decls #-Wstrict-prototypes
56 CFLAGS_$(d) += -fno-common -ffunction-sections -fdata-sections
57 CFLAGS_$(d) += -std=c99
58 CFLAGS_$(d) += $(ARCH_FLAGS)
59
60 ###############################################################################
61 # C & C++ preprocessor common flags
62
63 CPPFLAGS_$(d) := $(DEFS)
64
65 ###############################################################################
66 # Linker flags
67
68 LDFLAGS += --static -nostartfiles
69 LDFLAGS += -T$(LDSCRIPT)
70 LDFLAGS += -Wl,-Map=$(*).map
71 LDFLAGS += -Wl,--gc-sections
72
73 #ifeq ($(VERBOSE),true)
74 #LDFLAGS += -Wl,--print-gc-sections
75 #endif
76
77 ###############################################################################
78 # Used libraries
79
80 LDLIBS += -l$(LIBNAME)
81 LDLIBS += -Wl,--start-group -lc -lgcc -lnosys -Wl,--end-group
82
83 ###############################################################################
84
85
86 $(BINARY).elf_DEPS = z180-stamp-stm32.o serial.o z80-if.o hdrom.o
87 $(BINARY).elf_CMD = $(call echo_cmd,LINK $@) $(LD) $(LDFLAGS) $(ARCH_FLAGS) $^ $(LDLIBS) -o $@
88
89 .SUFFIXES: .elf .bin .hex .srec .list .map .images
90 .SECONDEXPANSION:
91
92 elf: $(P_BINARY).elf
93 bin: $(P_BINARY).bin
94 hex: $(P_BINARY).hex
95 srec: $(P_BINARY).srec
96 list: $(P_BINARY).list
97
98 images: $(P_BINARY).images
99 flash: $(P_BINARY).flash
100
101 %.images: %.bin %.hex %.list
102 $(call echo_cmd,Images generated: $*)
103
104 %.bin: %.elf
105 $(call echo_cmd,OBJCOPY $@) $(OBJCOPY) -Obinary $< $@
106
107 %.hex: %.elf
108 $(call echo_cmd,OBJCOPY $@) $(OBJCOPY) -Oihex $< $@
109
110 %.srec: %.elf
111 $(call echo_cmd,OBJCOPY $@) $(OBJCOPY) -Osrec $< $@
112
113 %.list: %.elf
114 $(call echo_cmd,OBJDUMP $@) $(OBJDUMP) -S $< > $@
115
116 #$(OBJPATH)/%.elf: $(OBJS) $(LDSCRIPT) $(LIB_DIR)/lib$(LIBNAME).a
117 # @#printf " LD $(*).elf\n"
118 # $(LD) $(LDFLAGS) $(ARCH_FLAGS) $(OBJS_$(d)) $(LDLIBS) -o $(*).elf
119
120 #%.o: %.c
121 # @#printf " CC $(*).c\n"
122 # $(Q)$(CC) $(CFLAGS) $(CPPFLAGS) $(ARCH_FLAGS) -o $(*).o -c $(*).c
123 #
124 #%.o: %.cxx
125 # @#printf " CXX $(*).cxx\n"
126 # $(Q)$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(ARCH_FLAGS) -o $(*).o -c $(*).cxx
127 #
128 #%.o: %.cpp
129 # @#printf " CXX $(*).cpp\n"
130 # $(Q)$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(ARCH_FLAGS) -o $(*).o -c $(*).cpp
131
132 #clean:
133 # @#printf " CLEAN\n"
134 # $(Q)$(RM) *.o *.d *.elf *.bin *.hex *.srec *.list *.map
135
136
137 %.flash: %.elf
138 $(call echo_cmd,GDB $< (flash)) $(GDB) --batch \
139 -ex 'target extended-remote $(STLINK_PORT)' \
140 -ex 'monitor reset halt' \
141 -ex 'load' \
142 $<
143
144
145 .PHONY: images elf bin hex srec list flash
146