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