]> cloudbase.mooo.com Git - z180-stamp.git/blob - stm32/Rules.mk
Swap pins for IOSEL1 and /BUSACK. IOSEL --> TIM3_CH4 (DMA-REQ)
[z180-stamp.git] / stm32 / Rules.mk
1
2 BINARY := z180-stamp-stm32
3 P_BINARY := $(OBJPATH)/$(BINARY)
4
5 TARGETS := $(BINARY).elf #$(BINARY).bin
6
7 SRCS := z180-stamp-stm32.c z80-if.c hdrom.c
8
9
10 LIBNAME = opencm3_stm32f1
11 DEFS = -DSTM32F1
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
23 TOOLCHAINDIR := /usr/local/gcc-arm-none-eabi-4_8-2014q1/bin
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
86 $(BINARY).elf_DEPS = z180-stamp-stm32.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 %.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)' \
140 -ex 'monitor reset halt' \
141 -ex 'load' \
142 $<
143
144
145 .PHONY: images elf bin hex srec list flash
146