]> sigrok.org Git - sigrok-firmware-fx2lafw.git/blob - Makefile.am
Add Hantek PSO2020 firmware support
[sigrok-firmware-fx2lafw.git] / Makefile.am
1 ##
2 ## This file is part of the sigrok-firmware-fx2lafw project.
3 ##
4 ## Copyright (C) 2013 Uwe Hermann <uwe@hermann-uwe.de>
5 ## Copyright (C) 2015 Daniel Elstner <daniel.kitta@gmail.com>
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, see <http://www.gnu.org/licenses/>.
19 ##
20
21 GNUMAKEFLAGS = --no-print-directory
22 SUFFIXES = .a51 .c .fw .ihx .rel
23
24 # Flags for firmware hex file generation
25 SDCC_LINK_FLAGS = --code-size 0x1c00 --xram-size 0x0200 --xram-loc 0x1c00 -Wl"-b DSCR_AREA=0x1e00" -Wl"-b INT2JT=0x1f00"
26 SDCC_LINK_FLAGS_SCOPE = --code-size 0x3c00 --xram-size 0x0100 --xram-loc 0x3c00 -Wl"-b DSCR_AREA=0x3d00" -Wl"-b INT2JT=0x3f00"
27
28 # Include paths
29 as_includes = -I$(srcdir)/include
30 c_includes = -I$(srcdir)/include -I$(srcdir)/fx2lib/include
31
32 # Binary firmware tarball basename
33 distdir_bin = $(PACKAGE)-bin-$(VERSION)
34
35 # Basename of directory stamp files
36 dirstamp = .dirstamp
37
38 dirstamps = \
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/cwav-usbeezx/$(dirstamp) \
46         hw/cypress-fx2/$(dirstamp) \
47         hw/hantek-6022be/$(dirstamp) \
48         hw/hantek-6022bl/$(dirstamp) \
49         hw/hantek-pso2020/$(dirstamp) \
50         hw/instrustar-isds205b/$(dirstamp) \
51         hw/sainsmart-dds120/$(dirstamp) \
52         hw/saleae-logic/$(dirstamp) \
53         hw/sigrok-fx2-8ch/$(dirstamp) \
54         hw/sigrok-fx2-16ch/$(dirstamp) \
55         hw/yixingdianzi-mdso/$(dirstamp)
56
57 # Final firmware files
58 firmware_binaries = \
59         hw/braintechnology-usb-lps/fx2lafw-braintechnology-usb-lps.fw \
60         hw/cwav-usbeeax/fx2lafw-cwav-usbeeax.fw \
61         hw/cwav-usbeedx/fx2lafw-cwav-usbeedx.fw \
62         hw/cwav-usbeesx/fx2lafw-cwav-usbeesx.fw \
63         hw/cwav-usbeezx/fx2lafw-cwav-usbeezx.fw \
64         hw/cypress-fx2/fx2lafw-cypress-fx2.fw \
65         hw/hantek-6022be/fx2lafw-hantek-6022be.fw \
66         hw/hantek-6022bl/fx2lafw-hantek-6022bl.fw \
67         hw/hantek-pso2020/fx2lafw-hantek-pso2020.fw \
68         hw/instrustar-isds205b/fx2lafw-instrustar-isds205b.fw \
69         hw/sainsmart-dds120/fx2lafw-sainsmart-dds120.fw \
70         hw/saleae-logic/fx2lafw-saleae-logic.fw \
71         hw/sigrok-fx2-8ch/fx2lafw-sigrok-fx2-8ch.fw \
72         hw/sigrok-fx2-16ch/fx2lafw-sigrok-fx2-16ch.fw \
73         hw/yixingdianzi-mdso/fx2lafw-yixingdianzi-mdso.fw
74
75 fx2lafw_headers = \
76         include/command.h \
77         include/dscr.inc \
78         include/common.inc \
79         include/fx2lafw.h \
80         include/gpif-acquisition.h
81
82 fx2lafw_sources = \
83         fx2lafw.c \
84         gpif-acquisition.c
85
86 fx2lafw_objects = \
87         fx2lafw.rel \
88         gpif-acquisition.rel
89
90 scope_headers = \
91         include/dscr_scope.inc \
92         include/scope.inc \
93         include/common.inc
94
95 hantek_6022be_headers = $(scope_headers)
96 hantek_6022be_sources = hw/hantek-6022be/fw.c
97 hantek_6022be_objects = hw/hantek-6022be/fw.rel
98
99 hantek_6022bl_headers = $(scope_headers)
100 hantek_6022bl_sources = hw/hantek-6022bl/fw.c
101 hantek_6022bl_objects = hw/hantek-6022bl/fw.rel
102
103 hantek_pso2020_headers = $(scope_headers)
104 hantek_pso2020_sources = hw/hantek-pso2020/fw.c
105 hantek_pso2020_objects = hw/hantek-pso2020/fw.rel
106
107 instrustar_isds205b_headers = $(scope_headers)
108 instrustar_isds205b_sources = hw/instrustar-isds205b/fw.c
109 instrustar_isds205b_objects = hw/instrustar-isds205b/fw.rel
110
111 sainsmart_dds120_headers = $(scope_headers)
112 sainsmart_dds120_sources = hw/sainsmart-dds120/fw.c
113 sainsmart_dds120_objects = hw/sainsmart-dds120/fw.rel
114
115 yixingdianzi_mdso_headers = $(scope_headers)
116 yixingdianzi_mdso_sources = hw/yixingdianzi-mdso/fw.c
117 yixingdianzi_mdso_objects = hw/yixingdianzi-mdso/fw.rel
118
119 fx2lib_headers = \
120         fx2lib/include/autovector.h \
121         fx2lib/include/delay.h \
122         fx2lib/include/eputils.h \
123         fx2lib/include/fx2ints.h \
124         fx2lib/include/fx2macros.h \
125         fx2lib/include/fx2regs.h \
126         fx2lib/include/fx2types.h \
127         fx2lib/include/gpif.h \
128         fx2lib/include/i2c.h \
129         fx2lib/include/lights.h \
130         fx2lib/include/serial.h \
131         fx2lib/include/setupdat.h
132
133 fx2lib_sources = \
134         fx2lib/lib/delay.c \
135         fx2lib/lib/eputils.c \
136         fx2lib/lib/gpif.c \
137         fx2lib/lib/i2c.c \
138         fx2lib/lib/int4av.a51 \
139         fx2lib/lib/serial.c \
140         fx2lib/lib/delay.c \
141         fx2lib/lib/setupdat.c \
142         fx2lib/lib/usbav.a51
143
144 fx2lib_objects = \
145         fx2lib/lib/delay.rel \
146         fx2lib/lib/eputils.rel \
147         fx2lib/lib/gpif.rel \
148         fx2lib/lib/i2c.rel \
149         fx2lib/lib/int4av.rel \
150         fx2lib/lib/serial.rel \
151         fx2lib/lib/delay.rel \
152         fx2lib/lib/setupdat.rel \
153         fx2lib/lib/usbav.rel
154
155 fx2lib_ints_sources = \
156         fx2lib/lib/interrupts/ep0ack_isr.c \
157         fx2lib/lib/interrupts/ep0in_isr.c \
158         fx2lib/lib/interrupts/ep0out_isr.c \
159         fx2lib/lib/interrupts/ep0ping_isr.c \
160         fx2lib/lib/interrupts/ep1in_isr.c \
161         fx2lib/lib/interrupts/ep1out_isr.c \
162         fx2lib/lib/interrupts/ep1ping_isr.c \
163         fx2lib/lib/interrupts/ep2ef_isr.c \
164         fx2lib/lib/interrupts/ep2ff_isr.c \
165         fx2lib/lib/interrupts/ep2isoerr_isr.c \
166         fx2lib/lib/interrupts/ep2_isr.c \
167         fx2lib/lib/interrupts/ep2pf_isr.c \
168         fx2lib/lib/interrupts/ep2ping_isr.c \
169         fx2lib/lib/interrupts/ep4ef_isr.c \
170         fx2lib/lib/interrupts/ep4ff_isr.c \
171         fx2lib/lib/interrupts/ep4isoerr_isr.c \
172         fx2lib/lib/interrupts/ep4_isr.c \
173         fx2lib/lib/interrupts/ep4pf_isr.c \
174         fx2lib/lib/interrupts/ep4ping_isr.c \
175         fx2lib/lib/interrupts/ep6ef_isr.c \
176         fx2lib/lib/interrupts/ep6ff_isr.c \
177         fx2lib/lib/interrupts/ep6isoerr_isr.c \
178         fx2lib/lib/interrupts/ep6_isr.c \
179         fx2lib/lib/interrupts/ep6pf_isr.c \
180         fx2lib/lib/interrupts/ep6ping_isr.c \
181         fx2lib/lib/interrupts/ep8ef_isr.c \
182         fx2lib/lib/interrupts/ep8ff_isr.c \
183         fx2lib/lib/interrupts/ep8isoerr_isr.c \
184         fx2lib/lib/interrupts/ep8_isr.c \
185         fx2lib/lib/interrupts/ep8pf_isr.c \
186         fx2lib/lib/interrupts/ep8ping_isr.c \
187         fx2lib/lib/interrupts/errlimit_isr.c \
188         fx2lib/lib/interrupts/gpifdone_isr.c \
189         fx2lib/lib/interrupts/gpifwf_isr.c \
190         fx2lib/lib/interrupts/hispeed_isr.c \
191         fx2lib/lib/interrupts/ibn_isr.c \
192         fx2lib/lib/interrupts/sof_isr.c \
193         fx2lib/lib/interrupts/spare_isr.c \
194         fx2lib/lib/interrupts/sudav_isr.c \
195         fx2lib/lib/interrupts/suspend_isr.c \
196         fx2lib/lib/interrupts/sutok_isr.c \
197         fx2lib/lib/interrupts/usbreset_isr.c
198
199 fx2lib_ints_objects = \
200         fx2lib/lib/interrupts/ep0ack_isr.rel \
201         fx2lib/lib/interrupts/ep0in_isr.rel \
202         fx2lib/lib/interrupts/ep0out_isr.rel \
203         fx2lib/lib/interrupts/ep0ping_isr.rel \
204         fx2lib/lib/interrupts/ep1in_isr.rel \
205         fx2lib/lib/interrupts/ep1out_isr.rel \
206         fx2lib/lib/interrupts/ep1ping_isr.rel \
207         fx2lib/lib/interrupts/ep2ef_isr.rel \
208         fx2lib/lib/interrupts/ep2ff_isr.rel \
209         fx2lib/lib/interrupts/ep2isoerr_isr.rel \
210         fx2lib/lib/interrupts/ep2_isr.rel \
211         fx2lib/lib/interrupts/ep2pf_isr.rel \
212         fx2lib/lib/interrupts/ep2ping_isr.rel \
213         fx2lib/lib/interrupts/ep4ef_isr.rel \
214         fx2lib/lib/interrupts/ep4ff_isr.rel \
215         fx2lib/lib/interrupts/ep4isoerr_isr.rel \
216         fx2lib/lib/interrupts/ep4_isr.rel \
217         fx2lib/lib/interrupts/ep4pf_isr.rel \
218         fx2lib/lib/interrupts/ep4ping_isr.rel \
219         fx2lib/lib/interrupts/ep6ef_isr.rel \
220         fx2lib/lib/interrupts/ep6ff_isr.rel \
221         fx2lib/lib/interrupts/ep6isoerr_isr.rel \
222         fx2lib/lib/interrupts/ep6_isr.rel \
223         fx2lib/lib/interrupts/ep6pf_isr.rel \
224         fx2lib/lib/interrupts/ep6ping_isr.rel \
225         fx2lib/lib/interrupts/ep8ef_isr.rel \
226         fx2lib/lib/interrupts/ep8ff_isr.rel \
227         fx2lib/lib/interrupts/ep8isoerr_isr.rel \
228         fx2lib/lib/interrupts/ep8_isr.rel \
229         fx2lib/lib/interrupts/ep8pf_isr.rel \
230         fx2lib/lib/interrupts/ep8ping_isr.rel \
231         fx2lib/lib/interrupts/errlimit_isr.rel \
232         fx2lib/lib/interrupts/gpifdone_isr.rel \
233         fx2lib/lib/interrupts/gpifwf_isr.rel \
234         fx2lib/lib/interrupts/hispeed_isr.rel \
235         fx2lib/lib/interrupts/ibn_isr.rel \
236         fx2lib/lib/interrupts/sof_isr.rel \
237         fx2lib/lib/interrupts/spare_isr.rel \
238         fx2lib/lib/interrupts/sudav_isr.rel \
239         fx2lib/lib/interrupts/suspend_isr.rel \
240         fx2lib/lib/interrupts/sutok_isr.rel \
241         fx2lib/lib/interrupts/usbreset_isr.rel
242
243 fx2lib_libs = \
244         fx2lib/lib/fx2.lib \
245         fx2lib/lib/interrupts/ints.lib
246
247 hw_sources = \
248         hw/braintechnology-usb-lps/dscr.a51 \
249         hw/cwav-usbeeax/dscr.a51 \
250         hw/cwav-usbeedx/dscr.a51 \
251         hw/cwav-usbeesx/dscr.a51 \
252         hw/cwav-usbeezx/dscr.a51 \
253         hw/cypress-fx2/dscr.a51 \
254         hw/hantek-6022be/dscr.a51 \
255         hw/hantek-6022bl/dscr.a51 \
256         hw/hantek-pso2020/dscr.a51 \
257         hw/instrustar-isds205b/dscr.a51 \
258         hw/sainsmart-dds120/dscr.a51 \
259         hw/saleae-logic/dscr.a51 \
260         hw/sigrok-fx2-8ch/dscr.a51 \
261         hw/sigrok-fx2-16ch/dscr.a51 \
262         hw/yixingdianzi-mdso/dscr.a51
263
264 firmwaredir = $(datadir)/sigrok-firmware
265 firmware_DATA = $(firmware_binaries)
266
267 dist_noinst_DATA = \
268         $(fx2lafw_headers) $(fx2lafw_sources) \
269         $(hantek_6022be_headers) $(hantek_6022be_sources) \
270         $(hantek_6022bl_headers) $(hantek_6022bl_sources) \
271         $(hantek_pso2020_headers) $(hantek_pso2020_sources) \
272         $(instrustar_isds205b_headers) $(instrustar_isds205b_sources) \
273         $(sainsmart_dds120_sources) $(sainsmart_dds120_headers) \
274         $(yixingdianzi_mdso_sources) $(yixingdianzi_mdso_headers) \
275         $(fx2lib_headers) $(fx2lib_sources) $(fx2lib_ints_sources) $(hw_sources)
276 dist_noinst_SCRIPTS = autogen.sh
277
278 MOSTLYCLEANFILES = *.asm fx2lib/lib/*.asm hw/**/*.asm fx2lib/lib/*.lib fx2lib/lib/interrupts/*.asm fx2lib/lib/interrupts/*.lib
279 CLEANFILES = $(firmware_binaries)
280 DISTCLEANFILES = $(dirstamps)
281
282 # Custom silent rules prefixes
283 SF_V_SDAS = $(sf_v_SDAS_@AM_V@)
284 sf_v_SDAS_ = $(sf_v_SDAS_@AM_DEFAULT_V@)
285 sf_v_SDAS_0 = @echo "  SDAS    " $@;
286 sf_v_SDAS_1 =
287
288 SF_V_SDCC = $(sf_v_SDCC_@AM_V@)
289 sf_v_SDCC_ = $(sf_v_SDCC_@AM_DEFAULT_V@)
290 sf_v_SDCC_0 = @echo "  SDCC    " $@;
291 sf_v_SDCC_1 =
292
293 .PHONY: dist-bin dist-changelog
294
295 all-local: $(firmware_binaries)
296
297 mostlyclean-local:
298         -$(AM_V_at)find . -type f '(' -name '*.ihx' -o -name '*.lk' \
299                 -o -name '*.lst' -o -name '*.map' -o -name '*.mem' \
300                 -o -name '*.rel' -o -name '*.rst' -o -name '*.sym' ')' \
301                 -exec rm -f '{}' '+'
302
303 dist-hook: dist-changelog
304
305 dist-changelog:
306         $(AM_V_at)if test -d '$(top_srcdir)/.git'; then \
307                 if git -C '$(top_srcdir)' log >.ChangeLog.tmp; \
308                 then mv -f .ChangeLog.tmp "$(top_distdir)/ChangeLog"; \
309                 else rm -f .ChangeLog.tmp; exit 1; fi; \
310         else :; fi
311
312 # Creates a convenience tarball with just the generated *.fw files, so that
313 # the users don't have to build them manually.
314 dist-bin: $(firmware_binaries)
315         -$(AM_V_at)rm -fr $(distdir_bin)
316         $(AM_V_at)$(MKDIR_P) $(distdir_bin)
317         $(AM_V_at)$(INSTALL_DATA) $(firmware_binaries) $(distdir_bin)
318         $(AM_V_at)$(INSTALL_DATA) $(srcdir)/COPYING $(srcdir)/COPYING.LESSER $(srcdir)/NEWS $(srcdir)/README $(distdir_bin)
319         $(AM_V_at)if test -d '$(top_srcdir)/.git'; \
320         then git -C '$(top_srcdir)' log > $(distdir_bin)/ChangeLog; \
321         else $(INSTALL_DATA) $(srcdir)/ChangeLog $(distdir_bin); fi
322         $(AM_V_at)tar -czf $(distdir_bin).tar.gz $(distdir_bin)
323         -$(AM_V_at)rm -fr $(distdir_bin)
324
325 # List dependencies
326 $(fx2lafw_objects): $(fx2lafw_headers)
327 $(hantek_6022be_objects): $(hantek_6022be_headers)
328 $(fx2lib_objects): fx2lib/lib/$(dirstamp) $(fx2lib_headers)
329 $(fx2lib_ints_objects): fx2lib/lib/interrupts/$(dirstamp) $(fx2lib_headers)
330 $(instrustar_isds205b_objects): $(instrustar_isds205b_headers)
331
332 hw/braintechnology-usb-lps/dscr.rel: hw/braintechnology-usb-lps/$(dirstamp) include/dscr.inc
333 hw/cwav-usbeeax/dscr.rel: hw/cwav-usbeeax/$(dirstamp) include/dscr.inc
334 hw/cwav-usbeedx/dscr.rel: hw/cwav-usbeedx/$(dirstamp) include/dscr.inc
335 hw/cwav-usbeesx/dscr.rel: hw/cwav-usbeesx/$(dirstamp) include/dscr.inc
336 hw/cwav-usbeezx/dscr.rel: hw/cwav-usbeezx/$(dirstamp) include/dscr.inc
337 hw/cypress-fx2/dscr.rel: hw/cypress-fx2/$(dirstamp) include/dscr.inc
338 hw/hantek-6022be/dscr.rel: hw/hantek-6022be/$(dirstamp) include/dscr_scope.inc
339 hw/hantek-6022bl/dscr.rel: hw/hantek-6022bl/$(dirstamp) include/dscr_scope.inc
340 hw/hantek-pso2020/dscr.rel: hw/hantek-pso2020/$(dirstamp) include/dscr_scope.inc
341 hw/instrustar-isds205b/dscr.rel: hw/instrustar-isds205b/$(dirstamp) include/dscr_scope.inc
342 hw/sainsmart-dds120/dscr.rel: hw/sainsmart-dds120/$(dirstamp) include/dscr_scope.inc
343 hw/saleae-logic/dscr.rel: hw/saleae-logic/$(dirstamp) include/dscr.inc
344 hw/sigrok-fx2-8ch/dscr.rel: hw/sigrok-fx2-8ch/$(dirstamp) include/dscr.inc
345 hw/sigrok-fx2-16ch/dscr.rel: hw/sigrok-fx2-16ch/$(dirstamp) include/dscr.inc
346 hw/yixingdianzi-mdso/dscr.rel: hw/yixingdianzi-mdso/$(dirstamp) include/dscr_scope.inc
347
348 # Create build subdirectories
349 $(dirstamps):
350         @stamp='$@'; $(MKDIR_P) "$${stamp%/*}"
351         @: > $@
352
353 fx2lib/lib/fx2.lib: $(fx2lib_objects)
354         -$(AM_V_at)rm -f $@
355         $(AM_V_GEN)$(SDAR) -rc $@ $(fx2lib_objects)
356
357 fx2lib/lib/interrupts/ints.lib: $(fx2lib_ints_objects)
358         -$(AM_V_at)rm -f $@
359         $(AM_V_GEN)$(SDAR) -rc $@ $(fx2lib_ints_objects)
360
361 hw/braintechnology-usb-lps/fx2lafw-braintechnology-usb-lps.ihx: hw/braintechnology-usb-lps/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
362         $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/braintechnology-usb-lps/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
363
364 hw/cwav-usbeeax/fx2lafw-cwav-usbeeax.ihx: hw/cwav-usbeeax/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
365         $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/cwav-usbeeax/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
366
367 hw/cwav-usbeedx/fx2lafw-cwav-usbeedx.ihx: hw/cwav-usbeedx/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
368         $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/cwav-usbeedx/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
369
370 hw/cwav-usbeesx/fx2lafw-cwav-usbeesx.ihx: hw/cwav-usbeesx/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
371         $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/cwav-usbeesx/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
372
373 hw/cwav-usbeezx/fx2lafw-cwav-usbeezx.ihx: hw/cwav-usbeezx/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
374         $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/cwav-usbeezx/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
375
376 hw/cypress-fx2/fx2lafw-cypress-fx2.ihx: hw/cypress-fx2/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
377         $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/cypress-fx2/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
378
379 hw/hantek-6022be/fx2lafw-hantek-6022be.ihx: hw/hantek-6022be/dscr.rel $(hantek_6022be_objects) $(fx2lib_libs)
380         $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS_SCOPE) -o $@ hw/hantek-6022be/dscr.rel $(hantek_6022be_objects) $(fx2lib_libs)
381
382 hw/hantek-6022bl/fx2lafw-hantek-6022bl.ihx: hw/hantek-6022bl/dscr.rel $(hantek_6022bl_objects) $(fx2lib_libs)
383         $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS_SCOPE) -o $@ hw/hantek-6022bl/dscr.rel $(hantek_6022bl_objects) $(fx2lib_libs)
384
385 hw/hantek-pso2020/fx2lafw-hantek-pso2020.ihx: hw/hantek-pso2020/dscr.rel $(hantek_pso2020_objects) $(fx2lib_libs)
386         $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS_SCOPE) -o $@ hw/hantek-pso2020/dscr.rel $(hantek_pso2020_objects) $(fx2lib_libs)
387
388 hw/instrustar-isds205b/fx2lafw-instrustar-isds205b.ihx: hw/instrustar-isds205b/dscr.rel $(instrustar_isds205b_objects) $(fx2lib_libs)
389         $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS_SCOPE) -o $@ hw/instrustar-isds205b/dscr.rel $(instrustar_isds205b_objects) $(fx2lib_libs)
390
391 hw/sainsmart-dds120/fx2lafw-sainsmart-dds120.ihx: hw/sainsmart-dds120/dscr.rel $(sainsmart_dds120_objects) $(fx2lib_libs)
392         $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS_SCOPE) -o $@ hw/sainsmart-dds120/dscr.rel $(sainsmart_dds120_objects) $(fx2lib_libs)
393
394 hw/saleae-logic/fx2lafw-saleae-logic.ihx: hw/saleae-logic/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
395         $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/saleae-logic/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
396
397 hw/sigrok-fx2-8ch/fx2lafw-sigrok-fx2-8ch.ihx: hw/sigrok-fx2-8ch/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
398         $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/sigrok-fx2-8ch/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
399
400 hw/sigrok-fx2-16ch/fx2lafw-sigrok-fx2-16ch.ihx: hw/sigrok-fx2-16ch/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
401         $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/sigrok-fx2-16ch/dscr.rel $(fx2lafw_objects) $(fx2lib_libs)
402
403 hw/yixingdianzi-mdso/fx2lafw-yixingdianzi-mdso.ihx: hw/yixingdianzi-mdso/dscr.rel $(yixingdianzi_mdso_objects) $(fx2lib_libs)
404         $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS_SCOPE) -o $@ hw/yixingdianzi-mdso/dscr.rel $(yixingdianzi_mdso_objects) $(fx2lib_libs)
405
406 .a51.rel:
407         $(SF_V_SDAS)$(SDAS8051) -glos $(as_includes) $@ $<
408
409 .c.rel:
410         $(SF_V_SDCC)$(SDCC) -mmcs51 $(c_includes) -c $< -o $@
411
412 if FOUND_OBJCOPY
413 .ihx.fw:
414         $(AM_V_GEN)$(OBJCOPY) -Iihex $< -Obinary $@
415 else
416 if FOUND_MAKEBIN
417 .ihx.fw:
418         $(AM_V_GEN)$(MAKEBIN) -p < $< > $@
419 endif
420 endif