OSDN Git Service

15bf1f5ca573afec9143025507c5105d1086d112
[pf3gnuchains/urjtag.git] / urjtag / configure.ac
1 #
2 # $Id$
3 #
4 # Copyright (C) 2007, 2008 Kolja Waschk and other
5 #    UrJTAG.org developers, (C) 2002, 2003 ETC s.r.o.
6 #
7 # This program is free software; you can redistribute it and/or
8 # modify it under the terms of the GNU General Public License
9 # as published by the Free Software Foundation; either version 2
10 # of the License, or (at your option) any later version.
11 #
12 # This program is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 # GNU General Public License for more details.
16 #
17 # You should have received a copy of the GNU General Public License
18 # along with this program; if not, write to the Free Software
19 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
20 # 02111-1307, USA.
21 #
22 # Written by Marcel Telka <marcel@telka.sk>, 2002, 2003,
23 #  and other UrJTAG authors, 2007, 2008, ...
24 #
25
26 AC_INIT(UrJTAG,0.10,http://urjtag.org,urjtag)
27
28 AC_PREREQ(2.54)
29 AC_COPYRIGHT([Copyright (C) 2007/08 Kolja Waschk and other UrJTAG authors; 2002/03 ETC s.r.o.])
30 AC_REVISION($Revision$)
31
32 # Get SVN Revision - idea from xfce-power-manager (C) 2007 by B.Tarricone
33 dnl get svn revision
34 AC_MSG_CHECKING([code revision])
35 SVN=`which svn`
36 SVN_REVISION=0
37 if test -n "$SVN" -a -x "$SVN"; then
38     SVN_REVISION=`LC_ALL=C svn info -R "$srcdir" 2>/dev/null | awk 'BEGIN { x=0 } /^Revision: / { if($2>x) x=$2; } END { printf "%d\n",x }'`
39     SVN_FROM="svn info"
40 fi
41 if test "$SVN_REVISION" -eq 0 -a -e "$srcdir/ChangeLog"; then
42     SVN_REVISION=`awk 'BEGIN { x=0 } /Revision: / { if($2>x) x=$2; } END { printf "%d\n",x }' "$srcdir/ChangeLog"`
43     SVN_FROM="ChangeLog"
44 fi
45 if test "$SVN_REVISION" -eq 0; then
46     SVN_REVISION=`git log -n1 --pretty=format:%b 2>/dev/null | sed -n '/^git-svn-id:/{s:.*@::;s: .*::;p}'`
47     SVN_FROM="git-svn log"
48 fi
49 if test "$SVN_REVISION" -eq "0" ; then
50     AC_MSG_RESULT([unknown, using 0])
51 else
52     AC_MSG_RESULT([from $SVN_FROM: $SVN_REVISION])
53 fi
54 AC_DEFINE_UNQUOTED([SVN_REVISION], "$SVN_REVISION", [subversion revision number])
55 AC_SUBST([SVN_REVISION])
56
57 AC_CONFIG_AUX_DIR(tools)
58
59 AM_INIT_AUTOMAKE([check-news dist-bzip2])
60
61 AC_CONFIG_FILES(
62         Makefile
63         doc/Makefile
64         data/Makefile
65         include/urjtag/Makefile
66         src/Makefile
67         src/lib/Makefile
68         src/tap/Makefile
69         src/part/Makefile
70         src/bus/Makefile
71         src/flash/Makefile
72         src/cmd/Makefile
73         src/svf/Makefile
74         src/bsdl/Makefile
75         src/jim/Makefile
76         src/global/Makefile
77         src/apps/jtag/Makefile
78         src/apps/bsdl2jtag/Makefile
79         po/Makefile.in
80 )
81
82 AM_MAINTAINER_MODE
83
84 AM_CONFIG_HEADER(config.h)
85 AM_CONFIG_HEADER(include/urjtag/urjtag.h)
86
87 AC_GNU_SOURCE
88
89 AM_GNU_GETTEXT(external)
90 AM_GNU_GETTEXT_VERSION(0.14.1)
91
92 AC_PROG_CC
93 AC_PROG_YACC
94 AC_PROG_LIBTOOL
95 AC_PROG_CC_C99
96 PKG_PROG_PKG_CONFIG
97
98
99 AC_SEARCH_LIBS([ioperm], [ioperm])
100 if test "$ac_cv_search_ioperm" != "no"; then
101         AC_DEFINE(HAVE_IOPERM, 1, [Define to 1 if you have the ioperm() function])
102         HAVE_IOPERM="yes"
103 else
104         AC_SEARCH_LIBS([i386_set_ioperm], [i386])
105         if test "$ac_cv_search_i386_set_ioperm" != "no"; then
106                 AC_DEFINE(HAVE_I386_SET_IOPERM, 1,
107                         [Define to 1 if you have the i386_set_ioperm() function])
108                 HAVE_I386_SET_IOPERM="yes"
109         fi
110 fi
111
112 AC_CHECK_FUNCS(swprintf)
113
114 AC_CHECK_FUNC(clock_gettime, [], [ AC_CHECK_LIB(rt, clock_gettime) ])
115
116 AC_CHECK_FUNCS(usleep)
117 AC_CHECK_FUNCS(nanosleep)
118
119 dnl check for sigaction with SA_ONESHOT or SA_RESETHAND
120 AC_TRY_COMPILE([#include <signal.h>], [
121 #ifndef SA_ONESHOT
122 #  define SA_ONESHOT SA_RESETHAND
123 #endif
124 int sa_flags = SA_ONESHOT;
125 ],
126 [AC_DEFINE([HAVE_SIGACTION_SA_ONESHOT], [1], [Have a defined SA_ONESHOT])],
127 [])
128
129 AC_CHECK_HEADERS([linux/ppdev.h], [HAVE_LINUX_PPDEV_H="yes"])
130 AC_CHECK_HEADERS([dev/ppbus/ppi.h], [HAVE_DEV_PPBUS_PPI_H="yes"])
131 AC_CHECK_HEADERS(stropts.h)
132 AC_CHECK_HEADERS(wchar.h)
133
134 VL_LIB_READLINE
135
136
137 dnl check for libusb
138
139 AC_ARG_WITH([libusb],
140   [AS_HELP_STRING([--with-libusb],
141     [use libusb for some USB JTAG cables])],,
142     [with_libusb=check])
143
144 HAVELIBUSB=no
145 AS_IF([test "x$with_libusb" != xno], [
146   save_LIBS=$LIBS
147   save_CPPFLAGS=$CPPFLAGS
148   PKG_CHECK_MODULES(LIBUSB, libusb, [:;], [dnl
149     AS_IF([test "x$with_libusb" != xyes -a "x$with_libusb" != xcheck], [
150       case $host in
151       *cygwin*)
152         LIBUSB_LIBS="-L$with_libusb/lib/gcc -lusb"
153         LIBUSB_CFLAGS="-I$with_libusb/include"
154         ;;
155       *)
156         LIBUSB_LIBS="-Lwith_libusb -lusb"
157         LIBUSB_CFLAGS="-I$with_libusb"
158         ;;
159       esac
160     ],[
161       AC_PATH_TOOL(LIBUSB_CONFIG, libusb-config, no) 
162       AS_IF([test "$LIBUSB_CONFIG" != "no"],[
163         LIBUSB_LIBS=`$LIBUSB_CONFIG --libs`
164         LIBUSB_CFLAGS=`$LIBUSB_CONFIG --cflags`
165       ],)
166     ])
167   ])
168   LIBS="$LIBS $LIBUSB_LIBS"
169   CPPFLAGS="$CPPFLAGS $LIBUSB_CFLAGS"
170   AC_CHECK_FUNC([usb_find_devices], [
171     AC_DEFINE(HAVE_LIBUSB, 1, [Define if you have libusb])
172     HAVELIBUSB=yes
173   ],[
174     AC_MSG_WARN([*** libusb not detected. No support for USB JTAG cables via libusb.])
175     LIBS=$save_LIBS
176     CPPFLAGS=$save_CPPFLAGS
177   ])
178 ],)
179 AM_CONDITIONAL(HAVE_LIBUSB, [test "x$HAVELIBUSB" = "xyes"])
180
181
182 dnl Use FTDI library?
183
184 AC_ARG_WITH([libftdi],
185   [AS_HELP_STRING([--with-libftdi],
186     [use libftdi for FTDI-based cables])],
187     [], [with_libftdi=check])
188
189 HAVELIBFTDI=no
190 AS_IF([test "x$with_libftdi" != xno], [
191   save_LIBS=$LIBS
192   save_CPPFLAGS=$CPPFLAGS
193   PKG_CHECK_MODULES(LIBFTDI, libftdi, [:;], [dnl
194     AS_IF([test "x$with_libftdi" != xyes -a "x$with_libftdi" != xcheck], [
195       LIBFTDI_LIBS="-L$with_libftdi -lftdi"
196       LIBFTDI_CFLAGS="-I$with_libftdi"
197     ],[
198       AC_PATH_TOOL(LIBFTDI_CONFIG, libftdi-config, no) 
199       AS_IF([test "$LIBFTDI_CONFIG" != "no"],[
200         LIBFTDI_LIBS=`$LIBFTDI_CONFIG --libs`
201         LIBFTDI_CFLAGS=`$LIBFTDI_CONFIG --cflags`
202       ],)
203     ])
204   ])
205   LIBS="$LIBFTDI_LIBS $LIBS"
206   CPPFLAGS="$CPPFLAGS $LIBFTDI_CFLAGS"
207   AC_CHECK_FUNC([ftdi_usb_open], [
208     AC_DEFINE(HAVE_LIBFTDI, 1, [Define if you have libftdi])
209     HAVELIBFTDI=yes
210   ],[
211     AC_MSG_WARN([*** libftdi not detected. No support for FTDI-based USB JTAG cables via libftdi.])
212     LIBS=$save_LIBS
213     CPPFLAGS=$save_CPPFLAGS
214   ])
215 ],)
216 AM_CONDITIONAL(HAVE_LIBFTDI, [test "x$HAVELIBFTDI" = "xyes"])
217
218
219 dnl Use FTDI ftd2xx library?
220
221 AC_ARG_WITH([ftd2xx],
222   [AS_HELP_STRING([--with-ftd2xx],
223     [use ftd2xx library for FTDI-based cables])],
224     [], [with_ftd2xx=check])
225
226 FTD2XXLIB=
227 AS_IF([test "x$with_ftd2xx" = xyes -o "x$with_ftd2xx" = xcheck], [
228   AC_CHECK_LIB([ftd2xx], [FT_OpenEx], [
229     HAVELIBFTD2XX=yes
230     LIBS="-lftd2xx $LIBS"
231   ],[
232     AC_MSG_WARN([*** libftd2xx not found. No support for FTDI-based USB JTAG cables via libftd2xx.])
233   ])
234 ],[
235   AS_IF([test "x$with_ftd2xx" != xno], [
236     HAVELIBFTD2XX=yes
237     case $host in
238     *cygwin*|*mingw*)
239       CFLAGS="$CFLAGS -I$with_ftd2xx"
240       AS_IF([test -d "$with_ftd2xx/i386"], [
241         FTD2XXLIB="$with_ftd2xx/i386/ftd2xx.lib"
242       ],[
243         FTD2XXLIB="$with_ftd2xx/ftd2xx.lib"
244       ])
245       ;;
246     *)
247       CFLAGS="$CFLAGS -I$with_ftd2xx -L$with_ftd2xx"
248       LIBS="-lftd2xx $LIBS"
249       ;;
250     esac
251   ],)
252 ])
253 AS_IF([test "x$HAVELIBFTD2XX" = xyes], [
254   AM_CONDITIONAL(HAVE_LIBFTD2XX, true)
255   AC_DEFINE(HAVE_LIBFTD2XX, 1, [define if you have libftd2xx])
256 ],[
257   AM_CONDITIONAL(HAVE_LIBFTD2XX, false)
258 ])
259 AC_SUBST(FTD2XXLIB)
260
261
262 dnl Use InpOut I/O library?
263 dnl http://www.highrez.co.uk/Downloads/InpOut32/default.htm
264
265 AC_ARG_WITH([inpout32],
266   [AS_HELP_STRING([--with-inpout32],
267     [use InpOut32.dll for parallel port access on Windows])],
268     [], [with_inpout32=no])
269
270 case $host in
271   *cygwin*|*mingw*) ;;
272   *) with_inpout32=no ;;
273 esac
274
275 AS_IF([test "x$with_inpout32" = xyes], [
276   AM_CONDITIONAL(HAVE_INPOUTXX, true)
277   AC_DEFINE(HAVE_INPOUTXX, 1, [define if you have inpout32.dll])
278 ],[
279   AM_CONDITIONAL(HAVE_INPOUTXX, false)
280 ])
281
282
283 WARNINGCFLAGS="-Wall -Wmissing-prototypes -Wstrict-prototypes -Wpointer-arith"
284 AC_ARG_ENABLE([werror],
285   [AS_HELP_STRING([--enable-werror], [build with -Werror])],
286   [], [enable_werror=maybe])
287 AS_IF([test "x$enable_werror" = xmaybe -a -d .svn], [
288   enable_werror=yes
289 ])
290 AS_IF([test "x$enable_werror" = xyes], [
291   WARNINGCFLAGS="$WARNINGCFLAGS -Werror"
292 ])
293 AC_SUBST(WARNINGCFLAGS)
294
295 CPPFLAGS="-I\$(top_srcdir) -I\$(top_srcdir)/include $CPPFLAGS"
296
297 AC_ARG_ENABLE([apps],
298   [AS_HELP_STRING([--disable-apps],
299     [disable building the jtag and bsdl2jtag main programs])],,
300     [enable_apps=yes])
301
302 AS_IF([test "x$enable_apps" = xyes], [
303   AM_CONDITIONAL(ENABLE_APPS, true)
304   AC_DEFINE(ENABLE_APPS, 1, [define if you want to build the jtag and bsdl2jtag main programs])
305 ],[
306   AM_CONDITIONAL(ENABLE_APPS, false)
307 ])
308
309
310 # check for lex/flex
311 AC_PROG_LEX
312 # check for modern version of flex
313 AC_PROG_AWK
314 AC_PROG_SED
315
316 AS_IF([test "$LEX" = flex], [
317    ver_ge_ver () {
318       v1=$1
319       v2=$2
320       v3=$3
321       ref_v1=$4
322       ref_v2=$5
323       ref_v3=$6
324
325       AS_IF([test -n "$v1" -a "$v1" -gt "$ref_v1"], [
326          return 0
327       ])
328       AS_IF([test -n "$v1" -a "$v1" -eq "$ref_v1"], [
329          AS_IF([test "$v2" -gt "$ref_v2"], [
330             return 0
331          ])
332          AS_IF([test "$v2" -eq "$ref_v2"], [
333             AS_IF([test "$v3" -ge "$ref_v3"], [
334                return 0
335             ])
336          ])
337       ])
338
339       return 1
340    }
341
342    flex_version=`$LEX --version | $AWK '{print $2}'`
343    AS_IF([test "$flex_version" = "version"], [
344        flex_version=`$LEX --version | $AWK '{print $3}'`
345    ])
346
347    flex_v1=`echo $flex_version | $AWK -F . '{print $1}' | $SED -e 's/[a-zA-Z]//g'`
348    flex_v2=`echo $flex_version | $AWK -F . '{print $2}' | $SED -e 's/[a-zA-Z]//g'`
349    flex_v3=`echo $flex_version | $AWK -F . '{print $3}' | $SED -e 's/[a-zA-Z]//g'`
350
351    # svf and bsdl lexer require flex >= 2.5.33
352    flex_ref_v1=2
353    flex_ref_v2=5
354    flex_ref_v3=33
355    flex_ref_version="$flex_ref_v1.$flex_ref_v2.$flex_ref_v3"
356    AC_MSG_CHECKING([for flex >= $flex_ref_version, required for SVF and BSDL lexer])
357    #
358    AS_IF([ver_ge_ver $flex_v1 $flex_v2 $flex_v3 $flex_ref_v1 $flex_ref_v2 $flex_ref_v3], [
359       AC_MSG_RESULT([yes - flex $flex_version])
360       svf_lexer=true
361       bsdl_lexer=true
362    ], [
363       AC_MSG_RESULT([no - flex $flex_version])
364       svf_lexer=false
365       bsdl_lexer=false
366    ])
367 ], [
368    svf_lexer=false
369    bsdl_lexer=false
370 ])
371
372
373 dnl If the transformed svf_flex.c is already existing, it doesn't matter
374 dnl that flex is too old for building the lexer.
375 AS_IF([test "x$svf_lexer" = xfalse], [
376    AS_IF([test -r src/svf/svf_bison.h], [
377       svf_lexer=true
378    ])
379 ])
380
381 dnl Enable SVF player?
382 AC_ARG_ENABLE(svf,
383 [AS_HELP_STRING([--disable-svf], [Disable SVF player])],
384 [case "${enableval}" in
385    yes) svf=true ;;
386    no)  svf=false ;;
387    *)   AC_MSG_ERROR(bad value ${enableval} for --enable-svf) ;;
388  esac],
389 [svf=$svf_lexer])
390 AS_IF([test "x$svf" = xtrue], [
391   AM_CONDITIONAL(ENABLE_SVF, true)
392   AC_DEFINE(ENABLE_SVF, 1, [define if SVF player is enabled])
393 ],[
394   AM_CONDITIONAL(ENABLE_SVF, false)
395
396   # SVF is disabled, but the generated files are still required for
397   # POTFILES. They simply have to exist as empty files.
398   AS_IF([test ! -r src/svf/svf_flex.c], [
399     touch src/svf/svf_flex.c
400   ])
401   AS_IF([test ! -r src/svf/svf_bison.c], [
402     touch src/svf/svf_bison.c
403   ])
404 ])
405
406
407 dnl If the transformed bsdl_flex.c is already existing, it doesn't matter
408 dnl that flex is too old for building the lexer.
409 AS_IF([test "x$bsdl_lexer" = xfalse], [
410    AS_IF([test -r src/bsdl/bsdl_bison.h], [
411       bsdl_lexer=true
412    ])
413 ])
414
415 dnl Enable BSDL subsystem?
416 AC_ARG_ENABLE(bsdl,
417 [AS_HELP_STRING([--disable-bsdl], [Disable BSDL subsystem])],
418 [case "${enableval}" in
419    yes) bsdl=true ;;
420    no)  bsdl=false ;;
421    *)   AC_MSG_ERROR(bad value ${enableval} for --enable-bsdl) ;;
422  esac],
423 [bsdl=$bsdl_lexer])
424 AS_IF([test "x$bsdl" = xtrue], [
425   AM_CONDITIONAL(ENABLE_BSDL, true)
426   AC_DEFINE(ENABLE_BSDL, 1, [define if BSDL subsystem is enabled])
427 ],[
428   AM_CONDITIONAL(ENABLE_BSDL, false)
429
430   # BSDL is disabled, but the generated files are still required for
431   # POTFILES. They simply have to exist as empty files.
432   AS_IF([test ! -r src/bsdl/vhdl_flex.c], [
433     touch src/bsdl/vhdl_flex.c
434   ])
435   AS_IF([test ! -r src/bsdl/vhdl_bison.c], [
436     touch src/bsdl/vhdl_bison.c
437   ])
438   AS_IF([test ! -r src/bsdl/bsdl_flex.c], [
439     touch src/bsdl/bsdl_flex.c
440   ])
441   AS_IF([test ! -r src/bsdl/bsdl_bison.c], [
442     touch src/bsdl/bsdl_bison.c
443   ])
444 ])
445
446 dnl Enable experimental brute-force JEDEC flash autodetection?
447 AC_ARG_ENABLE(jedec-exp,
448 [AS_HELP_STRING([--enable-jedec-exp], [Enable experimental JEDEC flash detection])],
449 [case "${enableval}" in
450    yes) jedecexp=true ;;
451    no)  jedecexp=false ;;
452    *)   AC_MSG_ERROR(bad value ${enableval} for --enable-jedec-exp) ;;
453  esac],
454 [jedecexp=false])
455 AS_IF([test "x$jedecexp" = xtrue], [
456   AM_CONDITIONAL(JEDEC_EXP, true)
457   AC_DEFINE(JEDEC_EXP, 1, [define if experimental JEDEC flash detection is enabled])
458 ],[
459   AM_CONDITIONAL(JEDEC_EXP, false)
460 ])
461
462
463 # Macro for driver include check
464 AC_DEFUN([CHECK_DRIVER], [
465     AS_IF([echo "$1" | $GREP -q $3], [
466        AC_DEFINE([$4], 1, [define if $3 is enabled])
467        AM_CONDITIONAL([$4], true)
468        $2="${$2}$3 "
469     ], [
470        AM_CONDITIONAL([$4], false)
471     ])
472 ])
473
474
475 # Enable bus drivers
476 AC_DEFUN([DEF_ENABLE_BUSDRIVERS], [\
477 arm9tdmi au1500 avr32 bcm1250 bf526_ezkit bf527_ezkit bf533_stamp bf533_ezkit bf537_stamp bf537_ezkit bf538f_ezkit bf548_ezkit bf561_ezkit bscoach ejtag  ejtag_dma \
478 fjmem ixp425 ixp435 ixp465 jopcyc h7202 lh7a400  mpc5200 mpc824x ppc405ep ppc440gx_ebc8 prototype pxa2x0 pxa27x \
479 s3c4510 sa1110 sh7727 sh7750r sh7751r sharc_21065L slsup3 tx4925 zefant_xs3])
480 AC_ARG_ENABLE(bus,
481 [AS_HELP_STRING([--enable-bus], [Enable default set or specific bus drivers:])]
482 [AS_HELP_STRING([],             ['default' enables:])]
483 [AS_HELP_STRING([],DEF_ENABLE_BUSDRIVERS)]
484 ,
485 [AS_CASE([${enableval}],
486     [yes],  [busdrivers=default],
487     [no],   [busdrivers=none],
488     [none], [busdrivers=none],
489             [busdrivers=`echo ${enableval} | $SED -e 's/,/ /g'`])],
490 [busdrivers=default])
491 # expand 'default' to default enabled busdrivers
492 busdrivers=`echo ${busdrivers} | $SED -e "s/default/DEF_ENABLE_BUSDRIVERS/"`
493 #
494 enabled_bus_drivers=''
495 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [arm9tdmi],      [ENABLE_BUS_ARM9TDMI])
496 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [au1500],        [ENABLE_BUS_AU1500])
497 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [avr32],         [ENABLE_BUS_AVR32])
498 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [bcm1250],       [ENABLE_BUS_BCM1250])
499 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [bf526_ezkit],   [ENABLE_BUS_BF526_EZKIT])
500 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [bf527_ezkit],   [ENABLE_BUS_BF527_EZKIT])
501 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [bf533_stamp],   [ENABLE_BUS_BF533_STAMP])
502 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [bf533_ezkit],   [ENABLE_BUS_BF533_EZKIT])
503 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [bf537_stamp],   [ENABLE_BUS_BF537_STAMP])
504 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [bf537_ezkit],   [ENABLE_BUS_BF537_EZKIT])
505 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [bf538f_ezkit],  [ENABLE_BUS_BF538F_EZKIT])
506 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [bf548_ezkit],   [ENABLE_BUS_BF548_EZKIT])
507 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [bf561_ezkit],   [ENABLE_BUS_BF561_EZKIT])
508 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [bscoach],       [ENABLE_BUS_BSCOACH])
509 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [ejtag],         [ENABLE_BUS_EJTAG])
510 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [ejtag_dma],     [ENABLE_BUS_EJTAG_DMA])
511 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [fjmem],         [ENABLE_BUS_FJMEM])
512 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [ixp425],        [ENABLE_BUS_IXP425])
513 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [ixp435],        [ENABLE_BUS_IXP435])
514 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [ixp465],        [ENABLE_BUS_IXP465])
515 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [jopcyc],        [ENABLE_BUS_JOPCYC])
516 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [h7202],         [ENABLE_BUS_H7202])
517 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [lh7a400],       [ENABLE_BUS_LH7A400])
518 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [mpc5200],       [ENABLE_BUS_MPC5200])
519 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [mpc824x],       [ENABLE_BUS_MPC824X])
520 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [ppc405ep],      [ENABLE_BUS_PPC405EP])
521 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [ppc440gx_ebc8], [ENABLE_BUS_PPC440GX_EBC8])
522 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [prototype],     [ENABLE_BUS_PROTOTYPE])
523 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [pxa2x0],        [ENABLE_BUS_PXA2X0])
524 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [pxa27x],        [ENABLE_BUS_PXA27X])
525 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [s3c4510],       [ENABLE_BUS_S3C4510])
526 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [sa1110],        [ENABLE_BUS_SA1110])
527 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [sh7727],        [ENABLE_BUS_SH7727])
528 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [sh7750r],       [ENABLE_BUS_SH7750R])
529 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [sh7751r],       [ENABLE_BUS_SH7751R])
530 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [sharc_21065L],  [ENABLE_BUS_SHARC_21065L])
531 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [slsup3],        [ENABLE_BUS_SLSUP3])
532 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [tx4925],        [ENABLE_BUS_TX4925])
533 CHECK_DRIVER([$busdrivers], [enabled_bus_drivers], [zefant_xs3],    [ENABLE_BUS_ZEFANT_XS3])
534
535 # Enable cable drivers
536 AC_DEFUN([DEF_ENABLE_CABLEDRIVERS], [\
537 arcom byteblaster dlc5 ea253 ei012 ft2232 igloo jlink keithkoep lattice mpcbdm triton usbblaster wiggler xpc])
538 AC_DEFUN([DEF_DISABLE_CABLEDRIVERS], [ep9307 jim ts7800])
539 AC_ARG_ENABLE(cable,
540 [AS_HELP_STRING([--enable-cable], [Enable default set or specific cable drivers.])]
541 [AS_HELP_STRING([],               ['default' enables:])]
542 [AS_HELP_STRING([],DEF_ENABLE_CABLEDRIVERS)]
543 [AS_HELP_STRING([],               [Disabled by default are:])]
544 [AS_HELP_STRING([],DEF_DISABLE_CABLEDRIVERS)]
545 ,
546 [AS_CASE([${enableval}],
547     [yes],  [cabledrivers=default],
548     [no],   [cabledrivers=none],
549     [none], [cabledrivers=none],
550             [cabledrivers=`echo ${enableval} | $SED -e 's/,/ /g'`])],
551 [cabledrivers=default])
552 # expand 'default' to default enabled cabledrivers
553 cabledrivers=`echo ${cabledrivers} | $SED -e "s/default/DEF_ENABLE_CABLEDRIVERS/"`
554 # automatically disable cable drivers when a required feature is not available
555 AS_IF([test "x$HAVELIBFTDI" != "xyes" -a "x$HAVELIBFTD2XX" != "xyes"], [
556     cabledrivers=`echo ${cabledrivers} | $SED -e "s/ft2232//" -e "s/usbblaster//"`
557 ])
558 AS_IF([test "x$HAVELIBUSB" != "xyes"], [
559     cabledrivers=`echo ${cabledrivers} | $SED -e "s/jlink//" -e "s/xpc//"`
560 ])
561 #
562 enabled_cable_drivers=''
563 CHECK_DRIVER([$cabledrivers], [enabled_cable_drivers], [arcom],       [ENABLE_CABLE_ARCOM])
564 CHECK_DRIVER([$cabledrivers], [enabled_cable_drivers], [byteblaster], [ENABLE_CABLE_BYTEBLASTER])
565 CHECK_DRIVER([$cabledrivers], [enabled_cable_drivers], [dlc5],        [ENABLE_CABLE_DLC5])
566 CHECK_DRIVER([$cabledrivers], [enabled_cable_drivers], [ea253],       [ENABLE_CABLE_EA253])
567 CHECK_DRIVER([$cabledrivers], [enabled_cable_drivers], [ei012],       [ENABLE_CABLE_EI012])
568 CHECK_DRIVER([$cabledrivers], [enabled_cable_drivers], [ep9307],      [ENABLE_CABLE_EP9307])
569 CHECK_DRIVER([$cabledrivers], [enabled_cable_drivers], [ft2232],      [ENABLE_CABLE_FT2232])
570 CHECK_DRIVER([$cabledrivers], [enabled_cable_drivers], [igloo],       [ENABLE_CABLE_IGLOO])
571 CHECK_DRIVER([$cabledrivers], [enabled_cable_drivers], [jim],         [ENABLE_JIM])
572 CHECK_DRIVER([$cabledrivers], [enabled_cable_drivers], [jlink],       [ENABLE_CABLE_JLINK])
573 CHECK_DRIVER([$cabledrivers], [enabled_cable_drivers], [keithkoep],   [ENABLE_CABLE_KEITHKOEP])
574 CHECK_DRIVER([$cabledrivers], [enabled_cable_drivers], [lattice],     [ENABLE_CABLE_LATTICE])
575 CHECK_DRIVER([$cabledrivers], [enabled_cable_drivers], [mpcbdm],      [ENABLE_CABLE_MPCBDM])
576 CHECK_DRIVER([$cabledrivers], [enabled_cable_drivers], [triton],      [ENABLE_CABLE_TRITON])
577 CHECK_DRIVER([$cabledrivers], [enabled_cable_drivers], [usbblaster],  [ENABLE_CABLE_USBBLASTER])
578 CHECK_DRIVER([$cabledrivers], [enabled_cable_drivers], [wiggler],     [ENABLE_CABLE_WIGGLER])
579 CHECK_DRIVER([$cabledrivers], [enabled_cable_drivers], [xpc],         [ENABLE_CABLE_XPC])
580 CHECK_DRIVER([$cabledrivers], [enabled_cable_drivers], [ts7800],      [ENABLE_CABLE_TS7800])
581
582
583 # Enable lowlevel drivers
584 AC_DEFUN([DEF_ENABLE_LOWLEVELDRIVERS], [\
585 direct ftdi ftd2xx ppdev ppi])
586 AC_ARG_ENABLE(lowlevel,
587 [AS_HELP_STRING([--enable-lowlevel], [Enable default set or specific lowlevel drivers:])]
588 [AS_HELP_STRING([],                  ['default' enables:])]
589 [AS_HELP_STRING([],DEF_ENABLE_LOWLEVELDRIVERS)]
590 ,
591 [AS_CASE([${enableval}],
592     [yes],  [lowleveldrivers=default],
593     [no],   [lowleveldrivers=none],
594     [none], [lowleveldrivers=none],
595             [lowleveldrivers=`echo ${enableval} | $SED -e 's/,/ /g'`])],
596 [lowleveldrivers=default])
597 # expand 'default' to default enabled lowlevel drivers
598 lowleveldrivers=`echo ${lowleveldrivers} | $SED -e "s/default/DEF_ENABLE_LOWLEVELDRIVERS/"`
599 # automatically disable lowlevel drivers when a required feature is not available
600 AS_IF([test "x$HAVELIBFTDI" != "xyes"], [
601     lowleveldrivers=`echo ${lowleveldrivers} | $SED -e "s/ftdi//"`
602 ])
603 AS_IF([test "x$HAVELIBFTD2XX" != "xyes"], [
604     lowleveldrivers=`echo ${lowleveldrivers} | $SED -e "s/ftd2xx//"`
605 ])
606 AS_IF([test "x$HAVE_LINUX_PPDEV_H" != "xyes"], [
607     lowleveldrivers=`echo ${lowleveldrivers} | $SED -e "s/ppdev//"`
608 ])
609 AS_IF([test "x$HAVE_DEV_PPBUS_PPI_H" != "xyes"], [
610     lowleveldrivers=`echo ${lowleveldrivers} | $SED -e "s/ppi//"`
611 ])
612 AS_IF([test "x$HAVE_IOPERM" != "xyes" -a "x$HAVE_I386_SET_IOPERM" != "xyes" -a "x$HAVE_INPOUTXX" != "xyes" ], [
613     lowleveldrivers=`echo ${lowleveldrivers} | $SED -e "s/direct//"`
614 ])
615 #
616 enabled_lowlevel_drivers=''
617 CHECK_DRIVER([$lowleveldrivers], [enabled_lowlevel_drivers], [direct], [ENABLE_LOWLEVEL_DIRECT])
618 CHECK_DRIVER([$lowleveldrivers], [enabled_lowlevel_drivers], [ftd2xx], [ENABLE_LOWLEVEL_FTD2XX])
619 CHECK_DRIVER([$lowleveldrivers], [enabled_lowlevel_drivers], [ftdi],   [ENABLE_LOWLEVEL_FTDI])
620 CHECK_DRIVER([$lowleveldrivers], [enabled_lowlevel_drivers], [ppdev],  [ENABLE_LOWLEVEL_PPDEV])
621 CHECK_DRIVER([$lowleveldrivers], [enabled_lowlevel_drivers], [ppi],    [ENABLE_LOWLEVEL_PPI])
622
623
624 dnl Enable a relocatable jtag?
625 AC_ARG_ENABLE(relocatable,
626 [AS_HELP_STRING([--enable-relocatable], [Enable relocatable paths])],
627 [relocatable=$enableval], [relocatable=no])
628 AS_IF([test "x$relocatable" = xyes], [
629   AM_CONDITIONAL(JTAG_RELOCATABLE, true)
630   AC_DEFINE(JTAG_RELOCATABLE, 1, [define for relocatable paths])
631 ],[
632   AM_CONDITIONAL(JTAG_RELOCATABLE, false)
633 ])
634
635
636 dnl Is fmax() provided by libm?
637 AC_CHECK_LIB([m], [fmax], [
638   AC_DEFINE(HAVE_FMAX, 1, [Define if -lm provides fmax()])
639 ])
640
641
642 dnl Enable use of DMALLOC library?
643 AC_ARG_ENABLE(dmalloc,
644 [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging with dmalloc library])],
645 [dmalloc=$enableval], [dmalloc=no])
646 AS_IF([test "x$dmalloc" = xyes], [
647   AM_CONDITIONAL(DMALLOC, true)
648   AC_DEFINE(DMALLOC, 1, [define for dmalloc library])
649 ],[
650   AM_CONDITIONAL(DMALLOC, false)
651 ])
652
653
654 # Enable flash multi-byte write mode?
655 AC_ARG_ENABLE(flash-multi-byte,
656 [AS_HELP_STRING([--disable-flash-multi-byte], [Disable flash multi-byte write mode])],
657 [flash_multi_byte=$enableval], [flash_multi_byte=yes])
658 AS_IF([test "x$flash_multi_byte" = xyes], [
659   AC_DEFINE(FLASH_MULTI_BYTE, 1, [define for flash multi-byte write mode])
660 ])
661
662
663 AC_OUTPUT
664
665 dnl
666 dnl Configuration summary
667 dnl
668 AS_IF([test ${HAVELIBFTDI:-no} != no], [
669    FLAG_HAVELIBFTDI=yes
670 ], [
671    FLAG_HAVELIBFTDI=no
672 ])
673 AS_IF([test ${HAVELIBUSB:-no} != no], [
674    FLAG_HAVELIBUSB=yes
675 ], [
676    FLAG_HAVELIBUSB=no
677 ])
678 AS_IF([test ${HAVELIBFTD2XX:-no} != no], [
679    FLAG_HAVELIBFTD2XX=yes
680 ], [
681    FLAG_HAVELIBFTD2XX=no
682 ])
683 AS_IF([test ${HAVEINPOUTXX:-no} != no], [
684    FLAG_HAVEINPOUTXX=yes
685 ], [
686    FLAG_HAVEINPOUTXX=no
687 ])
688 AS_IF([test ${svf:-false} != false], [
689    FLAG_SVF=yes
690 ], [
691    FLAG_SVF=no
692 ])
693 AS_IF([test ${bsdl:-false} != false], [
694    FLAG_BSDL=yes
695 ], [
696    FLAG_BSDL=no
697 ])
698 AC_MSG_NOTICE([
699
700 jtag is now configured for
701
702   Detected libusb      : $FLAG_HAVELIBUSB
703   Detected libftdi     : $FLAG_HAVELIBFTDI
704   Detected libftd2xx   : $FLAG_HAVELIBFTD2XX
705   Detected inpout32    : $FLAG_HAVEINPOUTXX
706   Build SVF player     : $FLAG_SVF
707   Build BSDL subsystem : $FLAG_BSDL
708   Bus drivers          : $enabled_bus_drivers
709   Cable drivers        : $enabled_cable_drivers
710   Lowlevel drivers     : $enabled_lowlevel_drivers
711 ])