]> git.sur5r.net Git - openocd/blob - configure.in
Add configure script check to enable C99 build option.
[openocd] / configure.in
1 AC_PREREQ(2.59)
2 AC_INIT([openocd], [0.2.0-in-development],
3         [OpenOCD Mailing List <openocd-development@lists.berlios.de>])
4 AC_CONFIG_SRCDIR([src/openocd.c])
5
6 AC_CANONICAL_HOST
7
8 AC_SEARCH_LIBS([ioperm], [ioperm])
9 AC_SEARCH_LIBS([dlopen], [dl])
10
11 AC_CHECK_HEADERS(jtag_minidriver.h)
12 AC_CHECK_HEADERS(sys/param.h)
13 AC_CHECK_HEADERS(sys/time.h)
14 AC_CHECK_HEADERS(sys/select.h)
15 AC_CHECK_HEADERS(elf.h)
16 AC_CHECK_HEADERS(strings.h)
17 AC_CHECK_HEADERS(stdbool.h)
18
19 AC_HEADER_TIME
20
21 AC_C_BIGENDIAN
22
23 AC_CHECK_FUNCS(strndup)
24 AC_CHECK_FUNCS(strnlen)
25 AC_CHECK_FUNCS(gettimeofday)
26 AC_CHECK_FUNCS(usleep)
27 AC_CHECK_FUNCS(vasprintf)
28
29 build_bitbang=no
30 build_bitq=no
31 is_cygwin=no
32 is_mingw=no
33 is_win32=no
34 is_darwin=no
35 build_release=yes
36
37 AC_ARG_ENABLE(release,
38         AS_HELP_STRING([--enable-release], [Enable Release Build, default no]),
39         [build_release=$enableval], [build_release=no])
40
41 if test $cross_compiling = no; then
42         if test $build_release = no; then
43                 # check we can find guess-rev.sh
44                 AC_CHECK_FILE("$srcdir/guess-rev.sh", build_release=no, build_release=yes)
45         fi
46 fi
47
48 # We are not *ALWAYS* being installed in the standard place.
49 # We may be installed in a "tool-build" specific location.
50 # Normally with other packages - as part of a tool distro.
51 # Thus - we should search that 'libdir' also.
52 #
53 # And - if we are being installed there - the odds are
54 # The libraries unique to what we are are there too.
55 #
56
57 # Expand nd deal with NONE - just like configure will do later
58 OCDprefix=$prefix
59 OCDxprefix=$exec_prefix
60 test x"$OCDprefix"  = xNONE && OCDprefix=$ac_default_prefix
61 # Let make expand exec_prefix.
62 test x"$OCDxprefix" = xNONE && OCDxprefix="$OCDprefix"
63
64 # what matters is the "exec-prefix"
65 if test "$OCDxprefix" != "$ac_default_prefix"
66 then
67     # We are installing in a non-standard place
68     # Nonstandard --prefix and/or --exec-prefix
69     # We have an override of some sort.
70     # use build specific install library dir
71     
72     LDFLAGS="$LDFLAGS -L$OCDxprefix/lib"
73     # RPATH becomes an issue on Linux only
74     if test $host_os = linux-gnu || test $host_os = linux ; then
75         LDFLAGS="$LDFLAGS -Wl,-rpath,$OCDxprefix/lib"
76     fi
77     # The "INCDIR" is also usable
78     CFLAGS="$CFLAGS -I$includedir"
79 fi
80
81 AC_ARG_WITH(ftd2xx,
82    AS_HELP_STRING([--with-ftd2xx=<PATH>],[This option has been removed.]),
83 [
84 # Option Given.
85 cat << __EOF__
86
87 The option: --with-ftd2xx=<PATH> has been removed.
88 On Linux, the new option is:
89   
90   --with-ftd2xx-linux-tardir=/path/to/files
91
92 Where <path> is the path the the directory where the "tar.gz" file
93 from FTDICHIP.COM was unpacked, for example:
94
95   --with-ftd2xx-linux-tardir=/home/duane/libftd2xx-linux-tardir=/home/duane/libftd2xx0.4.16
96
97 On Cygwin/MingW32, the new option is:
98
99   --with-ftd2xx-win32-zipdir=/path/to/files
100
101 Where <path> is the path to the directory where the "zip" file from
102 FTDICHIP.COM was unpacked, for example:
103
104   --with-ftd2xx-win32-zipdir=/home/duane/ftd2xx.cdm.files
105
106 __EOF__
107
108    AC_MSG_ERROR([Sorry Cannot continue])
109 ],
110
111 # Option not given
112 true
113 ]
114 )
115
116 #========================================
117 # FTD2XXX support comes in 4 forms.
118 #    (1) win32 - via a zip file
119 #    (2) linux - via a tar file
120 #    (3) linux/cygwin/mingw - via libftdi
121 #    (4) darwin - installed under /usr/local
122 #
123 # In case (1) and (2) we need to know where the package was unpacked.
124
125 AC_ARG_WITH(ftd2xx-win32-zipdir,
126   AS_HELP_STRING([--with-ftd2xx-win32-zipdir],[Where (CYGWIN/MINGW) the zip file from ftdichip.com was unpacked <default=search>]),
127   [
128   # option present
129   if test -d $with_ftd2xx_win32_zipdir
130   then
131         with_ftd2xx_win32_zipdir=`cd $with_ftd2xx_win32_zipdir && pwd`
132         AC_MSG_NOTICE([Using: ftdichip.com library: $with_ftd2xx_win32_zipdir])
133   else
134         AC_MSG_ERROR([Parameter to --with-ftd2xx-win32-zipdir is not a dir: $with_ftd2xx_win32_zipdir])
135   fi
136   ],
137   [
138   # not given
139   true
140   ]
141 )
142
143 AC_ARG_WITH(ftd2xx-linux-tardir,
144   AS_HELP_STRING([--with-ftd2xx-linux-tardir], [Where (Linux/Unix) the tar file from ftdichip.com was unpacked <default=search>]),
145   [
146   # Option present
147   if test $is_win32 = yes ; then
148      AC_MSG_ERROR([The option: --with-ftd2xx-linux-tardir is only usable on linux])
149   fi
150   if test -d $with_ftd2xx_linux_tardir
151   then
152         with_ftd2xx_linux_tardir=`cd $with_ftd2xx_linux_tardir && pwd`
153         AC_MSG_NOTICE([Using: ftdichip.com library: $with_ftd2xx_linux_tardir])
154   else
155         AC_MSG_ERROR([Parameter to --with-ftd2xx-linux-tardir is not a dir: $with_ftd2xx_linux_tardir])
156   fi
157   ],
158   [
159   # Not given 
160   true
161   ]
162 )
163
164 AC_ARG_WITH(ftd2xx-lib,
165         AS_HELP_STRING([--with-ftd2xx-lib], [Use static or shared ftd2xx libs on default static]),
166 [
167 case "$withval" in
168 static)
169         with_ftd2xx_lib=$withval
170         ;;
171 shared)
172         with_ftd2xx_lib=$withval
173         ;;
174 *)
175         AC_MSG_ERROR([Option: --with-ftd2xx-lib=static or --with-ftd2xx-lib=shared not, $withval])
176         ;;
177 esac
178 ],
179 [
180         # Default is static - it is simpler :-(
181         with_ftd2xx_lib=static
182 ]
183 )
184
185 AC_ARG_ENABLE(gccwarnings,
186         AS_HELP_STRING([--disable-gccwarnings], [Disable compiler warnings]),
187         [gcc_warnings=$enableval], [gcc_warnings=yes])
188
189 AC_ARG_ENABLE(wextra,
190         AS_HELP_STRING([--disable-wextra], [Disable extra compiler warnings]),
191         [gcc_wextra=$enableval], [gcc_wextra=$gcc_warnings])
192
193 AC_ARG_ENABLE(werror,
194         AS_HELP_STRING([--disable-werror], [Do not treat warnings as errors]),
195         [gcc_werror=$enableval], [gcc_werror=$gcc_warnings])
196
197 # set default verbose options, overridden by following options
198 debug_jtag_io=no
199 debug_usb_io=no
200 debug_usb_comms=no
201
202 AC_ARG_ENABLE(verbose,
203         AS_HELP_STRING([--enable-verbose],
204                 [Enable verbose JTAG I/O messages (for debugging).]), 
205         [
206         debug_jtag_io=$enableval
207         debug_usb_io=$enableval
208         debug_usb_comms=$enableval
209         ], [])
210
211 AC_ARG_ENABLE(verbose_jtag_io,
212         AS_HELP_STRING([--enable-verbose-jtag-io],
213                 [Enable verbose JTAG I/O messages (for debugging).]), 
214         [debug_jtag_io=$enableval], [])
215 AC_ARG_ENABLE(verbose_usb_io,
216         AS_HELP_STRING([--enable-verbose-usb-io],
217                 [Enable verbose USB I/O messages (for debugging)]), 
218         [debug_usb_io=$enableval], [])
219 AC_ARG_ENABLE(verbose_usb_comms,
220         AS_HELP_STRING([--enable-verbose-usb-comms],
221                 [Enable verbose USB communication messages (for debugging)]), 
222         [debug_usb_comms=$enableval], [])
223
224 AC_MSG_CHECKING([whether to enable verbose JTAG I/O messages]);
225 AC_MSG_RESULT($debug_jtag_io)
226 if test $debug_jtag_io = yes; then
227   AC_DEFINE([_DEBUG_JTAG_IO_],[1], [Print verbose JTAG I/O messages])
228 fi
229
230 AC_MSG_CHECKING([whether to enable verbose USB I/O messages]);
231 AC_MSG_RESULT($debug_usb_io)
232 if test $debug_usb_io = yes; then
233   AC_DEFINE([_DEBUG_USB_IO_],[1], [Print verbose USB I/O messages])
234 fi
235
236 AC_MSG_CHECKING([whether to enable verbose USB communication messages]);
237 AC_MSG_RESULT($debug_usb_comms)
238 if test $debug_usb_comms = yes; then
239   AC_DEFINE([_DEBUG_USB_COMMS_],[1], [Print verbose USB communication messages])
240 fi
241
242
243 AC_ARG_ENABLE(parport,
244   AS_HELP_STRING([--enable-parport], [Enable building the pc parallel port driver]), 
245   [build_parport=$enableval], [build_parport=no])
246
247 AC_ARG_ENABLE(dummy,
248   AS_HELP_STRING([--enable-dummy], [Enable building the dummy port driver]), 
249   [build_dummy=$enableval], [build_dummy=no])
250   
251 case "${host_cpu}" in 
252   i?86|x86*)
253     AC_ARG_ENABLE(parport_ppdev,
254       AS_HELP_STRING([--enable-parport_ppdev], [Enable use of ppdev (/dev/parportN) for parport]), 
255       [parport_use_ppdev=$enableval], [parport_use_ppdev=no])
256     ;;
257   *) 
258     parport_use_ppdev=yes
259     ;;
260 esac
261
262 AC_ARG_ENABLE(ft2232_libftdi,
263   AS_HELP_STRING([--enable-ft2232_libftdi], [Enable building support for FT2232 based devices using the libftdi driver, opensource alternate of FTD2XX]), 
264   [build_ft2232_libftdi=$enableval], [build_ft2232_libftdi=no])
265
266 AC_ARG_ENABLE(ft2232_ftd2xx,
267   AS_HELP_STRING([--enable-ft2232_ftd2xx], [Enable building support for FT2232 based devices using the FTD2XX driver from ftdichip.com]), 
268   [build_ft2232_ftd2xx=$enableval], [build_ft2232_ftd2xx=no])
269  
270 AC_ARG_ENABLE(amtjtagaccel,
271   AS_HELP_STRING([--enable-amtjtagaccel], [Enable building the Amontec JTAG-Accelerator driver]), 
272   [build_amtjtagaccel=$enableval], [build_amtjtagaccel=no])
273
274 AC_ARG_ENABLE(ecosboard,
275   AS_HELP_STRING([--enable-ecosboard], [Enable building support for eCosBoard based JTAG debugger]), 
276   [build_ecosboard=$enableval], [build_ecosboard=no])
277
278 AC_ARG_ENABLE(ioutil,
279   AS_HELP_STRING([--enable-ioutil], [Enable ioutil functions - useful for standalone OpenOCD implementations]), 
280   [build_ioutil=$enableval], [build_ioutil=no])
281
282 AC_ARG_ENABLE(httpd,
283   AS_HELP_STRING([--enable-httpd], [Enable builtin httpd server - useful for standalone OpenOCD implementations]), 
284   [build_httpd=$enableval], [build_httpd=no])
285
286 case "${host_cpu}" in 
287   arm*)
288     AC_ARG_ENABLE(ep93xx,
289       AS_HELP_STRING([--enable-ep93xx], [Enable building support for EP93xx based SBCs]), 
290       [build_ep93xx=$enableval], [build_ep93xx=no])
291
292     AC_ARG_ENABLE(at91rm9200,
293       AS_HELP_STRING([--enable-at91rm9200], [Enable building support for AT91RM9200 based SBCs]),
294       [build_at91rm9200=$enableval], [build_at91rm9200=no])
295     ;;
296     
297   *) 
298     build_ep93xx=no
299     build_at91rm9200=no
300     ;;
301 esac
302
303 AC_ARG_ENABLE(gw16012,
304   AS_HELP_STRING([--enable-gw16012], [Enable building support for the Gateworks GW16012 JTAG Programmer]),
305   [build_gw16012=$enableval], [build_gw16012=no])
306
307 AC_ARG_ENABLE(presto_libftdi,
308   AS_HELP_STRING([--enable-presto_libftdi], [Enable building support for ASIX Presto Programmer using the libftdi driver]),
309   [build_presto_libftdi=$enableval], [build_presto_libftdi=no])
310
311 AC_ARG_ENABLE(presto_ftd2xx,
312   AS_HELP_STRING([--enable-presto_ftd2xx], [Enable building support for ASIX Presto Programmer using the FTD2XX driver]),
313   [build_presto_ftd2xx=$enableval], [build_presto_ftd2xx=no])
314
315 AC_ARG_ENABLE(usbprog,
316   AS_HELP_STRING([--enable-usbprog], [Enable building support for the usbprog JTAG Programmer]),
317   [build_usbprog=$enableval], [build_usbprog=no])
318
319 AC_ARG_ENABLE(oocd_trace,
320   AS_HELP_STRING([--enable-oocd_trace], [Enable building support for the OpenOCD+trace ETM capture device]),
321   [build_oocd_trace=$enableval], [build_oocd_trace=no])
322
323 AC_ARG_ENABLE(jlink,
324   AS_HELP_STRING([--enable-jlink], [Enable building support for the Segger J-Link JTAG Programmer]),
325   [build_jlink=$enableval], [build_jlink=no])
326
327 AC_ARG_ENABLE(vsllink,
328   AS_HELP_STRING([--enable-vsllink], [Enable building support for the Versaloon-Link JTAG Programmer]),
329   [build_vsllink=$enableval], [build_vsllink=no])
330
331 AC_ARG_ENABLE(rlink,
332   AS_HELP_STRING([--enable-rlink], [Enable building support for the Raisonance RLink JTAG Programmer]),
333   [build_rlink=$enableval], [build_rlink=no])
334
335 AC_ARG_ENABLE(arm-jtag-ew,
336   AS_HELP_STRING([--enable-arm-jtag-ew], [Enable building support for the Olimex ARM-JTAG-EW Programmer]),
337   [build_armjtagew=$enableval], [build_armjtagew=no])
338
339 case $host in 
340   *-cygwin*) 
341     is_win32=yes
342
343     AC_ARG_ENABLE(parport_giveio,
344     AS_HELP_STRING([--enable-parport_giveio], [Enable use of giveio for parport instead of ioperm]), 
345     [parport_use_giveio=$enableval], [parport_use_giveio=no])
346         
347         AC_COMPILE_IFELSE(AC_LANG_PROGRAM([],[return __MINGW32__;]),[is_mingw=yes],[is_mingw=no])
348         if test $is_mingw = yes; then
349                 AC_DEFINE(IS_MINGW, 1, [1 if building for MinGW.])
350                 parport_use_giveio=yes
351                 is_cygwin=no
352         else
353                 is_cygwin=yes
354                 AC_DEFINE(IS_CYGWIN, 1, [1 if building for Cygwin.])
355         fi
356         
357     AC_DEFINE(IS_WIN32, 1, [1 if building for Win32.])
358     AC_DEFINE(IS_DARWIN, 0, [0 if not building for Darwin.])
359     ;; 
360   *-mingw*) 
361     is_mingw=yes
362     is_win32=yes
363
364     parport_use_giveio=yes
365
366     AC_DEFINE(IS_MINGW, 1, [1 if building for MinGW.])
367     AC_DEFINE(IS_WIN32, 1, [1 if building for Win32.])
368     AC_DEFINE(IS_DARWIN, 0, [0 if not building for Darwin.])
369     ;; 
370   *darwin*)
371     is_darwin=yes
372
373     parport_use_giveio=no
374
375     AC_DEFINE(IS_CYGWIN, 0, [0 if not building for Cygwin.])
376     AC_DEFINE(IS_WIN32, 0, [0 if not building for Win32.])
377     AC_DEFINE(IS_DARWIN, 1, [1 if building for Darwin.])
378     ;;
379   *) 
380         parport_use_giveio=no
381     AC_DEFINE(IS_CYGWIN, 0, [0 if not building for Cygwin.])
382     AC_DEFINE(IS_WIN32, 0, [0 if not building for Win32.])
383     AC_DEFINE(IS_DARWIN, 0, [0 if not building for Darwin.])
384     ;;
385 esac
386
387 if test $build_parport = yes; then
388   build_bitbang=yes
389   AC_DEFINE(BUILD_PARPORT, 1, [1 if you want parport.])
390 else
391   AC_DEFINE(BUILD_PARPORT, 0, [0 if you don't want parport.])
392 fi
393
394 if test $build_dummy = yes; then
395   build_bitbang=yes
396   AC_DEFINE(BUILD_DUMMY, 1, [1 if you want dummy driver.])
397 else
398   AC_DEFINE(BUILD_DUMMY, 0, [0 if you don't want dummy driver.])
399 fi
400
401 if test $build_ep93xx = yes; then
402   build_bitbang=yes
403   AC_DEFINE(BUILD_EP93XX, 1, [1 if you want ep93xx.])
404 else
405   AC_DEFINE(BUILD_EP93XX, 0, [0 if you don't want ep93xx.])
406 fi
407
408 if test $build_ecosboard = yes; then
409   build_bitbang=yes
410   AC_DEFINE(BUILD_ECOSBOARD, 1, [1 if you want eCosBoard.])
411 else
412   AC_DEFINE(BUILD_ECOSBOARD, 0, [0 if you don't want eCosBoard.])
413 fi
414
415 if test $build_ioutil = yes; then
416   AC_DEFINE(BUILD_IOUTIL, 1, [1 if you want ioutils.])
417 else
418   AC_DEFINE(BUILD_IOUTIL, 0, [0 if you don't want ioutils.])
419 fi
420
421 if test $build_httpd = yes; then
422   AC_DEFINE(BUILD_HTTPD, 1, [1 if you want httpd.])
423 else
424   AC_DEFINE(BUILD_HTTPD, 0, [0 if you don't want httpd.])
425 fi
426
427 if test $build_at91rm9200 = yes; then
428   build_bitbang=yes
429   AC_DEFINE(BUILD_AT91RM9200, 1, [1 if you want at91rm9200.])
430 else
431   AC_DEFINE(BUILD_AT91RM9200, 0, [0 if you don't want at91rm9200.])
432 fi
433
434 if test $parport_use_ppdev = yes; then
435   AC_DEFINE(PARPORT_USE_PPDEV, 1, [1 if you want parport to use ppdev.])
436 else
437   AC_DEFINE(PARPORT_USE_PPDEV, 0, [0 if you don't want parport to use ppdev.])
438 fi
439
440 if test $parport_use_giveio = yes; then
441   AC_DEFINE(PARPORT_USE_GIVEIO, 1, [1 if you want parport to use giveio.])
442 else
443   AC_DEFINE(PARPORT_USE_GIVEIO, 0, [0 if you don't want parport to use giveio.])
444 fi
445
446 if test $build_bitbang = yes; then
447   AC_DEFINE(BUILD_BITBANG, 1, [1 if you want a bitbang interface.])
448 else
449   AC_DEFINE(BUILD_BITBANG, 0, [0 if you don't want a bitbang interface.])
450 fi
451
452 if test $build_ft2232_libftdi = yes; then
453   AC_DEFINE(BUILD_FT2232_LIBFTDI, 1, [1 if you want libftdi ft2232.])
454 else
455   AC_DEFINE(BUILD_FT2232_LIBFTDI, 0, [0 if you don't want libftdi ft2232.])
456 fi
457
458 if test $build_ft2232_ftd2xx = yes; then
459   AC_DEFINE(BUILD_FT2232_FTD2XX, 1, [1 if you want ftd2xx ft2232.])
460 else
461   AC_DEFINE(BUILD_FT2232_FTD2XX, 0, [0 if you don't want ftd2xx ft2232.])
462 fi
463
464 if test $build_amtjtagaccel = yes; then
465   AC_DEFINE(BUILD_AMTJTAGACCEL, 1, [1 if you want the Amontec JTAG-Accelerator driver.])
466 else
467   AC_DEFINE(BUILD_AMTJTAGACCEL, 0, [0 if you don't want the Amontec JTAG-Accelerator driver.])
468 fi
469
470 if test $build_gw16012 = yes; then
471   AC_DEFINE(BUILD_GW16012, 1, [1 if you want the Gateworks GW16012 driver.])
472 else
473   AC_DEFINE(BUILD_GW16012, 0, [0 if you don't want the Gateworks GW16012 driver.])
474 fi
475
476 if test $build_presto_libftdi = yes; then
477   build_bitq=yes
478   AC_DEFINE(BUILD_PRESTO_LIBFTDI, 1, [1 if you want the ASIX PRESTO driver using libftdi.])
479 else
480   AC_DEFINE(BUILD_PRESTO_LIBFTDI, 0, [0 if you don't want the ASIX PRESTO driver using libftdi.])
481 fi
482
483 if test $build_presto_ftd2xx = yes; then
484   build_bitq=yes
485   AC_DEFINE(BUILD_PRESTO_FTD2XX, 1, [1 if you want the ASIX PRESTO driver using FTD2XX.])
486 else
487   AC_DEFINE(BUILD_PRESTO_FTD2XX, 0, [0 if you don't want the ASIX PRESTO driver using FTD2XX.])
488 fi
489
490 if test $build_bitq = yes; then
491   AC_DEFINE(BUILD_BITQ, 1, [1 if you want a bitq interface.])
492 else
493   AC_DEFINE(BUILD_BITQ, 0, [0 if you don't want a bitq interface.])
494 fi
495
496 if test $build_usbprog = yes; then
497   AC_DEFINE(BUILD_USBPROG, 1, [1 if you want the usbprog JTAG driver.])
498 else
499   AC_DEFINE(BUILD_USBPROG, 0, [0 if you don't want the usbprog JTAG driver.])
500 fi
501
502 if test $build_oocd_trace = yes; then
503   AC_DEFINE(BUILD_OOCD_TRACE, 1, [1 if you want the OpenOCD+trace ETM capture driver.])
504 else
505   AC_DEFINE(BUILD_OOCD_TRACE, 0, [0 if you don't want the OpenOCD+trace ETM capture driver.])
506 fi
507
508 if test $build_jlink = yes; then
509   AC_DEFINE(BUILD_JLINK, 1, [1 if you want the J-Link JTAG driver.])
510 else
511   AC_DEFINE(BUILD_JLINK, 0, [0 if you don't want the J-Link JTAG driver.])
512 fi
513
514 if test $build_vsllink = yes; then
515   AC_DEFINE(BUILD_VSLLINK, 1, [1 if you want the Versaloon-Link JTAG driver.])
516 else
517   AC_DEFINE(BUILD_VSLLINK, 0, [0 if you don't want the Versaloon-Link JTAG driver.])
518 fi
519
520 if test $build_rlink = yes; then
521   AC_DEFINE(BUILD_RLINK, 1, [1 if you want the RLink JTAG driver.])
522 else
523   AC_DEFINE(BUILD_RLINK, 0, [0 if you don't want the RLink JTAG driver.])
524 fi
525
526 if test $build_armjtagew = yes; then
527   AC_DEFINE(BUILD_ARMJTAGEW, 1, [1 if you want the ARM-JTAG-EW JTAG driver.])
528 else
529   AC_DEFINE(BUILD_ARMJTAGEW, 0, [0 if you don't want the ARM-JTAG-EW JTAG driver.])
530 fi
531
532 #-- Deal with MingW/Cygwin FTD2XX issues
533
534 if test $is_win32 = yes; then
535 if test "${with_ftd2xx_linux_tardir+set}" = set
536 then
537    AC_MSG_ERROR([The option: with_ftd2xx_linux_tardir is for LINUX only.])
538 fi
539
540 if test $build_ft2232_ftd2xx = yes -o $build_presto_ftd2xx = yes ; then
541 AC_MSG_CHECKING([for ftd2xx.lib exists (win32)])
542
543    # if we are given a zipdir...
544    if test "${with_ftd2xx_win32_zipdir+set}" = set
545    then
546       # Set the CFLAGS for "ftd2xx.h"
547       f=$with_ftd2xx_win32_zipdir/ftd2xx.h
548       if test ! -f $f ; then
549          AC_MSG_ERROR([File: $f cannot be found])
550       fi
551       CFLAGS="$CFLAGS -I$with_ftd2xx_win32_zipdir"
552
553       # And calculate the LDFLAGS for the machine
554       case "$host_cpu" in
555       i?86|x86_*)
556         LDFLAGS="$LDFLAGS -L$with_ftd2xx_win32_zipdir/i386"
557         LIBS="$LIBS -lftd2xx"
558         f=$with_ftd2xx_win32_zipdir/i386/ftd2xx.lib
559         ;;
560       amd64)
561         LDFLAGS="$LDFLAGS -L$with_ftd2xx_win32_zipdir/amd64"
562         LIBS="$LIBS -lftd2xx"
563         f=$with_ftd2xx_win32_zipdir/amd64/ftd2xx.lib
564         ;;
565       *)
566         AC_MSG_ERROR([Unknown Win32 host cpu: $host_cpu])
567         ;;
568        esac
569        if test ! -f $f ; then
570           AC_MSG_ERROR([Library: $f not found])
571        fi
572    else
573       LIBS="$LIBS -lftd2xx"
574       AC_MSG_WARN([ASSUMPTION: The (win32) FTDICHIP.COM files: ftd2xx.h and ftd2xx.lib are in a proper place])
575    fi
576 fi
577 fi
578
579 if test $is_darwin = yes ; then
580 if test "${with_ftd2xx_win32_zipdir+set}" = set
581 then
582    AC_MSG_ERROR([The option: --with-ftd2xx-win32-zipdir is for win32 only])
583 fi
584 if test "${with_ftd2xx_linux_tardir+set}" = set
585 then
586    AC_MSG_ERROR([The option: with_ftd2xx_linux_tardir is for LINUX only.])
587 fi
588
589 if test $build_ft2232_ftd2xx = yes -o $build_presto_ftd2xx = yes ; then
590    AC_MSG_CHECKING([for libftd2xx.a (darwin)])
591
592    if test ! -f /usr/local/include/ftd2xx.h ; then
593       AC_MSG_ERROR([ftd2xx library from FTDICHIP.com seems to be missing, cannot find: /usr/local/include/ftd2xx.h])
594    fi
595
596    CFLAGS="$CFLAGS -I/usr/local/include"
597    LDFLAGS="$LDFLAGS -L/usr/local/lib"
598    LIBS="$LIBS -lftd2xx"
599    AC_MSG_RESULT([-L/usr/local/lib -lftd2xx])
600 fi
601 fi
602
603 if test $is_win32 = no && test $is_darwin = no ; then
604
605 if test "${with_ftd2xx_win32_zipdir+set}" = set
606 then
607    AC_MSG_ERROR([The option: --with-ftd2xx-win32-zipdir is for win32 only])
608 fi
609
610 if test $build_ft2232_ftd2xx = yes -o $build_presto_ftd2xx = yes ; then
611    # Must be linux
612    if test $host_os != linux-gnu && test $host_os != linux ; then
613       AC_MSG_ERROR([The (linux) ftd2xx library from FTDICHIP.com is linux only. Try --enable-ft2232-libftdi instead])
614    fi
615    # Are we given a TAR directory?
616    if test "${with_ftd2xx_linux_tardir+set}" = set
617    then
618         AC_MSG_CHECKING([uninstalled ftd2xx distribution])
619         # The .H file is simple..
620         FTD2XX_H=$with_ftd2xx_linux_tardir/ftd2xx.h
621         if test ! -f "${FTD2XX_H}"; then
622            AC_MSG_ERROR([Option: --with-ftd2xx-linux-tardir appears wrong, cannot find: ${FTD2XX_H}])
623         fi
624         CFLAGS="$CFLAGS -I$with_ftd2xx_linux_tardir"
625         FTD2XX_LDFLAGS="-L$with_ftd2xx_linux_tardir"
626         FTD2XX_LIB="-lftd2xx"
627         if test $with_ftd2xx_lib != shared; then
628             # Test #1 - Future proof - if/when ftdichip fixes their distro.
629             # Try it with the simple ".a" suffix.
630             FTD2XX_LIB="$with_ftd2xx_linux_tardir/static_lib/libftd2xx.a"
631             if test -f "${FTD2XX_LIB}"; then
632                FTD2XX_LDFLAGS="${FTD2XX_LDFLAGS}/static_lib"
633             else
634                # Test Number2.
635                # Grr.. perhaps it exists as a version number?
636                FTD2XX_LIB="$with_ftd2xx_linux_tardir/static_lib/libftd2xx.a.*.*.*"
637                count=`ls ${FTD2XX_LIB} | wc -l`
638                if test $count -gt 1 ; then
639                   AC_MSG_ERROR([Multiple libftd2xx.a files found in: $with_ftd2xx_linux_tardir/static_lib sorry cannot handle this yet])
640                fi
641                if test $count -ne 1 ; then
642                   AC_MSG_ERROR([Not found: $f, option: --with-ftd2xx-linux-tardir appears to be wrong])
643                fi
644                # Because the "-l" rules do not understand version numbers...
645                # we will just stuff the absolute path onto the LIBS variable
646                FTD2XX_LIB="`ls ${FTD2XX_LIB}` -lpthread"
647                FTD2XX_LDFLAGS=""
648             fi
649         fi
650         LDFLAGS="${LDFLAGS} ${FTD2XX_LDFLAGS}"
651         LIBS="${LIBS} ${FTD2XX_LIB}"
652         AC_MSG_RESULT([${FTD2XX_LDFLAGS} ${FTD2XX_LIB}])
653    else
654         AC_CHECK_HEADER([ftd2xx.h],[],[
655                         AC_MSG_ERROR([You seem to be missing the FTD2xx driver header file.])
656                 ])
657         AC_SEARCH_LIBS([FT_GetLibraryVersion],[ftd2xx],,[
658                         AC_MSG_ERROR([You appear to be missing the FTD2xx driver library.])
659                 ],[])
660    fi
661 fi
662 fi
663
664 if test $build_ft2232_ftd2xx = yes -o $build_presto_ftd2xx = yes; then
665
666 # Before we go any further - make sure we can *BUILD* and *RUN*
667 # a simple app with the "ftd2xx.lib" file - in what ever form we where given
668 # We should be able to compile, link and run this test program now
669   AC_MSG_CHECKING([whether ftd2xx library works])
670
671 #
672 # Save the LDFLAGS for later..
673 LDFLAGS_SAVE=$LDFLAGS
674 CFLAGS_SAVE=$CFLAGS
675 _LDFLAGS=`eval echo $LDFLAGS`
676 _CFLAGS=`eval echo $CFLAGS`
677 LDFLAGS=$_LDFLAGS
678 CFLAGS=$_CFLAGS
679   AC_RUN_IFELSE(
680 [
681 #include "confdefs.h"
682 #if IS_WIN32
683 #include "windows.h"
684 #endif
685 #include <stdio.h>
686 #include <ftd2xx.h>
687
688 int
689 main( int argc, char **argv )
690 {
691         DWORD x;
692         FT_GetLibraryVersion( &x );
693         return 0;
694 }
695 ], [ AC_MSG_RESULT([Success!])] , [ AC_MSG_ERROR([Cannot build & run test program using ftd2xx.lib]) ] )
696 LDFLAGS=$LDFLAGS_SAVE
697 CFLAGS=$CFLAGS_SAVE
698 fi
699
700 if test $build_ft2232_libftdi = yes ; then
701    # We assume: the package is preinstalled in the proper place
702    # these present as 2 libraries..
703    LIBS="$LIBS -lftdi -lusb"
704    # 
705    # Try to build a small program.
706    AC_MSG_CHECKING([Build & Link with libftdi...])
707
708 LDFLAGS_SAVE=$LDFLAGS
709 CFLAGS_SAVE=$CFLAGS
710 _LDFLAGS=`eval echo $LDFLAGS`
711 _CFLAGS=`eval echo $CFLAGS`
712 LDFLAGS=$_LDFLAGS
713 CFLAGS=$_CFLAGS
714
715    AC_RUN_IFELSE(
716 [
717 #include <stdio.h>
718 #include <ftdi.h>
719
720 int
721 main( int argc, char **argv )
722 {
723         struct ftdi_context *p;
724         p = ftdi_new();
725         if( p != NULL ){
726             return 0;
727         } else {
728             fprintf( stderr, "calling ftdi_new() failed\n");
729             return 1;
730         }
731 }
732 ]
733
734 [ AC_MSG_RESULT([Success]) ]
735
736 [ AC_MSG_ERROR([Cannot build & run test program using libftdi]) ] )
737 # Restore the 'unexpanded ldflags'
738 LDFLAGS=$LDFLAGS_SAVE
739 CFLAGS=$CFLAGS_SAVE
740 fi
741
742 # check for usb.h when a driver will require it
743 if test $build_jlink = yes -o $build_vsllink = yes -o $build_usbprog = yes -o \
744         $build_rlink = yes -o $build_armjtagew = yes
745 then 
746   AC_CHECK_HEADERS([usb.h],[],
747         [AC_MSG_ERROR([usb.h is required to build some OpenOCD driver(s)])])
748 fi
749
750 AM_CONFIG_HEADER(config.h)
751 AM_INIT_AUTOMAKE([-Wall -Wno-portability])
752 AM_MAINTAINER_MODE
753
754 AM_CONDITIONAL(RELEASE, test $build_release = yes)
755 AM_CONDITIONAL(PARPORT, test $build_parport = yes)
756 AM_CONDITIONAL(DUMMY, test $build_dummy = yes)
757 AM_CONDITIONAL(GIVEIO, test $parport_use_giveio = yes)
758 AM_CONDITIONAL(EP93XX, test $build_ep93xx = yes)
759 AM_CONDITIONAL(ECOSBOARD, test $build_ecosboard = yes)
760 AM_CONDITIONAL(IOUTIL, test $build_ioutil = yes)
761 AM_CONDITIONAL(HTTPD, test $build_httpd = yes)
762 AM_CONDITIONAL(AT91RM9200, test $build_at91rm9200 = yes)
763 AM_CONDITIONAL(BITBANG, test $build_bitbang = yes)
764 AM_CONDITIONAL(FT2232_LIBFTDI, test $build_ft2232_libftdi = yes)
765 AM_CONDITIONAL(FT2232_FTD2XX, test $build_ft2232_ftd2xx = yes)
766 AM_CONDITIONAL(AMTJTAGACCEL, test $build_amtjtagaccel = yes)
767 AM_CONDITIONAL(GW16012, test $build_gw16012 = yes)
768 AM_CONDITIONAL(PRESTO_LIBFTDI, test $build_presto_libftdi = yes)
769 AM_CONDITIONAL(PRESTO_FTD2XX, test $build_presto_ftd2xx = yes)
770 AM_CONDITIONAL(USBPROG, test $build_usbprog = yes)
771 AM_CONDITIONAL(OOCD_TRACE, test $build_oocd_trace = yes)
772 AM_CONDITIONAL(JLINK, test $build_jlink = yes)
773 AM_CONDITIONAL(VSLLINK, test $build_vsllink = yes)
774 AM_CONDITIONAL(RLINK, test $build_rlink = yes)
775 AM_CONDITIONAL(ARMJTAGEW, test $build_armjtagew = yes)
776 AM_CONDITIONAL(IS_CYGWIN, test $is_cygwin = yes)
777 AM_CONDITIONAL(IS_MINGW, test $is_mingw = yes)
778 AM_CONDITIONAL(IS_WIN32, test $is_win32 = yes)
779 AM_CONDITIONAL(IS_DARWIN, test $is_darwin = yes)
780 AM_CONDITIONAL(BITQ, test $build_bitq = yes)
781
782 AC_LANG_C
783 AC_PROG_CC
784 AC_PROG_CC_C99
785 AM_PROG_CC_C_O
786 AC_PROG_RANLIB
787
788 # Look for environ alternatives.  Possibility #1: is environ in unistd.h?
789 AC_MSG_CHECKING([for environ in unistd.h])
790 AC_COMPILE_IFELSE([
791 #define _GNU_SOURCE
792 #include <unistd.h>
793 int main(int argc, char **argv) { char **ep = environ; }
794   ], [
795     AC_MSG_RESULT([yes])
796     has_environ=yes
797   ], [
798     AC_MSG_RESULT([no])
799
800     # Possibility #2: can environ be found in an available library?
801     AC_MSG_CHECKING([for extern environ])
802     AC_LINK_IFELSE([
803 extern char **environ;
804 int main(int argc, char **argv) { char **ep = environ; }
805       ], [
806         AC_DEFINE(NEED_ENVIRON_EXTERN, [1], [Must declare 'environ' to use it.])
807         has_environ=yes
808       ], [
809         has_environ=no
810       ])
811     AC_MSG_RESULT([${has_environ}])
812   ])
813
814 if test "${has_environ}" != "yes" ; then
815      AC_MSG_FAILURE([Could not find 'environ' in unistd.h or available libraries.]) 
816 fi
817
818
819 # set default gcc warnings
820 GCC_WARNINGS="-Wall -Wstrict-prototypes -Wformat-security"
821 if test "${gcc_wextra}" = yes; then
822         GCC_WARNINGS="${GCC_WARNINGS} -Wextra -Wno-unused-parameter"
823         GCC_WARNINGS="${GCC_WARNINGS} -Wbad-function-cast"
824         GCC_WARNINGS="${GCC_WARNINGS} -Wcast-align"
825         GCC_WARNINGS="${GCC_WARNINGS} -Wredundant-decls"
826 fi
827 if test "${gcc_werror}" = yes; then
828         GCC_WARNINGS="${GCC_WARNINGS} -Werror"
829 fi
830
831 # overide default gcc cflags
832 if test $gcc_warnings = yes; then
833         CFLAGS="$CFLAGS $GCC_WARNINGS"
834 fi
835
836 # Setup for compiling build tools
837 AC_MSG_CHECKING([for a C compiler for build tools])
838 if test $cross_compiling = yes; then
839         AC_CHECK_PROGS(CC_FOR_BUILD, gcc cc)
840         CFLAGS_FOR_BUILD="-g -O2 $GCC_WARNINGS"
841 else
842         CC_FOR_BUILD=$CC
843         CFLAGS_FOR_BUILD=$CFLAGS
844 fi
845
846 AC_MSG_RESULT([$CC_FOR_BUILD])
847 AC_SUBST(CC_FOR_BUILD)
848 AC_SUBST(CFLAGS_FOR_BUILD)
849
850 AC_MSG_CHECKING([for suffix of executable build tools])
851 if test $cross_compiling = yes; then
852         cat >conftest.c <<\_______EOF
853 int main ()
854 {
855         exit (0);
856 }
857 _______EOF
858 for i in .exe ""; do
859     compile="$CC_FOR_BUILD conftest.c -o conftest$i"
860     if AC_TRY_EVAL(compile); then
861                 if (./conftest) 2>&AC_FD_CC; then
862                         EXEEXT_FOR_BUILD=$i
863                         break
864                         fi
865                 fi
866 done
867         rm -f conftest*
868         if test "${EXEEXT_FOR_BUILD+set}" != set; then
869                 AC_MSG_ERROR([Cannot determine suffix of executable build tools])
870         fi
871 else
872         EXEEXT_FOR_BUILD=$EXEEXT
873 fi
874 AC_MSG_RESULT([$EXEEXT_FOR_BUILD])
875 AC_SUBST(EXEEXT_FOR_BUILD)
876
877 AC_OUTPUT(Makefile src/Makefile src/helper/Makefile src/jtag/Makefile src/xsvf/Makefile src/svf/Makefile src/target/Makefile src/server/Makefile src/flash/Makefile src/pld/Makefile doc/Makefile)