2 AC_INIT([openocd], [0.11.0-rc1+dev],
3 [OpenOCD Mailing List <openocd-devel@lists.sourceforge.net>])
4 AC_CONFIG_SRCDIR([src/openocd.c])
7 m4_include([config_subdir.m4])dnl
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.])
17 AM_INIT_AUTOMAKE([-Wall -Wno-portability dist-bzip2 dist-zip subdir-objects])
19 AC_CONFIG_HEADERS([config.h])
21 #include <helper/system.h>
22 #include <helper/types.h>
23 #include <helper/replacements.h>
28 # autoconf 2.70 obsoletes AC_PROG_CC_C99 and includes it in AC_PROG_CC
29 m4_version_prereq([2.70],[],[AC_PROG_CC_C99])
32 PKG_PROG_PKG_CONFIG([0.23])
34 dnl disable checks for C++, Fortran and GNU Java Compiler
35 m4_defun([_LT_AC_LANG_CXX_CONFIG], [:])
36 m4_defun([_LT_AC_LANG_F77_CONFIG], [:])
37 m4_defun([_LT_AC_LANG_GCJ_CONFIG], [:])
40 AC_SUBST([LIBTOOL_DEPS])
42 dnl configure checks required for Jim files (these are obsolete w/ C99)
46 AC_SEARCH_LIBS([ioperm], [ioperm])
47 AC_SEARCH_LIBS([dlopen], [dl])
48 AC_SEARCH_LIBS([openpty], [util])
50 AC_CHECK_HEADERS([sys/socket.h])
51 AC_CHECK_HEADERS([elf.h])
52 AC_CHECK_HEADERS([dirent.h])
53 AC_CHECK_HEADERS([fcntl.h])
54 AC_CHECK_HEADERS([malloc.h])
55 AC_CHECK_HEADERS([netdb.h])
56 AC_CHECK_HEADERS([poll.h])
57 AC_CHECK_HEADERS([pthread.h])
58 AC_CHECK_HEADERS([strings.h])
59 AC_CHECK_HEADERS([sys/ioctl.h])
60 AC_CHECK_HEADERS([sys/param.h])
61 AC_CHECK_HEADERS([sys/select.h])
62 AC_CHECK_HEADERS([sys/stat.h])
63 AC_CHECK_HEADERS([sys/sysctl.h])
64 AC_CHECK_HEADERS([sys/time.h])
65 AC_CHECK_HEADERS([sys/types.h])
66 AC_CHECK_HEADERS([unistd.h])
67 AC_CHECK_HEADERS([arpa/inet.h ifaddrs.h netinet/in.h netinet/tcp.h net/if.h], [], [], [dnl
77 #ifdef HAVE_SYS_SOCKET_H
78 # include <sys/socket.h>
88 AC_CHECK_FUNCS([strndup])
89 AC_CHECK_FUNCS([strnlen])
90 AC_CHECK_FUNCS([gettimeofday])
91 AC_CHECK_FUNCS([usleep])
92 AC_CHECK_FUNCS([vasprintf])
93 AC_CHECK_FUNCS([realpath])
95 # guess-rev.sh only exists in the repository, not in the released archives
96 AC_MSG_CHECKING([whether to build a release])
97 AS_IF([test -x "$srcdir/guess-rev.sh"], [
102 AC_MSG_RESULT([$build_release])
105 # 1st column -- configure option
106 # 2nd column -- description
107 # 3rd column -- symbol used for both config.h and automake
108 m4_define([ADAPTER_ARG], [m4_argn([1], $1)])
109 m4_define([ADAPTER_DESC], [m4_argn([2], $1)])
110 m4_define([ADAPTER_SYM], [m4_argn([3], $1)])
111 m4_define([ADAPTER_VAR], [enable_[]ADAPTER_ARG($1)])
112 m4_define([ADAPTER_OPT], [m4_translit(ADAPTER_ARG($1), [_], [-])])
114 m4_define([USB1_ADAPTERS],
115 [[[ftdi], [MPSSE mode of FTDI based devices], [FTDI]],
116 [[stlink], [ST-Link Programmer], [HLADAPTER_STLINK]],
117 [[ti_icdi], [TI ICDI JTAG Programmer], [HLADAPTER_ICDI]],
118 [[ulink], [Keil ULINK JTAG Programmer], [ULINK]],
119 [[usb_blaster_2], [Altera USB-Blaster II Compatible], [USB_BLASTER_2]],
120 [[ft232r], [Bitbang mode of FT232R based devices], [FT232R]],
121 [[vsllink], [Versaloon-Link JTAG Programmer], [VSLLINK]],
122 [[xds110], [TI XDS110 Debug Probe], [XDS110]],
123 [[cmsis_dap_v2], [CMSIS-DAP v2 Compliant Debugger], [CMSIS_DAP_USB]],
124 [[osbdm], [OSBDM (JTAG only) Programmer], [OSBDM]],
125 [[opendous], [eStick/opendous JTAG Programmer], [OPENDOUS]],
126 [[aice], [Andes JTAG Programmer], [AICE]]])
128 m4_define([USB0_ADAPTERS],
129 [[[usbprog], [USBProg JTAG Programmer], [USBPROG]],
130 [[rlink], [Raisonance RLink JTAG Programmer], [RLINK]],
131 [[armjtagew], [Olimex ARM-JTAG-EW Programmer], [ARMJTAGEW]]])
133 m4_define([HIDAPI_ADAPTERS],
134 [[[cmsis_dap], [CMSIS-DAP Compliant Debugger], [CMSIS_DAP_HID]],
135 [[nulink], [Nu-Link Programmer], [HLADAPTER_NULINK]]])
137 m4_define([HIDAPI_USB1_ADAPTERS],
138 [[[kitprog], [Cypress KitProg Programmer], [KITPROG]]])
140 m4_define([LIBFTDI_ADAPTERS],
141 [[[usb_blaster], [Altera USB-Blaster Compatible], [USB_BLASTER]],
142 [[presto], [ASIX Presto Adapter], [PRESTO]]])
144 m4_define([LIBFTDI_USB1_ADAPTERS],
145 [[[openjtag], [OpenJTAG Adapter], [OPENJTAG]]])
147 m4_define([LIBGPIOD_ADAPTERS],
148 [[[linuxgpiod], [Linux GPIO bitbang through libgpiod], [LINUXGPIOD]]])
150 m4_define([LIBJAYLINK_ADAPTERS],
151 [[[jlink], [SEGGER J-Link Programmer], [JLINK]]])
153 m4_define([PCIE_ADAPTERS],
154 [[[xlnx_pcie_xvc], [Xilinx XVC/PCIe], [XLNX_PCIE_XVC]]])
156 m4_define([OPTIONAL_LIBRARIES],
157 [[[capstone], [Use Capstone disassembly framework], []]])
159 AC_ARG_ENABLE([doxygen-html],
160 AS_HELP_STRING([--disable-doxygen-html],
161 [Disable building Doxygen manual as HTML.]),
162 [doxygen_as_html=$enableval], [doxygen_as_html=yes])
163 AC_SUBST([doxygen_as_html])
164 AC_MSG_CHECKING([whether to build Doxygen as HTML])
165 AC_MSG_RESULT([$doxygen_as_html])
167 AC_ARG_ENABLE([doxygen-pdf],
168 AS_HELP_STRING([--enable-doxygen-pdf],
169 [Enable building Doxygen manual as PDF.]),
170 [doxygen_as_pdf=$enableval], [doxygen_as_pdf=no])
171 AC_SUBST([doxygen_as_pdf])
172 AC_MSG_CHECKING([whether to build Doxygen as PDF])
173 AC_MSG_RESULT([$doxygen_as_pdf])
175 AC_ARG_ENABLE([gccwarnings],
176 AS_HELP_STRING([--disable-gccwarnings], [Disable compiler warnings]),
177 [gcc_warnings=$enableval], [gcc_warnings=yes])
179 AC_ARG_ENABLE([wextra],
180 AS_HELP_STRING([--disable-wextra], [Disable extra compiler warnings]),
181 [gcc_wextra=$enableval], [gcc_wextra=$gcc_warnings])
183 AC_ARG_ENABLE([werror],
184 AS_HELP_STRING([--disable-werror], [Do not treat warnings as errors]),
185 [gcc_werror=$enableval], [gcc_werror=$gcc_warnings])
187 # set default verbose options, overridden by following options
191 AC_ARG_ENABLE([verbose],
192 AS_HELP_STRING([--enable-verbose],
193 [Enable verbose JTAG I/O messages (for debugging).]),
195 debug_usb_io=$enableval
196 debug_usb_comms=$enableval
199 AC_ARG_ENABLE([verbose_usb_io],
200 AS_HELP_STRING([--enable-verbose-usb-io],
201 [Enable verbose USB I/O messages (for debugging)]),
202 [debug_usb_io=$enableval], [])
204 AC_ARG_ENABLE([verbose_usb_comms],
205 AS_HELP_STRING([--enable-verbose-usb-comms],
206 [Enable verbose USB communication messages (for debugging)]),
207 [debug_usb_comms=$enableval], [])
209 AC_MSG_CHECKING([whether to enable verbose USB I/O messages]);
210 AC_MSG_RESULT([$debug_usb_io])
211 AS_IF([test "x$debug_usb_io" = "xyes"], [
212 AC_DEFINE([_DEBUG_USB_IO_],[1], [Print verbose USB I/O messages])
215 AC_MSG_CHECKING([whether to enable verbose USB communication messages]);
216 AC_MSG_RESULT([$debug_usb_comms])
217 AS_IF([test "x$debug_usb_comms" = "xyes"], [
218 AC_DEFINE([_DEBUG_USB_COMMS_],[1], [Print verbose USB communication messages])
222 AC_ARG_ENABLE([malloc_logging],
223 AS_HELP_STRING([--enable-malloc-logging],
224 [Include free space in logging messages (requires malloc.h).]),
225 [debug_malloc=$enableval], [])
227 AC_MSG_CHECKING([whether to enable malloc free space logging]);
228 AC_MSG_RESULT([$debug_malloc])
229 AS_IF([test "x$debug_malloc" = "xyes"], [
230 AC_DEFINE([_DEBUG_FREE_SPACE_],[1], [Include malloc free space in logging])
233 AC_ARG_ENABLE([dummy],
234 AS_HELP_STRING([--enable-dummy], [Enable building the dummy port driver]),
235 [build_dummy=$enableval], [build_dummy=no])
237 AC_ARG_ENABLE([rshim],
238 AS_HELP_STRING([--enable-rshim], [Enable building the rshim driver]),
239 [build_rshim=$enableval], [build_rshim=no])
241 m4_define([AC_ARG_ADAPTERS], [
242 m4_foreach([adapter], [$1],
243 [AC_ARG_ENABLE(ADAPTER_OPT([adapter]),
244 AS_HELP_STRING([--enable-ADAPTER_OPT([adapter])],
245 [Enable building support for the ]ADAPTER_DESC([adapter])[ (default is $2)]),
246 [], [ADAPTER_VAR([adapter])=$2])
254 HIDAPI_USB1_ADAPTERS,
256 LIBFTDI_USB1_ADAPTERS
261 AC_ARG_ENABLE([parport],
262 AS_HELP_STRING([--enable-parport], [Enable building the pc parallel port driver]),
263 [build_parport=$enableval], [build_parport=no])
265 AC_ARG_ENABLE([parport_ppdev],
266 AS_HELP_STRING([--disable-parport-ppdev],
267 [Disable use of ppdev (/dev/parportN) for parport (for x86 only)]),
268 [parport_use_ppdev=$enableval], [parport_use_ppdev=yes])
270 AC_ARG_ENABLE([parport_giveio],
271 AS_HELP_STRING([--enable-parport-giveio],
272 [Enable use of giveio for parport (for CygWin only)]),
273 [parport_use_giveio=$enableval], [parport_use_giveio=])
275 AC_ARG_ENABLE([jtag_vpi],
276 AS_HELP_STRING([--enable-jtag_vpi], [Enable building support for JTAG VPI]),
277 [build_jtag_vpi=$enableval], [build_jtag_vpi=no])
279 AC_ARG_ENABLE([jtag_dpi],
280 AS_HELP_STRING([--enable-jtag_dpi], [Enable building support for JTAG DPI]),
281 [build_jtag_dpi=$enableval], [build_jtag_dpi=no])
283 AC_ARG_ENABLE([amtjtagaccel],
284 AS_HELP_STRING([--enable-amtjtagaccel], [Enable building the Amontec JTAG-Accelerator driver]),
285 [build_amtjtagaccel=$enableval], [build_amtjtagaccel=no])
287 AC_ARG_ENABLE([zy1000_master],
288 AS_HELP_STRING([--enable-zy1000-master], [Use ZY1000 JTAG master registers]),
289 [build_zy1000_master=$enableval], [build_zy1000_master=no])
291 AC_ARG_ENABLE([zy1000],
292 AS_HELP_STRING([--enable-zy1000], [Enable ZY1000 interface]),
293 [build_zy1000=$enableval], [build_zy1000=no])
295 AC_ARG_ENABLE([ioutil],
296 AS_HELP_STRING([--enable-ioutil], [Enable ioutil functions - useful for standalone OpenOCD implementations]),
297 [build_ioutil=$enableval], [build_ioutil=no])
299 AS_CASE(["${host_cpu}"],
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])
313 AS_CASE(["${host_cpu}"],
315 AC_ARG_ENABLE([ep93xx],
316 AS_HELP_STRING([--enable-ep93xx], [Enable building support for EP93xx based SBCs]),
317 [build_ep93xx=$enableval], [build_ep93xx=no])
319 AC_ARG_ENABLE([at91rm9200],
320 AS_HELP_STRING([--enable-at91rm9200], [Enable building support for AT91RM9200 based SBCs]),
321 [build_at91rm9200=$enableval], [build_at91rm9200=no])
328 AC_ARG_ENABLE([gw16012],
329 AS_HELP_STRING([--enable-gw16012], [Enable building support for the Gateworks GW16012 JTAG Programmer]),
330 [build_gw16012=$enableval], [build_gw16012=no])
332 AC_ARG_ENABLE([oocd_trace],
333 AS_HELP_STRING([--enable-oocd_trace],
334 [Enable building support for some prototype OpenOCD+trace ETM capture hardware]),
335 [build_oocd_trace=$enableval], [build_oocd_trace=no])
337 AC_ARG_ENABLE([buspirate],
338 AS_HELP_STRING([--enable-buspirate], [Enable building support for the Buspirate]),
339 [build_buspirate=$enableval], [build_buspirate=no])
341 AC_ARG_ENABLE([sysfsgpio],
342 AS_HELP_STRING([--enable-sysfsgpio], [Enable building support for programming driven via sysfs gpios.]),
343 [build_sysfsgpio=$enableval], [build_sysfsgpio=no])
345 AC_ARG_ENABLE([xlnx_pcie_xvc],
346 AS_HELP_STRING([--enable-xlnx-pcie-xvc], [Enable building support for Xilinx XVC/PCIe.]),
347 [build_xlnx_pcie_xvc=$enableval], [build_xlnx_pcie_xvc=no])
352 AS_IF([test "x$build_sysfsgpio" = "xyes"], [
353 AC_MSG_ERROR([sysfsgpio is only available on linux])
356 AS_IF([test "x$enable_linuxgpiod" = "xyes"], [
357 AC_MSG_ERROR([linuxgpiod is only available on linux])
360 AS_IF([test "x$build_xlnx_pcie_xvc" = "xyes"], [
361 AC_MSG_ERROR([xlnx_pcie_xvc is only available on linux])
364 AS_CASE([$host_os], [freebsd*], [],
366 AS_IF([test "x$build_rshim" = "xyes"], [
367 AC_MSG_ERROR([build_rshim is only available on linux or freebsd])
372 AC_ARG_ENABLE([minidriver_dummy],
373 AS_HELP_STRING([--enable-minidriver-dummy], [Enable the dummy minidriver.]),
374 [build_minidriver_dummy=$enableval], [build_minidriver_dummy=no])
376 AC_ARG_ENABLE([internal-jimtcl],
377 AS_HELP_STRING([--disable-internal-jimtcl], [Disable building internal jimtcl]),
378 [use_internal_jimtcl=$enableval], [use_internal_jimtcl=yes])
380 AC_ARG_ENABLE([internal-libjaylink],
381 AS_HELP_STRING([--disable-internal-libjaylink],
382 [Disable building internal libjaylink]),
383 [use_internal_libjaylink=$enableval], [use_internal_libjaylink=yes])
386 AC_MSG_CHECKING([whether to enable ZY1000 minidriver])
387 AS_IF([test "x$build_zy1000" = "xyes"], [
388 AS_IF([test "x$build_minidriver" = "xyes"], [
389 AC_MSG_ERROR([Multiple minidriver options have been enabled.])
391 AC_DEFINE([HAVE_JTAG_MINIDRIVER_H], [1],
392 [Define to 1 if you have the <jtag_minidriver.h> header file.])
395 AC_MSG_RESULT([$build_zy1000])
397 AC_ARG_ENABLE([remote-bitbang],
398 AS_HELP_STRING([--enable-remote-bitbang], [Enable building support for the Remote Bitbang jtag driver]),
399 [build_remote_bitbang=$enableval], [build_remote_bitbang=no])
401 AC_MSG_CHECKING([whether to enable dummy minidriver])
402 AS_IF([test "x$build_minidriver_dummy" = "xyes"], [
403 AS_IF([test "x$build_minidriver" = "xyes"], [
404 AC_MSG_ERROR([Multiple minidriver options have been enabled.])
407 AC_DEFINE([BUILD_MINIDRIVER_DUMMY], [1], [Use the dummy minidriver.])
408 AC_DEFINE([HAVE_JTAG_MINIDRIVER_H], [1],
409 [Define to 1 if you have the <jtag_minidriver.h> header file.])
411 AC_MSG_RESULT([$build_minidriver_dummy])
413 AC_MSG_CHECKING([whether standard drivers can be built])
414 AS_IF([test "x$build_minidriver" = "xyes"], [
416 AC_MSG_WARN([Using the minidriver disables all other drivers.])
422 AS_CASE(["${host_cpu}"],
425 AS_IF([test "x$parport_use_ppdev" = "xno"], [
426 AC_MSG_WARN([--disable-parport-ppdev is not supported by the host CPU])
428 parport_use_ppdev=yes
436 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[return __MINGW32__;]])],
437 [is_mingw=yes],[is_mingw=no])
438 AS_IF([test "x$is_mingw" = "xyes"], [
439 AS_IF([test "x$parport_use_giveio" = "xno"], [
440 AC_MSG_WARN([--disable-parport-giveio is not supported by MinGW32 hosts])
442 parport_use_giveio=yes
446 # sys/io.h needed under cygwin for parport access
447 AS_IF([test "x$build_parport" = "xyes"], [
448 AC_CHECK_HEADERS([sys/io.h],[],AC_MSG_ERROR([Please install the cygwin ioperm package]))
452 [*-mingw* | *-msys*], [
457 AS_IF([test "x$parport_use_giveio" = "xno"], [
458 AC_MSG_WARN([--disable-parport-giveio is not supported by MinGW32 hosts])
460 parport_use_giveio=yes
462 AS_IF([test "x$build_buspirate" = "xyes"], [
463 AC_MSG_ERROR([buspirate currently not supported by MinGW32 hosts])
466 AC_SUBST([HOST_CPPFLAGS], [-D__USE_MINGW_ANSI_STDIO])
471 AS_IF([test "x$parport_use_giveio" = "xyes"], [
472 AC_MSG_WARN([--enable-parport-giveio cannot be used by Darwin hosts])
474 parport_use_giveio=no
477 AS_IF([test "x$parport_use_giveio" = "xyes"], [
478 AC_MSG_WARN([--enable-parport-giveio cannot be used by ]$host[ hosts])
480 parport_use_giveio=no
483 AS_IF([test "x$is_cygwin" = "xyes"], [
484 AC_DEFINE([IS_CYGWIN], [1], [1 if building for Cygwin.])
486 AC_DEFINE([IS_CYGWIN], [0], [0 if not building for Cygwin.])
489 AS_IF([test "x$is_mingw" = "xyes"], [
490 AC_DEFINE([IS_MINGW], [1], [1 if building for Mingw.])
492 AC_DEFINE([IS_MINGW], [0], [0 if not building for Mingw.])
495 AS_IF([test "x$is_win32" = "xyes"], [
496 AC_DEFINE([IS_WIN32], [1], [1 if building for Win32.])
498 AC_DEFINE([IS_WIN32], [0], [0 if not building for Win32.])
501 AS_IF([test "x$is_darwin" = "xyes"], [
502 AC_DEFINE([IS_DARWIN], [1], [1 if building for Darwin.])
504 AC_DEFINE([IS_DARWIN], [0], [0 if not building for Darwin.])
507 AS_IF([test "x$build_parport" = "xyes"], [
509 AC_DEFINE([BUILD_PARPORT], [1], [1 if you want parport.])
511 AC_DEFINE([BUILD_PARPORT], [0], [0 if you don't want parport.])
514 AS_IF([test "x$build_rshim" = "xyes"], [
515 AC_DEFINE([BUILD_RSHIM], [1], [1 if you want to debug BlueField SoC via rshim.])
517 AC_DEFINE([BUILD_RSHIM], [0], [0 if you don't want to debug BlueField SoC via rshim.])
520 AS_IF([test "x$build_dummy" = "xyes"], [
522 AC_DEFINE([BUILD_DUMMY], [1], [1 if you want dummy driver.])
524 AC_DEFINE([BUILD_DUMMY], [0], [0 if you don't want dummy driver.])
527 AS_IF([test "x$build_ep93xx" = "xyes"], [
529 AC_DEFINE([BUILD_EP93XX], [1], [1 if you want ep93xx.])
531 AC_DEFINE([BUILD_EP93XX], [0], [0 if you don't want ep93xx.])
534 AS_IF([test "x$build_zy1000" = "xyes"], [
535 AC_DEFINE([BUILD_ZY1000], [1], [1 if you want ZY1000.])
537 AC_DEFINE([BUILD_ZY1000], [0], [0 if you don't want ZY1000.])
540 AS_IF([test "x$build_zy1000_master" = "xyes"], [
541 AC_DEFINE([BUILD_ZY1000_MASTER], [1], [1 if you want ZY1000 JTAG master registers.])
543 AC_DEFINE([BUILD_ZY1000_MASTER], [0], [0 if you don't want ZY1000 JTAG master registers.])
546 AS_IF([test "x$build_at91rm9200" = "xyes"], [
548 AC_DEFINE([BUILD_AT91RM9200], [1], [1 if you want at91rm9200.])
550 AC_DEFINE([BUILD_AT91RM9200], [0], [0 if you don't want at91rm9200.])
553 AS_IF([test "x$build_bcm2835gpio" = "xyes"], [
555 AC_DEFINE([BUILD_BCM2835GPIO], [1], [1 if you want bcm2835gpio.])
557 AC_DEFINE([BUILD_BCM2835GPIO], [0], [0 if you don't want bcm2835gpio.])
560 AS_IF([test "x$build_imx_gpio" = "xyes"], [
562 AC_DEFINE([BUILD_IMX_GPIO], [1], [1 if you want imx_gpio.])
564 AC_DEFINE([BUILD_IMX_GPIO], [0], [0 if you don't want imx_gpio.])
567 AS_IF([test "x$parport_use_ppdev" = "xyes"], [
568 AC_DEFINE([PARPORT_USE_PPDEV], [1], [1 if you want parport to use ppdev.])
570 AC_DEFINE([PARPORT_USE_PPDEV], [0], [0 if you don't want parport to use ppdev.])
573 AS_IF([test "x$parport_use_giveio" = "xyes"], [
574 AC_DEFINE([PARPORT_USE_GIVEIO], [1], [1 if you want parport to use giveio.])
576 AC_DEFINE([PARPORT_USE_GIVEIO], [0], [0 if you don't want parport to use giveio.])
579 AS_IF([test "x$build_jtag_vpi" = "xyes"], [
580 AC_DEFINE([BUILD_JTAG_VPI], [1], [1 if you want JTAG VPI.])
582 AC_DEFINE([BUILD_JTAG_VPI], [0], [0 if you don't want JTAG VPI.])
585 AS_IF([test "x$build_jtag_dpi" = "xyes"], [
586 AC_DEFINE([BUILD_JTAG_DPI], [1], [1 if you want JTAG DPI.])
588 AC_DEFINE([BUILD_JTAG_DPI], [0], [0 if you don't want JTAG DPI.])
592 AS_IF([test "x$build_amtjtagaccel" = "xyes"], [
593 AC_DEFINE([BUILD_AMTJTAGACCEL], [1], [1 if you want the Amontec JTAG-Accelerator driver.])
595 AC_DEFINE([BUILD_AMTJTAGACCEL], [0], [0 if you don't want the Amontec JTAG-Accelerator driver.])
598 AS_IF([test "x$build_gw16012" = "xyes"], [
599 AC_DEFINE([BUILD_GW16012], [1], [1 if you want the Gateworks GW16012 driver.])
601 AC_DEFINE([BUILD_GW16012], [0], [0 if you don't want the Gateworks GW16012 driver.])
604 AS_IF([test "x$build_oocd_trace" = "xyes"], [
605 AC_DEFINE([BUILD_OOCD_TRACE], [1], [1 if you want the OpenOCD+trace ETM capture driver.])
607 AC_DEFINE([BUILD_OOCD_TRACE], [0], [0 if you don't want the OpenOCD+trace ETM capture driver.])
610 AS_IF([test "x$build_buspirate" = "xyes"], [
611 AC_DEFINE([BUILD_BUSPIRATE], [1], [1 if you want the Buspirate JTAG driver.])
613 AC_DEFINE([BUILD_BUSPIRATE], [0], [0 if you don't want the Buspirate JTAG driver.])
616 AS_IF([test "x$use_internal_jimtcl" = "xyes"], [
617 AS_IF([test -f "$srcdir/jimtcl/configure.ac"], [
618 AX_CONFIG_SUBDIR_OPTION([jimtcl], [--disable-install-jim])
620 AC_MSG_ERROR([jimtcl not found, run git submodule init and git submodule update.])
624 AS_IF([test "x$build_remote_bitbang" = "xyes"], [
626 AC_DEFINE([BUILD_REMOTE_BITBANG], [1], [1 if you want the Remote Bitbang JTAG driver.])
628 AC_DEFINE([BUILD_REMOTE_BITBANG], [0], [0 if you don't want the Remote Bitbang JTAG driver.])
631 AS_IF([test "x$build_sysfsgpio" = "xyes"], [
633 AC_DEFINE([BUILD_SYSFSGPIO], [1], [1 if you want the SysfsGPIO driver.])
635 AC_DEFINE([BUILD_SYSFSGPIO], [0], [0 if you don't want SysfsGPIO driver.])
638 AS_IF([test "x$build_xlnx_pcie_xvc" = "xyes"], [
639 build_xlnx_pcie_xvc=yes
640 AC_DEFINE([BUILD_XLNX_PCIE_XVC], [1], [1 if you want the Xilinx XVC/PCIe driver.])
642 AC_DEFINE([BUILD_XLNX_PCIE_XVC], [0], [0 if you don't want Xilinx XVC/PCIe driver.])
645 PKG_CHECK_MODULES([LIBUSB1], [libusb-1.0], [
647 AC_DEFINE([HAVE_LIBUSB1], [1], [Define if you have libusb-1.x])
648 PKG_CHECK_EXISTS([libusb-1.0 >= 1.0.9],
649 [AC_DEFINE([HAVE_LIBUSB_ERROR_NAME], [1], [Define if your libusb has libusb_error_name()])],
650 [AC_MSG_WARN([libusb-1.x older than 1.0.9 detected, consider updating])])
651 LIBUSB1_CFLAGS=`echo $LIBUSB1_CFLAGS | sed 's/-I/-isystem /'`
652 AC_MSG_NOTICE([libusb-1.0 header bug workaround: LIBUSB1_CFLAGS changed to "$LIBUSB1_CFLAGS"])
653 PKG_CHECK_EXISTS([libusb-1.0 >= 1.0.16],
654 [AC_DEFINE([HAVE_LIBUSB_GET_PORT_NUMBERS], [1], [Define if your libusb has libusb_get_port_numbers()])])
657 AC_MSG_WARN([libusb-1.x not found, trying legacy libusb-0.1 as a fallback; consider installing libusb-1.x instead])
660 PKG_CHECK_MODULES([LIBUSB0], [libusb], [use_libusb0=yes], [use_libusb0=no])
662 AC_ARG_WITH([capstone],
663 AS_HELP_STRING([--with-capstone], [Use Capstone disassembly library (default=auto)])
665 enable_capstone=$withval
670 AS_IF([test "x$enable_capstone" != xno], [
671 PKG_CHECK_MODULES([CAPSTONE], [capstone], [
672 AC_DEFINE([HAVE_CAPSTONE], [1], [1 if you have Capstone disassembly framework.])
674 AC_DEFINE([HAVE_CAPSTONE], [0], [0 if you don't have Capstone disassembly framework.])
675 if test "x$enable_capstone" != xauto; then
676 AC_MSG_ERROR([--with-capstone was given, but test for Capstone failed])
682 for hidapi_lib in hidapi hidapi-hidraw hidapi-libusb; do
683 PKG_CHECK_MODULES([HIDAPI],[$hidapi_lib],[
691 PKG_CHECK_MODULES([LIBFTDI], [libftdi1], [
693 PKG_CHECK_EXISTS([libftdi1 >= 1.5],
694 [AC_DEFINE([HAVE_LIBFTDI_TCIOFLUSH], [1], [Define if your libftdi has ftdi_tcioflush()])])
696 PKG_CHECK_MODULES([LIBFTDI], [libftdi], [use_libftdi=yes], [use_libftdi=no])
699 PKG_CHECK_MODULES([LIBGPIOD], [libgpiod], [use_libgpiod=yes], [use_libgpiod=no])
701 PKG_CHECK_MODULES([LIBJAYLINK], [libjaylink >= 0.2],
702 [use_libjaylink=yes], [use_libjaylink=no])
704 m4_define([PROCESS_ADAPTERS], [
705 m4_foreach([adapter], [$1], [
706 AS_IF([test "x$build_zy1000" = "xyes"], [
707 ADAPTER_VAR([adapter])=no
710 AS_IF([test "x$ADAPTER_VAR([adapter])" != "xno"], [
711 AC_DEFINE([BUILD_]ADAPTER_SYM([adapter]), [1], [1 if you want the ]ADAPTER_DESC([adapter]).)
713 AC_DEFINE([BUILD_]ADAPTER_SYM([adapter]), [0], [0 if you do not want the ]ADAPTER_DESC([adapter]).)
716 AS_IF([test "x$ADAPTER_VAR([adapter])" = "xyes"], [
717 AC_MSG_ERROR([$3 is required for the ADAPTER_DESC([adapter])])
719 ADAPTER_VAR([adapter])=no
721 AM_CONDITIONAL(ADAPTER_SYM([adapter]), [test "x$ADAPTER_VAR([adapter])" != "xno"])
725 PROCESS_ADAPTERS([USB1_ADAPTERS], ["x$use_libusb1" = "xyes"], [libusb-1.x])
726 PROCESS_ADAPTERS([USB0_ADAPTERS], ["x$use_libusb0" = "xyes"], [libusb-0.1])
727 PROCESS_ADAPTERS([HIDAPI_ADAPTERS], ["x$use_hidapi" = "xyes"], [hidapi])
728 PROCESS_ADAPTERS([HIDAPI_USB1_ADAPTERS], ["x$use_hidapi" = "xyes" -a "x$use_libusb1" = "xyes"], [hidapi and libusb-1.x])
729 PROCESS_ADAPTERS([LIBFTDI_ADAPTERS], ["x$use_libftdi" = "xyes"], [libftdi])
730 PROCESS_ADAPTERS([LIBFTDI_USB1_ADAPTERS], ["x$use_libftdi" = "xyes" -a "x$use_libusb1" = "xyes"], [libftdi and libusb-1.x])
731 PROCESS_ADAPTERS([LIBGPIOD_ADAPTERS], ["x$use_libgpiod" = "xyes"], [libgpiod])
732 PROCESS_ADAPTERS([LIBJAYLINK_ADAPTERS], ["x$use_internal_libjaylink" = "xyes" -o "x$use_libjaylink" = "xyes"], [libjaylink-0.2])
734 AS_IF([test "x$enable_linuxgpiod" != "xno"], [
738 AS_IF([test "x$enable_stlink" != "xno" -o "x$enable_ti_icdi" != "xno" -o "x$enable_nulink" != "xno"], [
739 AC_DEFINE([BUILD_HLADAPTER], [1], [1 if you want the High Level JTAG driver.])
740 AM_CONDITIONAL([HLADAPTER], [true])
742 AC_DEFINE([BUILD_HLADAPTER], [0], [0 if you want the High Level JTAG driver.])
743 AM_CONDITIONAL([HLADAPTER], [false])
745 AM_CONDITIONAL([HLADAPTER_STLINK], [test "x$enable_stlink" != "xno"])
746 AM_CONDITIONAL([HLADAPTER_ICDI], [test "x$enable_ti_icdi" != "xno"])
747 AM_CONDITIONAL([HLADAPTER_NULINK], [test "x$enable_nulink" != "xno"])
749 AS_IF([test "x$enable_jlink" != "xno"], [
750 AS_IF([test "x$use_internal_libjaylink" = "xyes"], [
751 AS_IF([test -f "$srcdir/src/jtag/drivers/libjaylink/configure.ac"], [
752 AX_CONFIG_SUBDIR_OPTION([src/jtag/drivers/libjaylink],
753 [--enable-subproject-build])
755 AC_MSG_ERROR([Internal libjaylink not found, run either 'git submodule init' and 'git submodule update' or disable internal libjaylink with --disable-internal-libjaylink.])
760 # Presto needs the bitq module
761 AS_IF([test "x$enable_presto" != "xno"], [
765 AM_CONDITIONAL([RELEASE], [test "x$build_release" = "xyes"])
766 AM_CONDITIONAL([PARPORT], [test "x$build_parport" = "xyes"])
767 AM_CONDITIONAL([DUMMY], [test "x$build_dummy" = "xyes"])
768 AM_CONDITIONAL([GIVEIO], [test "x$parport_use_giveio" = "xyes"])
769 AM_CONDITIONAL([EP93XX], [test "x$build_ep93xx" = "xyes"])
770 AM_CONDITIONAL([ZY1000], [test "x$build_zy1000" = "xyes"])
771 AM_CONDITIONAL([ZY1000_MASTER], [test "x$build_zy1000_master" = "xyes"])
772 AM_CONDITIONAL([IOUTIL], [test "x$build_ioutil" = "xyes"])
773 AM_CONDITIONAL([AT91RM9200], [test "x$build_at91rm9200" = "xyes"])
774 AM_CONDITIONAL([BCM2835GPIO], [test "x$build_bcm2835gpio" = "xyes"])
775 AM_CONDITIONAL([IMX_GPIO], [test "x$build_imx_gpio" = "xyes"])
776 AM_CONDITIONAL([BITBANG], [test "x$build_bitbang" = "xyes"])
777 AM_CONDITIONAL([JTAG_VPI], [test "x$build_jtag_vpi" = "xyes" -o "x$build_jtag_vpi" = "xyes"])
778 AM_CONDITIONAL([JTAG_DPI], [test "x$build_jtag_dpi" = "xyes" -o "x$build_jtag_dpi" = "xyes"])
779 AM_CONDITIONAL([USB_BLASTER_DRIVER], [test "x$enable_usb_blaster" != "xno" -o "x$enable_usb_blaster_2" != "xno"])
780 AM_CONDITIONAL([AMTJTAGACCEL], [test "x$build_amtjtagaccel" = "xyes"])
781 AM_CONDITIONAL([GW16012], [test "x$build_gw16012" = "xyes"])
782 AM_CONDITIONAL([OOCD_TRACE], [test "x$build_oocd_trace" = "xyes"])
783 AM_CONDITIONAL([REMOTE_BITBANG], [test "x$build_remote_bitbang" = "xyes"])
784 AM_CONDITIONAL([BUSPIRATE], [test "x$build_buspirate" = "xyes"])
785 AM_CONDITIONAL([SYSFSGPIO], [test "x$build_sysfsgpio" = "xyes"])
786 AM_CONDITIONAL([XLNX_PCIE_XVC], [test "x$build_xlnx_pcie_xvc" = "xyes"])
787 AM_CONDITIONAL([USE_LIBUSB0], [test "x$use_libusb0" = "xyes"])
788 AM_CONDITIONAL([USE_LIBUSB1], [test "x$use_libusb1" = "xyes"])
789 AM_CONDITIONAL([IS_CYGWIN], [test "x$is_cygwin" = "xyes"])
790 AM_CONDITIONAL([IS_MINGW], [test "x$is_mingw" = "xyes"])
791 AM_CONDITIONAL([IS_WIN32], [test "x$is_win32" = "xyes"])
792 AM_CONDITIONAL([IS_DARWIN], [test "x$is_darwin" = "xyes"])
793 AM_CONDITIONAL([BITQ], [test "x$build_bitq" = "xyes"])
794 AM_CONDITIONAL([USE_LIBFTDI], [test "x$use_libftdi" = "xyes"])
795 AM_CONDITIONAL([USE_LIBGPIOD], [test "x$use_libgpiod" = "xyes"])
796 AM_CONDITIONAL([USE_HIDAPI], [test "x$use_hidapi" = "xyes"])
797 AM_CONDITIONAL([USE_LIBJAYLINK], [test "x$use_libjaylink" = "xyes"])
798 AM_CONDITIONAL([RSHIM], [test "x$build_rshim" = "xyes"])
799 AM_CONDITIONAL([HAVE_CAPSTONE], [test "x$enable_capstone" != "xno"])
801 AM_CONDITIONAL([MINIDRIVER], [test "x$build_minidriver" = "xyes"])
802 AM_CONDITIONAL([MINIDRIVER_DUMMY], [test "x$build_minidriver_dummy" = "xyes"])
804 AM_CONDITIONAL([INTERNAL_JIMTCL], [test "x$use_internal_jimtcl" = "xyes"])
805 AM_CONDITIONAL([INTERNAL_LIBJAYLINK], [test "x$use_internal_libjaylink" = "xyes"])
807 # Look for environ alternatives. Possibility #1: is environ in unistd.h or stdlib.h?
808 AC_MSG_CHECKING([for environ in unistd.h and stdlib.h])
809 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
813 ]], [[char **ep = environ;]]
820 # Possibility #2: can environ be found in an available library?
821 AC_MSG_CHECKING([for extern environ])
822 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
823 extern char **environ;
824 ]], [[char **ep = environ;]]
826 AC_DEFINE(NEED_ENVIRON_EXTERN, [1], [Must declare 'environ' to use it.])
831 AC_MSG_RESULT([${has_environ}])
834 AS_IF([test "x${has_environ}" != "xyes" ], [
835 AC_MSG_FAILURE([Could not find 'environ' in unistd.h or available libraries.])
838 AC_DEFINE([_GNU_SOURCE],[1],[Use GNU C library extensions (e.g. stdndup).])
840 # set default gcc warnings
841 GCC_WARNINGS="-Wall -Wstrict-prototypes -Wformat-security -Wshadow"
842 AS_IF([test "x${gcc_wextra}" = "xyes"], [
843 GCC_WARNINGS="${GCC_WARNINGS} -Wextra -Wno-unused-parameter"
844 GCC_WARNINGS="${GCC_WARNINGS} -Wbad-function-cast"
845 GCC_WARNINGS="${GCC_WARNINGS} -Wcast-align"
846 GCC_WARNINGS="${GCC_WARNINGS} -Wredundant-decls"
847 GCC_WARNINGS="${GCC_WARNINGS} -Wpointer-arith"
849 AS_IF([test "x${gcc_werror}" = "xyes"], [
850 GCC_WARNINGS="${GCC_WARNINGS} -Werror"
853 # override default gcc cflags
854 AS_IF([test "x$gcc_warnings" = "xyes"], [
855 AC_SUBST([GCC_WARNINGS], [$GCC_WARNINGS])
865 echo OpenOCD configuration summary
866 echo --------------------------------------------------
867 m4_foreach([adapter], [USB1_ADAPTERS, USB0_ADAPTERS,
868 HIDAPI_ADAPTERS, HIDAPI_USB1_ADAPTERS, LIBFTDI_ADAPTERS,
869 LIBFTDI_USB1_ADAPTERS,
871 LIBJAYLINK_ADAPTERS, PCIE_ADAPTERS,
873 [s=m4_format(["%-40s"], ADAPTER_DESC([adapter]))
874 AS_CASE([$ADAPTER_VAR([adapter])],
876 echo "$s"yes '(auto)'
887 AS_IF([test "x$build_oocd_trace" = "xyes"], [
888 echo 'WARNING! Deprecated configure option (--enable-oocd_trace)'
889 echo 'The oocd_trace driver is deprecated and will be removed in the next release.'
890 echo 'If you regularly use this driver, please report to the OpenOCD Mailing List.'
894 AS_IF([test "x$build_zy1000" = "xyes" -o "x$build_zy1000_master" = "xyes"], [
895 echo 'WARNING! Deprecated configure option (--enable-zy1000, --enable-zy1000-master)'
896 echo 'Support for the ZY1000 platform is deprecated and will be removed in the next'
897 echo 'release. If you regularly use this platform, please report to the OpenOCD'
902 AS_IF([test "x$build_ioutil" = "xyes"], [
903 echo 'WARNING! Deprecated configure option (--enable-ioutil)'
904 echo 'Support for the ioutil functions is deprecated and will be removed in the next'
905 echo 'release. If you regularly depend on this functionality, please report to the'
906 echo 'OpenOCD Mailing List.'