flash/nor/spi: add micron/numonyx n25q128
[openocd.git] / configure.ac
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
6 m4_include([config_subdir.m4])dnl
7
8 # check for makeinfo before calling AM_INIT_AUTOMAKE
9 AC_CHECK_PROG([MAKEINFO], [makeinfo], [makeinfo])
10 if test "x$MAKEINFO" = "x"; then
11 MAKEINFO='echo makeinfo missing; true'
12 AC_MSG_WARN([Info documentation will not be built.])
13 fi
14 AC_SUBST([MAKEINFO])
15
16 AM_INIT_AUTOMAKE([-Wall -Wno-portability dist-bzip2 dist-zip subdir-objects])
17
18 AC_CONFIG_HEADERS([config.h])
19 AH_BOTTOM([
20 #include <helper/system.h>
21 #include <helper/types.h>
22 #include <helper/replacements.h>
23 ])
24
25 AC_LANG_C
26 AC_PROG_CC
27 AC_PROG_CC_C99
28 AM_PROG_CC_C_O
29 AC_PROG_RANLIB
30 PKG_PROG_PKG_CONFIG([0.23])
31
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], [:])
36 AC_DISABLE_SHARED
37 AC_PROG_LIBTOOL
38 AC_SUBST([LIBTOOL_DEPS])
39
40 dnl configure checks required for Jim files (these are obsolete w/ C99)
41 AC_C_CONST
42 AC_TYPE_LONG_LONG_INT
43
44 AC_SEARCH_LIBS([ioperm], [ioperm])
45 AC_SEARCH_LIBS([dlopen], [dl])
46
47 AC_CHECK_HEADERS([sys/socket.h])
48 AC_CHECK_HEADERS([arpa/inet.h], [], [], [dnl
49 #include <stdio.h>
50 #ifdef STDC_HEADERS
51 # include <stdlib.h>
52 # include <stddef.h>
53 #else
54 # ifdef HAVE_STDLIB_H
55 # include <stdlib.h>
56 # endif
57 #endif
58 #ifdef HAVE_SYS_SOCKET_H
59 # include <sys/socket.h>
60 #endif
61 ])
62 AC_CHECK_HEADERS([elf.h])
63 AC_CHECK_HEADERS([dirent.h])
64 AC_CHECK_HEADERS([fcntl.h])
65 AC_CHECK_HEADERS([ifaddrs.h], [], [], [dnl
66 #include <stdio.h>
67 #ifdef STDC_HEADERS
68 # include <stdlib.h>
69 # include <stddef.h>
70 #else
71 # ifdef HAVE_STDLIB_H
72 # include <stdlib.h>
73 # endif
74 #endif
75 #ifdef HAVE_SYS_SOCKET_H
76 # include <sys/socket.h>
77 #endif
78 ])
79 AC_CHECK_HEADERS([malloc.h])
80 AC_CHECK_HEADERS([netdb.h])
81 AC_CHECK_HEADERS([netinet/in.h], [], [], [dnl
82 #include <stdio.h>
83 #ifdef STDC_HEADERS
84 # include <stdlib.h>
85 # include <stddef.h>
86 #else
87 # ifdef HAVE_STDLIB_H
88 # include <stdlib.h>
89 # endif
90 #endif
91 #ifdef HAVE_SYS_SOCKET_H
92 # include <sys/socket.h>
93 #endif
94 ])
95 AC_CHECK_HEADERS([netinet/tcp.h], [], [], [dnl
96 #include <stdio.h>
97 #ifdef STDC_HEADERS
98 # include <stdlib.h>
99 # include <stddef.h>
100 #else
101 # ifdef HAVE_STDLIB_H
102 # include <stdlib.h>
103 # endif
104 #endif
105 #ifdef HAVE_SYS_SOCKET_H
106 # include <sys/socket.h>
107 #endif
108 ])
109 AC_CHECK_HEADERS([pthread.h])
110 AC_CHECK_HEADERS([strings.h])
111 AC_CHECK_HEADERS([sys/ioctl.h])
112 AC_CHECK_HEADERS([sys/param.h])
113 AC_CHECK_HEADERS([sys/poll.h])
114 AC_CHECK_HEADERS([sys/select.h])
115 AC_CHECK_HEADERS([sys/stat.h])
116 AC_CHECK_HEADERS([sys/time.h])
117 AC_CHECK_HEADERS([sys/types.h])
118 AC_CHECK_HEADERS([unistd.h])
119 AC_CHECK_HEADERS([net/if.h], [], [], [dnl
120 #include <stdio.h>
121 #ifdef STDC_HEADERS
122 # include <stdlib.h>
123 # include <stddef.h>
124 #else
125 # ifdef HAVE_STDLIB_H
126 # include <stdlib.h>
127 # endif
128 #endif
129 #ifdef HAVE_SYS_SOCKET_H
130 # include <sys/socket.h>
131 #endif
132 ])
133
134 AC_HEADER_ASSERT
135 AC_HEADER_STDBOOL
136 AC_HEADER_TIME
137
138 AC_C_BIGENDIAN
139
140 AC_CHECK_FUNCS([strndup])
141 AC_CHECK_FUNCS([strnlen])
142 AC_CHECK_FUNCS([gettimeofday])
143 AC_CHECK_FUNCS([usleep])
144 AC_CHECK_FUNCS([vasprintf])
145
146 build_bitbang=no
147 build_bitq=no
148 is_cygwin=no
149 is_mingw=no
150 is_win32=no
151 is_darwin=no
152
153 # guess-rev.sh only exists in the repository, not in the released archives
154 AC_MSG_CHECKING([whether to build a release])
155 if test -x $srcdir/guess-rev.sh ; then
156 build_release=no
157 else
158 build_release=yes
159 fi
160 AC_MSG_RESULT([$build_release])
161
162 AC_ARG_WITH(ftd2xx,
163 AS_HELP_STRING([--with-ftd2xx=<PATH>],[This option has been removed.]),
164 [
165 # Option Given.
166 cat << __EOF__
167
168 The option: --with-ftd2xx=<PATH> has been removed.
169 On Linux, the new option is:
170
171 --with-ftd2xx-linux-tardir=/path/to/files
172
173 Where <path> is the path the the directory where the "tar.gz" file
174 from FTDICHIP.COM was unpacked, for example:
175
176 --with-ftd2xx-linux-tardir=${HOME}/libftd2xx0.4.16
177
178 On Cygwin/MingW32, the new option is:
179
180 --with-ftd2xx-win32-zipdir=/path/to/files
181
182 Where <path> is the path to the directory where the "zip" file from
183 FTDICHIP.COM was unpacked, for example:
184
185 --with-ftd2xx-win32-zipdir=${HOME}/ftd2xx.cdm.files
186
187 __EOF__
188
189 AC_MSG_ERROR([Sorry Cannot continue])
190 ], [true])
191
192 # Adapter drivers
193 # 1st column -- configure option
194 # 2nd column -- description
195 # 3rd column -- symbol used for both config.h and automake
196 m4_define([ADAPTER_ARG], [m4_argn([1], $1)])
197 m4_define([ADAPTER_DESC], [m4_argn([2], $1)])
198 m4_define([ADAPTER_SYM], [m4_argn([3], $1)])
199 m4_define([ADAPTER_VAR], [enable_[]ADAPTER_ARG($1)])
200 m4_define([ADAPTER_OPT], [m4_translit(ADAPTER_ARG($1), [_], [-])])
201
202 m4_define([USB1_ADAPTERS],
203 [[[ftdi], [MPSSE mode of FTDI based devices], [FTDI]],
204 [[stlink], [ST-Link JTAG Programmer], [HLADAPTER_STLINK]],
205 [[ti_icdi], [TI ICDI JTAG Programmer], [HLADAPTER_ICDI]],
206 [[ulink], [Keil ULINK JTAG Programmer], [ULINK]],
207 [[usb_blaster_2], [Altera USB-Blaster II Compatible], [USB_BLASTER_2]],
208 [[vsllink], [Versaloon-Link JTAG Programmer], [VSLLINK]]])
209
210 m4_define([USB_ADAPTERS],
211 [[[jlink], [Segger J-Link JTAG Programmer], [JLINK]],
212 [[osbdm], [OSBDM (JTAG only) Programmer], [OSBDM]],
213 [[opendous], [eStick/opendous JTAG Programmer], [OPENDOUS]],
214 [[aice], [Andes JTAG Programmer], [AICE]]])
215
216 m4_define([USB0_ADAPTERS],
217 [[[usbprog], [USBProg JTAG Programmer], [USBPROG]],
218 [[rlink], [Raisonance RLink JTAG Programmer], [RLINK]],
219 [[armjtagew], [Olimex ARM-JTAG-EW Programmer], [ARMJTAGEW]]])
220
221 m4_define([HIDAPI_ADAPTERS],
222 [[[cmsis_dap], [CMSIS-DAP Compliant Debugger], [CMSIS_DAP]]])
223
224 #========================================
225 # FTD2XXX support comes in 4 forms.
226 # (1) win32 - via a zip file
227 # (2) linux - via a tar file
228 # (3) linux/cygwin/mingw - via libftdi
229 # (4) darwin - installed under /usr/local
230 #
231 # In case (1) and (2) we need to know where the package was unpacked.
232
233 AC_ARG_WITH(ftd2xx-win32-zipdir,
234 AS_HELP_STRING([--with-ftd2xx-win32-zipdir],[Where (CYGWIN/MINGW) the zip file from ftdichip.com was unpacked (default=search)]),
235 [
236 # option present
237 if test -d $with_ftd2xx_win32_zipdir
238 then
239 with_ftd2xx_win32_zipdir=`cd $with_ftd2xx_win32_zipdir && pwd`
240 AC_MSG_NOTICE([Using: ftdichip.com library: $with_ftd2xx_win32_zipdir])
241 else
242 AC_MSG_ERROR([Parameter to --with-ftd2xx-win32-zipdir is not a dir: $with_ftd2xx_win32_zipdir])
243 fi
244 ], [true])
245
246 AC_ARG_WITH(ftd2xx-linux-tardir,
247 AS_HELP_STRING([--with-ftd2xx-linux-tardir], [Where (Linux/Unix) the tar file from ftdichip.com was unpacked (default=search)]),
248 [
249 # Option present
250 if test $is_win32 = yes ; then
251 AC_MSG_ERROR([The option: --with-ftd2xx-linux-tardir is only usable on linux])
252 fi
253 if test -d $with_ftd2xx_linux_tardir
254 then
255 with_ftd2xx_linux_tardir=`cd $with_ftd2xx_linux_tardir && pwd`
256 AC_MSG_NOTICE([Using: ftdichip.com library: $with_ftd2xx_linux_tardir])
257 else
258 AC_MSG_ERROR([Parameter to --with-ftd2xx-linux-tardir is not a dir: $with_ftd2xx_linux_tardir])
259 fi
260 ], [true])
261
262 AC_ARG_WITH(ftd2xx-lib,
263 AS_HELP_STRING([--with-ftd2xx-lib],
264 [Use static or shared ftd2xx libs (default=static)]),
265 [
266 case "$withval" in
267 static)
268 with_ftd2xx_lib=$withval
269 ;;
270 shared)
271 with_ftd2xx_lib=$withval
272 ;;
273 *)
274 AC_MSG_ERROR([Option: --with-ftd2xx-lib=static or --with-ftd2xx-lib=shared not, $withval])
275 ;;
276 esac
277 ], [
278 # Default is static - it is simpler :-(
279 with_ftd2xx_lib=static
280 ])
281
282 AC_ARG_ENABLE([doxygen-html],
283 AS_HELP_STRING([--disable-doxygen-html],
284 [Disable building Doxygen manual as HTML.]),
285 [doxygen_as_html=$enableval], [doxygen_as_html=yes])
286 AC_SUBST([doxygen_as_html])
287 AC_MSG_CHECKING([whether to build Doxygen as HTML])
288 AC_MSG_RESULT([$doxygen_as_html])
289
290 AC_ARG_ENABLE([doxygen-pdf],
291 AS_HELP_STRING([--enable-doxygen-pdf],
292 [Enable building Doxygen manual as PDF.]),
293 [doxygen_as_pdf=$enableval], [doxygen_as_pdf=no])
294 AC_SUBST([doxygen_as_pdf])
295 AC_MSG_CHECKING([whether to build Doxygen as PDF])
296 AC_MSG_RESULT([$doxygen_as_pdf])
297
298 AC_ARG_ENABLE([gccwarnings],
299 AS_HELP_STRING([--disable-gccwarnings], [Disable compiler warnings]),
300 [gcc_warnings=$enableval], [gcc_warnings=yes])
301
302 AC_ARG_ENABLE([wextra],
303 AS_HELP_STRING([--disable-wextra], [Disable extra compiler warnings]),
304 [gcc_wextra=$enableval], [gcc_wextra=$gcc_warnings])
305
306 AC_ARG_ENABLE([werror],
307 AS_HELP_STRING([--disable-werror], [Do not treat warnings as errors]),
308 [gcc_werror=$enableval], [gcc_werror=$gcc_warnings])
309
310 # set default verbose options, overridden by following options
311 debug_jtag_io=no
312 debug_usb_io=no
313 debug_usb_comms=no
314
315 AC_ARG_ENABLE([verbose],
316 AS_HELP_STRING([--enable-verbose],
317 [Enable verbose JTAG I/O messages (for debugging).]),
318 [
319 debug_jtag_io=$enableval
320 debug_usb_io=$enableval
321 debug_usb_comms=$enableval
322 ], [])
323
324 AC_ARG_ENABLE([verbose_jtag_io],
325 AS_HELP_STRING([--enable-verbose-jtag-io],
326 [Enable verbose JTAG I/O messages (for debugging).]),
327 [debug_jtag_io=$enableval], [])
328
329 AC_ARG_ENABLE([verbose_usb_io],
330 AS_HELP_STRING([--enable-verbose-usb-io],
331 [Enable verbose USB I/O messages (for debugging)]),
332 [debug_usb_io=$enableval], [])
333
334 AC_ARG_ENABLE([verbose_usb_comms],
335 AS_HELP_STRING([--enable-verbose-usb-comms],
336 [Enable verbose USB communication messages (for debugging)]),
337 [debug_usb_comms=$enableval], [])
338
339 AC_MSG_CHECKING([whether to enable verbose JTAG I/O messages]);
340 AC_MSG_RESULT([$debug_jtag_io])
341 if test $debug_jtag_io = yes; then
342 AC_DEFINE([_DEBUG_JTAG_IO_],[1], [Print verbose JTAG I/O messages])
343 fi
344
345 AC_MSG_CHECKING([whether to enable verbose USB I/O messages]);
346 AC_MSG_RESULT([$debug_usb_io])
347 if test $debug_usb_io = yes; then
348 AC_DEFINE([_DEBUG_USB_IO_],[1], [Print verbose USB I/O messages])
349 fi
350
351 AC_MSG_CHECKING([whether to enable verbose USB communication messages]);
352 AC_MSG_RESULT([$debug_usb_comms])
353 if test $debug_usb_comms = yes; then
354 AC_DEFINE([_DEBUG_USB_COMMS_],[1], [Print verbose USB communication messages])
355 fi
356
357 debug_malloc=no
358 AC_ARG_ENABLE([malloc_logging],
359 AS_HELP_STRING([--enable-malloc-logging],
360 [Include free space in logging messages (requires malloc.h).]),
361 [debug_malloc=$enableval], [])
362
363 AC_MSG_CHECKING([whether to enable malloc free space logging]);
364 AC_MSG_RESULT([$debug_malloc])
365 if test $debug_malloc = yes; then
366 AC_DEFINE([_DEBUG_FREE_SPACE_],[1], [Include malloc free space in logging])
367 fi
368
369 AC_ARG_ENABLE([dummy],
370 AS_HELP_STRING([--enable-dummy], [Enable building the dummy port driver]),
371 [build_dummy=$enableval], [build_dummy=no])
372
373 m4_define([AC_ARG_ADAPTERS], [
374 m4_foreach([adapter], [$1],
375 [AC_ARG_ENABLE(ADAPTER_OPT([adapter]),
376 AS_HELP_STRING([--enable-ADAPTER_OPT([adapter])],
377 [Enable building support for the ]ADAPTER_DESC([adapter])[ (default is $2)]),
378 [], [ADAPTER_VAR([adapter])=$2])
379 ])
380 ])
381
382 AC_ARG_ADAPTERS([USB1_ADAPTERS, USB_ADAPTERS, USB0_ADAPTERS, HIDAPI_ADAPTERS], [auto])
383
384 AC_ARG_ENABLE([parport],
385 AS_HELP_STRING([--enable-parport], [Enable building the pc parallel port driver]),
386 [build_parport=$enableval], [build_parport=no])
387
388 AC_ARG_ENABLE([parport_ppdev],
389 AS_HELP_STRING([--disable-parport-ppdev],
390 [Disable use of ppdev (/dev/parportN) for parport (for x86 only)]),
391 [parport_use_ppdev=$enableval], [parport_use_ppdev=yes])
392
393 AC_ARG_ENABLE([parport_giveio],
394 AS_HELP_STRING([--enable-parport-giveio],
395 [Enable use of giveio for parport (for CygWin only)]),
396 [parport_use_giveio=$enableval], [parport_use_giveio=])
397
398 AC_ARG_ENABLE([ft2232_libftdi], [], [
399 if test $enableval = yes; then
400 AC_MSG_ERROR([The ft2232 driver is deprecated, use --enable-ftdi to build its replacement, or force the old driver with --enable-legacy-ft2232_libftdi])
401 fi
402 ])
403
404 AC_ARG_ENABLE([ft2232_ftd2xx], [], [
405 if test $enableval = yes; then
406 AC_MSG_ERROR([The ft2232 driver is deprecated, use --enable-ftdi to build its replacement, or force the old driver with --enable-legacy-ft2232_ftd2xx])
407 fi
408 ])
409
410 AC_ARG_ENABLE([legacy-ft2232_libftdi],
411 AS_HELP_STRING([--enable-legacy-ft2232_libftdi], [(DEPRECATED) Enable building support for FT2232 based devices using the libftdi library]),
412 [build_ft2232_libftdi=$enableval], [build_ft2232_libftdi=no])
413
414 AC_ARG_ENABLE([legacy-ft2232_ftd2xx],
415 AS_HELP_STRING([--enable-legacy-ft2232_ftd2xx], [(DEPRECATED) Enable building support for FT2232 based devices using the D2XX library from ftdichip.com]),
416 [build_ft2232_ftd2xx=$enableval], [build_ft2232_ftd2xx=no])
417
418 AC_ARG_ENABLE([jtag_vpi],
419 AS_HELP_STRING([--enable-jtag_vpi], [Enable building support for JTAG VPI]),
420 [build_jtag_vpi=$enableval], [build_jtag_vpi=no])
421
422 AC_ARG_ENABLE([usb_blaster_libftdi],
423 AS_HELP_STRING([--enable-usb_blaster_libftdi], [Enable building support for the Altera USB-Blaster using the libftdi driver, opensource alternate of FTD2XX]),
424 [build_usb_blaster_libftdi=$enableval], [build_usb_blaster_libftdi=no])
425
426 AC_ARG_ENABLE([usb_blaster_ftd2xx],
427 AS_HELP_STRING([--enable-usb_blaster_ftd2xx], [Enable building support for the Altera USB-Blaster using the FTD2XX driver from ftdichip.com]),
428 [build_usb_blaster_ftd2xx=$enableval], [build_usb_blaster_ftd2xx=no])
429
430 AC_ARG_ENABLE([amtjtagaccel],
431 AS_HELP_STRING([--enable-amtjtagaccel], [Enable building the Amontec JTAG-Accelerator driver]),
432 [build_amtjtagaccel=$enableval], [build_amtjtagaccel=no])
433
434 AC_ARG_ENABLE([zy1000_master],
435 AS_HELP_STRING([--enable-zy1000-master], [Use ZY1000 JTAG master registers]),
436 [build_zy1000_master=$enableval], [build_zy1000_master=no])
437
438 AC_ARG_ENABLE([zy1000],
439 AS_HELP_STRING([--enable-zy1000], [Enable ZY1000 interface]),
440 [build_zy1000=$enableval], [build_zy1000=no])
441
442 AC_ARG_ENABLE([ioutil],
443 AS_HELP_STRING([--enable-ioutil], [Enable ioutil functions - useful for standalone OpenOCD implementations]),
444 [build_ioutil=$enableval], [build_ioutil=no])
445
446 case "${host_cpu}" in
447 arm*)
448 AC_ARG_ENABLE([ep93xx],
449 AS_HELP_STRING([--enable-ep93xx], [Enable building support for EP93xx based SBCs]),
450 [build_ep93xx=$enableval], [build_ep93xx=no])
451
452 AC_ARG_ENABLE([at91rm9200],
453 AS_HELP_STRING([--enable-at91rm9200], [Enable building support for AT91RM9200 based SBCs]),
454 [build_at91rm9200=$enableval], [build_at91rm9200=no])
455
456 AC_ARG_ENABLE([bcm2835gpio],
457 AS_HELP_STRING([--enable-bcm2835gpio], [Enable building support for bitbanging on BCM2835 (as found in Raspberry Pi)]),
458 [build_bcm2835gpio=$enableval], [build_bcm2835gpio=no])
459 ;;
460
461 *)
462 build_ep93xx=no
463 build_at91rm9200=no
464 build_bcm2835gpio=no
465 ;;
466 esac
467
468 AC_ARG_ENABLE([gw16012],
469 AS_HELP_STRING([--enable-gw16012], [Enable building support for the Gateworks GW16012 JTAG Programmer]),
470 [build_gw16012=$enableval], [build_gw16012=no])
471
472 AC_ARG_ENABLE([presto_libftdi],
473 AS_HELP_STRING([--enable-presto_libftdi], [Enable building support for ASIX Presto Programmer using the libftdi driver]),
474 [build_presto_libftdi=$enableval], [build_presto_libftdi=no])
475
476 AC_ARG_ENABLE([presto_ftd2xx],
477 AS_HELP_STRING([--enable-presto_ftd2xx], [Enable building support for ASIX Presto Programmer using the FTD2XX driver]),
478 [build_presto_ftd2xx=$enableval], [build_presto_ftd2xx=no])
479
480 AC_ARG_ENABLE([openjtag_ftd2xx],
481 AS_HELP_STRING([--enable-openjtag_ftd2xx], [Enable building support for the OpenJTAG Programmer with ftd2xx driver]),
482 [build_openjtag_ftd2xx=$enableval], [build_openjtag_ftd2xx=no])
483
484 AC_ARG_ENABLE([openjtag_ftdi],
485 AS_HELP_STRING([--enable-openjtag_ftdi], [Enable building support for the OpenJTAG Programmer with ftdi driver]),
486 [build_openjtag_ftdi=$enableval], [build_openjtag_ftdi=no])
487
488 AC_ARG_ENABLE([oocd_trace],
489 AS_HELP_STRING([--enable-oocd_trace],
490 [Enable building support for some prototype OpenOCD+trace ETM capture hardware]),
491 [build_oocd_trace=$enableval], [build_oocd_trace=no])
492
493 AC_ARG_ENABLE([buspirate],
494 AS_HELP_STRING([--enable-buspirate], [Enable building support for the Buspirate]),
495 [build_buspirate=$enableval], [build_buspirate=no])
496
497 AC_ARG_ENABLE([sysfsgpio],
498 AS_HELP_STRING([--enable-sysfsgpio], [Enable building support for programming driven via sysfs gpios.]),
499 [build_sysfsgpio=$enableval], [build_sysfsgpio=no])
500
501 AC_ARG_ENABLE([minidriver_dummy],
502 AS_HELP_STRING([--enable-minidriver-dummy], [Enable the dummy minidriver.]),
503 [build_minidriver_dummy=$enableval], [build_minidriver_dummy=no])
504
505 AC_ARG_ENABLE([internal-jimtcl],
506 AS_HELP_STRING([--disable-internal-jimtcl], [Disable building internal jimtcl]),
507 [use_internal_jimtcl=$enableval], [use_internal_jimtcl=yes])
508
509 build_minidriver=no
510 AC_MSG_CHECKING([whether to enable ZY1000 minidriver])
511 if test $build_zy1000 = yes; then
512 if test $build_minidriver = yes; then
513 AC_MSG_ERROR([Multiple minidriver options have been enabled.])
514 fi
515 AC_DEFINE([HAVE_JTAG_MINIDRIVER_H], [1],
516 [Define to 1 if you have the <jtag_minidriver.h> header file.])
517 build_minidriver=yes
518 fi
519 AC_MSG_RESULT([$build_zy1000])
520
521 AC_ARG_ENABLE([remote-bitbang],
522 AS_HELP_STRING([--enable-remote-bitbang], [Enable building support for the Remote Bitbang jtag driver]),
523 [build_remote_bitbang=$enableval], [build_remote_bitbang=no])
524
525 AC_MSG_CHECKING([whether to enable dummy minidriver])
526 if test $build_minidriver_dummy = yes; then
527 if test $build_minidriver = yes; then
528 AC_MSG_ERROR([Multiple minidriver options have been enabled.])
529 fi
530 build_minidriver=yes
531 AC_DEFINE([BUILD_MINIDRIVER_DUMMY], [1], [Use the dummy minidriver.])
532 AC_DEFINE([HAVE_JTAG_MINIDRIVER_H], [1],
533 [Define to 1 if you have the <jtag_minidriver.h> header file.])
534 fi
535 AC_MSG_RESULT([$build_minidriver_dummy])
536
537 AC_MSG_CHECKING([whether standard drivers can be built])
538 if test "$build_minidriver" = yes; then
539 AC_MSG_RESULT([no])
540 AC_MSG_WARN([Using the minidriver disables all other drivers.])
541 sleep 2
542 else
543 AC_MSG_RESULT([yes])
544 fi
545
546 case "${host_cpu}" in
547 i?86|x86*)
548 ;;
549 *)
550 if test x$parport_use_ppdev = xno; then
551 AC_MSG_WARN([--disable-parport-ppdev is not supported by the host CPU])
552 fi
553 parport_use_ppdev=yes
554 ;;
555 esac
556
557 case $host in
558 *-cygwin*)
559 is_win32=yes
560 parport_use_ppdev=no
561
562 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[return __MINGW32__;]])],
563 [is_mingw=yes],[is_mingw=no])
564 if test $is_mingw = yes; then
565 AC_DEFINE([IS_MINGW], [1], [1 if building for MinGW.])
566 if test x$parport_use_giveio = xno; then
567 AC_MSG_WARN([--disable-parport-giveio is not supported by MinGW32 hosts])
568 fi
569 parport_use_giveio=yes
570 is_cygwin=no
571 else
572 is_cygwin=yes
573 AC_DEFINE([IS_CYGWIN], [1], [1 if building for Cygwin.])
574 # sys/io.h needed under cygwin for parport access
575 if test $build_parport = yes; then
576 AC_CHECK_HEADERS([sys/io.h],[],AC_MSG_ERROR([Please install the cygwin ioperm package]))
577 fi
578 fi
579
580 AC_DEFINE([IS_WIN32], [1], [1 if building for Win32.])
581 AC_DEFINE([IS_DARWIN], [0], [0 if not building for Darwin.])
582 ;;
583 *-mingw*)
584 is_mingw=yes
585 is_win32=yes
586 parport_use_ppdev=no
587
588 if test x$parport_use_giveio = xno; then
589 AC_MSG_WARN([--disable-parport-giveio is not supported by MinGW32 hosts])
590 fi
591 parport_use_giveio=yes
592
593 if test x$build_buspirate = xyes; then
594 AC_MSG_ERROR([buspirate currently not supported by MinGW32 hosts])
595 fi
596
597 CFLAGS="$CFLAGS -D__USE_MINGW_ANSI_STDIO"
598
599 AC_DEFINE([IS_MINGW], [1], [1 if building for MinGW.])
600 AC_DEFINE([IS_WIN32], [1], [1 if building for Win32.])
601 AC_DEFINE([IS_DARWIN], [0], [0 if not building for Darwin.])
602 ;;
603 *darwin*)
604 is_darwin=yes
605
606 if test x$parport_use_giveio = xyes; then
607 AC_MSG_WARN([--enable-parport-giveio cannot be used by Darwin hosts])
608 fi
609 parport_use_giveio=no
610
611 AC_DEFINE([IS_CYGWIN], [0], [0 if not building for Cygwin.])
612 AC_DEFINE([IS_WIN32], [0], [0 if not building for Win32.])
613 AC_DEFINE([IS_DARWIN], [1], [1 if building for Darwin.])
614 ;;
615 *)
616 if test x$parport_use_giveio = xyes; then
617 AC_MSG_WARN([--enable-parport-giveio cannot be used by ]$host[ hosts])
618 fi
619 parport_use_giveio=no
620 AC_DEFINE([IS_CYGWIN], [0], [0 if not building for Cygwin.])
621 AC_DEFINE([IS_WIN32], [0], [0 if not building for Win32.])
622 AC_DEFINE([IS_DARWIN], [0], [0 if not building for Darwin.])
623 ;;
624 esac
625
626 if test $is_win32 = yes; then
627 AC_DEFINE([WIN32_LEAN_AND_MEAN], [1], [1 to exclude old conflicting definitions when building on Windows])
628 fi
629
630 if test $build_parport = yes; then
631 build_bitbang=yes
632 AC_DEFINE([BUILD_PARPORT], [1], [1 if you want parport.])
633 else
634 AC_DEFINE([BUILD_PARPORT], [0], [0 if you don't want parport.])
635 fi
636
637 if test $build_dummy = yes; then
638 build_bitbang=yes
639 AC_DEFINE([BUILD_DUMMY], [1], [1 if you want dummy driver.])
640 else
641 AC_DEFINE([BUILD_DUMMY], [0], [0 if you don't want dummy driver.])
642 fi
643
644 if test $build_ep93xx = yes; then
645 build_bitbang=yes
646 AC_DEFINE([BUILD_EP93XX], [1], [1 if you want ep93xx.])
647 else
648 AC_DEFINE([BUILD_EP93XX], [0], [0 if you don't want ep93xx.])
649 fi
650
651 if test $build_zy1000 = yes; then
652 AC_DEFINE([BUILD_ZY1000], [1], [1 if you want ZY1000.])
653 else
654 AC_DEFINE([BUILD_ZY1000], [0], [0 if you don't want ZY1000.])
655 fi
656
657 if test $build_zy1000_master = yes; then
658 AC_DEFINE([BUILD_ZY1000_MASTER], [1], [1 if you want ZY1000 JTAG master registers.])
659 else
660 AC_DEFINE([BUILD_ZY1000_MASTER], [0], [0 if you don't want ZY1000 JTAG master registers.])
661 fi
662
663 if test $build_at91rm9200 = yes; then
664 build_bitbang=yes
665 AC_DEFINE([BUILD_AT91RM9200], [1], [1 if you want at91rm9200.])
666 else
667 AC_DEFINE([BUILD_AT91RM9200], [0], [0 if you don't want at91rm9200.])
668 fi
669
670 if test $build_bcm2835gpio = yes; then
671 build_bitbang=yes
672 AC_DEFINE([BUILD_BCM2835GPIO], [1], [1 if you want bcm2835gpio.])
673 else
674 AC_DEFINE([BUILD_BCM2835GPIO], [0], [0 if you don't want bcm2835gpio.])
675 fi
676
677 if test x$parport_use_ppdev = xyes; then
678 AC_DEFINE([PARPORT_USE_PPDEV], [1], [1 if you want parport to use ppdev.])
679 else
680 AC_DEFINE([PARPORT_USE_PPDEV], [0], [0 if you don't want parport to use ppdev.])
681 fi
682
683 if test x$parport_use_giveio = xyes; then
684 AC_DEFINE([PARPORT_USE_GIVEIO], [1], [1 if you want parport to use giveio.])
685 else
686 AC_DEFINE([PARPORT_USE_GIVEIO], [0], [0 if you don't want parport to use giveio.])
687 fi
688
689 if test $build_bitbang = yes; then
690 AC_DEFINE([BUILD_BITBANG], [1], [1 if you want a bitbang interface.])
691 else
692 AC_DEFINE([BUILD_BITBANG], [0], [0 if you don't want a bitbang interface.])
693 fi
694
695 if test $build_ft2232_libftdi = yes; then
696 AC_DEFINE([BUILD_FT2232_LIBFTDI], [1], [1 if you want libftdi ft2232.])
697 else
698 AC_DEFINE([BUILD_FT2232_LIBFTDI], [0], [0 if you don't want libftdi ft2232.])
699 fi
700
701 if test $build_ft2232_ftd2xx = yes; then
702 AC_DEFINE([BUILD_FT2232_FTD2XX], [1], [1 if you want ftd2xx ft2232.])
703 else
704 AC_DEFINE([BUILD_FT2232_FTD2XX], [0], [0 if you don't want ftd2xx ft2232.])
705 fi
706
707 if test $build_usb_blaster_libftdi = yes; then
708 AC_DEFINE([BUILD_USB_BLASTER_LIBFTDI], [1], [1 if you want libftdi usb_blaster.])
709 else
710 AC_DEFINE([BUILD_USB_BLASTER_LIBFTDI], [0], [0 if you don't want libftdi usb_blaster.])
711 fi
712
713 if test $build_jtag_vpi = yes; then
714 AC_DEFINE([BUILD_JTAG_VPI], [1], [1 if you want JTAG VPI.])
715 else
716 AC_DEFINE([BUILD_JTAG_VPI], [0], [0 if you don't want JTAG VPI.])
717 fi
718
719 if test $build_usb_blaster_ftd2xx = yes; then
720 AC_DEFINE([BUILD_USB_BLASTER_FTD2XX], [1], [1 if you want ftd2xx usb_blaster.])
721 else
722 AC_DEFINE([BUILD_USB_BLASTER_FTD2XX], [0], [0 if you don't want ftd2xx usb_blaster.])
723 fi
724
725 if test $build_amtjtagaccel = yes; then
726 AC_DEFINE([BUILD_AMTJTAGACCEL], [1], [1 if you want the Amontec JTAG-Accelerator driver.])
727 else
728 AC_DEFINE([BUILD_AMTJTAGACCEL], [0], [0 if you don't want the Amontec JTAG-Accelerator driver.])
729 fi
730
731 if test $build_gw16012 = yes; then
732 AC_DEFINE([BUILD_GW16012], [1], [1 if you want the Gateworks GW16012 driver.])
733 else
734 AC_DEFINE([BUILD_GW16012], [0], [0 if you don't want the Gateworks GW16012 driver.])
735 fi
736
737 if test $build_presto_libftdi = yes; then
738 build_bitq=yes
739 AC_DEFINE([BUILD_PRESTO_LIBFTDI], [1], [1 if you want the ASIX PRESTO driver using libftdi.])
740 else
741 AC_DEFINE([BUILD_PRESTO_LIBFTDI], [0], [0 if you don't want the ASIX PRESTO driver using libftdi.])
742 fi
743
744 if test $build_presto_ftd2xx = yes; then
745 build_bitq=yes
746 AC_DEFINE([BUILD_PRESTO_FTD2XX], [1], [1 if you want the ASIX PRESTO driver using FTD2XX.])
747 else
748 AC_DEFINE([BUILD_PRESTO_FTD2XX], [0], [0 if you don't want the ASIX PRESTO driver using FTD2XX.])
749 fi
750
751 if test $build_bitq = yes; then
752 AC_DEFINE([BUILD_BITQ], [1], [1 if you want a bitq interface.])
753 else
754 AC_DEFINE([BUILD_BITQ], [0], [0 if you don't want a bitq interface.])
755 fi
756
757 AC_DEFINE([BUILD_OPENJTAG], [0], [0 if you don't want the OpenJTAG driver.])
758 AC_DEFINE([BUILD_OPENJTAG_FTD2XX], [0], [0 if you don't want the OpenJTAG driver with FTD2XX driver.])
759 AC_DEFINE([BUILD_OPENJTAG_LIBFTDI], [0], [0 if you don't want to build OpenJTAG driver with libftdi.])
760
761 if test $build_openjtag_ftd2xx = yes; then
762 AC_DEFINE([BUILD_OPENJTAG], [1], [1 if you want the OpenJTAG driver.])
763 AC_DEFINE([BUILD_OPENJTAG_FTD2XX], [1], [1 if you want the OpenJTAG driver with FTD2XX driver.])
764 fi
765 if test $build_openjtag_ftdi = yes; then
766 AC_DEFINE([BUILD_OPENJTAG], [1], [1 if you want the OpenJTAG drvier.])
767 AC_DEFINE([BUILD_OPENJTAG_LIBFTDI], [1], [1 if you want to build OpenJTAG with FTDI driver.])
768 fi
769
770 if test $build_oocd_trace = yes; then
771 AC_DEFINE([BUILD_OOCD_TRACE], [1], [1 if you want the OpenOCD+trace ETM capture driver.])
772 else
773 AC_DEFINE([BUILD_OOCD_TRACE], [0], [0 if you don't want the OpenOCD+trace ETM capture driver.])
774 fi
775
776 if test $build_buspirate = yes; then
777 AC_DEFINE([BUILD_BUSPIRATE], [1], [1 if you want the Buspirate JTAG driver.])
778 else
779 AC_DEFINE([BUILD_BUSPIRATE], [0], [0 if you don't want the Buspirate JTAG driver.])
780 fi
781
782 if test $use_internal_jimtcl = yes; then
783 if test -f "$srcdir/jimtcl/configure.ac"; then
784 AX_CONFIG_SUBDIR_OPTION([jimtcl], [--disable-install-jim])
785 else
786 AC_MSG_ERROR([jimtcl not found, run git submodule init and git submodule update.])
787 fi
788 fi
789
790 if test $build_remote_bitbang = yes; then
791 build_bitbang=yes
792 AC_DEFINE([BUILD_REMOTE_BITBANG], [1], [1 if you want the Remote Bitbang JTAG driver.])
793 else
794 AC_DEFINE([BUILD_REMOTE_BITBANG], [0], [0 if you don't want the Remote Bitbang JTAG driver.])
795 fi
796
797 if test $build_sysfsgpio = yes; then
798 build_bitbang=yes
799 AC_DEFINE([BUILD_SYSFSGPIO], [1], [1 if you want the SysfsGPIO driver.])
800 else
801 AC_DEFINE([BUILD_SYSFSGPIO], [0], [0 if you don't want SysfsGPIO driver.])
802 fi
803 #-- Deal with MingW/Cygwin FTD2XX issues
804
805 if test $is_win32 = yes; then
806 if test "${with_ftd2xx_linux_tardir+set}" = set
807 then
808 AC_MSG_ERROR([The option: with_ftd2xx_linux_tardir is for LINUX only.])
809 fi
810
811 if test $build_ft2232_ftd2xx = yes -o $build_presto_ftd2xx = yes -o $build_usb_blaster_ftd2xx = yes -o $build_openjtag_ftd2xx = yes; then
812 AC_MSG_CHECKING([for ftd2xx.lib exists (win32)])
813
814 # if we are given a zipdir...
815 if test "${with_ftd2xx_win32_zipdir+set}" = set
816 then
817 # Set the CFLAGS for "ftd2xx.h"
818 f=$with_ftd2xx_win32_zipdir/ftd2xx.h
819 if test ! -f $f ; then
820 AC_MSG_ERROR([File: $f cannot be found])
821 fi
822 CFLAGS="$CFLAGS -I$with_ftd2xx_win32_zipdir"
823
824 # And calculate the LDFLAGS for the machine
825 case "$host_cpu" in
826 i?86|x86_32)
827 LDFLAGS="$LDFLAGS -L$with_ftd2xx_win32_zipdir/i386"
828 LIBS="$LIBS -lftd2xx"
829 f=$with_ftd2xx_win32_zipdir/i386/ftd2xx.lib
830 ;;
831 amd64|x86_64)
832 LDFLAGS="$LDFLAGS -L$with_ftd2xx_win32_zipdir/amd64"
833 LIBS="$LIBS -lftd2xx"
834 f=$with_ftd2xx_win32_zipdir/amd64/ftd2xx.lib
835 ;;
836 *)
837 AC_MSG_ERROR([Unknown Win32 host cpu: $host_cpu])
838 ;;
839 esac
840 if test ! -f $f ; then
841 AC_MSG_ERROR([Library: $f not found])
842 fi
843 else
844 LIBS="$LIBS -lftd2xx"
845 AC_MSG_WARN([ASSUMPTION: The (win32) FTDICHIP.COM files: ftd2xx.h and ftd2xx.lib are in a proper place])
846 fi
847 fi
848 fi # win32
849
850 if test $is_darwin = yes ; then
851 if test "${with_ftd2xx_win32_zipdir+set}" = set
852 then
853 AC_MSG_ERROR([The option: --with-ftd2xx-win32-zipdir is for win32 only])
854 fi
855 if test "${with_ftd2xx_linux_tardir+set}" = set
856 then
857 AC_MSG_ERROR([The option: with_ftd2xx_linux_tardir is for LINUX only.])
858 fi
859
860 if test $build_ft2232_ftd2xx = yes -o $build_presto_ftd2xx = yes -o $build_usb_blaster_ftd2xx = yes ; then
861 AC_MSG_CHECKING([for libftd2xx.a (darwin)])
862
863 if test ! -f /usr/local/include/ftd2xx.h ; then
864 AC_MSG_ERROR([ftd2xx library from FTDICHIP.com seems to be missing, cannot find: /usr/local/include/ftd2xx.h])
865 fi
866
867 CFLAGS="$CFLAGS -I/usr/local/include"
868 LDFLAGS="$LDFLAGS -L/usr/local/lib"
869 LIBS="$LIBS -lftd2xx"
870 AC_MSG_RESULT([-L/usr/local/lib -lftd2xx])
871 fi
872 fi # darwin
873
874 if test $is_win32 = no && test $is_darwin = no ; then
875
876 if test "${with_ftd2xx_win32_zipdir+set}" = set
877 then
878 AC_MSG_ERROR([The option: --with-ftd2xx-win32-zipdir is for win32 only])
879 fi
880
881 if test $build_ft2232_ftd2xx = yes -o $build_presto_ftd2xx = yes -o $build_usb_blaster_ftd2xx = yes -o $build_openjtag_ftd2xx = yes; then
882 # Must be linux
883 if test $host_os != linux-gnu && test $host_os != linux ; then
884 AC_MSG_ERROR([The (linux) ftd2xx library from FTDICHIP.com is linux only. Try --enable-ft2232-libftdi instead])
885 fi
886 # Are we given a TAR directory?
887 if test "${with_ftd2xx_linux_tardir+set}" = set
888 then
889 AC_MSG_CHECKING([uninstalled ftd2xx distribution])
890 # The .H file is simple..
891 FTD2XX_H=$with_ftd2xx_linux_tardir/ftd2xx.h
892 if test ! -f "${FTD2XX_H}"; then
893 AC_MSG_ERROR([Option: --with-ftd2xx-linux-tardir appears wrong, cannot find: ${FTD2XX_H}])
894 fi
895 CFLAGS="$CFLAGS -I$with_ftd2xx_linux_tardir"
896 if test $with_ftd2xx_lib = shared; then
897 FTD2XX_LDFLAGS="-L$with_ftd2xx_linux_tardir"
898 FTD2XX_LIB="-lftd2xx"
899 else
900 # Test #1 - v1.0.x
901 case "$host_cpu" in
902 i?86|x86_32)
903 dir=build/i386;;
904 amd64|x86_64)
905 dir=build/x86_64;;
906 *)
907 dir=none;;
908 esac
909 if test -f "$with_ftd2xx_linux_tardir/$dir/libftd2xx.a"; then
910 FTD2XX_LDFLAGS="-L$with_ftd2xx_linux_tardir/$dir"
911 # Also needs -lrt
912 FTD2XX_LIB="-lftd2xx -lrt"
913 else
914 # Test Number2.
915 # Grr.. perhaps it exists as a version number?
916 FTD2XX_LIB="$with_ftd2xx_linux_tardir/static_lib/libftd2xx.a.*.*.*"
917 count=`ls ${FTD2XX_LIB} | wc -l`
918 if test $count -gt 1 ; then
919 AC_MSG_ERROR([Multiple libftd2xx.a files found in: $with_ftd2xx_linux_tardir/static_lib sorry cannot handle this yet])
920 fi
921 if test $count -ne 1 ; then
922 AC_MSG_ERROR([Not found: $f, option: --with-ftd2xx-linux-tardir appears to be wrong])
923 fi
924 # Because the "-l" rules do not understand version numbers...
925 # we will just stuff the absolute path onto the LIBS variable
926 FTD2XX_LIB="`ls ${FTD2XX_LIB}` -lpthread"
927 FTD2XX_LDFLAGS=""
928 fi
929 fi
930 LDFLAGS="${LDFLAGS} ${FTD2XX_LDFLAGS}"
931 LIBS="${FTD2XX_LIB} ${LIBS}"
932 AC_MSG_RESULT([${FTD2XX_LDFLAGS} ${FTD2XX_LIB}])
933 else
934 AC_CHECK_HEADER([ftd2xx.h],[],[
935 AC_MSG_ERROR([You seem to be missing the FTD2xx driver header file.])
936 ])
937 AC_SEARCH_LIBS([FT_GetLibraryVersion],[ftd2xx],,[
938 AC_MSG_ERROR([You appear to be missing the FTD2xx driver library.])
939 ],[-lrt -lusb-1.0])
940 fi
941 fi
942 fi # linux
943
944 if test $build_ft2232_ftd2xx = yes -o $build_presto_ftd2xx = yes -o $build_usb_blaster_ftd2xx = yes ; then
945
946 # Before we go any further - make sure we can *BUILD* and *RUN*
947 # a simple app with the "ftd2xx.lib" file - in what ever form we where given
948 # We should be able to compile, link and run this test program now
949 AC_MSG_CHECKING([whether ftd2xx library works])
950
951 #
952 # Save the LDFLAGS for later..
953 LDFLAGS_SAVE=$LDFLAGS
954 CFLAGS_SAVE=$CFLAGS
955 _LDFLAGS=`eval echo $LDFLAGS`
956 _CFLAGS=`eval echo $CFLAGS`
957 LDFLAGS=$_LDFLAGS
958 CFLAGS=$_CFLAGS
959
960 AC_RUN_IFELSE([AC_LANG_PROGRAM([[
961 #include "confdefs.h"
962 #if IS_WIN32
963 #include "windows.h"
964 #endif
965 #include <stdio.h>
966 #include <ftd2xx.h>
967 ]], [[
968 DWORD x;
969 FT_GetLibraryVersion( &x );
970 ]])], [
971 AC_MSG_RESULT([Success!])
972 ], [
973 AC_MSG_ERROR([Cannot build & run test program using ftd2xx.lib])
974 ], [
975 AC_MSG_RESULT([Skipping as we are cross-compiling])
976 ])
977
978 AC_MSG_CHECKING([for ftd2xx highspeed device support])
979 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
980 #include "confdefs.h"
981 #if IS_WIN32
982 #include "windows.h"
983 #endif
984 #include <stdio.h>
985 #include <ftd2xx.h>
986
987 DWORD x = FT_DEVICE_4232H;
988 ]], [])], [
989 AC_DEFINE([BUILD_FT2232_HIGHSPEED], [1],
990 [Support FT2232H/FT4232HS with FTD2XX or libftdi.])
991 build_ft2232_highspeed=yes
992 ], [
993 build_ft2232_highspeed=no
994 ])
995 AC_MSG_RESULT([$build_ft2232_highspeed])
996
997 if test $build_ft2232_highspeed = no; then
998 AC_MSG_WARN([You need a newer FTD2XX driver (version 2.04.16 or later).])
999 fi
1000
1001 AC_MSG_CHECKING([for ftd2xx FT232H device support])
1002 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1003 #include "confdefs.h"
1004 #if IS_WIN32
1005 #include "windows.h"
1006 #endif
1007 #include <stdio.h>
1008 #include <ftd2xx.h>
1009
1010 DWORD x = FT_DEVICE_232H;
1011 ]], [])], [
1012 AC_DEFINE([HAS_ENUM_FT232H], [1],
1013 [Support FT232H with FTD2XX or libftdi.])
1014 has_enum_ft232h=yes
1015 ], [
1016 has_enum_ft232h=no
1017 ])
1018 AC_MSG_RESULT([$has_enum_ft232h])
1019
1020 if test $has_enum_ft232h = no; then
1021 AC_MSG_WARN([You need a newer FTD2XX driver (version 2.08.12 or later).])
1022 fi
1023
1024 LDFLAGS=$LDFLAGS_SAVE
1025 CFLAGS=$CFLAGS_SAVE
1026 fi
1027
1028 if test $build_ft2232_libftdi = yes -o $build_usb_blaster_libftdi = yes -o \
1029 $build_openjtag_ftdi = yes -o $build_presto_libftdi = yes; then
1030
1031 # we can have libftdi or libftdi1, so check it and use the latest one
1032 PKG_CHECK_MODULES([LIBFTDI], [libftdi1], [use_libftdi=yes], [use_libftdi=no])
1033 if test $use_libftdi = no; then
1034 PKG_CHECK_MODULES([LIBFTDI], [libftdi], [use_libftdi=yes], [use_libftdi=no])
1035 fi
1036 if test $use_libftdi = no; then
1037 AC_MSG_ERROR([The libftdi driver is not present on your system.])
1038 fi
1039
1040 #
1041 # Try to build a small program.
1042 AC_MSG_CHECKING([Build & Link with libftdi...])
1043
1044 LDFLAGS_SAVE=$LDFLAGS
1045 CFLAGS_SAVE=$CFLAGS
1046 LIBS_SAVE=$LIBS
1047 _LDFLAGS=`eval echo $LDFLAGS`
1048 _CFLAGS=`eval echo $CFLAGS`
1049 _LIBS=`eval echo $LIBS`
1050 LDFLAGS=$_LDFLAGS
1051 CFLAGS="$_CFLAGS $LIBFTDI_CFLAGS"
1052 LIBS="$_LIBS $LIBFTDI_LIBS"
1053
1054 AC_RUN_IFELSE([AC_LANG_PROGRAM([[
1055 #include <stdio.h>
1056 #include <ftdi.h>
1057 ]], [[
1058 struct ftdi_context *p;
1059 p = ftdi_new();
1060 if( p != NULL ){
1061 return 0;
1062 } else {
1063 fprintf( stderr, "calling ftdi_new() failed\n");
1064 return 1;
1065 }
1066 ]])], [
1067 AC_MSG_RESULT([Success])
1068 ], [
1069 AC_MSG_ERROR([Cannot build & run test program using libftdi])
1070 ], [
1071 AC_MSG_RESULT([Skipping as we are cross-compiling, trying build only])
1072 AC_SEARCH_LIBS([ftdi_new], [], [], [AC_MSG_ERROR([Cannot link with libftdi])])
1073 ])
1074
1075 AC_MSG_CHECKING([for libftdi highspeed device support])
1076 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1077 #include <stdio.h>
1078 #include <ftdi.h>
1079 ]], [[
1080 enum ftdi_chip_type x = TYPE_2232H;
1081 ]])], [
1082 AC_DEFINE([BUILD_FT2232_HIGHSPEED], [1],
1083 [Support FT2232H/FT4232HS with FTD2XX or libftdi.])
1084 build_ft2232_highspeed=yes
1085 ], [
1086 build_ft2232_highspeed=no
1087 ])
1088 AC_MSG_RESULT([$build_ft2232_highspeed])
1089
1090 if test $build_ft2232_highspeed = no; then
1091 AC_MSG_WARN([You need a newer libftdi version (0.16 or later).])
1092 fi
1093
1094 AC_MSG_CHECKING([for libftdi FT232H device support])
1095 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1096 #include <stdio.h>
1097 #include <ftdi.h>
1098 ]], [[
1099 enum ftdi_chip_type x = TYPE_232H;
1100 ]])], [
1101 AC_DEFINE([HAS_ENUM_FT232H], [1],
1102 [Support FT232H with FTD2XX or libftdi.])
1103 has_enum_ft232h=yes
1104 ], [
1105 has_enum_ft232h=no
1106 ])
1107 AC_MSG_RESULT([$has_enum_ft232h])
1108
1109 if test $has_enum_ft232h = no; then
1110 AC_MSG_WARN([You need a newer libftdi version (0.20 or later).])
1111 fi
1112
1113 # Restore the 'unexpanded ldflags'
1114 LDFLAGS=$LDFLAGS_SAVE
1115 CFLAGS=$CFLAGS_SAVE
1116 LIBS=$LIBS_SAVE
1117 fi
1118
1119 PKG_CHECK_MODULES([LIBUSB1], [libusb-1.0], [
1120 use_libusb1=yes
1121 AC_DEFINE([HAVE_LIBUSB1], [1], [Define if you have libusb-1.x])
1122 PKG_CHECK_EXISTS([libusb-1.0 >= 1.0.9],
1123 [AC_DEFINE([HAVE_LIBUSB_ERROR_NAME], [1], [Define if your libusb has libusb_error_name()])],
1124 [AC_MSG_WARN([libusb-1.x older than 1.0.9 detected, consider updating])])
1125 LIBUSB1_CFLAGS=`echo $LIBUSB1_CFLAGS | sed 's/-I/-isystem /'`
1126 AC_MSG_NOTICE([libusb-1.0 header bug workaround: LIBUSB1_CFLAGS changed to "$LIBUSB1_CFLAGS"])
1127 ], [
1128 use_libusb1=no
1129 AC_MSG_WARN([libusb-1.x not found, trying legacy libusb-0.1 as a fallback; consider installing libusb-1.x instead])
1130 ])
1131
1132 PKG_CHECK_MODULES([LIBUSB0], [libusb], [use_libusb0=yes], [use_libusb0=no])
1133
1134 for hidapi_lib in hidapi hidapi-hidraw hidapi-libusb; do
1135 PKG_CHECK_MODULES([HIDAPI],[$hidapi_lib],[
1136 use_hidapi=yes
1137 break
1138 ],[
1139 use_hidapi=no
1140 ])
1141 done
1142
1143 m4_define([PROCESS_ADAPTERS], [
1144 m4_foreach([adapter], [$1], [
1145 if test $2; then
1146 if test $ADAPTER_VAR([adapter]) != no; then
1147 AC_DEFINE([BUILD_]ADAPTER_SYM([adapter]), [1], [1 if you want the ]ADAPTER_DESC([adapter]).)
1148 else
1149 AC_DEFINE([BUILD_]ADAPTER_SYM([adapter]), [0], [0 if you do not want the ]ADAPTER_DESC([adapter]).)
1150 fi
1151 else
1152 if test $ADAPTER_VAR([adapter]) = yes; then
1153 AC_MSG_ERROR([$3 is required for the ADAPTER_DESC([adapter])])
1154 fi
1155 ADAPTER_VAR([adapter])=no
1156 fi
1157 AM_CONDITIONAL(ADAPTER_SYM([adapter]), [test $ADAPTER_VAR([adapter]) != no])
1158 ])
1159 ])
1160
1161 PROCESS_ADAPTERS([USB1_ADAPTERS], [$use_libusb1 = yes], [libusb-1.x])
1162 PROCESS_ADAPTERS([USB_ADAPTERS], [$use_libusb1 = yes -o $use_libusb0 = yes], [libusb-1.x or libusb-0.1])
1163 PROCESS_ADAPTERS([USB0_ADAPTERS], [$use_libusb0 = yes], [libusb-0.1])
1164 PROCESS_ADAPTERS([HIDAPI_ADAPTERS], [$use_hidapi = yes], [hidapi])
1165
1166 if test $enable_stlink != no -o $enable_ti_icdi != no; then
1167 AC_DEFINE([BUILD_HLADAPTER], [1], [1 if you want the High Level JTAG driver.])
1168 else
1169 AC_DEFINE([BUILD_HLADAPTER], [0], [0 if you want the High Level JTAG driver.])
1170 fi
1171 AM_CONDITIONAL([HLADAPTER], [test $enable_stlink != no -o $enable_ti_icdi != no])
1172
1173 AM_CONDITIONAL([RELEASE], [test $build_release = yes])
1174 AM_CONDITIONAL([PARPORT], [test $build_parport = yes])
1175 AM_CONDITIONAL([DUMMY], [test $build_dummy = yes])
1176 AM_CONDITIONAL([GIVEIO], [test x$parport_use_giveio = xyes])
1177 AM_CONDITIONAL([EP93XX], [test $build_ep93xx = yes])
1178 AM_CONDITIONAL([ZY1000], [test $build_zy1000 = yes])
1179 AM_CONDITIONAL([ZY1000_MASTER], [test $build_zy1000_master = yes])
1180 AM_CONDITIONAL([IOUTIL], [test $build_ioutil = yes])
1181 AM_CONDITIONAL([AT91RM9200], [test $build_at91rm9200 = yes])
1182 AM_CONDITIONAL([BCM2835GPIO], [test $build_bcm2835gpio = yes])
1183 AM_CONDITIONAL([BITBANG], [test $build_bitbang = yes])
1184 AM_CONDITIONAL([FT2232_LIBFTDI], [test $build_ft2232_libftdi = yes])
1185 AM_CONDITIONAL([FT2232_DRIVER], [test $build_ft2232_ftd2xx = yes -o $build_ft2232_libftdi = yes])
1186 AM_CONDITIONAL([USB_BLASTER_LIBFTDI], [test $build_usb_blaster_libftdi = yes])
1187 AM_CONDITIONAL([USB_BLASTER_FTD2XX], [test $build_usb_blaster_ftd2xx = yes])
1188 AM_CONDITIONAL([JTAG_VPI], [test $build_jtag_vpi = yes -o $build_jtag_vpi = yes])
1189 AM_CONDITIONAL([USB_BLASTER_DRIVER], [test $build_usb_blaster_ftd2xx = yes -o $build_usb_blaster_libftdi = yes -o $enable_usb_blaster_2 != no])
1190 AM_CONDITIONAL([AMTJTAGACCEL], [test $build_amtjtagaccel = yes])
1191 AM_CONDITIONAL([GW16012], [test $build_gw16012 = yes])
1192 AM_CONDITIONAL([PRESTO_LIBFTDI], [test $build_presto_libftdi = yes])
1193 AM_CONDITIONAL([PRESTO_DRIVER], [test $build_presto_ftd2xx = yes -o $build_presto_libftdi = yes])
1194 AM_CONDITIONAL([OPENJTAG], [test $build_openjtag_ftd2xx = yes -o $build_openjtag_ftdi = yes])
1195 AM_CONDITIONAL([OOCD_TRACE], [test $build_oocd_trace = yes])
1196 AM_CONDITIONAL([REMOTE_BITBANG], [test $build_remote_bitbang = yes])
1197 AM_CONDITIONAL([BUSPIRATE], [test $build_buspirate = yes])
1198 AM_CONDITIONAL([SYSFSGPIO], [test $build_sysfsgpio = yes])
1199 AM_CONDITIONAL([USE_LIBUSB0], [test $use_libusb0 = yes])
1200 AM_CONDITIONAL([USE_LIBUSB1], [test $use_libusb1 = yes])
1201 AM_CONDITIONAL([IS_CYGWIN], [test $is_cygwin = yes])
1202 AM_CONDITIONAL([IS_MINGW], [test $is_mingw = yes])
1203 AM_CONDITIONAL([IS_WIN32], [test $is_win32 = yes])
1204 AM_CONDITIONAL([IS_DARWIN], [test $is_darwin = yes])
1205 AM_CONDITIONAL([BITQ], [test $build_bitq = yes])
1206 AM_CONDITIONAL([CMSIS_DAP], [test $use_hidapi = yes])
1207
1208 AM_CONDITIONAL([MINIDRIVER], [test $build_minidriver = yes])
1209 AM_CONDITIONAL([MINIDRIVER_DUMMY], [test $build_minidriver_dummy = yes])
1210
1211 AM_CONDITIONAL([INTERNAL_JIMTCL], [test $use_internal_jimtcl = yes])
1212
1213 # Look for environ alternatives. Possibility #1: is environ in unistd.h or stdlib.h?
1214 AC_MSG_CHECKING([for environ in unistd.h and stdlib.h])
1215 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1216 #define _GNU_SOURCE
1217 #include <unistd.h>
1218 #include <stdlib.h>
1219 ]], [[char **ep = environ;]]
1220 )], [
1221 AC_MSG_RESULT([yes])
1222 has_environ=yes
1223 ], [
1224 AC_MSG_RESULT([no])
1225
1226 # Possibility #2: can environ be found in an available library?
1227 AC_MSG_CHECKING([for extern environ])
1228 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1229 extern char **environ;
1230 ]], [[char **ep = environ;]]
1231 )], [
1232 AC_DEFINE(NEED_ENVIRON_EXTERN, [1], [Must declare 'environ' to use it.])
1233 has_environ=yes
1234 ], [
1235 has_environ=no
1236 ])
1237 AC_MSG_RESULT([${has_environ}])
1238 ])
1239
1240 if test "${has_environ}" != "yes" ; then
1241 AC_MSG_FAILURE([Could not find 'environ' in unistd.h or available libraries.])
1242 fi
1243
1244 AC_DEFINE([_GNU_SOURCE],[1],[Use GNU C library extensions (e.g. stdndup).])
1245
1246 # set default gcc warnings
1247 GCC_WARNINGS="-Wall -Wstrict-prototypes -Wformat-security -Wshadow"
1248 if test "${gcc_wextra}" = yes; then
1249 GCC_WARNINGS="${GCC_WARNINGS} -Wextra -Wno-unused-parameter"
1250 GCC_WARNINGS="${GCC_WARNINGS} -Wbad-function-cast"
1251 GCC_WARNINGS="${GCC_WARNINGS} -Wcast-align"
1252 GCC_WARNINGS="${GCC_WARNINGS} -Wredundant-decls"
1253 fi
1254 if test "${gcc_werror}" = yes; then
1255 GCC_WARNINGS="${GCC_WARNINGS} -Werror"
1256 fi
1257
1258 # overide default gcc cflags
1259 if test $gcc_warnings = yes; then
1260 CFLAGS="$CFLAGS $GCC_WARNINGS"
1261 fi
1262
1263 AC_CONFIG_FILES([
1264 Makefile
1265 src/Makefile
1266 src/helper/Makefile
1267 src/jtag/Makefile
1268 src/jtag/drivers/Makefile
1269 src/jtag/drivers/usb_blaster/Makefile
1270 src/jtag/hla/Makefile
1271 src/jtag/aice/Makefile
1272 src/transport/Makefile
1273 src/target/openrisc/Makefile
1274 src/xsvf/Makefile
1275 src/svf/Makefile
1276 src/target/Makefile
1277 src/rtos/Makefile
1278 src/server/Makefile
1279 src/flash/Makefile
1280 src/flash/nor/Makefile
1281 src/flash/nand/Makefile
1282 src/pld/Makefile
1283 doc/Makefile
1284 ])
1285 AC_OUTPUT
1286
1287 echo
1288 echo
1289 echo OpenOCD configuration summary
1290 echo --------------------------------------------------
1291 m4_foreach([adapter], [USB1_ADAPTERS, USB_ADAPTERS, USB0_ADAPTERS, HIDAPI_ADAPTERS],
1292 [s=m4_format(["%-40s"], ADAPTER_DESC([adapter]))
1293 case $ADAPTER_VAR([adapter]) in
1294 auto)
1295 echo "$s"yes '(auto)'
1296 ;;
1297 yes)
1298 echo "$s"yes
1299 ;;
1300 no)
1301 echo "$s"no
1302 ;;
1303 esac
1304 ])
1305 echo
1306
1307 if test $build_ft2232_libftdi = yes -o $build_ft2232_ftd2xx = yes; then
1308 if test $enable_ftdi = no; then
1309 AC_MSG_WARN([Building the deprecated 'ft2232' adapter driver but not its replacement!])
1310 AC_MSG_WARN([Please consider using --enable-ftdi instead.])
1311 else
1312 AC_MSG_WARN([Building the deprecated 'ft2232' adapter driver.])
1313 fi
1314 fi

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)