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

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)