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