]> sigrok.org Git - sigrok-firmware-fx2lafw.git/blame - Makefile.am
build: Check SDCC version during configure
[sigrok-firmware-fx2lafw.git] / Makefile.am
CommitLineData
d5f5ea73 1##
a986cfff 2## This file is part of the sigrok-firmware-fx2lafw project.
d5f5ea73 3##
36074319 4## Copyright (C) 2013 Uwe Hermann <uwe@hermann-uwe.de>
88d4ba3e 5## Copyright (C) 2015 Daniel Elstner <daniel.kitta@gmail.com>
d5f5ea73
UH
6##
7## This program is free software; you can redistribute it and/or modify
8## it under the terms of the GNU General Public License as published by
9## the Free Software Foundation; either version 2 of the License, or
10## (at your option) any later version.
11##
12## This program is distributed in the hope that it will be useful,
13## but WITHOUT ANY WARRANTY; without even the implied warranty of
14## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15## GNU General Public License for more details.
16##
17## You should have received a copy of the GNU General Public License
18## along with this program; if not, write to the Free Software
19## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20##
21
88d4ba3e
DE
22GNUMAKEFLAGS = --no-print-directory
23SUFFIXES = .a51 .c .fw .ihx .rel
60b99ccc 24
88d4ba3e
DE
25# Flags for firmware hex file generation
26SDCC_LINK_FLAGS = --code-size 0x1c00 --xram-size 0x0200 --xram-loc 0x1c00 -Wl"-b DSCR_AREA=0x1e00" -Wl"-b INT2JT=0x1f00"
36074319 27
88d4ba3e
DE
28# Include paths
29as_includes = -I$(srcdir)/include
30c_includes = -I$(srcdir)/include -I$(srcdir)/fx2lib/include
36074319 31
88d4ba3e
DE
32# Binary firmware tarball basename
33distdir_bin = $(PACKAGE)-bin-$(VERSION)
36074319 34
88d4ba3e
DE
35# Basename of directory stamp files
36dirstamp = .dirstamp
37
38dirstamps = \
39 fx2lib/lib/$(dirstamp) \
40 fx2lib/lib/interrupts/$(dirstamp) \
41 hw/braintechnology-usb-lps/$(dirstamp) \
42 hw/cwav-usbeeax/$(dirstamp) \
43 hw/cwav-usbeedx/$(dirstamp) \
44 hw/cwav-usbeesx/$(dirstamp) \
45 hw/cypress-fx2/$(dirstamp) \
46 hw/saleae-logic/$(dirstamp) \
47 hw/sigrok-fx2-8ch/$(dirstamp) \
48 hw/sigrok-fx2-16ch/$(dirstamp)
49
50# Final firmware files
51firmware_binaries = \
52 hw/braintechnology-usb-lps/fx2lafw-braintechnology-usb-lps.fw \
53 hw/cwav-usbeeax/fx2lafw-cwav-usbeeax.fw \
54 hw/cwav-usbeedx/fx2lafw-cwav-usbeedx.fw \
55 hw/cwav-usbeesx/fx2lafw-cwav-usbeesx.fw \
56 hw/cypress-fx2/fx2lafw-cypress-fx2.fw \
57 hw/saleae-logic/fx2lafw-saleae-logic.fw \
58 hw/sigrok-fx2-8ch/fx2lafw-sigrok-fx2-8ch.fw \
59 hw/sigrok-fx2-16ch/fx2lafw-sigrok-fx2-16ch.fw
60
61fx2lafw_headers = \
62 include/command.h \
63 include/dscr.inc \
64 include/fx2lafw.h \
65 include/gpif-acquisition.h
66
67fx2lafw_sources = \
68 fx2lafw.c \
69 gpif-acquisition.c
70
71fx2lafw_objects = \
72 fx2lafw.rel \
73 gpif-acquisition.rel
74
75fx2lib_headers = \
76 fx2lib/include/autovector.h \
77 fx2lib/include/delay.h \
78 fx2lib/include/eputils.h \
79 fx2lib/include/fx2ints.h \
80 fx2lib/include/fx2macros.h \
81 fx2lib/include/fx2regs.h \
82 fx2lib/include/fx2types.h \
83 fx2lib/include/gpif.h \
84 fx2lib/include/i2c.h \
85 fx2lib/include/lights.h \
86 fx2lib/include/serial.h \
87 fx2lib/include/setupdat.h
88
89fx2lib_sources = \
90 fx2lib/lib/delay.c \
91 fx2lib/lib/eputils.c \
92 fx2lib/lib/gpif.c \
93 fx2lib/lib/i2c.c \
94 fx2lib/lib/int4av.a51 \
95 fx2lib/lib/serial.c \
96 fx2lib/lib/delay.c \
97 fx2lib/lib/setupdat.c \
98 fx2lib/lib/usbav.a51
99
100fx2lib_objects = \
101 fx2lib/lib/delay.rel \
102 fx2lib/lib/eputils.rel \
103 fx2lib/lib/gpif.rel \
104 fx2lib/lib/i2c.rel \
105 fx2lib/lib/int4av.rel \
106 fx2lib/lib/serial.rel \
107 fx2lib/lib/delay.rel \
108 fx2lib/lib/setupdat.rel \
109 fx2lib/lib/usbav.rel
110
111fx2lib_ints_sources = \
112 fx2lib/lib/interrupts/ep0ack_isr.c \
113 fx2lib/lib/interrupts/ep0in_isr.c \
114 fx2lib/lib/interrupts/ep0out_isr.c \
115 fx2lib/lib/interrupts/ep0ping_isr.c \
116 fx2lib/lib/interrupts/ep1in_isr.c \
117 fx2lib/lib/interrupts/ep1out_isr.c \
118 fx2lib/lib/interrupts/ep1ping_isr.c \
119 fx2lib/lib/interrupts/ep2ef_isr.c \
120 fx2lib/lib/interrupts/ep2ff_isr.c \
121 fx2lib/lib/interrupts/ep2isoerr_isr.c \
122 fx2lib/lib/interrupts/ep2_isr.c \
123 fx2lib/lib/interrupts/ep2pf_isr.c \
124 fx2lib/lib/interrupts/ep2ping_isr.c \
125 fx2lib/lib/interrupts/ep4ef_isr.c \
126 fx2lib/lib/interrupts/ep4ff_isr.c \
127 fx2lib/lib/interrupts/ep4isoerr_isr.c \
128 fx2lib/lib/interrupts/ep4_isr.c \
129 fx2lib/lib/interrupts/ep4pf_isr.c \
130 fx2lib/lib/interrupts/ep4ping_isr.c \
131 fx2lib/lib/interrupts/ep6ef_isr.c \
132 fx2lib/lib/interrupts/ep6ff_isr.c \
133 fx2lib/lib/interrupts/ep6isoerr_isr.c \
134 fx2lib/lib/interrupts/ep6_isr.c \
135 fx2lib/lib/interrupts/ep6pf_isr.c \
136 fx2lib/lib/interrupts/ep6ping_isr.c \
137 fx2lib/lib/interrupts/ep8ef_isr.c \
138 fx2lib/lib/interrupts/ep8ff_isr.c \
139 fx2lib/lib/interrupts/ep8isoerr_isr.c \
140 fx2lib/lib/interrupts/ep8_isr.c \
141 fx2lib/lib/interrupts/ep8pf_isr.c \
142 fx2lib/lib/interrupts/ep8ping_isr.c \
143 fx2lib/lib/interrupts/errlimit_isr.c \
144 fx2lib/lib/interrupts/gpifdone_isr.c \
145 fx2lib/lib/interrupts/gpifwf_isr.c \
146 fx2lib/lib/interrupts/hispeed_isr.c \
147 fx2lib/lib/interrupts/ibn_isr.c \
148 fx2lib/lib/interrupts/sof_isr.c \
149 fx2lib/lib/interrupts/spare_isr.c \
150 fx2lib/lib/interrupts/sudav_isr.c \
151 fx2lib/lib/interrupts/suspend_isr.c \
152 fx2lib/lib/interrupts/sutok_isr.c \
153 fx2lib/lib/interrupts/usbreset_isr.c
154
155fx2lib_ints_objects = \
156 fx2lib/lib/interrupts/ep0ack_isr.rel \
157 fx2lib/lib/interrupts/ep0in_isr.rel \
158 fx2lib/lib/interrupts/ep0out_isr.rel \
159 fx2lib/lib/interrupts/ep0ping_isr.rel \
160 fx2lib/lib/interrupts/ep1in_isr.rel \
161 fx2lib/lib/interrupts/ep1out_isr.rel \
162 fx2lib/lib/interrupts/ep1ping_isr.rel \
163 fx2lib/lib/interrupts/ep2ef_isr.rel \
164 fx2lib/lib/interrupts/ep2ff_isr.rel \
165 fx2lib/lib/interrupts/ep2isoerr_isr.rel \
166 fx2lib/lib/interrupts/ep2_isr.rel \
167 fx2lib/lib/interrupts/ep2pf_isr.rel \
168 fx2lib/lib/interrupts/ep2ping_isr.rel \
169 fx2lib/lib/interrupts/ep4ef_isr.rel \
170 fx2lib/lib/interrupts/ep4ff_isr.rel \
171 fx2lib/lib/interrupts/ep4isoerr_isr.rel \
172 fx2lib/lib/interrupts/ep4_isr.rel \
173 fx2lib/lib/interrupts/ep4pf_isr.rel \
174 fx2lib/lib/interrupts/ep4ping_isr.rel \
175 fx2lib/lib/interrupts/ep6ef_isr.rel \
176 fx2lib/lib/interrupts/ep6ff_isr.rel \
177 fx2lib/lib/interrupts/ep6isoerr_isr.rel \
178 fx2lib/lib/interrupts/ep6_isr.rel \
179 fx2lib/lib/interrupts/ep6pf_isr.rel \
180 fx2lib/lib/interrupts/ep6ping_isr.rel \
181 fx2lib/lib/interrupts/ep8ef_isr.rel \
182 fx2lib/lib/interrupts/ep8ff_isr.rel \
183 fx2lib/lib/interrupts/ep8isoerr_isr.rel \
184 fx2lib/lib/interrupts/ep8_isr.rel \
185 fx2lib/lib/interrupts/ep8pf_isr.rel \
186 fx2lib/lib/interrupts/ep8ping_isr.rel \
187 fx2lib/lib/interrupts/errlimit_isr.rel \
188 fx2lib/lib/interrupts/gpifdone_isr.rel \
189 fx2lib/lib/interrupts/gpifwf_isr.rel \
190 fx2lib/lib/interrupts/hispeed_isr.rel \
191 fx2lib/lib/interrupts/ibn_isr.rel \
192 fx2lib/lib/interrupts/sof_isr.rel \
193 fx2lib/lib/interrupts/spare_isr.rel \
194 fx2lib/lib/interrupts/sudav_isr.rel \
195 fx2lib/lib/interrupts/suspend_isr.rel \
196 fx2lib/lib/interrupts/sutok_isr.rel \
197 fx2lib/lib/interrupts/usbreset_isr.rel
198
199fx2lib_libs = \
200 fx2lib/lib/fx2.lib \
201 fx2lib/lib/interrupts/ints.lib
202
203hw_sources = \
204 hw/braintechnology-usb-lps/dscr.a51 \
205 hw/cwav-usbeeax/dscr.a51 \
206 hw/cwav-usbeedx/dscr.a51 \
207 hw/cwav-usbeesx/dscr.a51 \
208 hw/cypress-fx2/dscr.a51 \
209 hw/saleae-logic/dscr.a51 \
210 hw/sigrok-fx2-8ch/dscr.a51 \
211 hw/sigrok-fx2-16ch/dscr.a51
212
213firmwaredir = $(datadir)/sigrok-firmware
214firmware_DATA = $(firmware_binaries)
215
216dist_noinst_DATA = $(fx2lafw_headers) $(fx2lafw_sources) $(fx2lib_headers) $(fx2lib_sources) $(fx2lib_ints_sources) $(hw_sources)
217
218MOSTLYCLEANFILES = *.asm fx2lib/lib/*.asm fx2lib/lib/*.lib fx2lib/lib/interrupts/*.asm fx2lib/lib/interrupts/*.lib
219CLEANFILES = $(firmware_binaries)
220DISTCLEANFILES = $(dirstamps)
221
222.PHONY: dist-bin dist-changelog
223
224all-local: $(firmware_binaries)
36074319 225
88d4ba3e
DE
226mostlyclean-local:
227 -$(AM_V_at)find . -type f '(' -name '*.ihx' -o -name '*.lk' \
228 -o -name '*.lst' -o -name '*.map' -o -name '*.mem' \
229 -o -name '*.rel' -o -name '*.rst' -o -name '*.sym' ')' \
230 -exec rm -f '{}' '+'
36074319 231
88d4ba3e 232dist-hook: dist-changelog
36074319 233
88d4ba3e
DE
234dist-changelog:
235 $(AM_V_at)if test ! -d '$(top_srcdir)/.git'; then \
236 cp -f '$(top_srcdir)/ChangeLog' "$(top_distdir)/ChangeLog"; \
237 elif git -C '$(top_srcdir)' log >.ChangeLog.tmp; then \
238 mv -f .ChangeLog.tmp "$(top_distdir)/ChangeLog"; \
239 else \
240 rm -f .ChangeLog.tmp; exit 1; \
241 fi
36074319 242
3cdd4722
UH
243# Creates a convenience tarball with just the generated *.fw files, so that
244# the users don't have to build them manually.
88d4ba3e
DE
245dist-bin: $(firmware_binaries)
246 $(AM_V_at)$(MKDIR_P) $(distdir_bin)
247 $(AM_V_at)$(INSTALL_DATA) $(firmware_binaries) $(distdir_bin)
248 $(AM_V_at)$(INSTALL_DATA) $(srcdir)/COPYING $(srcdir)/COPYING.LESSER $(srcdir)/NEWS $(srcdir)/README $(distdir_bin)
249 $(AM_V_at)git -C '$(top_srcdir)' log > $(distdir_bin)/ChangeLog
250 $(AM_V_at)tar -czf $(distdir_bin).tar.gz $(distdir_bin)
251 -$(AM_V_at)rm -fr $(distdir_bin)
252
253# List dependencies
254$(fx2lafw_objects): $(fx2lafw_headers)
255$(fx2lib_objects): fx2lib/lib/$(dirstamp) $(fx2lib_headers)
256$(fx2lib_ints_objects): fx2lib/lib/interrupts/$(dirstamp) $(fx2lib_headers)
257
258hw/braintechnology-usb-lps/dscr.rel: hw/braintechnology-usb-lps/$(dirstamp) include/dscr.inc
259hw/cwav-usbeeax/dscr.rel: hw/cwav-usbeeax/$(dirstamp) include/dscr.inc
260hw/cwav-usbeedx/dscr.rel: hw/cwav-usbeedx/$(dirstamp) include/dscr.inc
261hw/cwav-usbeesx/dscr.rel: hw/cwav-usbeesx/$(dirstamp) include/dscr.inc
262hw/cypress-fx2/dscr.rel: hw/cypress-fx2/$(dirstamp) include/dscr.inc
263hw/saleae-logic/dscr.rel: hw/saleae-logic/$(dirstamp) include/dscr.inc
264hw/sigrok-fx2-8ch/dscr.rel: hw/sigrok-fx2-8ch/$(dirstamp) include/dscr.inc
265hw/sigrok-fx2-16ch/dscr.rel: hw/sigrok-fx2-16ch/$(dirstamp) include/dscr.inc
266
267# Create build subdirectories
268$(dirstamps):
269 @stamp='$@'; $(MKDIR_P) "$${stamp%/*}"
270 @: > $@
271
272fx2lib/lib/fx2.lib: $(fx2lib_objects)
273 -$(AM_V_at)rm -f $@
274 $(AM_V_GEN)$(SDCCLIB) $@ $(fx2lib_objects)
275
276fx2lib/lib/interrupts/ints.lib: $(fx2lib_ints_objects)
277 -$(AM_V_at)rm -f $@
278 $(AM_V_GEN)$(SDCCLIB) $@ $(fx2lib_ints_objects)
279
280hw/braintechnology-usb-lps/fx2lafw-braintechnology-usb-lps.ihx: hw/braintechnology-usb-lps/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
281 $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/braintechnology-usb-lps/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
282
283hw/cwav-usbeeax/fx2lafw-cwav-usbeeax.ihx: hw/cwav-usbeeax/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
284 $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/cwav-usbeeax/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
285
286hw/cwav-usbeedx/fx2lafw-cwav-usbeedx.ihx: hw/cwav-usbeedx/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
287 $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/cwav-usbeedx/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
288
289hw/cwav-usbeesx/fx2lafw-cwav-usbeesx.ihx: hw/cwav-usbeesx/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
290 $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/cwav-usbeesx/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
291
292hw/cypress-fx2/fx2lafw-cypress-fx2.ihx: hw/cypress-fx2/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
293 $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/cypress-fx2/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
294
295hw/saleae-logic/fx2lafw-saleae-logic.ihx: hw/saleae-logic/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
296 $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/saleae-logic/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
297
298hw/sigrok-fx2-8ch/fx2lafw-sigrok-fx2-8ch.ihx: hw/sigrok-fx2-8ch/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
299 $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/sigrok-fx2-8ch/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
300
301hw/sigrok-fx2-16ch/fx2lafw-sigrok-fx2-16ch.ihx: hw/sigrok-fx2-16ch/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
302 $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/sigrok-fx2-16ch/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
303
304.a51.rel:
305 $(AM_V_GEN)$(SDAS8051) -glos $(as_includes) $@ $<
306
307.c.rel:
308 $(AM_V_GEN)$(SDCC) -mmcs51 $(c_includes) -c $< -o $@
309
310if FOUND_OBJCOPY
311.ihx.fw:
312 $(AM_V_GEN)$(OBJCOPY) -Iihex $< -Obinary $@
313else
314if FOUND_MAKEBIN
315.ihx.fw:
316 $(AM_V_GEN)$(MAKEBIN) -p < $< > $@
317endif
318endif
106ee45c 319