]>
Commit | Line | Data |
---|---|---|
88d31d11 L |
1 | |
2 | BINARY := z180-stamp-stm32 | |
3 | P_BINARY := $(OBJPATH)/$(BINARY) | |
4 | ||
5 | TARGETS := $(BINARY).elf #$(BINARY).bin | |
6 | ||
6b81b39f | 7 | SRCS := z180-stamp-stm32.c serial.c z80-if.c hdrom.c |
88d31d11 L |
8 | |
9 | ||
10 | LIBNAME = opencm3_stm32f1 | |
6b81b39f | 11 | DEFS = -DSTM32F1 -DDEBUG=2 |
88d31d11 L |
12 | OPENCM3_DIR := $(TOP)/libopencm3 |
13 | LDSCRIPT := $(d)/stm32vl-discovery.ld | |
14 | ||
15 | FP_FLAGS ?= -msoft-float | |
16 | ARCH_FLAGS = -mthumb -mcpu=cortex-m3 $(FP_FLAGS) -mfix-cortex-m3-ldrd | |
17 | ||
18 | STLINK_PORT = :3333 | |
19 | ||
20 | ############################################################################### | |
21 | # Executables | |
22 | ||
6b81b39f | 23 | TOOLCHAINDIR := /usr/local/gcc-arm-none-eabi-4_8-2014q2/bin |
88d31d11 L |
24 | TOOLCHAIN := $(TOOLCHAINDIR)/arm-none-eabi |
25 | ||
26 | CC := $(TOOLCHAIN)-gcc | |
27 | LD := $(TOOLCHAIN)-gcc | |
28 | AR := $(TOOLCHAIN)-ar | |
29 | AS := $(TOOLCHAIN)-as | |
30 | OBJCOPY := $(TOOLCHAIN)-objcopy | |
31 | OBJDUMP := $(TOOLCHAIN)-objdump | |
32 | GDB := $(TOOLCHAIN)-gdb | |
33 | ||
34 | ############################################################################### | |
35 | # Source files | |
36 | ||
37 | ||
38 | ||
39 | ifeq ($(VERBOSE),true) | |
40 | $(info Using $(OPENCM3_DIR) path to library) | |
41 | endif | |
42 | ||
43 | INCLUDES_$(d) := $(OPENCM3_DIR)/include | |
44 | LIBDIRS_$(d) := $(OPENCM3_DIR)/lib | |
45 | ||
46 | SCRIPT_DIR = $(OPENCM3_DIR)/scripts | |
47 | ||
48 | ############################################################################### | |
49 | # C flags | |
50 | ||
51 | CFLAGS_$(d) := -Os -g | |
52 | CFLAGS_$(d) += -Wextra -Wshadow -Wimplicit-function-declaration | |
53 | CFLAGS_$(d) += -Wredundant-decls #-Wstrict-prototypes | |
54 | CFLAGS_$(d) += -fno-common -ffunction-sections -fdata-sections | |
55 | CFLAGS_$(d) += -std=c99 | |
56 | CFLAGS_$(d) += $(ARCH_FLAGS) | |
57 | ||
58 | ############################################################################### | |
59 | # C & C++ preprocessor common flags | |
60 | ||
61 | CPPFLAGS_$(d) := $(DEFS) | |
62 | ||
63 | ############################################################################### | |
64 | # Linker flags | |
65 | ||
66 | LDFLAGS += --static -nostartfiles | |
67 | LDFLAGS += -T$(LDSCRIPT) | |
68 | LDFLAGS += -Wl,-Map=$(*).map | |
69 | LDFLAGS += -Wl,--gc-sections | |
70 | ||
71 | #ifeq ($(VERBOSE),true) | |
72 | #LDFLAGS += -Wl,--print-gc-sections | |
73 | #endif | |
74 | ||
75 | ############################################################################### | |
76 | # Used libraries | |
77 | ||
78 | LDLIBS += -l$(LIBNAME) | |
79 | LDLIBS += -Wl,--start-group -lc -lgcc -lnosys -Wl,--end-group | |
80 | ||
81 | ||
82 | ############################################################################### | |
83 | ############################################################################### | |
84 | ||
85 | ||
6b81b39f | 86 | $(BINARY).elf_DEPS = z180-stamp-stm32.o serial.o z80-if.o hdrom.o |
88d31d11 L |
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 %.srec %.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)' \ | |
acd9bdaf L |
140 | -ex 'monitor reset halt' \ |
141 | -ex 'load' \ | |
88d31d11 L |
142 | $< |
143 | ||
acd9bdaf | 144 | |
88d31d11 L |
145 | .PHONY: images elf bin hex srec list flash |
146 |