]>
Commit | Line | Data |
---|---|---|
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, write to the Free Software | |
19 | ## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | |
20 | ## | |
21 | ||
22 | GNUMAKEFLAGS = --no-print-directory | |
23 | SUFFIXES = .a51 .c .fw .ihx .rel | |
24 | ||
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 | ||
29 | # Include paths | |
30 | as_includes = -I$(srcdir)/include | |
31 | c_includes = -I$(srcdir)/include -I$(srcdir)/fx2lib/include | |
32 | ||
33 | # Binary firmware tarball basename | |
34 | distdir_bin = $(PACKAGE)-bin-$(VERSION) | |
35 | ||
36 | # Basename of directory stamp files | |
37 | dirstamp = .dirstamp | |
38 | ||
39 | dirstamps = \ | |
40 | fx2lib/lib/$(dirstamp) \ | |
41 | fx2lib/lib/interrupts/$(dirstamp) \ | |
42 | hw/braintechnology-usb-lps/$(dirstamp) \ | |
43 | hw/cwav-usbeeax/$(dirstamp) \ | |
44 | hw/cwav-usbeedx/$(dirstamp) \ | |
45 | hw/cwav-usbeesx/$(dirstamp) \ | |
46 | hw/cypress-fx2/$(dirstamp) \ | |
47 | hw/saleae-logic/$(dirstamp) \ | |
48 | hw/sigrok-fx2-8ch/$(dirstamp) \ | |
49 | hw/sigrok-fx2-16ch/$(dirstamp) \ | |
50 | hw/hantek-6022be/$(dirstamp) | |
51 | ||
52 | # Final firmware files | |
53 | firmware_binaries = \ | |
54 | hw/braintechnology-usb-lps/fx2lafw-braintechnology-usb-lps.fw \ | |
55 | hw/cwav-usbeeax/fx2lafw-cwav-usbeeax.fw \ | |
56 | hw/cwav-usbeedx/fx2lafw-cwav-usbeedx.fw \ | |
57 | hw/cwav-usbeesx/fx2lafw-cwav-usbeesx.fw \ | |
58 | hw/cypress-fx2/fx2lafw-cypress-fx2.fw \ | |
59 | hw/saleae-logic/fx2lafw-saleae-logic.fw \ | |
60 | hw/sigrok-fx2-8ch/fx2lafw-sigrok-fx2-8ch.fw \ | |
61 | hw/sigrok-fx2-16ch/fx2lafw-sigrok-fx2-16ch.fw \ | |
62 | hw/hantek-6022be/hantek-6022be.fw | |
63 | ||
64 | fx2lafw_headers = \ | |
65 | include/command.h \ | |
66 | include/dscr.inc \ | |
67 | include/fx2lafw.h \ | |
68 | include/gpif-acquisition.h | |
69 | ||
70 | fx2lafw_sources = \ | |
71 | fx2lafw.c \ | |
72 | gpif-acquisition.c | |
73 | ||
74 | fx2lafw_objects = \ | |
75 | fx2lafw.rel \ | |
76 | gpif-acquisition.rel | |
77 | ||
78 | hantek_6022be_sources = \ | |
79 | hantek_6022be.c | |
80 | ||
81 | hantek_6022be_objects = \ | |
82 | hantek_6022be.rel | |
83 | ||
84 | fx2lib_headers = \ | |
85 | fx2lib/include/autovector.h \ | |
86 | fx2lib/include/delay.h \ | |
87 | fx2lib/include/eputils.h \ | |
88 | fx2lib/include/fx2ints.h \ | |
89 | fx2lib/include/fx2macros.h \ | |
90 | fx2lib/include/fx2regs.h \ | |
91 | fx2lib/include/fx2types.h \ | |
92 | fx2lib/include/gpif.h \ | |
93 | fx2lib/include/i2c.h \ | |
94 | fx2lib/include/lights.h \ | |
95 | fx2lib/include/serial.h \ | |
96 | fx2lib/include/setupdat.h | |
97 | ||
98 | fx2lib_sources = \ | |
99 | fx2lib/lib/delay.c \ | |
100 | fx2lib/lib/eputils.c \ | |
101 | fx2lib/lib/gpif.c \ | |
102 | fx2lib/lib/i2c.c \ | |
103 | fx2lib/lib/int4av.a51 \ | |
104 | fx2lib/lib/serial.c \ | |
105 | fx2lib/lib/delay.c \ | |
106 | fx2lib/lib/setupdat.c \ | |
107 | fx2lib/lib/usbav.a51 | |
108 | ||
109 | fx2lib_objects = \ | |
110 | fx2lib/lib/delay.rel \ | |
111 | fx2lib/lib/eputils.rel \ | |
112 | fx2lib/lib/gpif.rel \ | |
113 | fx2lib/lib/i2c.rel \ | |
114 | fx2lib/lib/int4av.rel \ | |
115 | fx2lib/lib/serial.rel \ | |
116 | fx2lib/lib/delay.rel \ | |
117 | fx2lib/lib/setupdat.rel \ | |
118 | fx2lib/lib/usbav.rel | |
119 | ||
120 | fx2lib_ints_sources = \ | |
121 | fx2lib/lib/interrupts/ep0ack_isr.c \ | |
122 | fx2lib/lib/interrupts/ep0in_isr.c \ | |
123 | fx2lib/lib/interrupts/ep0out_isr.c \ | |
124 | fx2lib/lib/interrupts/ep0ping_isr.c \ | |
125 | fx2lib/lib/interrupts/ep1in_isr.c \ | |
126 | fx2lib/lib/interrupts/ep1out_isr.c \ | |
127 | fx2lib/lib/interrupts/ep1ping_isr.c \ | |
128 | fx2lib/lib/interrupts/ep2ef_isr.c \ | |
129 | fx2lib/lib/interrupts/ep2ff_isr.c \ | |
130 | fx2lib/lib/interrupts/ep2isoerr_isr.c \ | |
131 | fx2lib/lib/interrupts/ep2_isr.c \ | |
132 | fx2lib/lib/interrupts/ep2pf_isr.c \ | |
133 | fx2lib/lib/interrupts/ep2ping_isr.c \ | |
134 | fx2lib/lib/interrupts/ep4ef_isr.c \ | |
135 | fx2lib/lib/interrupts/ep4ff_isr.c \ | |
136 | fx2lib/lib/interrupts/ep4isoerr_isr.c \ | |
137 | fx2lib/lib/interrupts/ep4_isr.c \ | |
138 | fx2lib/lib/interrupts/ep4pf_isr.c \ | |
139 | fx2lib/lib/interrupts/ep4ping_isr.c \ | |
140 | fx2lib/lib/interrupts/ep6ef_isr.c \ | |
141 | fx2lib/lib/interrupts/ep6ff_isr.c \ | |
142 | fx2lib/lib/interrupts/ep6isoerr_isr.c \ | |
143 | fx2lib/lib/interrupts/ep6_isr.c \ | |
144 | fx2lib/lib/interrupts/ep6pf_isr.c \ | |
145 | fx2lib/lib/interrupts/ep6ping_isr.c \ | |
146 | fx2lib/lib/interrupts/ep8ef_isr.c \ | |
147 | fx2lib/lib/interrupts/ep8ff_isr.c \ | |
148 | fx2lib/lib/interrupts/ep8isoerr_isr.c \ | |
149 | fx2lib/lib/interrupts/ep8_isr.c \ | |
150 | fx2lib/lib/interrupts/ep8pf_isr.c \ | |
151 | fx2lib/lib/interrupts/ep8ping_isr.c \ | |
152 | fx2lib/lib/interrupts/errlimit_isr.c \ | |
153 | fx2lib/lib/interrupts/gpifdone_isr.c \ | |
154 | fx2lib/lib/interrupts/gpifwf_isr.c \ | |
155 | fx2lib/lib/interrupts/hispeed_isr.c \ | |
156 | fx2lib/lib/interrupts/ibn_isr.c \ | |
157 | fx2lib/lib/interrupts/sof_isr.c \ | |
158 | fx2lib/lib/interrupts/spare_isr.c \ | |
159 | fx2lib/lib/interrupts/sudav_isr.c \ | |
160 | fx2lib/lib/interrupts/suspend_isr.c \ | |
161 | fx2lib/lib/interrupts/sutok_isr.c \ | |
162 | fx2lib/lib/interrupts/usbreset_isr.c | |
163 | ||
164 | fx2lib_ints_objects = \ | |
165 | fx2lib/lib/interrupts/ep0ack_isr.rel \ | |
166 | fx2lib/lib/interrupts/ep0in_isr.rel \ | |
167 | fx2lib/lib/interrupts/ep0out_isr.rel \ | |
168 | fx2lib/lib/interrupts/ep0ping_isr.rel \ | |
169 | fx2lib/lib/interrupts/ep1in_isr.rel \ | |
170 | fx2lib/lib/interrupts/ep1out_isr.rel \ | |
171 | fx2lib/lib/interrupts/ep1ping_isr.rel \ | |
172 | fx2lib/lib/interrupts/ep2ef_isr.rel \ | |
173 | fx2lib/lib/interrupts/ep2ff_isr.rel \ | |
174 | fx2lib/lib/interrupts/ep2isoerr_isr.rel \ | |
175 | fx2lib/lib/interrupts/ep2_isr.rel \ | |
176 | fx2lib/lib/interrupts/ep2pf_isr.rel \ | |
177 | fx2lib/lib/interrupts/ep2ping_isr.rel \ | |
178 | fx2lib/lib/interrupts/ep4ef_isr.rel \ | |
179 | fx2lib/lib/interrupts/ep4ff_isr.rel \ | |
180 | fx2lib/lib/interrupts/ep4isoerr_isr.rel \ | |
181 | fx2lib/lib/interrupts/ep4_isr.rel \ | |
182 | fx2lib/lib/interrupts/ep4pf_isr.rel \ | |
183 | fx2lib/lib/interrupts/ep4ping_isr.rel \ | |
184 | fx2lib/lib/interrupts/ep6ef_isr.rel \ | |
185 | fx2lib/lib/interrupts/ep6ff_isr.rel \ | |
186 | fx2lib/lib/interrupts/ep6isoerr_isr.rel \ | |
187 | fx2lib/lib/interrupts/ep6_isr.rel \ | |
188 | fx2lib/lib/interrupts/ep6pf_isr.rel \ | |
189 | fx2lib/lib/interrupts/ep6ping_isr.rel \ | |
190 | fx2lib/lib/interrupts/ep8ef_isr.rel \ | |
191 | fx2lib/lib/interrupts/ep8ff_isr.rel \ | |
192 | fx2lib/lib/interrupts/ep8isoerr_isr.rel \ | |
193 | fx2lib/lib/interrupts/ep8_isr.rel \ | |
194 | fx2lib/lib/interrupts/ep8pf_isr.rel \ | |
195 | fx2lib/lib/interrupts/ep8ping_isr.rel \ | |
196 | fx2lib/lib/interrupts/errlimit_isr.rel \ | |
197 | fx2lib/lib/interrupts/gpifdone_isr.rel \ | |
198 | fx2lib/lib/interrupts/gpifwf_isr.rel \ | |
199 | fx2lib/lib/interrupts/hispeed_isr.rel \ | |
200 | fx2lib/lib/interrupts/ibn_isr.rel \ | |
201 | fx2lib/lib/interrupts/sof_isr.rel \ | |
202 | fx2lib/lib/interrupts/spare_isr.rel \ | |
203 | fx2lib/lib/interrupts/sudav_isr.rel \ | |
204 | fx2lib/lib/interrupts/suspend_isr.rel \ | |
205 | fx2lib/lib/interrupts/sutok_isr.rel \ | |
206 | fx2lib/lib/interrupts/usbreset_isr.rel | |
207 | ||
208 | fx2lib_libs = \ | |
209 | fx2lib/lib/fx2.lib \ | |
210 | fx2lib/lib/interrupts/ints.lib | |
211 | ||
212 | hw_sources = \ | |
213 | hw/braintechnology-usb-lps/dscr.a51 \ | |
214 | hw/cwav-usbeeax/dscr.a51 \ | |
215 | hw/cwav-usbeedx/dscr.a51 \ | |
216 | hw/cwav-usbeesx/dscr.a51 \ | |
217 | hw/cypress-fx2/dscr.a51 \ | |
218 | hw/saleae-logic/dscr.a51 \ | |
219 | hw/sigrok-fx2-8ch/dscr.a51 \ | |
220 | hw/sigrok-fx2-16ch/dscr.a51 \ | |
221 | hw/hantek-6022be/dscr.a51 | |
222 | ||
223 | firmwaredir = $(datadir)/sigrok-firmware | |
224 | firmware_DATA = $(firmware_binaries) | |
225 | ||
226 | dist_noinst_DATA = $(fx2lafw_headers) $(fx2lafw_sources) $(hantek_6022be_headers) $(hantek_6022be_sources) $(fx2lib_headers) $(fx2lib_sources) $(fx2lib_ints_sources) $(hw_sources) | |
227 | dist_noinst_SCRIPTS = autogen.sh | |
228 | ||
229 | MOSTLYCLEANFILES = *.asm fx2lib/lib/*.asm fx2lib/lib/*.lib fx2lib/lib/interrupts/*.asm fx2lib/lib/interrupts/*.lib | |
230 | CLEANFILES = $(firmware_binaries) | |
231 | DISTCLEANFILES = $(dirstamps) | |
232 | ||
233 | # Custom silent rules prefixes | |
234 | SF_V_SDAS = $(sf_v_SDAS_@AM_V@) | |
235 | sf_v_SDAS_ = $(sf_v_SDAS_@AM_DEFAULT_V@) | |
236 | sf_v_SDAS_0 = @echo " SDAS " $@; | |
237 | sf_v_SDAS_1 = | |
238 | ||
239 | SF_V_SDCC = $(sf_v_SDCC_@AM_V@) | |
240 | sf_v_SDCC_ = $(sf_v_SDCC_@AM_DEFAULT_V@) | |
241 | sf_v_SDCC_0 = @echo " SDCC " $@; | |
242 | sf_v_SDCC_1 = | |
243 | ||
244 | .PHONY: dist-bin dist-changelog | |
245 | ||
246 | all-local: $(firmware_binaries) | |
247 | ||
248 | mostlyclean-local: | |
249 | -$(AM_V_at)find . -type f '(' -name '*.ihx' -o -name '*.lk' \ | |
250 | -o -name '*.lst' -o -name '*.map' -o -name '*.mem' \ | |
251 | -o -name '*.rel' -o -name '*.rst' -o -name '*.sym' ')' \ | |
252 | -exec rm -f '{}' '+' | |
253 | ||
254 | dist-hook: dist-changelog | |
255 | ||
256 | dist-changelog: | |
257 | $(AM_V_at)if test -d '$(top_srcdir)/.git'; then \ | |
258 | if git -C '$(top_srcdir)' log >.ChangeLog.tmp; \ | |
259 | then mv -f .ChangeLog.tmp "$(top_distdir)/ChangeLog"; \ | |
260 | else rm -f .ChangeLog.tmp; exit 1; fi; \ | |
261 | else :; fi | |
262 | ||
263 | # Creates a convenience tarball with just the generated *.fw files, so that | |
264 | # the users don't have to build them manually. | |
265 | dist-bin: $(firmware_binaries) | |
266 | -$(AM_V_at)rm -fr $(distdir_bin) | |
267 | $(AM_V_at)$(MKDIR_P) $(distdir_bin) | |
268 | $(AM_V_at)$(INSTALL_DATA) $(firmware_binaries) $(distdir_bin) | |
269 | $(AM_V_at)$(INSTALL_DATA) $(srcdir)/COPYING $(srcdir)/COPYING.LESSER $(srcdir)/NEWS $(srcdir)/README $(distdir_bin) | |
270 | $(AM_V_at)if test -d '$(top_srcdir)/.git'; \ | |
271 | then git -C '$(top_srcdir)' log > $(distdir_bin)/ChangeLog; \ | |
272 | else $(INSTALL_DATA) $(srcdir)/ChangeLog $(distdir_bin); fi | |
273 | $(AM_V_at)tar -czf $(distdir_bin).tar.gz $(distdir_bin) | |
274 | -$(AM_V_at)rm -fr $(distdir_bin) | |
275 | ||
276 | # List dependencies | |
277 | $(fx2lafw_objects): $(fx2lafw_headers) | |
278 | $(hantek_6022be_objects): $(hantek_6022be_headers) | |
279 | $(fx2lib_objects): fx2lib/lib/$(dirstamp) $(fx2lib_headers) | |
280 | $(fx2lib_ints_objects): fx2lib/lib/interrupts/$(dirstamp) $(fx2lib_headers) | |
281 | ||
282 | hw/braintechnology-usb-lps/dscr.rel: hw/braintechnology-usb-lps/$(dirstamp) include/dscr.inc | |
283 | hw/cwav-usbeeax/dscr.rel: hw/cwav-usbeeax/$(dirstamp) include/dscr.inc | |
284 | hw/cwav-usbeedx/dscr.rel: hw/cwav-usbeedx/$(dirstamp) include/dscr.inc | |
285 | hw/cwav-usbeesx/dscr.rel: hw/cwav-usbeesx/$(dirstamp) include/dscr.inc | |
286 | hw/cypress-fx2/dscr.rel: hw/cypress-fx2/$(dirstamp) include/dscr.inc | |
287 | hw/saleae-logic/dscr.rel: hw/saleae-logic/$(dirstamp) include/dscr.inc | |
288 | hw/sigrok-fx2-8ch/dscr.rel: hw/sigrok-fx2-8ch/$(dirstamp) include/dscr.inc | |
289 | hw/sigrok-fx2-16ch/dscr.rel: hw/sigrok-fx2-16ch/$(dirstamp) include/dscr.inc | |
290 | hw/hantek-6022be/dscr.rel: hw/hantek-6022be/$(dirstamp) include/dscr.inc | |
291 | ||
292 | # Create build subdirectories | |
293 | $(dirstamps): | |
294 | @stamp='$@'; $(MKDIR_P) "$${stamp%/*}" | |
295 | @: > $@ | |
296 | ||
297 | fx2lib/lib/fx2.lib: $(fx2lib_objects) | |
298 | -$(AM_V_at)rm -f $@ | |
299 | $(AM_V_GEN)$(SDCCLIB) $@ $(fx2lib_objects) | |
300 | ||
301 | fx2lib/lib/interrupts/ints.lib: $(fx2lib_ints_objects) | |
302 | -$(AM_V_at)rm -f $@ | |
303 | $(AM_V_GEN)$(SDCCLIB) $@ $(fx2lib_ints_objects) | |
304 | ||
305 | hw/braintechnology-usb-lps/fx2lafw-braintechnology-usb-lps.ihx: hw/braintechnology-usb-lps/dscr.rel $(fx2lafw_objects) $(fx2lib_libs) | |
306 | $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/braintechnology-usb-lps/dscr.rel $(fx2lafw_objects) $(fx2lib_libs) | |
307 | ||
308 | hw/cwav-usbeeax/fx2lafw-cwav-usbeeax.ihx: hw/cwav-usbeeax/dscr.rel $(fx2lafw_objects) $(fx2lib_libs) | |
309 | $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/cwav-usbeeax/dscr.rel $(fx2lafw_objects) $(fx2lib_libs) | |
310 | ||
311 | hw/cwav-usbeedx/fx2lafw-cwav-usbeedx.ihx: hw/cwav-usbeedx/dscr.rel $(fx2lafw_objects) $(fx2lib_libs) | |
312 | $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/cwav-usbeedx/dscr.rel $(fx2lafw_objects) $(fx2lib_libs) | |
313 | ||
314 | hw/cwav-usbeesx/fx2lafw-cwav-usbeesx.ihx: hw/cwav-usbeesx/dscr.rel $(fx2lafw_objects) $(fx2lib_libs) | |
315 | $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/cwav-usbeesx/dscr.rel $(fx2lafw_objects) $(fx2lib_libs) | |
316 | ||
317 | hw/cypress-fx2/fx2lafw-cypress-fx2.ihx: hw/cypress-fx2/dscr.rel $(fx2lafw_objects) $(fx2lib_libs) | |
318 | $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/cypress-fx2/dscr.rel $(fx2lafw_objects) $(fx2lib_libs) | |
319 | ||
320 | hw/saleae-logic/fx2lafw-saleae-logic.ihx: hw/saleae-logic/dscr.rel $(fx2lafw_objects) $(fx2lib_libs) | |
321 | $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/saleae-logic/dscr.rel $(fx2lafw_objects) $(fx2lib_libs) | |
322 | ||
323 | hw/sigrok-fx2-8ch/fx2lafw-sigrok-fx2-8ch.ihx: hw/sigrok-fx2-8ch/dscr.rel $(fx2lafw_objects) $(fx2lib_libs) | |
324 | $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/sigrok-fx2-8ch/dscr.rel $(fx2lafw_objects) $(fx2lib_libs) | |
325 | ||
326 | hw/sigrok-fx2-16ch/fx2lafw-sigrok-fx2-16ch.ihx: hw/sigrok-fx2-16ch/dscr.rel $(fx2lafw_objects) $(fx2lib_libs) | |
327 | $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS) -o $@ hw/sigrok-fx2-16ch/dscr.rel $(fx2lafw_objects) $(fx2lib_libs) | |
328 | ||
329 | hw/hantek-6022be/hantek-6022be.ihx: hw/hantek-6022be/dscr.rel $(hantek_6022be_objects) $(fx2lib_libs) | |
330 | $(AM_V_GEN)$(SDCC) -mmcs51 $(SDCC_LINK_FLAGS_HANTEK_6022BE) -o $@ hw/hantek-6022be/dscr.rel $(hantek_6022be_objects) $(fx2lib_libs) | |
331 | ||
332 | .a51.rel: | |
333 | $(SF_V_SDAS)$(SDAS8051) -glos $(as_includes) $@ $< | |
334 | ||
335 | .c.rel: | |
336 | $(SF_V_SDCC)$(SDCC) -mmcs51 $(c_includes) -c $< -o $@ | |
337 | ||
338 | if FOUND_OBJCOPY | |
339 | .ihx.fw: | |
340 | $(AM_V_GEN)$(OBJCOPY) -Iihex $< -Obinary $@ | |
341 | else | |
342 | if FOUND_MAKEBIN | |
343 | .ihx.fw: | |
344 | $(AM_V_GEN)$(MAKEBIN) -p < $< > $@ | |
345 | endif | |
346 | endif | |
347 |