2 AC_INIT([openocd], [0.10.0-dev],
3 [OpenOCD Mailing List <openocd-devel@lists.sourceforge.net>])
4 AC_CONFIG_SRCDIR([src/openocd.c])
6 m4_include([config_subdir.m4])dnl
8 # check for makeinfo before calling AM_INIT_AUTOMAKE
9 AC_CHECK_PROG([MAKEINFO], [makeinfo], [makeinfo])
10 AS_IF([test "x$MAKEINFO" = "x"], [
11 MAKEINFO='echo makeinfo missing; true'
12 AC_MSG_WARN([Info documentation will not be built.])
16 AM_INIT_AUTOMAKE([-Wall -Wno-portability dist-bzip2 dist-zip subdir-objects])
18 AC_CONFIG_HEADERS([config.h])
20 #include <helper/system.h>
21 #include <helper/types.h>
22 #include <helper/replacements.h>
30 PKG_PROG_PKG_CONFIG([0.23])
32 dnl disable checks for C++, Fortran and GNU Java Compiler
33 m4_defun([_LT_AC_LANG_CXX_CONFIG], [:])
34 m4_defun([_LT_AC_LANG_F77_CONFIG], [:])
35 m4_defun([_LT_AC_LANG_GCJ_CONFIG], [:])
38 AC_SUBST([LIBTOOL_DEPS])
40 dnl configure checks required for Jim files (these are obsolete w/ C99)
44 AC_SEARCH_LIBS([ioperm], [ioperm])
45 AC_SEARCH_LIBS([dlopen], [dl])
47 AC_CHECK_HEADERS([sys/socket.h])
48 AC_CHECK_HEADERS([elf.h])
49 AC_CHECK_HEADERS([dirent.h])
50 AC_CHECK_HEADERS([fcntl.h])
51 AC_CHECK_HEADERS([malloc.h])
52 AC_CHECK_HEADERS([netdb.h])
53 AC_CHECK_HEADERS([poll.h])
54 AC_CHECK_HEADERS([pthread.h])
55 AC_CHECK_HEADERS([strings.h])
56 AC_CHECK_HEADERS([sys/ioctl.h])
57 AC_CHECK_HEADERS([sys/param.h])
58 AC_CHECK_HEADERS([sys/select.h])
59 AC_CHECK_HEADERS([sys/stat.h])
60 AC_CHECK_HEADERS([sys/time.h])
61 AC_CHECK_HEADERS([sys/types.h])
62 AC_CHECK_HEADERS([unistd.h])
63 AC_CHECK_HEADERS([arpa/inet.h ifaddrs.h netinet/in.h netinet/tcp.h net/if.h], [], [], [dnl
73 #ifdef HAVE_SYS_SOCKET_H
74 # include <sys/socket.h>
84 AC_CHECK_FUNCS([strndup])
85 AC_CHECK_FUNCS([strnlen])
86 AC_CHECK_FUNCS([gettimeofday])
87 AC_CHECK_FUNCS([usleep])
88 AC_CHECK_FUNCS([vasprintf])
90 # guess-rev.sh only exists in the repository, not in the released archives
91 AC_MSG_CHECKING([whether to build a release])
92 AS_IF([test -x "$srcdir/guess-rev.sh"], [
97 AC_MSG_RESULT([$build_release])
100 # 1st column -- configure option
101 # 2nd column -- description
102 # 3rd column -- symbol used for both config.h and automake
103 m4_define([ADAPTER_ARG], [m4_argn([1], $1)])
104 m4_define([ADAPTER_DESC], [m4_argn([2], $1)])
105 m4_define([ADAPTER_SYM], [m4_argn([3], $1)])
106 m4_define([ADAPTER_VAR], [enable_[]ADAPTER_ARG($1)])
107 m4_define([ADAPTER_OPT], [m4_translit(ADAPTER_ARG($1), [_], [-])])
109 m4_define([USB1_ADAPTERS],
110 [[[ftdi], [MPSSE mode of FTDI based devices], [FTDI]],
111 [[stlink], [ST-Link JTAG Programmer], [HLADAPTER_STLINK]],
112 [[ti_icdi], [TI ICDI JTAG Programmer], [HLADAPTER_ICDI]],
113 [[ulink], [Keil ULINK JTAG Programmer], [ULINK]],
114 [[usb_blaster_2], [Altera USB-Blaster II Compatible], [USB_BLASTER_2]],
115 [[vsllink], [Versaloon-Link JTAG Programmer], [VSLLINK]]])
117 m4_define([USB_ADAPTERS],
118 [[[osbdm], [OSBDM (JTAG only) Programmer], [OSBDM]],
119 [[opendous], [eStick/opendous JTAG Programmer], [OPENDOUS]],
120 [[aice], [Andes JTAG Programmer], [AICE]]])
122 m4_define([USB0_ADAPTERS],
123 [[[usbprog], [USBProg JTAG Programmer], [USBPROG]],
124 [[rlink], [Raisonance RLink JTAG Programmer], [RLINK]],
125 [[armjtagew], [Olimex ARM-JTAG-EW Programmer], [ARMJTAGEW]]])
127 m4_define([HIDAPI_ADAPTERS],
128 [[[cmsis_dap], [CMSIS-DAP Compliant Debugger], [CMSIS_DAP]]])
130 m4_define([LIBFTDI_ADAPTERS],
131 [[[usb_blaster], [Altera USB-Blaster Compatible], [USB_BLASTER]],
132 [[presto], [ASIX Presto Adapter], [PRESTO]],
133 [[openjtag], [OpenJTAG Adapter], [OPENJTAG]]])
135 m4_define([LIBJAYLINK_ADAPTERS],
136 [[[jlink], [SEGGER J-Link Programmer], [JLINK]]])
139 AC_ARG_ENABLE([doxygen-html],
140 AS_HELP_STRING([--disable-doxygen-html],
141 [Disable building Doxygen manual as HTML.]),
142 [doxygen_as_html=$enableval], [doxygen_as_html=yes])
143 AC_SUBST([doxygen_as_html])
144 AC_MSG_CHECKING([whether to build Doxygen as HTML])
145 AC_MSG_RESULT([$doxygen_as_html])
147 AC_ARG_ENABLE([doxygen-pdf],
148 AS_HELP_STRING([--enable-doxygen-pdf],
149 [Enable building Doxygen manual as PDF.]),
150 [doxygen_as_pdf=$enableval], [doxygen_as_pdf=no])
151 AC_SUBST([doxygen_as_pdf])
152 AC_MSG_CHECKING([whether to build Doxygen as PDF])
153 AC_MSG_RESULT([$doxygen_as_pdf])
155 AC_ARG_ENABLE([gccwarnings],
156 AS_HELP_STRING([--disable-gccwarnings], [Disable compiler warnings]),
157 [gcc_warnings=$enableval], [gcc_warnings=yes])
159 AC_ARG_ENABLE([wextra],
160 AS_HELP_STRING([--disable-wextra], [Disable extra compiler warnings]),
161 [gcc_wextra=$enableval], [gcc_wextra=$gcc_warnings])
163 AC_ARG_ENABLE([werror],
164 AS_HELP_STRING([--disable-werror], [Do not treat warnings as errors]),
165 [gcc_werror=$enableval], [gcc_werror=$gcc_warnings])
167 # set default verbose options, overridden by following options
172 AC_ARG_ENABLE([verbose],
173 AS_HELP_STRING([--enable-verbose],
174 [Enable verbose JTAG I/O messages (for debugging).]),
176 debug_jtag_io=$enableval
177 debug_usb_io=$enableval
178 debug_usb_comms=$enableval
181 AC_ARG_ENABLE([verbose_jtag_io],
182 AS_HELP_STRING([--enable-verbose-jtag-io],
183 [Enable verbose JTAG I/O messages (for debugging).]),
184 [debug_jtag_io=$enableval], [])
186 AC_ARG_ENABLE([verbose_usb_io],
187 AS_HELP_STRING([--enable-verbose-usb-io],
188 [Enable verbose USB I/O messages (for debugging)]),
189 [debug_usb_io=$enableval], [])
191 AC_ARG_ENABLE([verbose_usb_comms],
192 AS_HELP_STRING([--enable-verbose-usb-comms],
193 [Enable verbose USB communication messages (for debugging)]),
194 [debug_usb_comms=$enableval], [])
196 AC_MSG_CHECKING([whether to enable verbose JTAG I/O messages]);
197 AC_MSG_RESULT([$debug_jtag_io])
198 AS_IF([test "x$debug_jtag_io" = "xyes"], [
199 AC_DEFINE([_DEBUG_JTAG_IO_],[1], [Print verbose JTAG I/O messages])
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 m4_define([AC_ARG_ADAPTERS], [
231 m4_foreach([adapter], [$1],
232 [AC_ARG_ENABLE(ADAPTER_OPT([adapter]),
233 AS_HELP_STRING([--enable-ADAPTER_OPT([adapter])],
234 [Enable building support for the ]ADAPTER_DESC([adapter])[ (default is $2)]),
235 [], [ADAPTER_VAR([adapter])=$2])
248 AC_ARG_ENABLE([parport],
249 AS_HELP_STRING([--enable-parport], [Enable building the pc parallel port driver]),
250 [build_parport=$enableval], [build_parport=no])
252 AC_ARG_ENABLE([parport_ppdev],
253 AS_HELP_STRING([--disable-parport-ppdev],
254 [Disable use of ppdev (/dev/parportN) for parport (for x86 only)]),
255 [parport_use_ppdev=$enableval], [parport_use_ppdev=yes])
257 AC_ARG_ENABLE([parport_giveio],
258 AS_HELP_STRING([--enable-parport-giveio],
259 [Enable use of giveio for parport (for CygWin only)]),
260 [parport_use_giveio=$enableval], [parport_use_giveio=])
262 AC_ARG_ENABLE([jtag_vpi],
263 AS_HELP_STRING([--enable-jtag_vpi], [Enable building support for JTAG VPI]),
264 [build_jtag_vpi=$enableval], [build_jtag_vpi=no])
266 AC_ARG_ENABLE([amtjtagaccel],
267 AS_HELP_STRING([--enable-amtjtagaccel], [Enable building the Amontec JTAG-Accelerator driver]),
268 [build_amtjtagaccel=$enableval], [build_amtjtagaccel=no])
270 AC_ARG_ENABLE([zy1000_master],
271 AS_HELP_STRING([--enable-zy1000-master], [Use ZY1000 JTAG master registers]),
272 [build_zy1000_master=$enableval], [build_zy1000_master=no])
274 AC_ARG_ENABLE([zy1000],
275 AS_HELP_STRING([--enable-zy1000], [Enable ZY1000 interface]),
276 [build_zy1000=$enableval], [build_zy1000=no])
278 AC_ARG_ENABLE([ioutil],
279 AS_HELP_STRING([--enable-ioutil], [Enable ioutil functions - useful for standalone OpenOCD implementations]),
280 [build_ioutil=$enableval], [build_ioutil=no])
282 AS_CASE(["${host_cpu}"],
284 AC_ARG_ENABLE([ep93xx],
285 AS_HELP_STRING([--enable-ep93xx], [Enable building support for EP93xx based SBCs]),
286 [build_ep93xx=$enableval], [build_ep93xx=no])
288 AC_ARG_ENABLE([at91rm9200],
289 AS_HELP_STRING([--enable-at91rm9200], [Enable building support for AT91RM9200 based SBCs]),
290 [build_at91rm9200=$enableval], [build_at91rm9200=no])
292 AC_ARG_ENABLE([bcm2835gpio],
293 AS_HELP_STRING([--enable-bcm2835gpio], [Enable building support for bitbanging on BCM2835 (as found in Raspberry Pi)]),
294 [build_bcm2835gpio=$enableval], [build_bcm2835gpio=no])
302 AC_ARG_ENABLE([gw16012],
303 AS_HELP_STRING([--enable-gw16012], [Enable building support for the Gateworks GW16012 JTAG Programmer]),
304 [build_gw16012=$enableval], [build_gw16012=no])
306 AC_ARG_ENABLE([oocd_trace],
307 AS_HELP_STRING([--enable-oocd_trace],
308 [Enable building support for some prototype OpenOCD+trace ETM capture hardware]),
309 [build_oocd_trace=$enableval], [build_oocd_trace=no])
311 AC_ARG_ENABLE([buspirate],
312 AS_HELP_STRING([--enable-buspirate], [Enable building support for the Buspirate]),
313 [build_buspirate=$enableval], [build_buspirate=no])
315 AC_ARG_ENABLE([sysfsgpio],
316 AS_HELP_STRING([--enable-sysfsgpio], [Enable building support for programming driven via sysfs gpios.]),
317 [build_sysfsgpio=$enableval], [build_sysfsgpio=no])
322 AS_IF([test "x$build_sysfsgpio" = "xyes"], [
323 AC_MSG_ERROR([sysfsgpio is only available on linux])
327 AC_ARG_ENABLE([minidriver_dummy],
328 AS_HELP_STRING([--enable-minidriver-dummy], [Enable the dummy minidriver.]),
329 [build_minidriver_dummy=$enableval], [build_minidriver_dummy=no])
331 AC_ARG_ENABLE([internal-jimtcl],
332 AS_HELP_STRING([--disable-internal-jimtcl], [Disable building internal jimtcl]),
333 [use_internal_jimtcl=$enableval], [use_internal_jimtcl=yes])
335 AC_ARG_ENABLE([internal-libjaylink],
336 AS_HELP_STRING([--disable-internal-libjaylink],
337 [Disable building internal libjaylink]),
338 [use_internal_libjaylink=$enableval], [use_internal_libjaylink=yes])
341 AC_MSG_CHECKING([whether to enable ZY1000 minidriver])
342 AS_IF([test "x$build_zy1000" = "xyes"], [
343 AS_IF([test "x$build_minidriver" = "xyes"], [
344 AC_MSG_ERROR([Multiple minidriver options have been enabled.])
346 AC_DEFINE([HAVE_JTAG_MINIDRIVER_H], [1],
347 [Define to 1 if you have the <jtag_minidriver.h> header file.])
350 AC_MSG_RESULT([$build_zy1000])
352 AC_ARG_ENABLE([remote-bitbang],
353 AS_HELP_STRING([--enable-remote-bitbang], [Enable building support for the Remote Bitbang jtag driver]),
354 [build_remote_bitbang=$enableval], [build_remote_bitbang=no])
356 AC_MSG_CHECKING([whether to enable dummy minidriver])
357 AS_IF([test "x$build_minidriver_dummy" = "xyes"], [
358 AS_IF([test "x$build_minidriver" = "xyes"], [
359 AC_MSG_ERROR([Multiple minidriver options have been enabled.])
362 AC_DEFINE([BUILD_MINIDRIVER_DUMMY], [1], [Use the dummy minidriver.])
363 AC_DEFINE([HAVE_JTAG_MINIDRIVER_H], [1],
364 [Define to 1 if you have the <jtag_minidriver.h> header file.])
366 AC_MSG_RESULT([$build_minidriver_dummy])
368 AC_MSG_CHECKING([whether standard drivers can be built])
369 AS_IF([test "x$build_minidriver" = "xyes"], [
371 AC_MSG_WARN([Using the minidriver disables all other drivers.])
377 AS_CASE(["${host_cpu}"],
380 AS_IF([test "x$parport_use_ppdev" = "xno"], [
381 AC_MSG_WARN([--disable-parport-ppdev is not supported by the host CPU])
383 parport_use_ppdev=yes
391 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[return __MINGW32__;]])],
392 [is_mingw=yes],[is_mingw=no])
393 AS_IF([test "x$is_mingw" = "xyes"], [
394 AS_IF([test "x$parport_use_giveio" = "xno"], [
395 AC_MSG_WARN([--disable-parport-giveio is not supported by MinGW32 hosts])
397 parport_use_giveio=yes
401 # sys/io.h needed under cygwin for parport access
402 AS_IF([test "x$build_parport" = "xyes"], [
403 AC_CHECK_HEADERS([sys/io.h],[],AC_MSG_ERROR([Please install the cygwin ioperm package]))
407 [*-mingw* | *-msys*], [
412 AS_IF([test "x$parport_use_giveio" = "xno"], [
413 AC_MSG_WARN([--disable-parport-giveio is not supported by MinGW32 hosts])
415 parport_use_giveio=yes
417 AS_IF([test "x$build_buspirate" = "xyes"], [
418 AC_MSG_ERROR([buspirate currently not supported by MinGW32 hosts])
421 AC_SUBST([HOST_CPPFLAGS], [-D__USE_MINGW_ANSI_STDIO])
426 AS_IF([test "x$parport_use_giveio" = "xyes"], [
427 AC_MSG_WARN([--enable-parport-giveio cannot be used by Darwin hosts])
429 parport_use_giveio=no
432 AS_IF([test "x$parport_use_giveio" = "xyes"], [
433 AC_MSG_WARN([--enable-parport-giveio cannot be used by ]$host[ hosts])
435 parport_use_giveio=no
438 AS_IF([test "x$is_cygwin" = "xyes"], [
439 AC_DEFINE([IS_CYGWIN], [1], [1 if building for Cygwin.])
441 AC_DEFINE([IS_CYGWIN], [0], [0 if not building for Cygwin.])
444 AS_IF([test "x$is_mingw" = "xyes"], [
445 AC_DEFINE([IS_MINGW], [1], [1 if building for Mingw.])
447 AC_DEFINE([IS_MINGW], [0], [0 if not building for Mingw.])
450 AS_IF([test "x$is_win32" = "xyes"], [
451 AC_DEFINE([IS_WIN32], [1], [1 if building for Win32.])
453 AC_DEFINE([IS_WIN32], [0], [0 if not building for Win32.])
456 AS_IF([test "x$is_darwin" = "xyes"], [
457 AC_DEFINE([IS_DARWIN], [1], [1 if building for Darwin.])
459 AC_DEFINE([IS_DARWIN], [0], [0 if not building for Darwin.])
462 AS_IF([test "x$build_parport" = "xyes"], [
464 AC_DEFINE([BUILD_PARPORT], [1], [1 if you want parport.])
466 AC_DEFINE([BUILD_PARPORT], [0], [0 if you don't want parport.])
469 AS_IF([test "x$build_dummy" = "xyes"], [
471 AC_DEFINE([BUILD_DUMMY], [1], [1 if you want dummy driver.])
473 AC_DEFINE([BUILD_DUMMY], [0], [0 if you don't want dummy driver.])
476 AS_IF([test "x$build_ep93xx" = "xyes"], [
478 AC_DEFINE([BUILD_EP93XX], [1], [1 if you want ep93xx.])
480 AC_DEFINE([BUILD_EP93XX], [0], [0 if you don't want ep93xx.])
483 AS_IF([test "x$build_zy1000" = "xyes"], [
484 AC_DEFINE([BUILD_ZY1000], [1], [1 if you want ZY1000.])
486 AC_DEFINE([BUILD_ZY1000], [0], [0 if you don't want ZY1000.])
489 AS_IF([test "x$build_zy1000_master" = "xyes"], [
490 AC_DEFINE([BUILD_ZY1000_MASTER], [1], [1 if you want ZY1000 JTAG master registers.])
492 AC_DEFINE([BUILD_ZY1000_MASTER], [0], [0 if you don't want ZY1000 JTAG master registers.])
495 AS_IF([test "x$build_at91rm9200" = "xyes"], [
497 AC_DEFINE([BUILD_AT91RM9200], [1], [1 if you want at91rm9200.])
499 AC_DEFINE([BUILD_AT91RM9200], [0], [0 if you don't want at91rm9200.])
502 AS_IF([test "x$build_bcm2835gpio" = "xyes"], [
504 AC_DEFINE([BUILD_BCM2835GPIO], [1], [1 if you want bcm2835gpio.])
506 AC_DEFINE([BUILD_BCM2835GPIO], [0], [0 if you don't want bcm2835gpio.])
509 AS_IF([test "x$parport_use_ppdev" = "xyes"], [
510 AC_DEFINE([PARPORT_USE_PPDEV], [1], [1 if you want parport to use ppdev.])
512 AC_DEFINE([PARPORT_USE_PPDEV], [0], [0 if you don't want parport to use ppdev.])
515 AS_IF([test "x$parport_use_giveio" = "xyes"], [
516 AC_DEFINE([PARPORT_USE_GIVEIO], [1], [1 if you want parport to use giveio.])
518 AC_DEFINE([PARPORT_USE_GIVEIO], [0], [0 if you don't want parport to use giveio.])
521 AS_IF([test "x$build_jtag_vpi" = "xyes"], [
522 AC_DEFINE([BUILD_JTAG_VPI], [1], [1 if you want JTAG VPI.])
524 AC_DEFINE([BUILD_JTAG_VPI], [0], [0 if you don't want JTAG VPI.])
527 AS_IF([test "x$build_amtjtagaccel" = "xyes"], [
528 AC_DEFINE([BUILD_AMTJTAGACCEL], [1], [1 if you want the Amontec JTAG-Accelerator driver.])
530 AC_DEFINE([BUILD_AMTJTAGACCEL], [0], [0 if you don't want the Amontec JTAG-Accelerator driver.])
533 AS_IF([test "x$build_gw16012" = "xyes"], [
534 AC_DEFINE([BUILD_GW16012], [1], [1 if you want the Gateworks GW16012 driver.])
536 AC_DEFINE([BUILD_GW16012], [0], [0 if you don't want the Gateworks GW16012 driver.])
539 AS_IF([test "x$build_oocd_trace" = "xyes"], [
540 AC_DEFINE([BUILD_OOCD_TRACE], [1], [1 if you want the OpenOCD+trace ETM capture driver.])
542 AC_DEFINE([BUILD_OOCD_TRACE], [0], [0 if you don't want the OpenOCD+trace ETM capture driver.])
545 AS_IF([test "x$build_buspirate" = "xyes"], [
546 AC_DEFINE([BUILD_BUSPIRATE], [1], [1 if you want the Buspirate JTAG driver.])
548 AC_DEFINE([BUILD_BUSPIRATE], [0], [0 if you don't want the Buspirate JTAG driver.])
551 AS_IF([test "x$use_internal_jimtcl" = "xyes"], [
552 AS_IF([test -f "$srcdir/jimtcl/configure.ac"], [
553 AX_CONFIG_SUBDIR_OPTION([jimtcl], [--disable-install-jim])
555 AC_MSG_ERROR([jimtcl not found, run git submodule init and git submodule update.])
559 AS_IF([test "x$build_remote_bitbang" = "xyes"], [
561 AC_DEFINE([BUILD_REMOTE_BITBANG], [1], [1 if you want the Remote Bitbang JTAG driver.])
563 AC_DEFINE([BUILD_REMOTE_BITBANG], [0], [0 if you don't want the Remote Bitbang JTAG driver.])
566 AS_IF([test "x$build_sysfsgpio" = "xyes"], [
568 AC_DEFINE([BUILD_SYSFSGPIO], [1], [1 if you want the SysfsGPIO driver.])
570 AC_DEFINE([BUILD_SYSFSGPIO], [0], [0 if you don't want SysfsGPIO driver.])
573 PKG_CHECK_MODULES([LIBUSB1], [libusb-1.0], [
575 AC_DEFINE([HAVE_LIBUSB1], [1], [Define if you have libusb-1.x])
576 PKG_CHECK_EXISTS([libusb-1.0 >= 1.0.9],
577 [AC_DEFINE([HAVE_LIBUSB_ERROR_NAME], [1], [Define if your libusb has libusb_error_name()])],
578 [AC_MSG_WARN([libusb-1.x older than 1.0.9 detected, consider updating])])
579 LIBUSB1_CFLAGS=`echo $LIBUSB1_CFLAGS | sed 's/-I/-isystem /'`
580 AC_MSG_NOTICE([libusb-1.0 header bug workaround: LIBUSB1_CFLAGS changed to "$LIBUSB1_CFLAGS"])
581 PKG_CHECK_EXISTS([libusb-1.0 >= 1.0.16],
582 [AC_DEFINE([HAVE_LIBUSB_GET_PORT_NUMBERS], [1], [Define if your libusb has libusb_get_port_numbers()])])
585 AC_MSG_WARN([libusb-1.x not found, trying legacy libusb-0.1 as a fallback; consider installing libusb-1.x instead])
588 PKG_CHECK_MODULES([LIBUSB0], [libusb], [use_libusb0=yes], [use_libusb0=no])
590 for hidapi_lib in hidapi hidapi-hidraw hidapi-libusb; do
591 PKG_CHECK_MODULES([HIDAPI],[$hidapi_lib],[
599 PKG_CHECK_MODULES([LIBFTDI], [libftdi1], [use_libftdi=yes], [
600 PKG_CHECK_MODULES([LIBFTDI], [libftdi], [use_libftdi=yes], [use_libftdi=no])
603 PKG_CHECK_MODULES([LIBJAYLINK], [libjaylink >= 0.1],
604 [use_libjaylink=yes], [use_libjaylink=no])
606 m4_define([PROCESS_ADAPTERS], [
607 m4_foreach([adapter], [$1], [
609 AS_IF([test "x$ADAPTER_VAR([adapter])" != "xno"], [
610 AC_DEFINE([BUILD_]ADAPTER_SYM([adapter]), [1], [1 if you want the ]ADAPTER_DESC([adapter]).)
612 AC_DEFINE([BUILD_]ADAPTER_SYM([adapter]), [0], [0 if you do not want the ]ADAPTER_DESC([adapter]).)
615 AS_IF([test "x$ADAPTER_VAR([adapter])" = "xyes"], [
616 AC_MSG_ERROR([$3 is required for the ADAPTER_DESC([adapter])])
618 ADAPTER_VAR([adapter])=no
620 AM_CONDITIONAL(ADAPTER_SYM([adapter]), [test "x$ADAPTER_VAR([adapter])" != "xno"])
624 PROCESS_ADAPTERS([USB1_ADAPTERS], ["x$use_libusb1" = "xyes"], [libusb-1.x])
625 PROCESS_ADAPTERS([USB_ADAPTERS], ["x$use_libusb1" = "xyes" -o "x$use_libusb0" = "xyes"], [libusb-1.x or libusb-0.1])
626 PROCESS_ADAPTERS([USB0_ADAPTERS], ["x$use_libusb0" = "xyes"], [libusb-0.1])
627 PROCESS_ADAPTERS([HIDAPI_ADAPTERS], ["x$use_hidapi" = "xyes"], [hidapi])
628 PROCESS_ADAPTERS([LIBFTDI_ADAPTERS], ["x$use_libftdi" = "xyes"], [libftdi])
629 PROCESS_ADAPTERS([LIBJAYLINK_ADAPTERS], ["x$use_libusb1" = "xyes" -a "x$use_internal_libjaylink" = "xyes" -o "x$use_libjaylink" = "xyes"], [libusb-1.x or libjaylink-0.1])
631 AS_IF([test "x$build_openjtag" = "xyes"], [
632 AS_IF([test "x$use_libusb1" != "xyes" -a "x$use_libusb0" != "xyes"], [
633 AC_MSG_ERROR([libusb-1.x or libusb-0.1 is required for the OpenJTAG Programmer])
638 AS_IF([test "x$enable_stlink" != "xno" -o "x$enable_ti_icdi" != "xno"], [
639 AC_DEFINE([BUILD_HLADAPTER], [1], [1 if you want the High Level JTAG driver.])
641 AC_DEFINE([BUILD_HLADAPTER], [0], [0 if you want the High Level JTAG driver.])
643 AM_CONDITIONAL([HLADAPTER], [test "x$enable_stlink" != "xno" -o "x$enable_ti_icdi" != "xno"])
645 AS_IF([test "x$enable_jlink" != "xno"], [
646 AS_IF([test "x$use_internal_libjaylink" = "xyes"], [
647 AS_IF([test -f "$srcdir/src/jtag/drivers/libjaylink/configure.ac"], [
648 AX_CONFIG_SUBDIR_OPTION([src/jtag/drivers/libjaylink],
649 [--enable-subproject-build])
651 AC_MSG_ERROR([Internal libjaylink not found, run either 'git submodule init' and 'git submodule update' or disable internal libjaylink with --disable-internal-libjaylink.])
656 # Presto needs the bitq module
657 AS_IF([test "x$enable_presto" != "xno"], [
661 AM_CONDITIONAL([RELEASE], [test "x$build_release" = "xyes"])
662 AM_CONDITIONAL([PARPORT], [test "x$build_parport" = "xyes"])
663 AM_CONDITIONAL([DUMMY], [test "x$build_dummy" = "xyes"])
664 AM_CONDITIONAL([GIVEIO], [test "x$parport_use_giveio" = "xyes"])
665 AM_CONDITIONAL([EP93XX], [test "x$build_ep93xx" = "xyes"])
666 AM_CONDITIONAL([ZY1000], [test "x$build_zy1000" = "xyes"])
667 AM_CONDITIONAL([ZY1000_MASTER], [test "x$build_zy1000_master" = "xyes"])
668 AM_CONDITIONAL([IOUTIL], [test "x$build_ioutil" = "xyes"])
669 AM_CONDITIONAL([AT91RM9200], [test "x$build_at91rm9200" = "xyes"])
670 AM_CONDITIONAL([BCM2835GPIO], [test "x$build_bcm2835gpio" = "xyes"])
671 AM_CONDITIONAL([BITBANG], [test "x$build_bitbang" = "xyes"])
672 AM_CONDITIONAL([JTAG_VPI], [test "x$build_jtag_vpi" = "xyes" -o "x$build_jtag_vpi" = "xyes"])
673 AM_CONDITIONAL([USB_BLASTER_DRIVER], [test "x$enable_usb_blaster" != "xno" -o "x$enable_usb_blaster_2" != "xno"])
674 AM_CONDITIONAL([AMTJTAGACCEL], [test "x$build_amtjtagaccel" = "xyes"])
675 AM_CONDITIONAL([GW16012], [test "x$build_gw16012" = "xyes"])
676 AM_CONDITIONAL([OOCD_TRACE], [test "x$build_oocd_trace" = "xyes"])
677 AM_CONDITIONAL([REMOTE_BITBANG], [test "x$build_remote_bitbang" = "xyes"])
678 AM_CONDITIONAL([BUSPIRATE], [test "x$build_buspirate" = "xyes"])
679 AM_CONDITIONAL([SYSFSGPIO], [test "x$build_sysfsgpio" = "xyes"])
680 AM_CONDITIONAL([USE_LIBUSB0], [test "x$use_libusb0" = "xyes"])
681 AM_CONDITIONAL([USE_LIBUSB1], [test "x$use_libusb1" = "xyes"])
682 AM_CONDITIONAL([IS_CYGWIN], [test "x$is_cygwin" = "xyes"])
683 AM_CONDITIONAL([IS_MINGW], [test "x$is_mingw" = "xyes"])
684 AM_CONDITIONAL([IS_WIN32], [test "x$is_win32" = "xyes"])
685 AM_CONDITIONAL([IS_DARWIN], [test "x$is_darwin" = "xyes"])
686 AM_CONDITIONAL([BITQ], [test "x$build_bitq" = "xyes"])
687 AM_CONDITIONAL([USE_LIBFTDI], [test "x$use_libftdi" = "xyes"])
688 AM_CONDITIONAL([USE_HIDAPI], [test "x$use_hidapi" = "xyes"])
689 AM_CONDITIONAL([USE_LIBJAYLINK], [test "x$use_libjaylink" = "xyes"])
691 AM_CONDITIONAL([MINIDRIVER], [test "x$build_minidriver" = "xyes"])
692 AM_CONDITIONAL([MINIDRIVER_DUMMY], [test "x$build_minidriver_dummy" = "xyes"])
694 AM_CONDITIONAL([INTERNAL_JIMTCL], [test "x$use_internal_jimtcl" = "xyes"])
695 AM_CONDITIONAL([INTERNAL_LIBJAYLINK], [test "x$use_internal_libjaylink" = "xyes"])
697 # Look for environ alternatives. Possibility #1: is environ in unistd.h or stdlib.h?
698 AC_MSG_CHECKING([for environ in unistd.h and stdlib.h])
699 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
703 ]], [[char **ep = environ;]]
710 # Possibility #2: can environ be found in an available library?
711 AC_MSG_CHECKING([for extern environ])
712 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
713 extern char **environ;
714 ]], [[char **ep = environ;]]
716 AC_DEFINE(NEED_ENVIRON_EXTERN, [1], [Must declare 'environ' to use it.])
721 AC_MSG_RESULT([${has_environ}])
724 AS_IF([test "x${has_environ}" != "xyes" ], [
725 AC_MSG_FAILURE([Could not find 'environ' in unistd.h or available libraries.])
728 AC_DEFINE([_GNU_SOURCE],[1],[Use GNU C library extensions (e.g. stdndup).])
730 # set default gcc warnings
731 GCC_WARNINGS="-Wall -Wstrict-prototypes -Wformat-security -Wshadow"
732 AS_IF([test "x${gcc_wextra}" = "xyes"], [
733 GCC_WARNINGS="${GCC_WARNINGS} -Wextra -Wno-unused-parameter"
734 GCC_WARNINGS="${GCC_WARNINGS} -Wbad-function-cast"
735 GCC_WARNINGS="${GCC_WARNINGS} -Wcast-align"
736 GCC_WARNINGS="${GCC_WARNINGS} -Wredundant-decls"
738 AS_IF([test "x${gcc_werror}" = "xyes"], [
739 GCC_WARNINGS="${GCC_WARNINGS} -Werror"
742 # overide default gcc cflags
743 AS_IF([test "x$gcc_warnings" = "xyes"], [
744 AC_SUBST([GCC_WARNINGS], [$GCC_WARNINGS])
754 echo OpenOCD configuration summary
755 echo --------------------------------------------------
756 m4_foreach([adapter], [USB1_ADAPTERS, USB_ADAPTERS, USB0_ADAPTERS,
757 HIDAPI_ADAPTERS, LIBFTDI_ADAPTERS, LIBJAYLINK_ADAPTERS],
758 [s=m4_format(["%-40s"], ADAPTER_DESC([adapter]))
759 AS_CASE([$ADAPTER_VAR([adapter])],
761 echo "$s"yes '(auto)'
772 AS_IF([test "x$build_oocd_trace" = "xyes"], [
773 echo 'WARNING! Deprecated configure option (--enable-oocd_trace)'
774 echo 'The oocd_trace driver is deprecated and will be removed in the next release.'
775 echo 'If you regularly use this driver, please report to the OpenOCD Mailing List.'
779 AS_IF([test "x$build_zy1000" = "xyes" -o "x$build_zy1000_master" = "xyes"], [
780 echo 'WARNING! Deprecated configure option (--enable-zy1000, --enable-zy1000-master)'
781 echo 'Support for the ZY1000 platform is deprecated and will be removed in the next'
782 echo 'release. If you regularly use this platform, please report to the OpenOCD'
787 AS_IF([test "x$build_ioutil" = "xyes"], [
788 echo 'WARNING! Deprecated configure option (--enable-ioutil)'
789 echo 'Support for the ioutil functions is deprecated and will be removed in the next'
790 echo 'release. If you regularly depend on this functionality, please report to the'
791 echo 'OpenOCD Mailing List.'