configure.ac: drop macro 'AC_PROG_CC_C99' from autoconf 2.70
[openocd.git] / configure.ac
1 AC_PREREQ(2.64)
2 AC_INIT([openocd], [0.11.0-rc1+dev],
3 [OpenOCD Mailing List <openocd-devel@lists.sourceforge.net>])
4 AC_CONFIG_SRCDIR([src/openocd.c])
5 AC_CONFIG_AUX_DIR([.])
6
7 m4_include([config_subdir.m4])dnl
8
9 # check for makeinfo before calling AM_INIT_AUTOMAKE
10 AC_CHECK_PROG([MAKEINFO], [makeinfo], [makeinfo])
11 AS_IF([test "x$MAKEINFO" = "x"], [
12 MAKEINFO='echo makeinfo missing; true'
13 AC_MSG_WARN([Info documentation will not be built.])
14 ])
15 AC_SUBST([MAKEINFO])
16
17 AM_INIT_AUTOMAKE([-Wall -Wno-portability dist-bzip2 dist-zip subdir-objects])
18
19 AC_CONFIG_HEADERS([config.h])
20 AH_BOTTOM([
21 #include <helper/system.h>
22 #include <helper/types.h>
23 #include <helper/replacements.h>
24 ])
25
26 AC_LANG([C])
27 AC_PROG_CC
28 # autoconf 2.70 obsoletes AC_PROG_CC_C99 and includes it in AC_PROG_CC
29 m4_version_prereq([2.70],[],[AC_PROG_CC_C99])
30 AM_PROG_CC_C_O
31 AC_PROG_RANLIB
32 PKG_PROG_PKG_CONFIG([0.23])
33
34 dnl disable checks for C++, Fortran and GNU Java Compiler
35 m4_defun([_LT_AC_LANG_CXX_CONFIG], [:])
36 m4_defun([_LT_AC_LANG_F77_CONFIG], [:])
37 m4_defun([_LT_AC_LANG_GCJ_CONFIG], [:])
38 AC_DISABLE_SHARED
39 LT_INIT
40 AC_SUBST([LIBTOOL_DEPS])
41
42 dnl configure checks required for Jim files (these are obsolete w/ C99)
43 AC_C_CONST
44 AC_TYPE_LONG_LONG_INT
45
46 AC_SEARCH_LIBS([ioperm], [ioperm])
47 AC_SEARCH_LIBS([dlopen], [dl])
48 AC_SEARCH_LIBS([openpty], [util])
49
50 AC_CHECK_HEADERS([sys/socket.h])
51 AC_CHECK_HEADERS([elf.h])
52 AC_CHECK_HEADERS([dirent.h])
53 AC_CHECK_HEADERS([fcntl.h])
54 AC_CHECK_HEADERS([malloc.h])
55 AC_CHECK_HEADERS([netdb.h])
56 AC_CHECK_HEADERS([poll.h])
57 AC_CHECK_HEADERS([pthread.h])
58 AC_CHECK_HEADERS([strings.h])
59 AC_CHECK_HEADERS([sys/ioctl.h])
60 AC_CHECK_HEADERS([sys/param.h])
61 AC_CHECK_HEADERS([sys/select.h])
62 AC_CHECK_HEADERS([sys/stat.h])
63 AC_CHECK_HEADERS([sys/sysctl.h])
64 AC_CHECK_HEADERS([sys/time.h])
65 AC_CHECK_HEADERS([sys/types.h])
66 AC_CHECK_HEADERS([unistd.h])
67 AC_CHECK_HEADERS([arpa/inet.h ifaddrs.h netinet/in.h netinet/tcp.h net/if.h], [], [], [dnl
68 #include <stdio.h>
69 #ifdef STDC_HEADERS
70 # include <stdlib.h>
71 # include <stddef.h>
72 #else
73 # ifdef HAVE_STDLIB_H
74 # include <stdlib.h>
75 # endif
76 #endif
77 #ifdef HAVE_SYS_SOCKET_H
78 # include <sys/socket.h>
79 #endif
80 ])
81
82 AC_HEADER_ASSERT
83 AC_HEADER_STDBOOL
84 AC_HEADER_TIME
85
86 AC_C_BIGENDIAN
87
88 AC_CHECK_FUNCS([strndup])
89 AC_CHECK_FUNCS([strnlen])
90 AC_CHECK_FUNCS([gettimeofday])
91 AC_CHECK_FUNCS([usleep])
92 AC_CHECK_FUNCS([vasprintf])
93 AC_CHECK_FUNCS([realpath])
94
95 # guess-rev.sh only exists in the repository, not in the released archives
96 AC_MSG_CHECKING([whether to build a release])
97 AS_IF([test -x "$srcdir/guess-rev.sh"], [
98 build_release=no
99 ], [
100 build_release=yes
101 ])
102 AC_MSG_RESULT([$build_release])
103
104 # Adapter drivers
105 # 1st column -- configure option
106 # 2nd column -- description
107 # 3rd column -- symbol used for both config.h and automake
108 m4_define([ADAPTER_ARG], [m4_argn([1], $1)])
109 m4_define([ADAPTER_DESC], [m4_argn([2], $1)])
110 m4_define([ADAPTER_SYM], [m4_argn([3], $1)])
111 m4_define([ADAPTER_VAR], [enable_[]ADAPTER_ARG($1)])
112 m4_define([ADAPTER_OPT], [m4_translit(ADAPTER_ARG($1), [_], [-])])
113
114 m4_define([USB1_ADAPTERS],
115 [[[ftdi], [MPSSE mode of FTDI based devices], [FTDI]],
116 [[stlink], [ST-Link Programmer], [HLADAPTER_STLINK]],
117 [[ti_icdi], [TI ICDI JTAG Programmer], [HLADAPTER_ICDI]],
118 [[ulink], [Keil ULINK JTAG Programmer], [ULINK]],
119 [[usb_blaster_2], [Altera USB-Blaster II Compatible], [USB_BLASTER_2]],
120 [[ft232r], [Bitbang mode of FT232R based devices], [FT232R]],
121 [[vsllink], [Versaloon-Link JTAG Programmer], [VSLLINK]],
122 [[xds110], [TI XDS110 Debug Probe], [XDS110]],
123 [[cmsis_dap_v2], [CMSIS-DAP v2 Compliant Debugger], [CMSIS_DAP_USB]],
124 [[osbdm], [OSBDM (JTAG only) Programmer], [OSBDM]],
125 [[opendous], [eStick/opendous JTAG Programmer], [OPENDOUS]],
126 [[aice], [Andes JTAG Programmer], [AICE]]])
127
128 m4_define([USB0_ADAPTERS],
129 [[[usbprog], [USBProg JTAG Programmer], [USBPROG]],
130 [[rlink], [Raisonance RLink JTAG Programmer], [RLINK]],
131 [[armjtagew], [Olimex ARM-JTAG-EW Programmer], [ARMJTAGEW]]])
132
133 m4_define([HIDAPI_ADAPTERS],
134 [[[cmsis_dap], [CMSIS-DAP Compliant Debugger], [CMSIS_DAP_HID]],
135 [[nulink], [Nu-Link Programmer], [HLADAPTER_NULINK]]])
136
137 m4_define([HIDAPI_USB1_ADAPTERS],
138 [[[kitprog], [Cypress KitProg Programmer], [KITPROG]]])
139
140 m4_define([LIBFTDI_ADAPTERS],
141 [[[usb_blaster], [Altera USB-Blaster Compatible], [USB_BLASTER]],
142 [[presto], [ASIX Presto Adapter], [PRESTO]]])
143
144 m4_define([LIBFTDI_USB1_ADAPTERS],
145 [[[openjtag], [OpenJTAG Adapter], [OPENJTAG]]])
146
147 m4_define([LIBGPIOD_ADAPTERS],
148 [[[linuxgpiod], [Linux GPIO bitbang through libgpiod], [LINUXGPIOD]]])
149
150 m4_define([LIBJAYLINK_ADAPTERS],
151 [[[jlink], [SEGGER J-Link Programmer], [JLINK]]])
152
153 m4_define([PCIE_ADAPTERS],
154 [[[xlnx_pcie_xvc], [Xilinx XVC/PCIe], [XLNX_PCIE_XVC]]])
155
156 m4_define([OPTIONAL_LIBRARIES],
157 [[[capstone], [Use Capstone disassembly framework], []]])
158
159 AC_ARG_ENABLE([doxygen-html],
160 AS_HELP_STRING([--disable-doxygen-html],
161 [Disable building Doxygen manual as HTML.]),
162 [doxygen_as_html=$enableval], [doxygen_as_html=yes])
163 AC_SUBST([doxygen_as_html])
164 AC_MSG_CHECKING([whether to build Doxygen as HTML])
165 AC_MSG_RESULT([$doxygen_as_html])
166
167 AC_ARG_ENABLE([doxygen-pdf],
168 AS_HELP_STRING([--enable-doxygen-pdf],
169 [Enable building Doxygen manual as PDF.]),
170 [doxygen_as_pdf=$enableval], [doxygen_as_pdf=no])
171 AC_SUBST([doxygen_as_pdf])
172 AC_MSG_CHECKING([whether to build Doxygen as PDF])
173 AC_MSG_RESULT([$doxygen_as_pdf])
174
175 AC_ARG_ENABLE([gccwarnings],
176 AS_HELP_STRING([--disable-gccwarnings], [Disable compiler warnings]),
177 [gcc_warnings=$enableval], [gcc_warnings=yes])
178
179 AC_ARG_ENABLE([wextra],
180 AS_HELP_STRING([--disable-wextra], [Disable extra compiler warnings]),
181 [gcc_wextra=$enableval], [gcc_wextra=$gcc_warnings])
182
183 AC_ARG_ENABLE([werror],
184 AS_HELP_STRING([--disable-werror], [Do not treat warnings as errors]),
185 [gcc_werror=$enableval], [gcc_werror=$gcc_warnings])
186
187 # set default verbose options, overridden by following options
188 debug_usb_io=no
189 debug_usb_comms=no
190
191 AC_ARG_ENABLE([verbose],
192 AS_HELP_STRING([--enable-verbose],
193 [Enable verbose JTAG I/O messages (for debugging).]),
194 [
195 debug_usb_io=$enableval
196 debug_usb_comms=$enableval
197 ], [])
198
199 AC_ARG_ENABLE([verbose_usb_io],
200 AS_HELP_STRING([--enable-verbose-usb-io],
201 [Enable verbose USB I/O messages (for debugging)]),
202 [debug_usb_io=$enableval], [])
203
204 AC_ARG_ENABLE([verbose_usb_comms],
205 AS_HELP_STRING([--enable-verbose-usb-comms],
206 [Enable verbose USB communication messages (for debugging)]),
207 [debug_usb_comms=$enableval], [])
208
209 AC_MSG_CHECKING([whether to enable verbose USB I/O messages]);
210 AC_MSG_RESULT([$debug_usb_io])
211 AS_IF([test "x$debug_usb_io" = "xyes"], [
212 AC_DEFINE([_DEBUG_USB_IO_],[1], [Print verbose USB I/O messages])
213 ])
214
215 AC_MSG_CHECKING([whether to enable verbose USB communication messages]);
216 AC_MSG_RESULT([$debug_usb_comms])
217 AS_IF([test "x$debug_usb_comms" = "xyes"], [
218 AC_DEFINE([_DEBUG_USB_COMMS_],[1], [Print verbose USB communication messages])
219 ])
220
221 debug_malloc=no
222 AC_ARG_ENABLE([malloc_logging],
223 AS_HELP_STRING([--enable-malloc-logging],
224 [Include free space in logging messages (requires malloc.h).]),
225 [debug_malloc=$enableval], [])
226
227 AC_MSG_CHECKING([whether to enable malloc free space logging]);
228 AC_MSG_RESULT([$debug_malloc])
229 AS_IF([test "x$debug_malloc" = "xyes"], [
230 AC_DEFINE([_DEBUG_FREE_SPACE_],[1], [Include malloc free space in logging])
231 ])
232
233 AC_ARG_ENABLE([dummy],
234 AS_HELP_STRING([--enable-dummy], [Enable building the dummy port driver]),
235 [build_dummy=$enableval], [build_dummy=no])
236
237 AC_ARG_ENABLE([rshim],
238 AS_HELP_STRING([--enable-rshim], [Enable building the rshim driver]),
239 [build_rshim=$enableval], [build_rshim=no])
240
241 m4_define([AC_ARG_ADAPTERS], [
242 m4_foreach([adapter], [$1],
243 [AC_ARG_ENABLE(ADAPTER_OPT([adapter]),
244 AS_HELP_STRING([--enable-ADAPTER_OPT([adapter])],
245 [Enable building support for the ]ADAPTER_DESC([adapter])[ (default is $2)]),
246 [], [ADAPTER_VAR([adapter])=$2])
247 ])
248 ])
249
250 AC_ARG_ADAPTERS([
251 USB1_ADAPTERS,
252 USB0_ADAPTERS,
253 HIDAPI_ADAPTERS,
254 HIDAPI_USB1_ADAPTERS,
255 LIBFTDI_ADAPTERS,
256 LIBFTDI_USB1_ADAPTERS
257 LIBGPIOD_ADAPTERS,
258 LIBJAYLINK_ADAPTERS
259 ],[auto])
260
261 AC_ARG_ENABLE([parport],
262 AS_HELP_STRING([--enable-parport], [Enable building the pc parallel port driver]),
263 [build_parport=$enableval], [build_parport=no])
264
265 AC_ARG_ENABLE([parport_ppdev],
266 AS_HELP_STRING([--disable-parport-ppdev],
267 [Disable use of ppdev (/dev/parportN) for parport (for x86 only)]),
268 [parport_use_ppdev=$enableval], [parport_use_ppdev=yes])
269
270 AC_ARG_ENABLE([parport_giveio],
271 AS_HELP_STRING([--enable-parport-giveio],
272 [Enable use of giveio for parport (for CygWin only)]),
273 [parport_use_giveio=$enableval], [parport_use_giveio=])
274
275 AC_ARG_ENABLE([jtag_vpi],
276 AS_HELP_STRING([--enable-jtag_vpi], [Enable building support for JTAG VPI]),
277 [build_jtag_vpi=$enableval], [build_jtag_vpi=no])
278
279 AC_ARG_ENABLE([jtag_dpi],
280 AS_HELP_STRING([--enable-jtag_dpi], [Enable building support for JTAG DPI]),
281 [build_jtag_dpi=$enableval], [build_jtag_dpi=no])
282
283 AC_ARG_ENABLE([amtjtagaccel],
284 AS_HELP_STRING([--enable-amtjtagaccel], [Enable building the Amontec JTAG-Accelerator driver]),
285 [build_amtjtagaccel=$enableval], [build_amtjtagaccel=no])
286
287 AC_ARG_ENABLE([zy1000_master],
288 AS_HELP_STRING([--enable-zy1000-master], [Use ZY1000 JTAG master registers]),
289 [build_zy1000_master=$enableval], [build_zy1000_master=no])
290
291 AC_ARG_ENABLE([zy1000],
292 AS_HELP_STRING([--enable-zy1000], [Enable ZY1000 interface]),
293 [build_zy1000=$enableval], [build_zy1000=no])
294
295 AC_ARG_ENABLE([ioutil],
296 AS_HELP_STRING([--enable-ioutil], [Enable ioutil functions - useful for standalone OpenOCD implementations]),
297 [build_ioutil=$enableval], [build_ioutil=no])
298
299 AS_CASE(["${host_cpu}"],
300 [arm*|aarch64], [
301 AC_ARG_ENABLE([bcm2835gpio],
302 AS_HELP_STRING([--enable-bcm2835gpio], [Enable building support for bitbanging on BCM2835 (as found in Raspberry Pi)]),
303 [build_bcm2835gpio=$enableval], [build_bcm2835gpio=no])
304 AC_ARG_ENABLE([imx_gpio],
305 AS_HELP_STRING([--enable-imx_gpio], [Enable building support for bitbanging on NXP IMX processors]),
306 [build_imx_gpio=$enableval], [build_imx_gpio=no])
307 ],
308 [
309 build_bcm2835gpio=no
310 build_imx_gpio=no
311 ])
312
313 AS_CASE(["${host_cpu}"],
314 [arm*], [
315 AC_ARG_ENABLE([ep93xx],
316 AS_HELP_STRING([--enable-ep93xx], [Enable building support for EP93xx based SBCs]),
317 [build_ep93xx=$enableval], [build_ep93xx=no])
318
319 AC_ARG_ENABLE([at91rm9200],
320 AS_HELP_STRING([--enable-at91rm9200], [Enable building support for AT91RM9200 based SBCs]),
321 [build_at91rm9200=$enableval], [build_at91rm9200=no])
322 ],
323 [
324 build_ep93xx=no
325 build_at91rm9200=no
326 ])
327
328 AC_ARG_ENABLE([gw16012],
329 AS_HELP_STRING([--enable-gw16012], [Enable building support for the Gateworks GW16012 JTAG Programmer]),
330 [build_gw16012=$enableval], [build_gw16012=no])
331
332 AC_ARG_ENABLE([oocd_trace],
333 AS_HELP_STRING([--enable-oocd_trace],
334 [Enable building support for some prototype OpenOCD+trace ETM capture hardware]),
335 [build_oocd_trace=$enableval], [build_oocd_trace=no])
336
337 AC_ARG_ENABLE([buspirate],
338 AS_HELP_STRING([--enable-buspirate], [Enable building support for the Buspirate]),
339 [build_buspirate=$enableval], [build_buspirate=no])
340
341 AC_ARG_ENABLE([sysfsgpio],
342 AS_HELP_STRING([--enable-sysfsgpio], [Enable building support for programming driven via sysfs gpios.]),
343 [build_sysfsgpio=$enableval], [build_sysfsgpio=no])
344
345 AC_ARG_ENABLE([xlnx_pcie_xvc],
346 AS_HELP_STRING([--enable-xlnx-pcie-xvc], [Enable building support for Xilinx XVC/PCIe.]),
347 [build_xlnx_pcie_xvc=$enableval], [build_xlnx_pcie_xvc=no])
348
349 AS_CASE([$host_os],
350 [linux*], [],
351 [
352 AS_IF([test "x$build_sysfsgpio" = "xyes"], [
353 AC_MSG_ERROR([sysfsgpio is only available on linux])
354 ])
355
356 AS_IF([test "x$enable_linuxgpiod" = "xyes"], [
357 AC_MSG_ERROR([linuxgpiod is only available on linux])
358 ])
359
360 AS_IF([test "x$build_xlnx_pcie_xvc" = "xyes"], [
361 AC_MSG_ERROR([xlnx_pcie_xvc is only available on linux])
362 ])
363
364 AS_CASE([$host_os], [freebsd*], [],
365 [
366 AS_IF([test "x$build_rshim" = "xyes"], [
367 AC_MSG_ERROR([build_rshim is only available on linux or freebsd])
368 ])
369 ])
370 ])
371
372 AC_ARG_ENABLE([minidriver_dummy],
373 AS_HELP_STRING([--enable-minidriver-dummy], [Enable the dummy minidriver.]),
374 [build_minidriver_dummy=$enableval], [build_minidriver_dummy=no])
375
376 AC_ARG_ENABLE([internal-jimtcl],
377 AS_HELP_STRING([--disable-internal-jimtcl], [Disable building internal jimtcl]),
378 [use_internal_jimtcl=$enableval], [use_internal_jimtcl=yes])
379
380 AC_ARG_ENABLE([internal-libjaylink],
381 AS_HELP_STRING([--disable-internal-libjaylink],
382 [Disable building internal libjaylink]),
383 [use_internal_libjaylink=$enableval], [use_internal_libjaylink=yes])
384
385 build_minidriver=no
386 AC_MSG_CHECKING([whether to enable ZY1000 minidriver])
387 AS_IF([test "x$build_zy1000" = "xyes"], [
388 AS_IF([test "x$build_minidriver" = "xyes"], [
389 AC_MSG_ERROR([Multiple minidriver options have been enabled.])
390 ])
391 AC_DEFINE([HAVE_JTAG_MINIDRIVER_H], [1],
392 [Define to 1 if you have the <jtag_minidriver.h> header file.])
393 build_minidriver=yes
394 ])
395 AC_MSG_RESULT([$build_zy1000])
396
397 AC_ARG_ENABLE([remote-bitbang],
398 AS_HELP_STRING([--enable-remote-bitbang], [Enable building support for the Remote Bitbang jtag driver]),
399 [build_remote_bitbang=$enableval], [build_remote_bitbang=no])
400
401 AC_MSG_CHECKING([whether to enable dummy minidriver])
402 AS_IF([test "x$build_minidriver_dummy" = "xyes"], [
403 AS_IF([test "x$build_minidriver" = "xyes"], [
404 AC_MSG_ERROR([Multiple minidriver options have been enabled.])
405 ])
406 build_minidriver=yes
407 AC_DEFINE([BUILD_MINIDRIVER_DUMMY], [1], [Use the dummy minidriver.])
408 AC_DEFINE([HAVE_JTAG_MINIDRIVER_H], [1],
409 [Define to 1 if you have the <jtag_minidriver.h> header file.])
410 ])
411 AC_MSG_RESULT([$build_minidriver_dummy])
412
413 AC_MSG_CHECKING([whether standard drivers can be built])
414 AS_IF([test "x$build_minidriver" = "xyes"], [
415 AC_MSG_RESULT([no])
416 AC_MSG_WARN([Using the minidriver disables all other drivers.])
417 sleep 2
418 ], [
419 AC_MSG_RESULT([yes])
420 ])
421
422 AS_CASE(["${host_cpu}"],
423 [i?86|x86*], [],
424 [
425 AS_IF([test "x$parport_use_ppdev" = "xno"], [
426 AC_MSG_WARN([--disable-parport-ppdev is not supported by the host CPU])
427 ])
428 parport_use_ppdev=yes
429 ])
430
431 AS_CASE([$host],
432 [*-cygwin*], [
433 is_win32=yes
434 parport_use_ppdev=no
435
436 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[return __MINGW32__;]])],
437 [is_mingw=yes],[is_mingw=no])
438 AS_IF([test "x$is_mingw" = "xyes"], [
439 AS_IF([test "x$parport_use_giveio" = "xno"], [
440 AC_MSG_WARN([--disable-parport-giveio is not supported by MinGW32 hosts])
441 ])
442 parport_use_giveio=yes
443 is_cygwin=no
444 ], [
445 is_cygwin=yes
446 # sys/io.h needed under cygwin for parport access
447 AS_IF([test "x$build_parport" = "xyes"], [
448 AC_CHECK_HEADERS([sys/io.h],[],AC_MSG_ERROR([Please install the cygwin ioperm package]))
449 ])
450 ])
451 ],
452 [*-mingw* | *-msys*], [
453 is_mingw=yes
454 is_win32=yes
455 parport_use_ppdev=no
456
457 AS_IF([test "x$parport_use_giveio" = "xno"], [
458 AC_MSG_WARN([--disable-parport-giveio is not supported by MinGW32 hosts])
459 ])
460 parport_use_giveio=yes
461
462 AS_IF([test "x$build_buspirate" = "xyes"], [
463 AC_MSG_ERROR([buspirate currently not supported by MinGW32 hosts])
464 ])
465
466 AC_SUBST([HOST_CPPFLAGS], [-D__USE_MINGW_ANSI_STDIO])
467 ],
468 [*darwin*], [
469 is_darwin=yes
470
471 AS_IF([test "x$parport_use_giveio" = "xyes"], [
472 AC_MSG_WARN([--enable-parport-giveio cannot be used by Darwin hosts])
473 ])
474 parport_use_giveio=no
475 ],
476 [
477 AS_IF([test "x$parport_use_giveio" = "xyes"], [
478 AC_MSG_WARN([--enable-parport-giveio cannot be used by ]$host[ hosts])
479 ])
480 parport_use_giveio=no
481 ])
482
483 AS_IF([test "x$is_cygwin" = "xyes"], [
484 AC_DEFINE([IS_CYGWIN], [1], [1 if building for Cygwin.])
485 ], [
486 AC_DEFINE([IS_CYGWIN], [0], [0 if not building for Cygwin.])
487 ])
488
489 AS_IF([test "x$is_mingw" = "xyes"], [
490 AC_DEFINE([IS_MINGW], [1], [1 if building for Mingw.])
491 ], [
492 AC_DEFINE([IS_MINGW], [0], [0 if not building for Mingw.])
493 ])
494
495 AS_IF([test "x$is_win32" = "xyes"], [
496 AC_DEFINE([IS_WIN32], [1], [1 if building for Win32.])
497 ], [
498 AC_DEFINE([IS_WIN32], [0], [0 if not building for Win32.])
499 ])
500
501 AS_IF([test "x$is_darwin" = "xyes"], [
502 AC_DEFINE([IS_DARWIN], [1], [1 if building for Darwin.])
503 ], [
504 AC_DEFINE([IS_DARWIN], [0], [0 if not building for Darwin.])
505 ])
506
507 AS_IF([test "x$build_parport" = "xyes"], [
508 build_bitbang=yes
509 AC_DEFINE([BUILD_PARPORT], [1], [1 if you want parport.])
510 ], [
511 AC_DEFINE([BUILD_PARPORT], [0], [0 if you don't want parport.])
512 ])
513
514 AS_IF([test "x$build_rshim" = "xyes"], [
515 AC_DEFINE([BUILD_RSHIM], [1], [1 if you want to debug BlueField SoC via rshim.])
516 ], [
517 AC_DEFINE([BUILD_RSHIM], [0], [0 if you don't want to debug BlueField SoC via rshim.])
518 ])
519
520 AS_IF([test "x$build_dummy" = "xyes"], [
521 build_bitbang=yes
522 AC_DEFINE([BUILD_DUMMY], [1], [1 if you want dummy driver.])
523 ], [
524 AC_DEFINE([BUILD_DUMMY], [0], [0 if you don't want dummy driver.])
525 ])
526
527 AS_IF([test "x$build_ep93xx" = "xyes"], [
528 build_bitbang=yes
529 AC_DEFINE([BUILD_EP93XX], [1], [1 if you want ep93xx.])
530 ], [
531 AC_DEFINE([BUILD_EP93XX], [0], [0 if you don't want ep93xx.])
532 ])
533
534 AS_IF([test "x$build_zy1000" = "xyes"], [
535 AC_DEFINE([BUILD_ZY1000], [1], [1 if you want ZY1000.])
536 ], [
537 AC_DEFINE([BUILD_ZY1000], [0], [0 if you don't want ZY1000.])
538 ])
539
540 AS_IF([test "x$build_zy1000_master" = "xyes"], [
541 AC_DEFINE([BUILD_ZY1000_MASTER], [1], [1 if you want ZY1000 JTAG master registers.])
542 ], [
543 AC_DEFINE([BUILD_ZY1000_MASTER], [0], [0 if you don't want ZY1000 JTAG master registers.])
544 ])
545
546 AS_IF([test "x$build_at91rm9200" = "xyes"], [
547 build_bitbang=yes
548 AC_DEFINE([BUILD_AT91RM9200], [1], [1 if you want at91rm9200.])
549 ], [
550 AC_DEFINE([BUILD_AT91RM9200], [0], [0 if you don't want at91rm9200.])
551 ])
552
553 AS_IF([test "x$build_bcm2835gpio" = "xyes"], [
554 build_bitbang=yes
555 AC_DEFINE([BUILD_BCM2835GPIO], [1], [1 if you want bcm2835gpio.])
556 ], [
557 AC_DEFINE([BUILD_BCM2835GPIO], [0], [0 if you don't want bcm2835gpio.])
558 ])
559
560 AS_IF([test "x$build_imx_gpio" = "xyes"], [
561 build_bitbang=yes
562 AC_DEFINE([BUILD_IMX_GPIO], [1], [1 if you want imx_gpio.])
563 ], [
564 AC_DEFINE([BUILD_IMX_GPIO], [0], [0 if you don't want imx_gpio.])
565 ])
566
567 AS_IF([test "x$parport_use_ppdev" = "xyes"], [
568 AC_DEFINE([PARPORT_USE_PPDEV], [1], [1 if you want parport to use ppdev.])
569 ], [
570 AC_DEFINE([PARPORT_USE_PPDEV], [0], [0 if you don't want parport to use ppdev.])
571 ])
572
573 AS_IF([test "x$parport_use_giveio" = "xyes"], [
574 AC_DEFINE([PARPORT_USE_GIVEIO], [1], [1 if you want parport to use giveio.])
575 ], [
576 AC_DEFINE([PARPORT_USE_GIVEIO], [0], [0 if you don't want parport to use giveio.])
577 ])
578
579 AS_IF([test "x$build_jtag_vpi" = "xyes"], [
580 AC_DEFINE([BUILD_JTAG_VPI], [1], [1 if you want JTAG VPI.])
581 ], [
582 AC_DEFINE([BUILD_JTAG_VPI], [0], [0 if you don't want JTAG VPI.])
583 ])
584
585 AS_IF([test "x$build_jtag_dpi" = "xyes"], [
586 AC_DEFINE([BUILD_JTAG_DPI], [1], [1 if you want JTAG DPI.])
587 ], [
588 AC_DEFINE([BUILD_JTAG_DPI], [0], [0 if you don't want JTAG DPI.])
589 ])
590
591
592 AS_IF([test "x$build_amtjtagaccel" = "xyes"], [
593 AC_DEFINE([BUILD_AMTJTAGACCEL], [1], [1 if you want the Amontec JTAG-Accelerator driver.])
594 ], [
595 AC_DEFINE([BUILD_AMTJTAGACCEL], [0], [0 if you don't want the Amontec JTAG-Accelerator driver.])
596 ])
597
598 AS_IF([test "x$build_gw16012" = "xyes"], [
599 AC_DEFINE([BUILD_GW16012], [1], [1 if you want the Gateworks GW16012 driver.])
600 ], [
601 AC_DEFINE([BUILD_GW16012], [0], [0 if you don't want the Gateworks GW16012 driver.])
602 ])
603
604 AS_IF([test "x$build_oocd_trace" = "xyes"], [
605 AC_DEFINE([BUILD_OOCD_TRACE], [1], [1 if you want the OpenOCD+trace ETM capture driver.])
606 ], [
607 AC_DEFINE([BUILD_OOCD_TRACE], [0], [0 if you don't want the OpenOCD+trace ETM capture driver.])
608 ])
609
610 AS_IF([test "x$build_buspirate" = "xyes"], [
611 AC_DEFINE([BUILD_BUSPIRATE], [1], [1 if you want the Buspirate JTAG driver.])
612 ], [
613 AC_DEFINE([BUILD_BUSPIRATE], [0], [0 if you don't want the Buspirate JTAG driver.])
614 ])
615
616 AS_IF([test "x$use_internal_jimtcl" = "xyes"], [
617 AS_IF([test -f "$srcdir/jimtcl/configure.ac"], [
618 AX_CONFIG_SUBDIR_OPTION([jimtcl], [--disable-install-jim])
619 ], [
620 AC_MSG_ERROR([jimtcl not found, run git submodule init and git submodule update.])
621 ])
622 ])
623
624 AS_IF([test "x$build_remote_bitbang" = "xyes"], [
625 build_bitbang=yes
626 AC_DEFINE([BUILD_REMOTE_BITBANG], [1], [1 if you want the Remote Bitbang JTAG driver.])
627 ], [
628 AC_DEFINE([BUILD_REMOTE_BITBANG], [0], [0 if you don't want the Remote Bitbang JTAG driver.])
629 ])
630
631 AS_IF([test "x$build_sysfsgpio" = "xyes"], [
632 build_bitbang=yes
633 AC_DEFINE([BUILD_SYSFSGPIO], [1], [1 if you want the SysfsGPIO driver.])
634 ], [
635 AC_DEFINE([BUILD_SYSFSGPIO], [0], [0 if you don't want SysfsGPIO driver.])
636 ])
637
638 AS_IF([test "x$build_xlnx_pcie_xvc" = "xyes"], [
639 build_xlnx_pcie_xvc=yes
640 AC_DEFINE([BUILD_XLNX_PCIE_XVC], [1], [1 if you want the Xilinx XVC/PCIe driver.])
641 ], [
642 AC_DEFINE([BUILD_XLNX_PCIE_XVC], [0], [0 if you don't want Xilinx XVC/PCIe driver.])
643 ])
644
645 PKG_CHECK_MODULES([LIBUSB1], [libusb-1.0], [
646 use_libusb1=yes
647 AC_DEFINE([HAVE_LIBUSB1], [1], [Define if you have libusb-1.x])
648 PKG_CHECK_EXISTS([libusb-1.0 >= 1.0.9],
649 [AC_DEFINE([HAVE_LIBUSB_ERROR_NAME], [1], [Define if your libusb has libusb_error_name()])],
650 [AC_MSG_WARN([libusb-1.x older than 1.0.9 detected, consider updating])])
651 LIBUSB1_CFLAGS=`echo $LIBUSB1_CFLAGS | sed 's/-I/-isystem /'`
652 AC_MSG_NOTICE([libusb-1.0 header bug workaround: LIBUSB1_CFLAGS changed to "$LIBUSB1_CFLAGS"])
653 PKG_CHECK_EXISTS([libusb-1.0 >= 1.0.16],
654 [AC_DEFINE([HAVE_LIBUSB_GET_PORT_NUMBERS], [1], [Define if your libusb has libusb_get_port_numbers()])])
655 ], [
656 use_libusb1=no
657 AC_MSG_WARN([libusb-1.x not found, trying legacy libusb-0.1 as a fallback; consider installing libusb-1.x instead])
658 ])
659
660 PKG_CHECK_MODULES([LIBUSB0], [libusb], [use_libusb0=yes], [use_libusb0=no])
661
662 AC_ARG_WITH([capstone],
663 AS_HELP_STRING([--with-capstone], [Use Capstone disassembly library (default=auto)])
664 , [
665 enable_capstone=$withval
666 ], [
667 enable_capstone=auto
668 ])
669
670 AS_IF([test "x$enable_capstone" != xno], [
671 PKG_CHECK_MODULES([CAPSTONE], [capstone], [
672 AC_DEFINE([HAVE_CAPSTONE], [1], [1 if you have Capstone disassembly framework.])
673 ], [
674 AC_DEFINE([HAVE_CAPSTONE], [0], [0 if you don't have Capstone disassembly framework.])
675 if test "x$enable_capstone" != xauto; then
676 AC_MSG_ERROR([--with-capstone was given, but test for Capstone failed])
677 fi
678 enable_capstone=no
679 ])
680 ])
681
682 for hidapi_lib in hidapi hidapi-hidraw hidapi-libusb; do
683 PKG_CHECK_MODULES([HIDAPI],[$hidapi_lib],[
684 use_hidapi=yes
685 break
686 ],[
687 use_hidapi=no
688 ])
689 done
690
691 PKG_CHECK_MODULES([LIBFTDI], [libftdi1], [
692 use_libftdi=yes
693 PKG_CHECK_EXISTS([libftdi1 >= 1.5],
694 [AC_DEFINE([HAVE_LIBFTDI_TCIOFLUSH], [1], [Define if your libftdi has ftdi_tcioflush()])])
695 ], [
696 PKG_CHECK_MODULES([LIBFTDI], [libftdi], [use_libftdi=yes], [use_libftdi=no])
697 ])
698
699 PKG_CHECK_MODULES([LIBGPIOD], [libgpiod], [use_libgpiod=yes], [use_libgpiod=no])
700
701 PKG_CHECK_MODULES([LIBJAYLINK], [libjaylink >= 0.2],
702 [use_libjaylink=yes], [use_libjaylink=no])
703
704 m4_define([PROCESS_ADAPTERS], [
705 m4_foreach([adapter], [$1], [
706 AS_IF([test "x$build_zy1000" = "xyes"], [
707 ADAPTER_VAR([adapter])=no
708 ])
709 AS_IF([test $2], [
710 AS_IF([test "x$ADAPTER_VAR([adapter])" != "xno"], [
711 AC_DEFINE([BUILD_]ADAPTER_SYM([adapter]), [1], [1 if you want the ]ADAPTER_DESC([adapter]).)
712 ], [
713 AC_DEFINE([BUILD_]ADAPTER_SYM([adapter]), [0], [0 if you do not want the ]ADAPTER_DESC([adapter]).)
714 ])
715 ], [
716 AS_IF([test "x$ADAPTER_VAR([adapter])" = "xyes"], [
717 AC_MSG_ERROR([$3 is required for the ADAPTER_DESC([adapter])])
718 ])
719 ADAPTER_VAR([adapter])=no
720 ])
721 AM_CONDITIONAL(ADAPTER_SYM([adapter]), [test "x$ADAPTER_VAR([adapter])" != "xno"])
722 ])
723 ])
724
725 PROCESS_ADAPTERS([USB1_ADAPTERS], ["x$use_libusb1" = "xyes"], [libusb-1.x])
726 PROCESS_ADAPTERS([USB0_ADAPTERS], ["x$use_libusb0" = "xyes"], [libusb-0.1])
727 PROCESS_ADAPTERS([HIDAPI_ADAPTERS], ["x$use_hidapi" = "xyes"], [hidapi])
728 PROCESS_ADAPTERS([HIDAPI_USB1_ADAPTERS], ["x$use_hidapi" = "xyes" -a "x$use_libusb1" = "xyes"], [hidapi and libusb-1.x])
729 PROCESS_ADAPTERS([LIBFTDI_ADAPTERS], ["x$use_libftdi" = "xyes"], [libftdi])
730 PROCESS_ADAPTERS([LIBFTDI_USB1_ADAPTERS], ["x$use_libftdi" = "xyes" -a "x$use_libusb1" = "xyes"], [libftdi and libusb-1.x])
731 PROCESS_ADAPTERS([LIBGPIOD_ADAPTERS], ["x$use_libgpiod" = "xyes"], [libgpiod])
732 PROCESS_ADAPTERS([LIBJAYLINK_ADAPTERS], ["x$use_internal_libjaylink" = "xyes" -o "x$use_libjaylink" = "xyes"], [libjaylink-0.2])
733
734 AS_IF([test "x$enable_linuxgpiod" != "xno"], [
735 build_bitbang=yes
736 ])
737
738 AS_IF([test "x$enable_stlink" != "xno" -o "x$enable_ti_icdi" != "xno" -o "x$enable_nulink" != "xno"], [
739 AC_DEFINE([BUILD_HLADAPTER], [1], [1 if you want the High Level JTAG driver.])
740 AM_CONDITIONAL([HLADAPTER], [true])
741 ], [
742 AC_DEFINE([BUILD_HLADAPTER], [0], [0 if you want the High Level JTAG driver.])
743 AM_CONDITIONAL([HLADAPTER], [false])
744 ])
745 AM_CONDITIONAL([HLADAPTER_STLINK], [test "x$enable_stlink" != "xno"])
746 AM_CONDITIONAL([HLADAPTER_ICDI], [test "x$enable_ti_icdi" != "xno"])
747 AM_CONDITIONAL([HLADAPTER_NULINK], [test "x$enable_nulink" != "xno"])
748
749 AS_IF([test "x$enable_jlink" != "xno"], [
750 AS_IF([test "x$use_internal_libjaylink" = "xyes"], [
751 AS_IF([test -f "$srcdir/src/jtag/drivers/libjaylink/configure.ac"], [
752 AX_CONFIG_SUBDIR_OPTION([src/jtag/drivers/libjaylink],
753 [--enable-subproject-build])
754 ], [
755 AC_MSG_ERROR([Internal libjaylink not found, run either 'git submodule init' and 'git submodule update' or disable internal libjaylink with --disable-internal-libjaylink.])
756 ])
757 ])
758 ])
759
760 # Presto needs the bitq module
761 AS_IF([test "x$enable_presto" != "xno"], [
762 build_bitq=yes
763 ])
764
765 AM_CONDITIONAL([RELEASE], [test "x$build_release" = "xyes"])
766 AM_CONDITIONAL([PARPORT], [test "x$build_parport" = "xyes"])
767 AM_CONDITIONAL([DUMMY], [test "x$build_dummy" = "xyes"])
768 AM_CONDITIONAL([GIVEIO], [test "x$parport_use_giveio" = "xyes"])
769 AM_CONDITIONAL([EP93XX], [test "x$build_ep93xx" = "xyes"])
770 AM_CONDITIONAL([ZY1000], [test "x$build_zy1000" = "xyes"])
771 AM_CONDITIONAL([ZY1000_MASTER], [test "x$build_zy1000_master" = "xyes"])
772 AM_CONDITIONAL([IOUTIL], [test "x$build_ioutil" = "xyes"])
773 AM_CONDITIONAL([AT91RM9200], [test "x$build_at91rm9200" = "xyes"])
774 AM_CONDITIONAL([BCM2835GPIO], [test "x$build_bcm2835gpio" = "xyes"])
775 AM_CONDITIONAL([IMX_GPIO], [test "x$build_imx_gpio" = "xyes"])
776 AM_CONDITIONAL([BITBANG], [test "x$build_bitbang" = "xyes"])
777 AM_CONDITIONAL([JTAG_VPI], [test "x$build_jtag_vpi" = "xyes" -o "x$build_jtag_vpi" = "xyes"])
778 AM_CONDITIONAL([JTAG_DPI], [test "x$build_jtag_dpi" = "xyes" -o "x$build_jtag_dpi" = "xyes"])
779 AM_CONDITIONAL([USB_BLASTER_DRIVER], [test "x$enable_usb_blaster" != "xno" -o "x$enable_usb_blaster_2" != "xno"])
780 AM_CONDITIONAL([AMTJTAGACCEL], [test "x$build_amtjtagaccel" = "xyes"])
781 AM_CONDITIONAL([GW16012], [test "x$build_gw16012" = "xyes"])
782 AM_CONDITIONAL([OOCD_TRACE], [test "x$build_oocd_trace" = "xyes"])
783 AM_CONDITIONAL([REMOTE_BITBANG], [test "x$build_remote_bitbang" = "xyes"])
784 AM_CONDITIONAL([BUSPIRATE], [test "x$build_buspirate" = "xyes"])
785 AM_CONDITIONAL([SYSFSGPIO], [test "x$build_sysfsgpio" = "xyes"])
786 AM_CONDITIONAL([XLNX_PCIE_XVC], [test "x$build_xlnx_pcie_xvc" = "xyes"])
787 AM_CONDITIONAL([USE_LIBUSB0], [test "x$use_libusb0" = "xyes"])
788 AM_CONDITIONAL([USE_LIBUSB1], [test "x$use_libusb1" = "xyes"])
789 AM_CONDITIONAL([IS_CYGWIN], [test "x$is_cygwin" = "xyes"])
790 AM_CONDITIONAL([IS_MINGW], [test "x$is_mingw" = "xyes"])
791 AM_CONDITIONAL([IS_WIN32], [test "x$is_win32" = "xyes"])
792 AM_CONDITIONAL([IS_DARWIN], [test "x$is_darwin" = "xyes"])
793 AM_CONDITIONAL([BITQ], [test "x$build_bitq" = "xyes"])
794 AM_CONDITIONAL([USE_LIBFTDI], [test "x$use_libftdi" = "xyes"])
795 AM_CONDITIONAL([USE_LIBGPIOD], [test "x$use_libgpiod" = "xyes"])
796 AM_CONDITIONAL([USE_HIDAPI], [test "x$use_hidapi" = "xyes"])
797 AM_CONDITIONAL([USE_LIBJAYLINK], [test "x$use_libjaylink" = "xyes"])
798 AM_CONDITIONAL([RSHIM], [test "x$build_rshim" = "xyes"])
799 AM_CONDITIONAL([HAVE_CAPSTONE], [test "x$enable_capstone" != "xno"])
800
801 AM_CONDITIONAL([MINIDRIVER], [test "x$build_minidriver" = "xyes"])
802 AM_CONDITIONAL([MINIDRIVER_DUMMY], [test "x$build_minidriver_dummy" = "xyes"])
803
804 AM_CONDITIONAL([INTERNAL_JIMTCL], [test "x$use_internal_jimtcl" = "xyes"])
805 AM_CONDITIONAL([INTERNAL_LIBJAYLINK], [test "x$use_internal_libjaylink" = "xyes"])
806
807 # Look for environ alternatives. Possibility #1: is environ in unistd.h or stdlib.h?
808 AC_MSG_CHECKING([for environ in unistd.h and stdlib.h])
809 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
810 #define _GNU_SOURCE
811 #include <unistd.h>
812 #include <stdlib.h>
813 ]], [[char **ep = environ;]]
814 )], [
815 AC_MSG_RESULT([yes])
816 has_environ=yes
817 ], [
818 AC_MSG_RESULT([no])
819
820 # Possibility #2: can environ be found in an available library?
821 AC_MSG_CHECKING([for extern environ])
822 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
823 extern char **environ;
824 ]], [[char **ep = environ;]]
825 )], [
826 AC_DEFINE(NEED_ENVIRON_EXTERN, [1], [Must declare 'environ' to use it.])
827 has_environ=yes
828 ], [
829 has_environ=no
830 ])
831 AC_MSG_RESULT([${has_environ}])
832 ])
833
834 AS_IF([test "x${has_environ}" != "xyes" ], [
835 AC_MSG_FAILURE([Could not find 'environ' in unistd.h or available libraries.])
836 ])
837
838 AC_DEFINE([_GNU_SOURCE],[1],[Use GNU C library extensions (e.g. stdndup).])
839
840 # set default gcc warnings
841 GCC_WARNINGS="-Wall -Wstrict-prototypes -Wformat-security -Wshadow"
842 AS_IF([test "x${gcc_wextra}" = "xyes"], [
843 GCC_WARNINGS="${GCC_WARNINGS} -Wextra -Wno-unused-parameter"
844 GCC_WARNINGS="${GCC_WARNINGS} -Wbad-function-cast"
845 GCC_WARNINGS="${GCC_WARNINGS} -Wcast-align"
846 GCC_WARNINGS="${GCC_WARNINGS} -Wredundant-decls"
847 GCC_WARNINGS="${GCC_WARNINGS} -Wpointer-arith"
848 ])
849 AS_IF([test "x${gcc_werror}" = "xyes"], [
850 GCC_WARNINGS="${GCC_WARNINGS} -Werror"
851 ])
852
853 # override default gcc cflags
854 AS_IF([test "x$gcc_warnings" = "xyes"], [
855 AC_SUBST([GCC_WARNINGS], [$GCC_WARNINGS])
856 ])
857
858 AC_CONFIG_FILES([
859 Makefile
860 ])
861 AC_OUTPUT
862
863 echo
864 echo
865 echo OpenOCD configuration summary
866 echo --------------------------------------------------
867 m4_foreach([adapter], [USB1_ADAPTERS, USB0_ADAPTERS,
868 HIDAPI_ADAPTERS, HIDAPI_USB1_ADAPTERS, LIBFTDI_ADAPTERS,
869 LIBFTDI_USB1_ADAPTERS,
870 LIBGPIOD_ADAPTERS,
871 LIBJAYLINK_ADAPTERS, PCIE_ADAPTERS,
872 OPTIONAL_LIBRARIES],
873 [s=m4_format(["%-40s"], ADAPTER_DESC([adapter]))
874 AS_CASE([$ADAPTER_VAR([adapter])],
875 [auto], [
876 echo "$s"yes '(auto)'
877 ],
878 [yes], [
879 echo "$s"yes
880 ],
881 [no], [
882 echo "$s"no
883 ])
884 ])
885 echo
886
887 AS_IF([test "x$build_oocd_trace" = "xyes"], [
888 echo 'WARNING! Deprecated configure option (--enable-oocd_trace)'
889 echo 'The oocd_trace driver is deprecated and will be removed in the next release.'
890 echo 'If you regularly use this driver, please report to the OpenOCD Mailing List.'
891 echo
892 ])
893
894 AS_IF([test "x$build_zy1000" = "xyes" -o "x$build_zy1000_master" = "xyes"], [
895 echo 'WARNING! Deprecated configure option (--enable-zy1000, --enable-zy1000-master)'
896 echo 'Support for the ZY1000 platform is deprecated and will be removed in the next'
897 echo 'release. If you regularly use this platform, please report to the OpenOCD'
898 echo 'Mailing List.'
899 echo
900 ])
901
902 AS_IF([test "x$build_ioutil" = "xyes"], [
903 echo 'WARNING! Deprecated configure option (--enable-ioutil)'
904 echo 'Support for the ioutil functions is deprecated and will be removed in the next'
905 echo 'release. If you regularly depend on this functionality, please report to the'
906 echo 'OpenOCD Mailing List.'
907 echo
908 ])

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)