2 AC_INIT([openocd], [0.10.0+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>
31 PKG_PROG_PKG_CONFIG([0.23])
33 dnl disable checks for C++, Fortran and GNU Java Compiler
34 m4_defun([_LT_AC_LANG_CXX_CONFIG], [:])
35 m4_defun([_LT_AC_LANG_F77_CONFIG], [:])
36 m4_defun([_LT_AC_LANG_GCJ_CONFIG], [:])
39 AC_SUBST([LIBTOOL_DEPS])
41 dnl configure checks required for Jim files (these are obsolete w/ C99)
45 AC_SEARCH_LIBS([ioperm], [ioperm])
46 AC_SEARCH_LIBS([dlopen], [dl])
48 AC_CHECK_HEADERS([sys/socket.h])
49 AC_CHECK_HEADERS([elf.h])
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
75 #ifdef HAVE_SYS_SOCKET_H
76 # include <sys/socket.h>
86 AC_CHECK_FUNCS([strndup])
87 AC_CHECK_FUNCS([strnlen])
88 AC_CHECK_FUNCS([gettimeofday])
89 AC_CHECK_FUNCS([usleep])
90 AC_CHECK_FUNCS([vasprintf])
91 AC_CHECK_FUNCS([realpath])
93 # guess-rev.sh only exists in the repository, not in the released archives
94 AC_MSG_CHECKING([whether to build a release])
95 AS_IF([test -x "$srcdir/guess-rev.sh"], [
100 AC_MSG_RESULT([$build_release])
103 # 1st column -- configure option
104 # 2nd column -- description
105 # 3rd column -- symbol used for both config.h and automake
106 m4_define([ADAPTER_ARG], [m4_argn([1], $1)])
107 m4_define([ADAPTER_DESC], [m4_argn([2], $1)])
108 m4_define([ADAPTER_SYM], [m4_argn([3], $1)])
109 m4_define([ADAPTER_VAR], [enable_[]ADAPTER_ARG($1)])
110 m4_define([ADAPTER_OPT], [m4_translit(ADAPTER_ARG($1), [_], [-])])
112 m4_define([USB1_ADAPTERS],
113 [[[ftdi], [MPSSE mode of FTDI based devices], [FTDI]],
114 [[stlink], [ST-Link Programmer], [HLADAPTER_STLINK]],
115 [[ti_icdi], [TI ICDI JTAG Programmer], [HLADAPTER_ICDI]],
116 [[ulink], [Keil ULINK JTAG Programmer], [ULINK]],
117 [[usb_blaster_2], [Altera USB-Blaster II Compatible], [USB_BLASTER_2]],
118 [[ft232r], [Bitbang mode of FT232R based devices], [FT232R]],
119 [[vsllink], [Versaloon-Link JTAG Programmer], [VSLLINK]],
120 [[xds110], [TI XDS110 Debug Probe], [XDS110]],
121 [[osbdm], [OSBDM (JTAG only) Programmer], [OSBDM]],
122 [[opendous], [eStick/opendous JTAG Programmer], [OPENDOUS]],
123 [[aice], [Andes JTAG Programmer], [AICE]]])
125 m4_define([USB0_ADAPTERS],
126 [[[usbprog], [USBProg JTAG Programmer], [USBPROG]],
127 [[rlink], [Raisonance RLink JTAG Programmer], [RLINK]],
128 [[armjtagew], [Olimex ARM-JTAG-EW Programmer], [ARMJTAGEW]]])
130 m4_define([HIDAPI_ADAPTERS],
131 [[[cmsis_dap], [CMSIS-DAP Compliant Debugger], [CMSIS_DAP]],
132 [[nulink], [Nu-Link Programmer], [HLADAPTER_NULINK]]])
134 m4_define([HIDAPI_USB1_ADAPTERS],
135 [[[kitprog], [Cypress KitProg Programmer], [KITPROG]]])
137 m4_define([LIBFTDI_ADAPTERS],
138 [[[usb_blaster], [Altera USB-Blaster Compatible], [USB_BLASTER]],
139 [[presto], [ASIX Presto Adapter], [PRESTO]],
140 [[openjtag], [OpenJTAG Adapter], [OPENJTAG]]])
142 m4_define([LIBGPIOD_ADAPTERS],
143 [[[linuxgpiod], [Linux GPIO bitbang through libgpiod], [LINUXGPIOD]]])
145 m4_define([LIBJAYLINK_ADAPTERS],
146 [[[jlink], [SEGGER J-Link Programmer], [JLINK]]])
148 m4_define([PCIE_ADAPTERS],
149 [[[xlnx_pcie_xvc], [Xilinx XVC/PCIe], [XLNX_PCIE_XVC]]])
152 AC_ARG_ENABLE([doxygen-html],
153 AS_HELP_STRING([--disable-doxygen-html],
154 [Disable building Doxygen manual as HTML.]),
155 [doxygen_as_html=$enableval], [doxygen_as_html=yes])
156 AC_SUBST([doxygen_as_html])
157 AC_MSG_CHECKING([whether to build Doxygen as HTML])
158 AC_MSG_RESULT([$doxygen_as_html])
160 AC_ARG_ENABLE([doxygen-pdf],
161 AS_HELP_STRING([--enable-doxygen-pdf],
162 [Enable building Doxygen manual as PDF.]),
163 [doxygen_as_pdf=$enableval], [doxygen_as_pdf=no])
164 AC_SUBST([doxygen_as_pdf])
165 AC_MSG_CHECKING([whether to build Doxygen as PDF])
166 AC_MSG_RESULT([$doxygen_as_pdf])
168 AC_ARG_ENABLE([gccwarnings],
169 AS_HELP_STRING([--disable-gccwarnings], [Disable compiler warnings]),
170 [gcc_warnings=$enableval], [gcc_warnings=yes])
172 AC_ARG_ENABLE([wextra],
173 AS_HELP_STRING([--disable-wextra], [Disable extra compiler warnings]),
174 [gcc_wextra=$enableval], [gcc_wextra=$gcc_warnings])
176 AC_ARG_ENABLE([werror],
177 AS_HELP_STRING([--disable-werror], [Do not treat warnings as errors]),
178 [gcc_werror=$enableval], [gcc_werror=$gcc_warnings])
180 # set default verbose options, overridden by following options
184 AC_ARG_ENABLE([verbose],
185 AS_HELP_STRING([--enable-verbose],
186 [Enable verbose JTAG I/O messages (for debugging).]),
188 debug_usb_io=$enableval
189 debug_usb_comms=$enableval
192 AC_ARG_ENABLE([verbose_usb_io],
193 AS_HELP_STRING([--enable-verbose-usb-io],
194 [Enable verbose USB I/O messages (for debugging)]),
195 [debug_usb_io=$enableval], [])
197 AC_ARG_ENABLE([verbose_usb_comms],
198 AS_HELP_STRING([--enable-verbose-usb-comms],
199 [Enable verbose USB communication messages (for debugging)]),
200 [debug_usb_comms=$enableval], [])
202 AC_MSG_CHECKING([whether to enable verbose USB I/O messages]);
203 AC_MSG_RESULT([$debug_usb_io])
204 AS_IF([test "x$debug_usb_io" = "xyes"], [
205 AC_DEFINE([_DEBUG_USB_IO_],[1], [Print verbose USB I/O messages])
208 AC_MSG_CHECKING([whether to enable verbose USB communication messages]);
209 AC_MSG_RESULT([$debug_usb_comms])
210 AS_IF([test "x$debug_usb_comms" = "xyes"], [
211 AC_DEFINE([_DEBUG_USB_COMMS_],[1], [Print verbose USB communication messages])
215 AC_ARG_ENABLE([malloc_logging],
216 AS_HELP_STRING([--enable-malloc-logging],
217 [Include free space in logging messages (requires malloc.h).]),
218 [debug_malloc=$enableval], [])
220 AC_MSG_CHECKING([whether to enable malloc free space logging]);
221 AC_MSG_RESULT([$debug_malloc])
222 AS_IF([test "x$debug_malloc" = "xyes"], [
223 AC_DEFINE([_DEBUG_FREE_SPACE_],[1], [Include malloc free space in logging])
226 AC_ARG_ENABLE([dummy],
227 AS_HELP_STRING([--enable-dummy], [Enable building the dummy port driver]),
228 [build_dummy=$enableval], [build_dummy=no])
230 AC_ARG_ENABLE([rshim],
231 AS_HELP_STRING([--enable-rshim], [Enable building the rshim driver]),
232 [build_rshim=$enableval], [build_rshim=no])
234 m4_define([AC_ARG_ADAPTERS], [
235 m4_foreach([adapter], [$1],
236 [AC_ARG_ENABLE(ADAPTER_OPT([adapter]),
237 AS_HELP_STRING([--enable-ADAPTER_OPT([adapter])],
238 [Enable building support for the ]ADAPTER_DESC([adapter])[ (default is $2)]),
239 [], [ADAPTER_VAR([adapter])=$2])
247 HIDAPI_USB1_ADAPTERS,
253 AC_ARG_ENABLE([parport],
254 AS_HELP_STRING([--enable-parport], [Enable building the pc parallel port driver]),
255 [build_parport=$enableval], [build_parport=no])
257 AC_ARG_ENABLE([parport_ppdev],
258 AS_HELP_STRING([--disable-parport-ppdev],
259 [Disable use of ppdev (/dev/parportN) for parport (for x86 only)]),
260 [parport_use_ppdev=$enableval], [parport_use_ppdev=yes])
262 AC_ARG_ENABLE([parport_giveio],
263 AS_HELP_STRING([--enable-parport-giveio],
264 [Enable use of giveio for parport (for CygWin only)]),
265 [parport_use_giveio=$enableval], [parport_use_giveio=])
267 AC_ARG_ENABLE([jtag_vpi],
268 AS_HELP_STRING([--enable-jtag_vpi], [Enable building support for JTAG VPI]),
269 [build_jtag_vpi=$enableval], [build_jtag_vpi=no])
271 AC_ARG_ENABLE([jtag_dpi],
272 AS_HELP_STRING([--enable-jtag_dpi], [Enable building support for JTAG DPI]),
273 [build_jtag_dpi=$enableval], [build_jtag_dpi=no])
275 AC_ARG_ENABLE([amtjtagaccel],
276 AS_HELP_STRING([--enable-amtjtagaccel], [Enable building the Amontec JTAG-Accelerator driver]),
277 [build_amtjtagaccel=$enableval], [build_amtjtagaccel=no])
279 AC_ARG_ENABLE([zy1000_master],
280 AS_HELP_STRING([--enable-zy1000-master], [Use ZY1000 JTAG master registers]),
281 [build_zy1000_master=$enableval], [build_zy1000_master=no])
283 AC_ARG_ENABLE([zy1000],
284 AS_HELP_STRING([--enable-zy1000], [Enable ZY1000 interface]),
285 [build_zy1000=$enableval], [build_zy1000=no])
287 AC_ARG_ENABLE([ioutil],
288 AS_HELP_STRING([--enable-ioutil], [Enable ioutil functions - useful for standalone OpenOCD implementations]),
289 [build_ioutil=$enableval], [build_ioutil=no])
291 AS_CASE(["${host_cpu}"],
293 AC_ARG_ENABLE([bcm2835gpio],
294 AS_HELP_STRING([--enable-bcm2835gpio], [Enable building support for bitbanging on BCM2835 (as found in Raspberry Pi)]),
295 [build_bcm2835gpio=$enableval], [build_bcm2835gpio=no])
296 AC_ARG_ENABLE([imx_gpio],
297 AS_HELP_STRING([--enable-imx_gpio], [Enable building support for bitbanging on NXP IMX processors]),
298 [build_imx_gpio=$enableval], [build_imx_gpio=no])
305 AS_CASE(["${host_cpu}"],
307 AC_ARG_ENABLE([ep93xx],
308 AS_HELP_STRING([--enable-ep93xx], [Enable building support for EP93xx based SBCs]),
309 [build_ep93xx=$enableval], [build_ep93xx=no])
311 AC_ARG_ENABLE([at91rm9200],
312 AS_HELP_STRING([--enable-at91rm9200], [Enable building support for AT91RM9200 based SBCs]),
313 [build_at91rm9200=$enableval], [build_at91rm9200=no])
320 AC_ARG_ENABLE([gw16012],
321 AS_HELP_STRING([--enable-gw16012], [Enable building support for the Gateworks GW16012 JTAG Programmer]),
322 [build_gw16012=$enableval], [build_gw16012=no])
324 AC_ARG_ENABLE([oocd_trace],
325 AS_HELP_STRING([--enable-oocd_trace],
326 [Enable building support for some prototype OpenOCD+trace ETM capture hardware]),
327 [build_oocd_trace=$enableval], [build_oocd_trace=no])
329 AC_ARG_ENABLE([buspirate],
330 AS_HELP_STRING([--enable-buspirate], [Enable building support for the Buspirate]),
331 [build_buspirate=$enableval], [build_buspirate=no])
333 AC_ARG_ENABLE([sysfsgpio],
334 AS_HELP_STRING([--enable-sysfsgpio], [Enable building support for programming driven via sysfs gpios.]),
335 [build_sysfsgpio=$enableval], [build_sysfsgpio=no])
337 AC_ARG_ENABLE([xlnx_pcie_xvc],
338 AS_HELP_STRING([--enable-xlnx-pcie-xvc], [Enable building support for Xilinx XVC/PCIe.]),
339 [build_xlnx_pcie_xvc=$enableval], [build_xlnx_pcie_xvc=no])
344 AS_IF([test "x$build_sysfsgpio" = "xyes"], [
345 AC_MSG_ERROR([sysfsgpio is only available on linux])
348 AS_IF([test "x$enable_linuxgpiod" = "xyes"], [
349 AC_MSG_ERROR([linuxgpiod is only available on linux])
352 AS_IF([test "x$build_xlnx_pcie_xvc" = "xyes"], [
353 AC_MSG_ERROR([xlnx_pcie_xvc is only available on linux])
356 AS_CASE([$host_os], [freebsd*], [],
358 AS_IF([test "x$build_rshim" = "xyes"], [
359 AC_MSG_ERROR([build_rshim is only available on linux or freebsd])
364 AC_ARG_ENABLE([minidriver_dummy],
365 AS_HELP_STRING([--enable-minidriver-dummy], [Enable the dummy minidriver.]),
366 [build_minidriver_dummy=$enableval], [build_minidriver_dummy=no])
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])
372 AC_ARG_ENABLE([internal-libjaylink],
373 AS_HELP_STRING([--disable-internal-libjaylink],
374 [Disable building internal libjaylink]),
375 [use_internal_libjaylink=$enableval], [use_internal_libjaylink=yes])
378 AC_MSG_CHECKING([whether to enable ZY1000 minidriver])
379 AS_IF([test "x$build_zy1000" = "xyes"], [
380 AS_IF([test "x$build_minidriver" = "xyes"], [
381 AC_MSG_ERROR([Multiple minidriver options have been enabled.])
383 AC_DEFINE([HAVE_JTAG_MINIDRIVER_H], [1],
384 [Define to 1 if you have the <jtag_minidriver.h> header file.])
387 AC_MSG_RESULT([$build_zy1000])
389 AC_ARG_ENABLE([remote-bitbang],
390 AS_HELP_STRING([--enable-remote-bitbang], [Enable building support for the Remote Bitbang jtag driver]),
391 [build_remote_bitbang=$enableval], [build_remote_bitbang=no])
393 AC_MSG_CHECKING([whether to enable dummy minidriver])
394 AS_IF([test "x$build_minidriver_dummy" = "xyes"], [
395 AS_IF([test "x$build_minidriver" = "xyes"], [
396 AC_MSG_ERROR([Multiple minidriver options have been enabled.])
399 AC_DEFINE([BUILD_MINIDRIVER_DUMMY], [1], [Use the dummy minidriver.])
400 AC_DEFINE([HAVE_JTAG_MINIDRIVER_H], [1],
401 [Define to 1 if you have the <jtag_minidriver.h> header file.])
403 AC_MSG_RESULT([$build_minidriver_dummy])
405 AC_MSG_CHECKING([whether standard drivers can be built])
406 AS_IF([test "x$build_minidriver" = "xyes"], [
408 AC_MSG_WARN([Using the minidriver disables all other drivers.])
414 AS_CASE(["${host_cpu}"],
417 AS_IF([test "x$parport_use_ppdev" = "xno"], [
418 AC_MSG_WARN([--disable-parport-ppdev is not supported by the host CPU])
420 parport_use_ppdev=yes
428 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[return __MINGW32__;]])],
429 [is_mingw=yes],[is_mingw=no])
430 AS_IF([test "x$is_mingw" = "xyes"], [
431 AS_IF([test "x$parport_use_giveio" = "xno"], [
432 AC_MSG_WARN([--disable-parport-giveio is not supported by MinGW32 hosts])
434 parport_use_giveio=yes
438 # sys/io.h needed under cygwin for parport access
439 AS_IF([test "x$build_parport" = "xyes"], [
440 AC_CHECK_HEADERS([sys/io.h],[],AC_MSG_ERROR([Please install the cygwin ioperm package]))
444 [*-mingw* | *-msys*], [
449 AS_IF([test "x$parport_use_giveio" = "xno"], [
450 AC_MSG_WARN([--disable-parport-giveio is not supported by MinGW32 hosts])
452 parport_use_giveio=yes
454 AS_IF([test "x$build_buspirate" = "xyes"], [
455 AC_MSG_ERROR([buspirate currently not supported by MinGW32 hosts])
458 AC_SUBST([HOST_CPPFLAGS], [-D__USE_MINGW_ANSI_STDIO])
463 AS_IF([test "x$parport_use_giveio" = "xyes"], [
464 AC_MSG_WARN([--enable-parport-giveio cannot be used by Darwin hosts])
466 parport_use_giveio=no
469 AS_IF([test "x$parport_use_giveio" = "xyes"], [
470 AC_MSG_WARN([--enable-parport-giveio cannot be used by ]$host[ hosts])
472 parport_use_giveio=no
475 AS_IF([test "x$is_cygwin" = "xyes"], [
476 AC_DEFINE([IS_CYGWIN], [1], [1 if building for Cygwin.])
478 AC_DEFINE([IS_CYGWIN], [0], [0 if not building for Cygwin.])
481 AS_IF([test "x$is_mingw" = "xyes"], [
482 AC_DEFINE([IS_MINGW], [1], [1 if building for Mingw.])
484 AC_DEFINE([IS_MINGW], [0], [0 if not building for Mingw.])
487 AS_IF([test "x$is_win32" = "xyes"], [
488 AC_DEFINE([IS_WIN32], [1], [1 if building for Win32.])
490 AC_DEFINE([IS_WIN32], [0], [0 if not building for Win32.])
493 AS_IF([test "x$is_darwin" = "xyes"], [
494 AC_DEFINE([IS_DARWIN], [1], [1 if building for Darwin.])
496 AC_DEFINE([IS_DARWIN], [0], [0 if not building for Darwin.])
499 AS_IF([test "x$build_parport" = "xyes"], [
501 AC_DEFINE([BUILD_PARPORT], [1], [1 if you want parport.])
503 AC_DEFINE([BUILD_PARPORT], [0], [0 if you don't want parport.])
506 AS_IF([test "x$build_rshim" = "xyes"], [
507 AC_DEFINE([BUILD_RSHIM], [1], [1 if you want to debug BlueField SoC via rshim.])
509 AC_DEFINE([BUILD_RSHIM], [0], [0 if you don't want to debug BlueField SoC via rshim.])
512 AS_IF([test "x$build_dummy" = "xyes"], [
514 AC_DEFINE([BUILD_DUMMY], [1], [1 if you want dummy driver.])
516 AC_DEFINE([BUILD_DUMMY], [0], [0 if you don't want dummy driver.])
519 AS_IF([test "x$build_ep93xx" = "xyes"], [
521 AC_DEFINE([BUILD_EP93XX], [1], [1 if you want ep93xx.])
523 AC_DEFINE([BUILD_EP93XX], [0], [0 if you don't want ep93xx.])
526 AS_IF([test "x$build_zy1000" = "xyes"], [
527 AC_DEFINE([BUILD_ZY1000], [1], [1 if you want ZY1000.])
529 AC_DEFINE([BUILD_ZY1000], [0], [0 if you don't want ZY1000.])
532 AS_IF([test "x$build_zy1000_master" = "xyes"], [
533 AC_DEFINE([BUILD_ZY1000_MASTER], [1], [1 if you want ZY1000 JTAG master registers.])
535 AC_DEFINE([BUILD_ZY1000_MASTER], [0], [0 if you don't want ZY1000 JTAG master registers.])
538 AS_IF([test "x$build_at91rm9200" = "xyes"], [
540 AC_DEFINE([BUILD_AT91RM9200], [1], [1 if you want at91rm9200.])
542 AC_DEFINE([BUILD_AT91RM9200], [0], [0 if you don't want at91rm9200.])
545 AS_IF([test "x$build_bcm2835gpio" = "xyes"], [
547 AC_DEFINE([BUILD_BCM2835GPIO], [1], [1 if you want bcm2835gpio.])
549 AC_DEFINE([BUILD_BCM2835GPIO], [0], [0 if you don't want bcm2835gpio.])
552 AS_IF([test "x$build_imx_gpio" = "xyes"], [
554 AC_DEFINE([BUILD_IMX_GPIO], [1], [1 if you want imx_gpio.])
556 AC_DEFINE([BUILD_IMX_GPIO], [0], [0 if you don't want imx_gpio.])
559 AS_IF([test "x$parport_use_ppdev" = "xyes"], [
560 AC_DEFINE([PARPORT_USE_PPDEV], [1], [1 if you want parport to use ppdev.])
562 AC_DEFINE([PARPORT_USE_PPDEV], [0], [0 if you don't want parport to use ppdev.])
565 AS_IF([test "x$parport_use_giveio" = "xyes"], [
566 AC_DEFINE([PARPORT_USE_GIVEIO], [1], [1 if you want parport to use giveio.])
568 AC_DEFINE([PARPORT_USE_GIVEIO], [0], [0 if you don't want parport to use giveio.])
571 AS_IF([test "x$build_jtag_vpi" = "xyes"], [
572 AC_DEFINE([BUILD_JTAG_VPI], [1], [1 if you want JTAG VPI.])
574 AC_DEFINE([BUILD_JTAG_VPI], [0], [0 if you don't want JTAG VPI.])
577 AS_IF([test "x$build_jtag_dpi" = "xyes"], [
578 AC_DEFINE([BUILD_JTAG_DPI], [1], [1 if you want JTAG DPI.])
580 AC_DEFINE([BUILD_JTAG_DPI], [0], [0 if you don't want JTAG DPI.])
584 AS_IF([test "x$build_amtjtagaccel" = "xyes"], [
585 AC_DEFINE([BUILD_AMTJTAGACCEL], [1], [1 if you want the Amontec JTAG-Accelerator driver.])
587 AC_DEFINE([BUILD_AMTJTAGACCEL], [0], [0 if you don't want the Amontec JTAG-Accelerator driver.])
590 AS_IF([test "x$build_gw16012" = "xyes"], [
591 AC_DEFINE([BUILD_GW16012], [1], [1 if you want the Gateworks GW16012 driver.])
593 AC_DEFINE([BUILD_GW16012], [0], [0 if you don't want the Gateworks GW16012 driver.])
596 AS_IF([test "x$build_oocd_trace" = "xyes"], [
597 AC_DEFINE([BUILD_OOCD_TRACE], [1], [1 if you want the OpenOCD+trace ETM capture driver.])
599 AC_DEFINE([BUILD_OOCD_TRACE], [0], [0 if you don't want the OpenOCD+trace ETM capture driver.])
602 AS_IF([test "x$build_buspirate" = "xyes"], [
603 AC_DEFINE([BUILD_BUSPIRATE], [1], [1 if you want the Buspirate JTAG driver.])
605 AC_DEFINE([BUILD_BUSPIRATE], [0], [0 if you don't want the Buspirate JTAG driver.])
608 AS_IF([test "x$use_internal_jimtcl" = "xyes"], [
609 AS_IF([test -f "$srcdir/jimtcl/configure.ac"], [
610 AX_CONFIG_SUBDIR_OPTION([jimtcl], [--disable-install-jim])
612 AC_MSG_ERROR([jimtcl not found, run git submodule init and git submodule update.])
616 AS_IF([test "x$build_remote_bitbang" = "xyes"], [
618 AC_DEFINE([BUILD_REMOTE_BITBANG], [1], [1 if you want the Remote Bitbang JTAG driver.])
620 AC_DEFINE([BUILD_REMOTE_BITBANG], [0], [0 if you don't want the Remote Bitbang JTAG driver.])
623 AS_IF([test "x$build_sysfsgpio" = "xyes"], [
625 AC_DEFINE([BUILD_SYSFSGPIO], [1], [1 if you want the SysfsGPIO driver.])
627 AC_DEFINE([BUILD_SYSFSGPIO], [0], [0 if you don't want SysfsGPIO driver.])
630 AS_IF([test "x$build_xlnx_pcie_xvc" = "xyes"], [
631 build_xlnx_pcie_xvc=yes
632 AC_DEFINE([BUILD_XLNX_PCIE_XVC], [1], [1 if you want the Xilinx XVC/PCIe driver.])
634 AC_DEFINE([BUILD_XLNX_PCIE_XVC], [0], [0 if you don't want Xilinx XVC/PCIe driver.])
637 PKG_CHECK_MODULES([LIBUSB1], [libusb-1.0], [
639 AC_DEFINE([HAVE_LIBUSB1], [1], [Define if you have libusb-1.x])
640 PKG_CHECK_EXISTS([libusb-1.0 >= 1.0.9],
641 [AC_DEFINE([HAVE_LIBUSB_ERROR_NAME], [1], [Define if your libusb has libusb_error_name()])],
642 [AC_MSG_WARN([libusb-1.x older than 1.0.9 detected, consider updating])])
643 LIBUSB1_CFLAGS=`echo $LIBUSB1_CFLAGS | sed 's/-I/-isystem /'`
644 AC_MSG_NOTICE([libusb-1.0 header bug workaround: LIBUSB1_CFLAGS changed to "$LIBUSB1_CFLAGS"])
645 PKG_CHECK_EXISTS([libusb-1.0 >= 1.0.16],
646 [AC_DEFINE([HAVE_LIBUSB_GET_PORT_NUMBERS], [1], [Define if your libusb has libusb_get_port_numbers()])])
649 AC_MSG_WARN([libusb-1.x not found, trying legacy libusb-0.1 as a fallback; consider installing libusb-1.x instead])
652 PKG_CHECK_MODULES([LIBUSB0], [libusb], [use_libusb0=yes], [use_libusb0=no])
654 PKG_CHECK_MODULES([CAPSTONE], [capstone], [have_capstone=yes],
657 AS_IF([test "x$have_capstone" = "xyes"], [
658 AC_DEFINE([HAVE_CAPSTONE], [1], [1 if you have captone disassembly framework.])
660 AC_DEFINE([HAVE_CAPSTONE], [0], [0 if you don't have captone disassembly framework.])
663 for hidapi_lib in hidapi hidapi-hidraw hidapi-libusb; do
664 PKG_CHECK_MODULES([HIDAPI],[$hidapi_lib],[
672 PKG_CHECK_MODULES([LIBFTDI], [libftdi1], [use_libftdi=yes], [
673 PKG_CHECK_MODULES([LIBFTDI], [libftdi], [use_libftdi=yes], [use_libftdi=no])
676 PKG_CHECK_MODULES([LIBGPIOD], [libgpiod], [use_libgpiod=yes], [use_libgpiod=no])
678 PKG_CHECK_MODULES([LIBJAYLINK], [libjaylink >= 0.2],
679 [use_libjaylink=yes], [use_libjaylink=no])
681 m4_define([PROCESS_ADAPTERS], [
682 m4_foreach([adapter], [$1], [
683 AS_IF([test "x$build_zy1000" = "xyes"], [
684 ADAPTER_VAR([adapter])=no
687 AS_IF([test "x$ADAPTER_VAR([adapter])" != "xno"], [
688 AC_DEFINE([BUILD_]ADAPTER_SYM([adapter]), [1], [1 if you want the ]ADAPTER_DESC([adapter]).)
690 AC_DEFINE([BUILD_]ADAPTER_SYM([adapter]), [0], [0 if you do not want the ]ADAPTER_DESC([adapter]).)
693 AS_IF([test "x$ADAPTER_VAR([adapter])" = "xyes"], [
694 AC_MSG_ERROR([$3 is required for the ADAPTER_DESC([adapter])])
696 ADAPTER_VAR([adapter])=no
698 AM_CONDITIONAL(ADAPTER_SYM([adapter]), [test "x$ADAPTER_VAR([adapter])" != "xno"])
702 PROCESS_ADAPTERS([USB1_ADAPTERS], ["x$use_libusb1" = "xyes"], [libusb-1.x])
703 PROCESS_ADAPTERS([USB0_ADAPTERS], ["x$use_libusb0" = "xyes"], [libusb-0.1])
704 PROCESS_ADAPTERS([HIDAPI_ADAPTERS], ["x$use_hidapi" = "xyes"], [hidapi])
705 PROCESS_ADAPTERS([HIDAPI_USB1_ADAPTERS], ["x$use_hidapi" = "xyes" -a "x$use_libusb1" = "xyes"], [hidapi and libusb-1.x])
706 PROCESS_ADAPTERS([LIBFTDI_ADAPTERS], ["x$use_libftdi" = "xyes"], [libftdi])
707 PROCESS_ADAPTERS([LIBGPIOD_ADAPTERS], ["x$use_libgpiod" = "xyes"], [libgpiod])
708 PROCESS_ADAPTERS([LIBJAYLINK_ADAPTERS], ["x$use_internal_libjaylink" = "xyes" -o "x$use_libjaylink" = "xyes"], [libjaylink-0.2])
710 AS_IF([test "x$build_openjtag" = "xyes"], [
711 AS_IF([test "x$use_libusb1" != "xyes" -a "x$use_libusb0" != "xyes"], [
712 AC_MSG_ERROR([libusb-1.x or libusb-0.1 is required for the OpenJTAG Programmer])
717 AS_IF([test "x$enable_linuxgpiod" != "xno"], [
721 AS_IF([test "x$enable_stlink" != "xno" -o "x$enable_ti_icdi" != "xno" -o "x$enable_nulink" != "xno"], [
722 AC_DEFINE([BUILD_HLADAPTER], [1], [1 if you want the High Level JTAG driver.])
723 AM_CONDITIONAL([HLADAPTER], [true])
725 AC_DEFINE([BUILD_HLADAPTER], [0], [0 if you want the High Level JTAG driver.])
726 AM_CONDITIONAL([HLADAPTER], [false])
728 AM_CONDITIONAL([HLADAPTER_STLINK], [test "x$enable_stlink" != "xno"])
729 AM_CONDITIONAL([HLADAPTER_ICDI], [test "x$enable_ti_icdi" != "xno"])
730 AM_CONDITIONAL([HLADAPTER_NULINK], [test "x$enable_nulink" != "xno"])
732 AS_IF([test "x$enable_jlink" != "xno"], [
733 AS_IF([test "x$use_internal_libjaylink" = "xyes"], [
734 AS_IF([test -f "$srcdir/src/jtag/drivers/libjaylink/configure.ac"], [
735 AX_CONFIG_SUBDIR_OPTION([src/jtag/drivers/libjaylink],
736 [--enable-subproject-build])
738 AC_MSG_ERROR([Internal libjaylink not found, run either 'git submodule init' and 'git submodule update' or disable internal libjaylink with --disable-internal-libjaylink.])
743 # Presto needs the bitq module
744 AS_IF([test "x$enable_presto" != "xno"], [
748 AM_CONDITIONAL([RELEASE], [test "x$build_release" = "xyes"])
749 AM_CONDITIONAL([PARPORT], [test "x$build_parport" = "xyes"])
750 AM_CONDITIONAL([DUMMY], [test "x$build_dummy" = "xyes"])
751 AM_CONDITIONAL([GIVEIO], [test "x$parport_use_giveio" = "xyes"])
752 AM_CONDITIONAL([EP93XX], [test "x$build_ep93xx" = "xyes"])
753 AM_CONDITIONAL([ZY1000], [test "x$build_zy1000" = "xyes"])
754 AM_CONDITIONAL([ZY1000_MASTER], [test "x$build_zy1000_master" = "xyes"])
755 AM_CONDITIONAL([IOUTIL], [test "x$build_ioutil" = "xyes"])
756 AM_CONDITIONAL([AT91RM9200], [test "x$build_at91rm9200" = "xyes"])
757 AM_CONDITIONAL([BCM2835GPIO], [test "x$build_bcm2835gpio" = "xyes"])
758 AM_CONDITIONAL([IMX_GPIO], [test "x$build_imx_gpio" = "xyes"])
759 AM_CONDITIONAL([BITBANG], [test "x$build_bitbang" = "xyes"])
760 AM_CONDITIONAL([JTAG_VPI], [test "x$build_jtag_vpi" = "xyes" -o "x$build_jtag_vpi" = "xyes"])
761 AM_CONDITIONAL([JTAG_DPI], [test "x$build_jtag_dpi" = "xyes" -o "x$build_jtag_dpi" = "xyes"])
762 AM_CONDITIONAL([USB_BLASTER_DRIVER], [test "x$enable_usb_blaster" != "xno" -o "x$enable_usb_blaster_2" != "xno"])
763 AM_CONDITIONAL([AMTJTAGACCEL], [test "x$build_amtjtagaccel" = "xyes"])
764 AM_CONDITIONAL([GW16012], [test "x$build_gw16012" = "xyes"])
765 AM_CONDITIONAL([OOCD_TRACE], [test "x$build_oocd_trace" = "xyes"])
766 AM_CONDITIONAL([REMOTE_BITBANG], [test "x$build_remote_bitbang" = "xyes"])
767 AM_CONDITIONAL([BUSPIRATE], [test "x$build_buspirate" = "xyes"])
768 AM_CONDITIONAL([SYSFSGPIO], [test "x$build_sysfsgpio" = "xyes"])
769 AM_CONDITIONAL([XLNX_PCIE_XVC], [test "x$build_xlnx_pcie_xvc" = "xyes"])
770 AM_CONDITIONAL([USE_LIBUSB0], [test "x$use_libusb0" = "xyes"])
771 AM_CONDITIONAL([USE_LIBUSB1], [test "x$use_libusb1" = "xyes"])
772 AM_CONDITIONAL([IS_CYGWIN], [test "x$is_cygwin" = "xyes"])
773 AM_CONDITIONAL([IS_MINGW], [test "x$is_mingw" = "xyes"])
774 AM_CONDITIONAL([IS_WIN32], [test "x$is_win32" = "xyes"])
775 AM_CONDITIONAL([IS_DARWIN], [test "x$is_darwin" = "xyes"])
776 AM_CONDITIONAL([BITQ], [test "x$build_bitq" = "xyes"])
777 AM_CONDITIONAL([USE_LIBFTDI], [test "x$use_libftdi" = "xyes"])
778 AM_CONDITIONAL([USE_LIBGPIOD], [test "x$use_libgpiod" = "xyes"])
779 AM_CONDITIONAL([USE_HIDAPI], [test "x$use_hidapi" = "xyes"])
780 AM_CONDITIONAL([USE_LIBJAYLINK], [test "x$use_libjaylink" = "xyes"])
781 AM_CONDITIONAL([RSHIM], [test "x$build_rshim" = "xyes"])
782 AM_CONDITIONAL([HAVE_CAPSTONE], [test "x$have_capstone" = "xyes"])
784 AM_CONDITIONAL([MINIDRIVER], [test "x$build_minidriver" = "xyes"])
785 AM_CONDITIONAL([MINIDRIVER_DUMMY], [test "x$build_minidriver_dummy" = "xyes"])
787 AM_CONDITIONAL([INTERNAL_JIMTCL], [test "x$use_internal_jimtcl" = "xyes"])
788 AM_CONDITIONAL([INTERNAL_LIBJAYLINK], [test "x$use_internal_libjaylink" = "xyes"])
790 # Look for environ alternatives. Possibility #1: is environ in unistd.h or stdlib.h?
791 AC_MSG_CHECKING([for environ in unistd.h and stdlib.h])
792 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
796 ]], [[char **ep = environ;]]
803 # Possibility #2: can environ be found in an available library?
804 AC_MSG_CHECKING([for extern environ])
805 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
806 extern char **environ;
807 ]], [[char **ep = environ;]]
809 AC_DEFINE(NEED_ENVIRON_EXTERN, [1], [Must declare 'environ' to use it.])
814 AC_MSG_RESULT([${has_environ}])
817 AS_IF([test "x${has_environ}" != "xyes" ], [
818 AC_MSG_FAILURE([Could not find 'environ' in unistd.h or available libraries.])
821 AC_DEFINE([_GNU_SOURCE],[1],[Use GNU C library extensions (e.g. stdndup).])
823 # set default gcc warnings
824 GCC_WARNINGS="-Wall -Wstrict-prototypes -Wformat-security -Wshadow"
825 AS_IF([test "x${gcc_wextra}" = "xyes"], [
826 GCC_WARNINGS="${GCC_WARNINGS} -Wextra -Wno-unused-parameter"
827 GCC_WARNINGS="${GCC_WARNINGS} -Wbad-function-cast"
828 GCC_WARNINGS="${GCC_WARNINGS} -Wcast-align"
829 GCC_WARNINGS="${GCC_WARNINGS} -Wredundant-decls"
831 AS_IF([test "x${gcc_werror}" = "xyes"], [
832 GCC_WARNINGS="${GCC_WARNINGS} -Werror"
835 # override default gcc cflags
836 AS_IF([test "x$gcc_warnings" = "xyes"], [
837 AC_SUBST([GCC_WARNINGS], [$GCC_WARNINGS])
847 echo OpenOCD configuration summary
848 echo --------------------------------------------------
849 m4_foreach([adapter], [USB1_ADAPTERS, USB0_ADAPTERS,
850 HIDAPI_ADAPTERS, HIDAPI_USB1_ADAPTERS, LIBFTDI_ADAPTERS,
852 LIBJAYLINK_ADAPTERS, PCIE_ADAPTERS],
853 [s=m4_format(["%-40s"], ADAPTER_DESC([adapter]))
854 AS_CASE([$ADAPTER_VAR([adapter])],
856 echo "$s"yes '(auto)'
867 AS_IF([test "x$build_oocd_trace" = "xyes"], [
868 echo 'WARNING! Deprecated configure option (--enable-oocd_trace)'
869 echo 'The oocd_trace driver is deprecated and will be removed in the next release.'
870 echo 'If you regularly use this driver, please report to the OpenOCD Mailing List.'
874 AS_IF([test "x$build_zy1000" = "xyes" -o "x$build_zy1000_master" = "xyes"], [
875 echo 'WARNING! Deprecated configure option (--enable-zy1000, --enable-zy1000-master)'
876 echo 'Support for the ZY1000 platform is deprecated and will be removed in the next'
877 echo 'release. If you regularly use this platform, please report to the OpenOCD'
882 AS_IF([test "x$build_ioutil" = "xyes"], [
883 echo 'WARNING! Deprecated configure option (--enable-ioutil)'
884 echo 'Support for the ioutil functions is deprecated and will be removed in the next'
885 echo 'release. If you regularly depend on this functionality, please report to the'
886 echo 'OpenOCD Mailing List.'