target/image: Use proper data types
[openocd.git] / configure.ac
blob055833a7fb5aa30d1f5d890aff1bcf065685a1f8
1 AC_PREREQ(2.64)
2 AC_INIT([openocd], [0.10.0+dev],
3   [OpenOCD Mailing List <openocd-devel@lists.sourceforge.net>])
4 AC_CONFIG_SRCDIR([src/openocd.c])
5 AC_CONFIG_AUX_DIR([.])
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.])
15 AC_SUBST([MAKEINFO])
17 AM_INIT_AUTOMAKE([-Wall -Wno-portability dist-bzip2 dist-zip subdir-objects])
19 AC_CONFIG_HEADERS([config.h])
20 AH_BOTTOM([
21 #include <helper/system.h>
22 #include <helper/types.h>
23 #include <helper/replacements.h>
26 AC_LANG([C])
27 AC_PROG_CC
28 AC_PROG_CC_C99
29 AM_PROG_CC_C_O
30 AC_PROG_RANLIB
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], [:])
37 AC_DISABLE_SHARED
38 LT_INIT
39 AC_SUBST([LIBTOOL_DEPS])
41 dnl configure checks required for Jim files (these are obsolete w/ C99)
42 AC_C_CONST
43 AC_TYPE_LONG_LONG_INT
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
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
80 AC_HEADER_ASSERT
81 AC_HEADER_STDBOOL
82 AC_HEADER_TIME
84 AC_C_BIGENDIAN
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"], [
96   build_release=no
97 ], [
98   build_release=yes
100 AC_MSG_RESULT([$build_release])
102 # Adapter drivers
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
181 debug_usb_io=no
182 debug_usb_comms=no
184 AC_ARG_ENABLE([verbose],
185   AS_HELP_STRING([--enable-verbose],
186       [Enable verbose JTAG I/O messages (for debugging).]),
187   [
188   debug_usb_io=$enableval
189   debug_usb_comms=$enableval
190   ], [])
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])
214 debug_malloc=no
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])
240   ])
243 AC_ARG_ADAPTERS([
244   USB1_ADAPTERS,
245   USB0_ADAPTERS,
246   HIDAPI_ADAPTERS,
247   HIDAPI_USB1_ADAPTERS,
248   LIBFTDI_ADAPTERS,
249   LIBGPIOD_ADAPTERS,
250   LIBJAYLINK_ADAPTERS
251   ],[auto])
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}"],
292   [arm*|aarch64], [
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])
299   ],
300   [
301     build_bcm2835gpio=no
302     build_imx_gpio=no
305 AS_CASE(["${host_cpu}"],
306   [arm*], [
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])
314   ],
315   [
316     build_ep93xx=no
317     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])
341 AS_CASE([$host_os],
342   [linux*], [],
343   [
344     AS_IF([test "x$build_sysfsgpio" = "xyes"], [
345       AC_MSG_ERROR([sysfsgpio is only available on linux])
346     ])
348     AS_IF([test "x$enable_linuxgpiod" = "xyes"], [
349       AC_MSG_ERROR([linuxgpiod is only available on linux])
350     ])
352     AS_IF([test "x$build_xlnx_pcie_xvc" = "xyes"], [
353       AC_MSG_ERROR([xlnx_pcie_xvc is only available on linux])
354     ])
356     AS_CASE([$host_os], [freebsd*], [],
357     [
358       AS_IF([test "x$build_rshim" = "xyes"], [
359         AC_MSG_ERROR([build_rshim is only available on linux or freebsd])
360       ])
361     ])
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])
377 build_minidriver=no
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.])
382   ])
383   AC_DEFINE([HAVE_JTAG_MINIDRIVER_H], [1],
384       [Define to 1 if you have the <jtag_minidriver.h> header file.])
385   build_minidriver=yes
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.])
397   ])
398   build_minidriver=yes
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"], [
407   AC_MSG_RESULT([no])
408   AC_MSG_WARN([Using the minidriver disables all other drivers.])
409   sleep 2
410 ], [
411   AC_MSG_RESULT([yes])
414 AS_CASE(["${host_cpu}"],
415   [i?86|x86*], [],
416   [
417     AS_IF([test "x$parport_use_ppdev" = "xno"], [
418       AC_MSG_WARN([--disable-parport-ppdev is not supported by the host CPU])
419     ])
420     parport_use_ppdev=yes
423 AS_CASE([$host],
424   [*-cygwin*], [
425     is_win32=yes
426     parport_use_ppdev=no
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])
433       ])
434       parport_use_giveio=yes
435       is_cygwin=no
436     ], [
437       is_cygwin=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]))
441       ])
442     ])
443   ],
444   [*-mingw* | *-msys*], [
445     is_mingw=yes
446     is_win32=yes
447     parport_use_ppdev=no
449     AS_IF([test "x$parport_use_giveio" = "xno"], [
450       AC_MSG_WARN([--disable-parport-giveio is not supported by MinGW32 hosts])
451     ])
452     parport_use_giveio=yes
454     AS_IF([test "x$build_buspirate" = "xyes"], [
455       AC_MSG_ERROR([buspirate currently not supported by MinGW32 hosts])
456     ])
458     AC_SUBST([HOST_CPPFLAGS], [-D__USE_MINGW_ANSI_STDIO])
459   ],
460   [*darwin*], [
461     is_darwin=yes
463     AS_IF([test "x$parport_use_giveio" = "xyes"], [
464       AC_MSG_WARN([--enable-parport-giveio cannot be used by Darwin hosts])
465     ])
466     parport_use_giveio=no
467   ],
468   [
469     AS_IF([test "x$parport_use_giveio" = "xyes"], [
470       AC_MSG_WARN([--enable-parport-giveio cannot be used by ]$host[ hosts])
471     ])
472     parport_use_giveio=no
475 AS_IF([test "x$is_cygwin" = "xyes"], [
476     AC_DEFINE([IS_CYGWIN], [1], [1 if building for Cygwin.])
477 ], [
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.])
483 ], [
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.])
489 ], [
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.])
495 ], [
496     AC_DEFINE([IS_DARWIN], [0], [0 if not building for Darwin.])
499 AS_IF([test "x$build_parport" = "xyes"], [
500   build_bitbang=yes
501   AC_DEFINE([BUILD_PARPORT], [1], [1 if you want parport.])
502 ], [
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.])
508 ], [
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"], [
513   build_bitbang=yes
514   AC_DEFINE([BUILD_DUMMY], [1], [1 if you want dummy driver.])
515 ], [
516   AC_DEFINE([BUILD_DUMMY], [0], [0 if you don't want dummy driver.])
519 AS_IF([test "x$build_ep93xx" = "xyes"], [
520   build_bitbang=yes
521   AC_DEFINE([BUILD_EP93XX], [1], [1 if you want ep93xx.])
522 ], [
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.])
528 ], [
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.])
534 ], [
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"], [
539   build_bitbang=yes
540   AC_DEFINE([BUILD_AT91RM9200], [1], [1 if you want at91rm9200.])
541 ], [
542   AC_DEFINE([BUILD_AT91RM9200], [0], [0 if you don't want at91rm9200.])
545 AS_IF([test "x$build_bcm2835gpio" = "xyes"], [
546   build_bitbang=yes
547   AC_DEFINE([BUILD_BCM2835GPIO], [1], [1 if you want bcm2835gpio.])
548 ], [
549   AC_DEFINE([BUILD_BCM2835GPIO], [0], [0 if you don't want bcm2835gpio.])
552 AS_IF([test "x$build_imx_gpio" = "xyes"], [
553   build_bitbang=yes
554   AC_DEFINE([BUILD_IMX_GPIO], [1], [1 if you want imx_gpio.])
555 ], [
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.])
561 ], [
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.])
567 ], [
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.])
573 ], [
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.])
579 ], [
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.])
586 ], [
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.])
592 ], [
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.])
598 ], [
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.])
604 ], [
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])
611   ], [
612     AC_MSG_ERROR([jimtcl not found, run git submodule init and git submodule update.])
613   ])
616 AS_IF([test "x$build_remote_bitbang" = "xyes"], [
617   build_bitbang=yes
618   AC_DEFINE([BUILD_REMOTE_BITBANG], [1], [1 if you want the Remote Bitbang JTAG driver.])
619 ], [
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"], [
624   build_bitbang=yes
625   AC_DEFINE([BUILD_SYSFSGPIO], [1], [1 if you want the SysfsGPIO driver.])
626 ], [
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.])
633 ], [
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], [
638         use_libusb1=yes
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()])])
647   ], [
648         use_libusb1=no
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],
655         [have_capstone=no])
657 AS_IF([test "x$have_capstone" = "xyes"], [
658   AC_DEFINE([HAVE_CAPSTONE], [1], [1 if you have captone disassembly framework.])
659 ], [
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],[
665                 use_hidapi=yes
666                 break
667         ],[
668                 use_hidapi=no
669         ])
670 done
672 PKG_CHECK_MODULES([LIBFTDI], [libftdi1], [
673         use_libftdi=yes
674         PKG_CHECK_EXISTS([libftdi1 >= 1.5],
675                 [AC_DEFINE([HAVE_LIBFTDI_TCIOFLUSH], [1], [Define if your libftdi has ftdi_tcioflush()])])
676   ], [
677         PKG_CHECK_MODULES([LIBFTDI], [libftdi], [use_libftdi=yes], [use_libftdi=no])
680 PKG_CHECK_MODULES([LIBGPIOD], [libgpiod], [use_libgpiod=yes], [use_libgpiod=no])
682 PKG_CHECK_MODULES([LIBJAYLINK], [libjaylink >= 0.2],
683         [use_libjaylink=yes], [use_libjaylink=no])
685 m4_define([PROCESS_ADAPTERS], [
686   m4_foreach([adapter], [$1], [
687         AS_IF([test "x$build_zy1000" = "xyes"], [
688                 ADAPTER_VAR([adapter])=no
689         ])
690         AS_IF([test $2], [
691                 AS_IF([test "x$ADAPTER_VAR([adapter])" != "xno"], [
692                         AC_DEFINE([BUILD_]ADAPTER_SYM([adapter]), [1], [1 if you want the ]ADAPTER_DESC([adapter]).)
693                 ], [
694                         AC_DEFINE([BUILD_]ADAPTER_SYM([adapter]), [0], [0 if you do not want the ]ADAPTER_DESC([adapter]).)
695                 ])
696         ], [
697                 AS_IF([test "x$ADAPTER_VAR([adapter])" = "xyes"], [
698                         AC_MSG_ERROR([$3 is required for the ADAPTER_DESC([adapter])])
699                 ])
700                 ADAPTER_VAR([adapter])=no
701         ])
702         AM_CONDITIONAL(ADAPTER_SYM([adapter]), [test "x$ADAPTER_VAR([adapter])" != "xno"])
703   ])
706 PROCESS_ADAPTERS([USB1_ADAPTERS], ["x$use_libusb1" = "xyes"], [libusb-1.x])
707 PROCESS_ADAPTERS([USB0_ADAPTERS], ["x$use_libusb0" = "xyes"], [libusb-0.1])
708 PROCESS_ADAPTERS([HIDAPI_ADAPTERS], ["x$use_hidapi" = "xyes"], [hidapi])
709 PROCESS_ADAPTERS([HIDAPI_USB1_ADAPTERS], ["x$use_hidapi" = "xyes" -a "x$use_libusb1" = "xyes"], [hidapi and libusb-1.x])
710 PROCESS_ADAPTERS([LIBFTDI_ADAPTERS], ["x$use_libftdi" = "xyes"], [libftdi])
711 PROCESS_ADAPTERS([LIBGPIOD_ADAPTERS], ["x$use_libgpiod" = "xyes"], [libgpiod])
712 PROCESS_ADAPTERS([LIBJAYLINK_ADAPTERS], ["x$use_internal_libjaylink" = "xyes" -o "x$use_libjaylink" = "xyes"], [libjaylink-0.2])
714 AS_IF([test "x$build_openjtag" = "xyes"], [
715   AS_IF([test "x$use_libusb1" != "xyes" -a "x$use_libusb0" != "xyes"], [
716     AC_MSG_ERROR([libusb-1.x or libusb-0.1 is required for the OpenJTAG Programmer])
717     build_openjtag=no
718   ])
721 AS_IF([test "x$enable_linuxgpiod" != "xno"], [
722   build_bitbang=yes
725 AS_IF([test "x$enable_stlink" != "xno" -o "x$enable_ti_icdi" != "xno" -o "x$enable_nulink" != "xno"], [
726         AC_DEFINE([BUILD_HLADAPTER], [1], [1 if you want the High Level JTAG driver.])
727         AM_CONDITIONAL([HLADAPTER], [true])
728 ], [
729         AC_DEFINE([BUILD_HLADAPTER], [0], [0 if you want the High Level JTAG driver.])
730         AM_CONDITIONAL([HLADAPTER], [false])
732 AM_CONDITIONAL([HLADAPTER_STLINK], [test "x$enable_stlink" != "xno"])
733 AM_CONDITIONAL([HLADAPTER_ICDI], [test "x$enable_ti_icdi" != "xno"])
734 AM_CONDITIONAL([HLADAPTER_NULINK], [test "x$enable_nulink" != "xno"])
736 AS_IF([test "x$enable_jlink" != "xno"], [
737   AS_IF([test "x$use_internal_libjaylink" = "xyes"], [
738     AS_IF([test -f "$srcdir/src/jtag/drivers/libjaylink/configure.ac"], [
739       AX_CONFIG_SUBDIR_OPTION([src/jtag/drivers/libjaylink],
740                 [--enable-subproject-build])
741     ], [
742       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     ])
744   ])
747 # Presto needs the bitq module
748 AS_IF([test "x$enable_presto" != "xno"], [
749   build_bitq=yes
752 AM_CONDITIONAL([RELEASE], [test "x$build_release" = "xyes"])
753 AM_CONDITIONAL([PARPORT], [test "x$build_parport" = "xyes"])
754 AM_CONDITIONAL([DUMMY], [test "x$build_dummy" = "xyes"])
755 AM_CONDITIONAL([GIVEIO], [test "x$parport_use_giveio" = "xyes"])
756 AM_CONDITIONAL([EP93XX], [test "x$build_ep93xx" = "xyes"])
757 AM_CONDITIONAL([ZY1000], [test "x$build_zy1000" = "xyes"])
758 AM_CONDITIONAL([ZY1000_MASTER], [test "x$build_zy1000_master" = "xyes"])
759 AM_CONDITIONAL([IOUTIL], [test "x$build_ioutil" = "xyes"])
760 AM_CONDITIONAL([AT91RM9200], [test "x$build_at91rm9200" = "xyes"])
761 AM_CONDITIONAL([BCM2835GPIO], [test "x$build_bcm2835gpio" = "xyes"])
762 AM_CONDITIONAL([IMX_GPIO], [test "x$build_imx_gpio" = "xyes"])
763 AM_CONDITIONAL([BITBANG], [test "x$build_bitbang" = "xyes"])
764 AM_CONDITIONAL([JTAG_VPI], [test "x$build_jtag_vpi" = "xyes" -o "x$build_jtag_vpi" = "xyes"])
765 AM_CONDITIONAL([JTAG_DPI], [test "x$build_jtag_dpi" = "xyes" -o "x$build_jtag_dpi" = "xyes"])
766 AM_CONDITIONAL([USB_BLASTER_DRIVER], [test "x$enable_usb_blaster" != "xno" -o "x$enable_usb_blaster_2" != "xno"])
767 AM_CONDITIONAL([AMTJTAGACCEL], [test "x$build_amtjtagaccel" = "xyes"])
768 AM_CONDITIONAL([GW16012], [test "x$build_gw16012" = "xyes"])
769 AM_CONDITIONAL([OOCD_TRACE], [test "x$build_oocd_trace" = "xyes"])
770 AM_CONDITIONAL([REMOTE_BITBANG], [test "x$build_remote_bitbang" = "xyes"])
771 AM_CONDITIONAL([BUSPIRATE], [test "x$build_buspirate" = "xyes"])
772 AM_CONDITIONAL([SYSFSGPIO], [test "x$build_sysfsgpio" = "xyes"])
773 AM_CONDITIONAL([XLNX_PCIE_XVC], [test "x$build_xlnx_pcie_xvc" = "xyes"])
774 AM_CONDITIONAL([USE_LIBUSB0], [test "x$use_libusb0" = "xyes"])
775 AM_CONDITIONAL([USE_LIBUSB1], [test "x$use_libusb1" = "xyes"])
776 AM_CONDITIONAL([IS_CYGWIN], [test "x$is_cygwin" = "xyes"])
777 AM_CONDITIONAL([IS_MINGW], [test "x$is_mingw" = "xyes"])
778 AM_CONDITIONAL([IS_WIN32], [test "x$is_win32" = "xyes"])
779 AM_CONDITIONAL([IS_DARWIN], [test "x$is_darwin" = "xyes"])
780 AM_CONDITIONAL([BITQ], [test "x$build_bitq" = "xyes"])
781 AM_CONDITIONAL([USE_LIBFTDI], [test "x$use_libftdi" = "xyes"])
782 AM_CONDITIONAL([USE_LIBGPIOD], [test "x$use_libgpiod" = "xyes"])
783 AM_CONDITIONAL([USE_HIDAPI], [test "x$use_hidapi" = "xyes"])
784 AM_CONDITIONAL([USE_LIBJAYLINK], [test "x$use_libjaylink" = "xyes"])
785 AM_CONDITIONAL([RSHIM], [test "x$build_rshim" = "xyes"])
786 AM_CONDITIONAL([HAVE_CAPSTONE], [test "x$have_capstone" = "xyes"])
788 AM_CONDITIONAL([MINIDRIVER], [test "x$build_minidriver" = "xyes"])
789 AM_CONDITIONAL([MINIDRIVER_DUMMY], [test "x$build_minidriver_dummy" = "xyes"])
791 AM_CONDITIONAL([INTERNAL_JIMTCL], [test "x$use_internal_jimtcl" = "xyes"])
792 AM_CONDITIONAL([INTERNAL_LIBJAYLINK], [test "x$use_internal_libjaylink" = "xyes"])
794 # Look for environ alternatives.  Possibility #1: is environ in unistd.h or stdlib.h?
795 AC_MSG_CHECKING([for environ in unistd.h and stdlib.h])
796 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
797 #define _GNU_SOURCE
798 #include <unistd.h>
799 #include <stdlib.h>
800   ]], [[char **ep = environ;]]
801   )], [
802     AC_MSG_RESULT([yes])
803     has_environ=yes
804   ], [
805     AC_MSG_RESULT([no])
807     # Possibility #2: can environ be found in an available library?
808     AC_MSG_CHECKING([for extern environ])
809     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
810     extern char **environ;
811     ]], [[char **ep = environ;]]
812       )], [
813         AC_DEFINE(NEED_ENVIRON_EXTERN, [1], [Must declare 'environ' to use it.])
814         has_environ=yes
815       ], [
816         has_environ=no
817       ])
818     AC_MSG_RESULT([${has_environ}])
819   ])
821 AS_IF([test "x${has_environ}" != "xyes" ], [
822   AC_MSG_FAILURE([Could not find 'environ' in unistd.h or available libraries.])
825 AC_DEFINE([_GNU_SOURCE],[1],[Use GNU C library extensions (e.g. stdndup).])
827 # set default gcc warnings
828 GCC_WARNINGS="-Wall -Wstrict-prototypes -Wformat-security -Wshadow"
829 AS_IF([test "x${gcc_wextra}" = "xyes"], [
830   GCC_WARNINGS="${GCC_WARNINGS} -Wextra -Wno-unused-parameter"
831   GCC_WARNINGS="${GCC_WARNINGS} -Wbad-function-cast"
832   GCC_WARNINGS="${GCC_WARNINGS} -Wcast-align"
833   GCC_WARNINGS="${GCC_WARNINGS} -Wredundant-decls"
835 AS_IF([test "x${gcc_werror}" = "xyes"], [
836   GCC_WARNINGS="${GCC_WARNINGS} -Werror"
839 # override default gcc cflags
840 AS_IF([test "x$gcc_warnings" = "xyes"], [
841   AC_SUBST([GCC_WARNINGS], [$GCC_WARNINGS])
844 AC_CONFIG_FILES([
845   Makefile
847 AC_OUTPUT
849 echo
850 echo
851 echo OpenOCD configuration summary
852 echo --------------------------------------------------
853 m4_foreach([adapter], [USB1_ADAPTERS, USB0_ADAPTERS,
854         HIDAPI_ADAPTERS, HIDAPI_USB1_ADAPTERS, LIBFTDI_ADAPTERS,
855         LIBGPIOD_ADAPTERS,
856         LIBJAYLINK_ADAPTERS, PCIE_ADAPTERS],
857         [s=m4_format(["%-40s"], ADAPTER_DESC([adapter]))
858         AS_CASE([$ADAPTER_VAR([adapter])],
859                 [auto], [
860                         echo "$s"yes '(auto)'
861                 ],
862                 [yes], [
863                         echo "$s"yes
864                 ],
865                 [no], [
866                         echo "$s"no
867         ])
869 echo
871 AS_IF([test "x$build_oocd_trace" = "xyes"], [
872   echo 'WARNING! Deprecated configure option (--enable-oocd_trace)'
873   echo 'The oocd_trace driver is deprecated and will be removed in the next release.'
874   echo 'If you regularly use this driver, please report to the OpenOCD Mailing List.'
875   echo
878 AS_IF([test "x$build_zy1000" = "xyes" -o "x$build_zy1000_master" = "xyes"], [
879   echo 'WARNING! Deprecated configure option (--enable-zy1000, --enable-zy1000-master)'
880   echo 'Support for the ZY1000 platform is deprecated and will be removed in the next'
881   echo 'release. If you regularly use this platform, please report to the OpenOCD'
882   echo 'Mailing List.'
883   echo
886 AS_IF([test "x$build_ioutil" = "xyes"], [
887   echo 'WARNING! Deprecated configure option (--enable-ioutil)'
888   echo 'Support for the ioutil functions is deprecated and will be removed in the next'
889   echo 'release. If you regularly depend on this functionality, please report to the'
890   echo 'OpenOCD Mailing List.'
891   echo