2 BINARY
:= z180-stamp-stm32
3 P_BINARY
:= $(OBJPATH
)/$(BINARY
)
5 TARGETS
:= $(BINARY
).elf
7 ###############################################################################
10 SRCS
:= z180-stamp-stm32.c serial.c z80-if.c hdrom.c
14 LIBNAME
= opencm3_stm32f1
15 DEFS
= -DSTM32F1
-DDEBUG
=2
16 OPENCM3_DIR
:= $(TOP
)/libopencm3
17 LDSCRIPT
:= $(d
)/stm32vl-discovery.
ld
19 FP_FLAGS ?
= -msoft-float
20 ARCH_FLAGS
= -mthumb
-mcpu
=cortex-m3
$(FP_FLAGS
) -mfix-cortex-m3-ldrd
24 ###############################################################################
27 TOOLCHAINDIR
:= /usr
/local
/gcc-arm-none-eabi-4_8-2014q2
/bin
28 TOOLCHAIN
:= $(TOOLCHAINDIR
)/arm-none-eabi
30 CC
:= $(TOOLCHAIN
)-gcc
31 LD
:= $(TOOLCHAIN
)-gcc
34 OBJCOPY
:= $(TOOLCHAIN
)-objcopy
35 OBJDUMP
:= $(TOOLCHAIN
)-objdump
36 GDB
:= $(TOOLCHAIN
)-gdb
38 ###############################################################################
41 ifeq ($(VERBOSE
),true
)
42 $(info Using
$(OPENCM3_DIR
) path to library
)
45 INCLUDES_
$(d
) := $(OPENCM3_DIR
)/include
46 LIBDIRS_
$(d
) := $(OPENCM3_DIR
)/lib
48 SCRIPT_DIR
= $(OPENCM3_DIR
)/scripts
50 ###############################################################################
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
)
60 ###############################################################################
61 # C & C++ preprocessor common flags
63 CPPFLAGS_
$(d
) := $(DEFS
)
65 ###############################################################################
68 LDFLAGS
+= --static
-nostartfiles
69 LDFLAGS
+= -T
$(LDSCRIPT
)
70 LDFLAGS
+= -Wl
,-Map
=$(*).map
71 LDFLAGS
+= -Wl
,--gc-sections
73 #ifeq ($(VERBOSE),true)
74 #LDFLAGS += -Wl,--print-gc-sections
77 ###############################################################################
80 LDLIBS
+= -l
$(LIBNAME
)
81 LDLIBS
+= -Wl
,--start-group
-lc
-lgcc
-lnosys
-Wl
,--end-group
83 ###############################################################################
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
$@
89 .SUFFIXES
: .elf .bin .hex .srec .list .map .images
95 srec
: $(P_BINARY
).srec
96 list
: $(P_BINARY
).list
98 images
: $(P_BINARY
).images
99 flash
: $(P_BINARY
).flash
101 %.images
: %.bin
%.hex
%.list
102 $(call echo_cmd
,Images generated
: $*)
105 $(call echo_cmd
,OBJCOPY
$@
) $(OBJCOPY
) -Obinary
$< $@
108 $(call echo_cmd
,OBJCOPY
$@
) $(OBJCOPY
) -Oihex
$< $@
111 $(call echo_cmd
,OBJCOPY
$@
) $(OBJCOPY
) -Osrec
$< $@
114 $(call echo_cmd
,OBJDUMP
$@
) $(OBJDUMP
) -S
$< > $@
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
121 # @#printf " CC $(*).c\n"
122 # $(Q)$(CC) $(CFLAGS) $(CPPFLAGS) $(ARCH_FLAGS) -o $(*).o -c $(*).c
125 # @#printf " CXX $(*).cxx\n"
126 # $(Q)$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(ARCH_FLAGS) -o $(*).o -c $(*).cxx
129 # @#printf " CXX $(*).cpp\n"
130 # $(Q)$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(ARCH_FLAGS) -o $(*).o -c $(*).cpp
133 # @#printf " CLEAN\n"
134 # $(Q)$(RM) *.o *.d *.elf *.bin *.hex *.srec *.list *.map
138 $(call echo_cmd
,GDB
$< (flash
)) $(GDB
) --batch \
139 -ex
'target extended-remote $(STLINK_PORT)' \
140 -ex
'monitor reset halt' \
145 .PHONY
: images elf bin hex srec list flash