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