2 ## This file is part of the sigrok-firmware-fx2lafw project.
4 ## Copyright (C) 2013 Uwe Hermann <uwe@hermann-uwe.de>
5 ## Copyright (C) 2015 Daniel Elstner <daniel.kitta@gmail.com>
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.
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.
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
22 GNUMAKEFLAGS = --no-print-directory
23 SUFFIXES = .a51 .c .fw .ihx .rel
25 # Flags for firmware hex file generation
26 SDCC_LINK_FLAGS = --code-size 0x1c00 --xram-size 0x0200 --xram-loc 0x1c00 -Wl"-b DSCR_AREA=0x1e00" -Wl"-b INT2JT=0x1f00"
27 SDCC_LINK_FLAGS_HANTEK_6022BE = --code-size 0x3c00 --xram-size 0x0100 --xram-loc 0x3c00 -Wl"-b DSCR_AREA=0x3d00" -Wl"-b INT2JT=0x3f00"
28 SDCC_LINK_FLAGS_SAINSMART_DDS120 = --code-size 0x3c00 --xram-size 0x0100 --xram-loc 0x3c00 -Wl"-b DSCR_AREA=0x3d00" -Wl"-b INT2JT=0x3f00"
31 as_includes = -I$(srcdir)/include
32 c_includes = -I$(srcdir)/include -I$(srcdir)/fx2lib/include
34 # Binary firmware tarball basename
35 distdir_bin = $(PACKAGE)-bin-$(VERSION)
37 # Basename of directory stamp files
41 fx2lib/lib/$(dirstamp) \
42 fx2lib/lib/interrupts/$(dirstamp) \
43 hw/braintechnology-usb-lps/$(dirstamp) \
44 hw/cwav-usbeeax/$(dirstamp) \
45 hw/cwav-usbeedx/$(dirstamp) \
46 hw/cwav-usbeesx/$(dirstamp) \
47 hw/cwav-usbeezx/$(dirstamp) \
48 hw/cypress-fx2/$(dirstamp) \
49 hw/saleae-logic/$(dirstamp) \
50 hw/sigrok-fx2-8ch/$(dirstamp) \
51 hw/sigrok-fx2-16ch/$(dirstamp) \
52 hw/hantek-6022be/$(dirstamp) \
53 hw/sainsmart-dds120/$(dirstamp)
55 # Final firmware files
57 hw/braintechnology-usb-lps/fx2lafw-braintechnology-usb-lps.fw \
58 hw/cwav-usbeeax/fx2lafw-cwav-usbeeax.fw \
59 hw/cwav-usbeedx/fx2lafw-cwav-usbeedx.fw \
60 hw/cwav-usbeesx/fx2lafw-cwav-usbeesx.fw \
61 hw/cwav-usbeezx/fx2lafw-cwav-usbeezx.fw \
62 hw/cypress-fx2/fx2lafw-cypress-fx2.fw \
63 hw/saleae-logic/fx2lafw-saleae-logic.fw \
64 hw/sigrok-fx2-8ch/fx2lafw-sigrok-fx2-8ch.fw \
65 hw/sigrok-fx2-16ch/fx2lafw-sigrok-fx2-16ch.fw \
66 hw/hantek-6022be/hantek-6022be.fw \
67 hw/sainsmart-dds120/sainsmart-dds120.fw
74 include/gpif-acquisition.h
84 hantek_6022be_headers = \
85 include/dscr_hantek_6022be.inc \
88 hantek_6022be_sources = \
91 hantek_6022be_objects = \
94 sainsmart_dds120_headers = \
95 include/dscr_hantek_6022be.inc \
98 sainsmart_dds120_sources = \
101 sainsmart_dds120_objects = \
105 fx2lib/include/autovector.h \
106 fx2lib/include/delay.h \
107 fx2lib/include/eputils.h \
108 fx2lib/include/fx2ints.h \
109 fx2lib/include/fx2macros.h \
110 fx2lib/include/fx2regs.h \
111 fx2lib/include/fx2types.h \
112 fx2lib/include/gpif.h \
113 fx2lib/include/i2c.h \
114 fx2lib/include/lights.h \
115 fx2lib/include/serial.h \
116 fx2lib/include/setupdat.h
120 fx2lib/lib/eputils.c \
123 fx2lib/lib/int4av.a51 \
124 fx2lib/lib/serial.c \
126 fx2lib/lib/setupdat.c \
130 fx2lib/lib/delay.rel \
131 fx2lib/lib/eputils.rel \
132 fx2lib/lib/gpif.rel \
134 fx2lib/lib/int4av.rel \
135 fx2lib/lib/serial.rel \
136 fx2lib/lib/delay.rel \
137 fx2lib/lib/setupdat.rel \
140 fx2lib_ints_sources = \
141 fx2lib/lib/interrupts/ep0ack_isr.c \
142 fx2lib/lib/interrupts/ep0in_isr.c \
143 fx2lib/lib/interrupts/ep0out_isr.c \
144 fx2lib/lib/interrupts/ep0ping_isr.c \
145 fx2lib/lib/interrupts/ep1in_isr.c \
146 fx2lib/lib/interrupts/ep1out_isr.c \
147 fx2lib/lib/interrupts/ep1ping_isr.c \
148 fx2lib/lib/interrupts/ep2ef_isr.c \
149 fx2lib/lib/interrupts/ep2ff_isr.c \
150 fx2lib/lib/interrupts/ep2isoerr_isr.c \
151 fx2lib/lib/interrupts/ep2_isr.c \
152 fx2lib/lib/interrupts/ep2pf_isr.c \
153 fx2lib/lib/interrupts/ep2ping_isr.c \
154 fx2lib/lib/interrupts/ep4ef_isr.c \
155 fx2lib/lib/interrupts/ep4ff_isr.c \
156 fx2lib/lib/interrupts/ep4isoerr_isr.c \
157 fx2lib/lib/interrupts/ep4_isr.c \
158 fx2lib/lib/interrupts/ep4pf_isr.c \
159 fx2lib/lib/interrupts/ep4ping_isr.c \
160 fx2lib/lib/interrupts/ep6ef_isr.c \
161 fx2lib/lib/interrupts/ep6ff_isr.c \
162 fx2lib/lib/interrupts/ep6isoerr_isr.c \
163 fx2lib/lib/interrupts/ep6_isr.c \
164 fx2lib/lib/interrupts/ep6pf_isr.c \
165 fx2lib/lib/interrupts/ep6ping_isr.c \
166 fx2lib/lib/interrupts/ep8ef_isr.c \
167 fx2lib/lib/interrupts/ep8ff_isr.c \
168 fx2lib/lib/interrupts/ep8isoerr_isr.c \
169 fx2lib/lib/interrupts/ep8_isr.c \
170 fx2lib/lib/interrupts/ep8pf_isr.c \
171 fx2lib/lib/interrupts/ep8ping_isr.c \
172 fx2lib/lib/interrupts/errlimit_isr.c \
173 fx2lib/lib/interrupts/gpifdone_isr.c \
174 fx2lib/lib/interrupts/gpifwf_isr.c \
175 fx2lib/lib/interrupts/hispeed_isr.c \
176 fx2lib/lib/interrupts/ibn_isr.c \
177 fx2lib/lib/interrupts/sof_isr.c \
178 fx2lib/lib/interrupts/spare_isr.c \
179 fx2lib/lib/interrupts/sudav_isr.c \
180 fx2lib/lib/interrupts/suspend_isr.c \
181 fx2lib/lib/interrupts/sutok_isr.c \
182 fx2lib/lib/interrupts/usbreset_isr.c
184 fx2lib_ints_objects = \
185 fx2lib/lib/interrupts/ep0ack_isr.rel \
186 fx2lib/lib/interrupts/ep0in_isr.rel \
187 fx2lib/lib/interrupts/ep0out_isr.rel \
188 fx2lib/lib/interrupts/ep0ping_isr.rel \
189 fx2lib/lib/interrupts/ep1in_isr.rel \
190 fx2lib/lib/interrupts/ep1out_isr.rel \
191 fx2lib/lib/interrupts/ep1ping_isr.rel \
192 fx2lib/lib/interrupts/ep2ef_isr.rel \
193 fx2lib/lib/interrupts/ep2ff_isr.rel \
194 fx2lib/lib/interrupts/ep2isoerr_isr.rel \
195 fx2lib/lib/interrupts/ep2_isr.rel \
196 fx2lib/lib/interrupts/ep2pf_isr.rel \
197 fx2lib/lib/interrupts/ep2ping_isr.rel \
198 fx2lib/lib/interrupts/ep4ef_isr.rel \
199 fx2lib/lib/interrupts/ep4ff_isr.rel \
200 fx2lib/lib/interrupts/ep4isoerr_isr.rel \
201 fx2lib/lib/interrupts/ep4_isr.rel \
202 fx2lib/lib/interrupts/ep4pf_isr.rel \
203 fx2lib/lib/interrupts/ep4ping_isr.rel \
204 fx2lib/lib/interrupts/ep6ef_isr.rel \
205 fx2lib/lib/interrupts/ep6ff_isr.rel \
206 fx2lib/lib/interrupts/ep6isoerr_isr.rel \
207 fx2lib/lib/interrupts/ep6_isr.rel \
208 fx2lib/lib/interrupts/ep6pf_isr.rel \
209 fx2lib/lib/interrupts/ep6ping_isr.rel \
210 fx2lib/lib/interrupts/ep8ef_isr.rel \
211 fx2lib/lib/interrupts/ep8ff_isr.rel \
212 fx2lib/lib/interrupts/ep8isoerr_isr.rel \
213 fx2lib/lib/interrupts/ep8_isr.rel \
214 fx2lib/lib/interrupts/ep8pf_isr.rel \
215 fx2lib/lib/interrupts/ep8ping_isr.rel \
216 fx2lib/lib/interrupts/errlimit_isr.rel \
217 fx2lib/lib/interrupts/gpifdone_isr.rel \
218 fx2lib/lib/interrupts/gpifwf_isr.rel \
219 fx2lib/lib/interrupts/hispeed_isr.rel \
220 fx2lib/lib/interrupts/ibn_isr.rel \
221 fx2lib/lib/interrupts/sof_isr.rel \
222 fx2lib/lib/interrupts/spare_isr.rel \
223 fx2lib/lib/interrupts/sudav_isr.rel \
224 fx2lib/lib/interrupts/suspend_isr.rel \
225 fx2lib/lib/interrupts/sutok_isr.rel \
226 fx2lib/lib/interrupts/usbreset_isr.rel
230 fx2lib/lib/interrupts/ints.lib
233 hw/braintechnology-usb-lps/dscr.a51 \
234 hw/cwav-usbeeax/dscr.a51 \
235 hw/cwav-usbeedx/dscr.a51 \
236 hw/cwav-usbeesx/dscr.a51 \
237 hw/cwav-usbeezx/dscr.a51 \
238 hw/cypress-fx2/dscr.a51 \
239 hw/saleae-logic/dscr.a51 \
240 hw/sigrok-fx2-8ch/dscr.a51 \
241 hw/sigrok-fx2-16ch/dscr.a51 \
242 hw/hantek-6022be/dscr.a51 \
243 hw/sainsmart-dds120/dscr.a51
245 firmwaredir = $(datadir)/sigrok-firmware
246 firmware_DATA = $(firmware_binaries)
248 dist_noinst_DATA = $(fx2lafw_headers) $(fx2lafw_sources) $(hantek_6022be_headers) $(hantek_6022be_sources) $(sainsmart_dds120_sources) $(sainsmart_dds120_headers) $(fx2lib_headers) $(fx2lib_sources) $(fx2lib_ints_sources) $(hw_sources)
249 dist_noinst_SCRIPTS = autogen.sh
251 MOSTLYCLEANFILES = *.asm fx2lib/lib/*.asm fx2lib/lib/*.lib fx2lib/lib/interrupts/*.asm fx2lib/lib/interrupts/*.lib
252 CLEANFILES = $(firmware_binaries)
253 DISTCLEANFILES = $(dirstamps)
255 # Custom silent rules prefixes
256 SF_V_SDAS = $(sf_v_SDAS_@AM_V@)
257 sf_v_SDAS_ = $(sf_v_SDAS_@AM_DEFAULT_V@)
258 sf_v_SDAS_0 = @echo " SDAS " $@;
261 SF_V_SDCC = $(sf_v_SDCC_@AM_V@)
262 sf_v_SDCC_ = $(sf_v_SDCC_@AM_DEFAULT_V@)
263 sf_v_SDCC_0 = @echo " SDCC " $@;
266 .PHONY: dist-bin dist-changelog
268 all-local: $(firmware_binaries)
271 -$(AM_V_at)find . -type f '(' -name '*.ihx' -o -name '*.lk' \
272 -o -name '*.lst' -o -name '*.map' -o -name '*.mem' \
273 -o -name '*.rel' -o -name '*.rst' -o -name '*.sym' ')' \
276 dist-hook: dist-changelog
279 $(AM_V_at)if test -d '$(top_srcdir)/.git'; then \
280 if git -C '$(top_srcdir)' log >.ChangeLog.tmp; \
281 then mv -f .ChangeLog.tmp "$(top_distdir)/ChangeLog"; \
282 else rm -f .ChangeLog.tmp; exit 1; fi; \
285 # Creates a convenience tarball with just the generated *.fw files, so that
286 # the users don't have to build them manually.
287 dist-bin: $(firmware_binaries)
288 -$(AM_V_at)rm -fr $(distdir_bin)
289 $(AM_V_at)$(MKDIR_P) $(distdir_bin)
290 $(AM_V_at)$(INSTALL_DATA) $(firmware_binaries) $(distdir_bin)
291 $(AM_V_at)$(INSTALL_DATA) $(srcdir)/COPYING $(srcdir)/COPYING.LESSER $(srcdir)/NEWS $(srcdir)/README $(distdir_bin)
292 $(AM_V_at)if test -d '$(top_srcdir)/.git'; \
293 then git -C '$(top_srcdir)' log > $(distdir_bin)/ChangeLog; \
294 else $(INSTALL_DATA) $(srcdir)/ChangeLog $(distdir_bin); fi
295 $(AM_V_at)tar -czf $(distdir_bin).tar.gz $(distdir_bin)
296 -$(AM_V_at)rm -fr $(distdir_bin)
299 $(fx2lafw_objects): $(fx2lafw_headers)
300 $(hantek_6022be_objects): $(hantek_6022be_headers)
301 $(fx2lib_objects): fx2lib/lib/$(dirstamp) $(fx2lib_headers)
302 $(fx2lib_ints_objects): fx2lib/lib/interrupts/$(dirstamp) $(fx2lib_headers)
304 hw/braintechnology-usb-lps/dscr.rel: hw/braintechnology-usb-lps/$(dirstamp) include/dscr.inc
305 hw/cwav-usbeeax/dscr.rel: hw/cwav-usbeeax/$(dirstamp) include/dscr.inc
306 hw/cwav-usbeedx/dscr.rel: hw/cwav-usbeedx/$(dirstamp) include/dscr.inc
307 hw/cwav-usbeesx/dscr.rel: hw/cwav-usbeesx/$(dirstamp) include/dscr.inc
308 hw/cwav-usbeezx/dscr.rel: hw/cwav-usbeezx/$(dirstamp) include/dscr.inc
309 hw/cypress-fx2/dscr.rel: hw/cypress-fx2/$(dirstamp) include/dscr.inc
310 hw/saleae-logic/dscr.rel: hw/saleae-logic/$(dirstamp) include/dscr.inc
311 hw/sigrok-fx2-8ch/dscr.rel: hw/sigrok-fx2-8ch/$(dirstamp) include/dscr.inc
312 hw/sigrok-fx2-16ch/dscr.rel: hw/sigrok-fx2-16ch/$(dirstamp) include/dscr.inc
313 hw/hantek-6022be/dscr.rel: hw/hantek-6022be/$(dirstamp) include/dscr_hantek_6022be.inc
314 hw/sainsmart-dds120/dscr.rel: hw/sainsmart-dds120/$(dirstamp) include/dscr_hantek_6022be.inc
317 # Create build subdirectories
319 @stamp='$@'; $(MKDIR_P) "$${stamp%/*}"
322 fx2lib/lib/fx2.lib: $(fx2lib_objects)
324 $(AM_V_GEN)$(SDCCLIB) $@ $(fx2lib_objects)
326 fx2lib/lib/interrupts/ints.lib: $(fx2lib_ints_objects)
328 $(AM_V_GEN)$(SDCCLIB) $@ $(fx2lib_ints_objects)
330 hw/braintechnology-usb-lps/fx2lafw-braintechnology-usb-lps.ihx: hw/braintechnology-usb-lps/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
331 $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/braintechnology-usb-lps/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
333 hw/cwav-usbeeax/fx2lafw-cwav-usbeeax.ihx: hw/cwav-usbeeax/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
334 $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/cwav-usbeeax/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
336 hw/cwav-usbeedx/fx2lafw-cwav-usbeedx.ihx: hw/cwav-usbeedx/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
337 $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/cwav-usbeedx/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
339 hw/cwav-usbeesx/fx2lafw-cwav-usbeesx.ihx: hw/cwav-usbeesx/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
340 $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/cwav-usbeesx/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
342 hw/cwav-usbeezx/fx2lafw-cwav-usbeezx.ihx: hw/cwav-usbeezx/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
343 $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/cwav-usbeezx/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
345 hw/cypress-fx2/fx2lafw-cypress-fx2.ihx: hw/cypress-fx2/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
346 $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/cypress-fx2/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
348 hw/saleae-logic/fx2lafw-saleae-logic.ihx: hw/saleae-logic/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
349 $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/saleae-logic/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
351 hw/sigrok-fx2-8ch/fx2lafw-sigrok-fx2-8ch.ihx: hw/sigrok-fx2-8ch/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
352 $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/sigrok-fx2-8ch/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
354 hw/sigrok-fx2-16ch/fx2lafw-sigrok-fx2-16ch.ihx: hw/sigrok-fx2-16ch/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
355 $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/sigrok-fx2-16ch/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
357 hw/hantek-6022be/hantek-6022be.ihx: hw/hantek-6022be/dscr.rel $(hantek_6022be_objects) $(fx2lib_libs)
358 $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS_HANTEK_6022BE) -o $@ hw/hantek-6022be/dscr.rel $(hantek_6022be_objects) $(fx2lib_libs)
360 hw/sainsmart-dds120/sainsmart-dds120.ihx: hw/sainsmart-dds120/dscr.rel $(sainsmart_dds120_objects) $(fx2lib_libs)
361 $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS_SAINSMART_DDS120) -o $@ hw/sainsmart-dds120/dscr.rel $(sainsmart_dds120_objects) $(fx2lib_libs)
364 $(SF_V_SDAS)$(SDAS8051) -glos $(as_includes) $@ $<
367 $(SF_V_SDCC)$(SDCC) -mmcs51 $(c_includes) -c $< -o $@
371 $(AM_V_GEN)$(OBJCOPY) -Iihex $< -Obinary $@
375 $(AM_V_GEN)$(MAKEBIN) -p < $< > $@