X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=configure.ac;h=2358509668208863ffbd3decfb06ce7c31f8a11e;hp=ffab637cf1948c26a3e1a682ed27e31bcfbf7730;hb=cb1156421966f648cca0430f74553ebb9259312d;hpb=1d75eb25e03bbb8534e595fa977383e80b4f807e diff --git a/configure.ac b/configure.ac index ffab637cf1..2358509668 100644 --- a/configure.ac +++ b/configure.ac @@ -1,16 +1,16 @@ -AC_PREREQ(2.60) -AC_INIT([openocd], [0.6.0-dev], +AC_PREREQ(2.64) +AC_INIT([openocd], [0.8.0-rc1-dev], [OpenOCD Mailing List ]) AC_CONFIG_SRCDIR([src/openocd.c]) m4_include([config_subdir.m4])dnl -AM_INIT_AUTOMAKE([-Wall -Wno-portability dist-bzip2 dist-zip]) -AM_MAINTAINER_MODE +AM_INIT_AUTOMAKE([-Wall -Wno-portability dist-bzip2 dist-zip subdir-objects]) -AM_CONFIG_HEADER([config.h]) +AC_CONFIG_HEADERS([config.h]) AH_BOTTOM([ #include +#include #include ]) @@ -19,6 +19,7 @@ AC_PROG_CC AC_PROG_CC_C99 AM_PROG_CC_C_O AC_PROG_RANLIB +PKG_PROG_PKG_CONFIG([0.23]) dnl disable checks for C++, Fortran and GNU Java Compiler m4_defun([_LT_AC_LANG_CXX_CONFIG], [:]) @@ -150,39 +151,6 @@ else fi AC_MSG_RESULT([$build_release]) -# We are not *ALWAYS* being installed in the standard place. -# We may be installed in a "tool-build" specific location. -# Normally with other packages - as part of a tool distro. -# Thus - we should search that 'libdir' also. -# -# And - if we are being installed there - the odds are -# The libraries unique to what we are are there too. -# - -# Expand nd deal with NONE - just like configure will do later -OCDprefix=$prefix -OCDxprefix=$exec_prefix -test x"$OCDprefix" = xNONE && OCDprefix=$ac_default_prefix -# Let make expand exec_prefix. -test x"$OCDxprefix" = xNONE && OCDxprefix="$OCDprefix" - -# what matters is the "exec-prefix" -if test "$OCDxprefix" != "$ac_default_prefix" -then - # We are installing in a non-standard place - # Nonstandard --prefix and/or --exec-prefix - # We have an override of some sort. - # use build specific install library dir - - LDFLAGS="$LDFLAGS -L$OCDxprefix/lib" - # RPATH becomes an issue on Linux only - if test $host_os = linux-gnu || test $host_os = linux ; then - LDFLAGS="$LDFLAGS -Wl,-rpath,$OCDxprefix/lib" - fi - # The "INCDIR" is also usable - CFLAGS="$CFLAGS -I$includedir" -fi - AC_ARG_WITH(ftd2xx, AS_HELP_STRING([--with-ftd2xx=],[This option has been removed.]), [ @@ -213,6 +181,38 @@ __EOF__ AC_MSG_ERROR([Sorry Cannot continue]) ], [true]) +# Adapter drivers +# 1st column -- configure option +# 2nd column -- description +# 3rd column -- symbol used for both config.h and automake +m4_define([ADAPTER_ARG], [m4_argn([1], $1)]) +m4_define([ADAPTER_DESC], [m4_argn([2], $1)]) +m4_define([ADAPTER_SYM], [m4_argn([3], $1)]) +m4_define([ADAPTER_VAR], [enable_[]ADAPTER_ARG($1)]) +m4_define([ADAPTER_OPT], [m4_translit(ADAPTER_ARG($1), [_], [-])]) + +m4_define([USB1_ADAPTERS], + [[[ftdi], [MPSSE mode of FTDI based devices], [FTDI]], + [[stlink], [ST-Link JTAG Programmer], [HLADAPTER_STLINK]], + [[ti_icdi], [TI ICDI JTAG Programmer], [HLADAPTER_ICDI]], + [[ulink], [Keil ULINK JTAG Programmer], [ULINK]], + [[usb_blaster_2], [Altera USB-Blaster II Compatible], [USB_BLASTER_2]]]) + +m4_define([USB_ADAPTERS], + [[[jlink], [Segger J-Link JTAG Programmer], [JLINK]], + [[osbdm], [OSBDM (JTAG only) Programmer], [OSBDM]], + [[opendous], [eStick/opendous JTAG Programmer], [OPENDOUS]], + [[aice], [Andes JTAG Programmer], [AICE]]]) + +m4_define([USB0_ADAPTERS], + [[[vsllink], [Versaloon-Link JTAG Programmer], [VSLLINK]], + [[usbprog], [USBProg JTAG Programmer], [USBPROG]], + [[rlink], [Raisonance RLink JTAG Programmer], [RLINK]], + [[armjtagew], [Olimex ARM-JTAG-EW Programmer], [ARMJTAGEW]]]) + +m4_define([HIDAPI_ADAPTERS], + [[[cmsis_dap], [CMSIS-DAP Compliant Debugger], [CMSIS_DAP]]]) + #======================================== # FTD2XXX support comes in 4 forms. # (1) win32 - via a zip file @@ -223,7 +223,7 @@ __EOF__ # In case (1) and (2) we need to know where the package was unpacked. AC_ARG_WITH(ftd2xx-win32-zipdir, - AS_HELP_STRING([--with-ftd2xx-win32-zipdir],[Where (CYGWIN/MINGW) the zip file from ftdichip.com was unpacked ]), + AS_HELP_STRING([--with-ftd2xx-win32-zipdir],[Where (CYGWIN/MINGW) the zip file from ftdichip.com was unpacked (default=search)]), [ # option present if test -d $with_ftd2xx_win32_zipdir @@ -236,7 +236,7 @@ AC_ARG_WITH(ftd2xx-win32-zipdir, ], [true]) AC_ARG_WITH(ftd2xx-linux-tardir, - AS_HELP_STRING([--with-ftd2xx-linux-tardir], [Where (Linux/Unix) the tar file from ftdichip.com was unpacked ]), + AS_HELP_STRING([--with-ftd2xx-linux-tardir], [Where (Linux/Unix) the tar file from ftdichip.com was unpacked (default=search)]), [ # Option present if test $is_win32 = yes ; then @@ -253,7 +253,7 @@ AC_ARG_WITH(ftd2xx-linux-tardir, AC_ARG_WITH(ftd2xx-lib, AS_HELP_STRING([--with-ftd2xx-lib], - [Use static or shared ftd2xx libs on default static]), + [Use static or shared ftd2xx libs (default=static)]), [ case "$withval" in static) @@ -362,6 +362,17 @@ AC_ARG_ENABLE([dummy], AS_HELP_STRING([--enable-dummy], [Enable building the dummy port driver]), [build_dummy=$enableval], [build_dummy=no]) +m4_define([AC_ARG_ADAPTERS], [ + m4_foreach([adapter], [$1], + [AC_ARG_ENABLE(ADAPTER_OPT([adapter]), + AS_HELP_STRING([--enable-ADAPTER_OPT([adapter])], + [Enable building support for the ]ADAPTER_DESC([adapter])[ (default is $2)]), + [], [ADAPTER_VAR([adapter])=$2]) + ]) +]) + +AC_ARG_ADAPTERS([USB1_ADAPTERS, USB_ADAPTERS, USB0_ADAPTERS, HIDAPI_ADAPTERS], [auto]) + AC_ARG_ENABLE([parport], AS_HELP_STRING([--enable-parport], [Enable building the pc parallel port driver]), [build_parport=$enableval], [build_parport=no]) @@ -376,14 +387,30 @@ AC_ARG_ENABLE([parport_giveio], [Enable use of giveio for parport (for CygWin only)]), [parport_use_giveio=$enableval], [parport_use_giveio=]) -AC_ARG_ENABLE([ft2232_libftdi], - AS_HELP_STRING([--enable-ft2232_libftdi], [Enable building support for FT2232 based devices using the libftdi driver, opensource alternate of FTD2XX]), +AC_ARG_ENABLE([ft2232_libftdi], [], [ +if test $enableval = yes; then + 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]) +fi +]) + +AC_ARG_ENABLE([ft2232_ftd2xx], [], [ +if test $enableval = yes; then + 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]) +fi +]) + +AC_ARG_ENABLE([legacy-ft2232_libftdi], + AS_HELP_STRING([--enable-legacy-ft2232_libftdi], [(DEPRECATED) Enable building support for FT2232 based devices using the libftdi library]), [build_ft2232_libftdi=$enableval], [build_ft2232_libftdi=no]) -AC_ARG_ENABLE([ft2232_ftd2xx], - AS_HELP_STRING([--enable-ft2232_ftd2xx], [Enable building support for FT2232 based devices using the FTD2XX driver from ftdichip.com]), +AC_ARG_ENABLE([legacy-ft2232_ftd2xx], + AS_HELP_STRING([--enable-legacy-ft2232_ftd2xx], [(DEPRECATED) Enable building support for FT2232 based devices using the D2XX library from ftdichip.com]), [build_ft2232_ftd2xx=$enableval], [build_ft2232_ftd2xx=no]) +AC_ARG_ENABLE([jtag_vpi], + AS_HELP_STRING([--enable-jtag_vpi], [Enable building support for JTAG VPI]), + [build_jtag_vpi=$enableval], [build_jtag_vpi=no]) + AC_ARG_ENABLE([usb_blaster_libftdi], AS_HELP_STRING([--enable-usb_blaster_libftdi], [Enable building support for the Altera USB-Blaster using the libftdi driver, opensource alternate of FTD2XX]), [build_usb_blaster_libftdi=$enableval], [build_usb_blaster_libftdi=no]) @@ -396,10 +423,6 @@ AC_ARG_ENABLE([amtjtagaccel], AS_HELP_STRING([--enable-amtjtagaccel], [Enable building the Amontec JTAG-Accelerator driver]), [build_amtjtagaccel=$enableval], [build_amtjtagaccel=no]) -AC_ARG_ENABLE([ecosboard], - AS_HELP_STRING([--enable-ecosboard], [Enable building support for eCos based JTAG debugger]), - [build_ecosboard=$enableval], [build_ecosboard=no]) - AC_ARG_ENABLE([zy1000_master], AS_HELP_STRING([--enable-zy1000-master], [Use ZY1000 JTAG master registers]), [build_zy1000_master=$enableval], [build_zy1000_master=no]) @@ -421,11 +444,16 @@ case "${host_cpu}" in AC_ARG_ENABLE([at91rm9200], AS_HELP_STRING([--enable-at91rm9200], [Enable building support for AT91RM9200 based SBCs]), [build_at91rm9200=$enableval], [build_at91rm9200=no]) + + AC_ARG_ENABLE([bcm2835gpio], + AS_HELP_STRING([--enable-bcm2835gpio], [Enable building support for bitbanging on BCM2835 (as found in Raspberry Pi)]), + [build_bcm2835gpio=$enableval], [build_bcm2835gpio=no]) ;; *) build_ep93xx=no build_at91rm9200=no + build_bcm2835gpio=no ;; esac @@ -441,42 +469,26 @@ AC_ARG_ENABLE([presto_ftd2xx], AS_HELP_STRING([--enable-presto_ftd2xx], [Enable building support for ASIX Presto Programmer using the FTD2XX driver]), [build_presto_ftd2xx=$enableval], [build_presto_ftd2xx=no]) -AC_ARG_ENABLE([usbprog], - AS_HELP_STRING([--enable-usbprog], [Enable building support for the usbprog JTAG Programmer]), - [build_usbprog=$enableval], [build_usbprog=no]) +AC_ARG_ENABLE([openjtag_ftd2xx], + AS_HELP_STRING([--enable-openjtag_ftd2xx], [Enable building support for the OpenJTAG Programmer with ftd2xx driver]), + [build_openjtag_ftd2xx=$enableval], [build_openjtag_ftd2xx=no]) + +AC_ARG_ENABLE([openjtag_ftdi], + AS_HELP_STRING([--enable-openjtag_ftdi], [Enable building support for the OpenJTAG Programmer with ftdi driver]), + [build_openjtag_ftdi=$enableval], [build_openjtag_ftdi=no]) AC_ARG_ENABLE([oocd_trace], AS_HELP_STRING([--enable-oocd_trace], [Enable building support for some prototype OpenOCD+trace ETM capture hardware]), [build_oocd_trace=$enableval], [build_oocd_trace=no]) -AC_ARG_ENABLE([jlink], - AS_HELP_STRING([--enable-jlink], [Enable building support for the Segger J-Link JTAG Programmer]), - [build_jlink=$enableval], [build_jlink=no]) - -AC_ARG_ENABLE([vsllink], - AS_HELP_STRING([--enable-vsllink], [Enable building support for the Versaloon-Link JTAG Programmer]), - [build_vsllink=$enableval], [build_vsllink=no]) - -AC_ARG_ENABLE([rlink], - AS_HELP_STRING([--enable-rlink], [Enable building support for the Raisonance RLink JTAG Programmer]), - [build_rlink=$enableval], [build_rlink=no]) - -AC_ARG_ENABLE([ulink], - AS_HELP_STRING([--enable-ulink], [Enable building support for the Keil ULINK JTAG Programmer]), - [build_ulink=$enableval], [build_ulink=no]) - -AC_ARG_ENABLE([arm-jtag-ew], - AS_HELP_STRING([--enable-arm-jtag-ew], [Enable building support for the Olimex ARM-JTAG-EW Programmer]), - [build_armjtagew=$enableval], [build_armjtagew=no]) - AC_ARG_ENABLE([buspirate], AS_HELP_STRING([--enable-buspirate], [Enable building support for the Buspirate]), [build_buspirate=$enableval], [build_buspirate=no]) -AC_ARG_ENABLE([stlink], - AS_HELP_STRING([--enable-stlink], [Enable building support for the ST-Link JTAG Programmer]), - [build_stlink=$enableval], [build_stlink=no]) +AC_ARG_ENABLE([sysfsgpio], + AS_HELP_STRING([--enable-sysfsgpio], [Enable building support for programming driven via sysfs gpios.]), + [build_sysfsgpio=$enableval], [build_sysfsgpio=no]) AC_ARG_ENABLE([minidriver_dummy], AS_HELP_STRING([--enable-minidriver-dummy], [Enable the dummy minidriver.]), @@ -486,10 +498,6 @@ AC_ARG_ENABLE([internal-jimtcl], AS_HELP_STRING([--disable-internal-jimtcl], [Disable building internal jimtcl]), [use_internal_jimtcl=$enableval], [use_internal_jimtcl=yes]) -AC_ARG_ENABLE([libusb0], - AS_HELP_STRING([--enable-libusb0], [Use libusb-0.1 library for USB JTAG devices]), - [check_libusb0=$enableval], [check_libusb0=no]) - build_minidriver=no AC_MSG_CHECKING([whether to enable ZY1000 minidriver]) if test $build_zy1000 = yes; then @@ -628,12 +636,6 @@ else AC_DEFINE([BUILD_EP93XX], [0], [0 if you don't want ep93xx.]) fi -if test $build_ecosboard = yes; then - AC_DEFINE([BUILD_ECOSBOARD], [1], [1 if you want eCosBoard.]) -else - AC_DEFINE([BUILD_ECOSBOARD], [0], [0 if you don't want eCosBoard.]) -fi - if test $build_zy1000 = yes; then AC_DEFINE([BUILD_ZY1000], [1], [1 if you want ZY1000.]) else @@ -653,6 +655,13 @@ else AC_DEFINE([BUILD_AT91RM9200], [0], [0 if you don't want at91rm9200.]) fi +if test $build_bcm2835gpio = yes; then + build_bitbang=yes + AC_DEFINE([BUILD_BCM2835GPIO], [1], [1 if you want bcm2835gpio.]) +else + AC_DEFINE([BUILD_BCM2835GPIO], [0], [0 if you don't want bcm2835gpio.]) +fi + if test x$parport_use_ppdev = xyes; then AC_DEFINE([PARPORT_USE_PPDEV], [1], [1 if you want parport to use ppdev.]) else @@ -684,14 +693,18 @@ else fi if test $build_usb_blaster_libftdi = yes; then - build_bitbang=yes AC_DEFINE([BUILD_USB_BLASTER_LIBFTDI], [1], [1 if you want libftdi usb_blaster.]) else AC_DEFINE([BUILD_USB_BLASTER_LIBFTDI], [0], [0 if you don't want libftdi usb_blaster.]) fi +if test $build_jtag_vpi = yes; then + AC_DEFINE([BUILD_JTAG_VPI], [1], [1 if you want JTAG VPI.]) +else + AC_DEFINE([BUILD_JTAG_VPI], [0], [0 if you don't want JTAG VPI.]) +fi + if test $build_usb_blaster_ftd2xx = yes; then - build_bitbang=yes AC_DEFINE([BUILD_USB_BLASTER_FTD2XX], [1], [1 if you want ftd2xx usb_blaster.]) else AC_DEFINE([BUILD_USB_BLASTER_FTD2XX], [0], [0 if you don't want ftd2xx usb_blaster.]) @@ -729,10 +742,17 @@ else AC_DEFINE([BUILD_BITQ], [0], [0 if you don't want a bitq interface.]) fi -if test $build_usbprog = yes; then - AC_DEFINE([BUILD_USBPROG], [1], [1 if you want the usbprog JTAG driver.]) -else - AC_DEFINE([BUILD_USBPROG], [0], [0 if you don't want the usbprog JTAG driver.]) +AC_DEFINE([BUILD_OPENJTAG], [0], [0 if you don't want the OpenJTAG driver.]) +AC_DEFINE([BUILD_OPENJTAG_FTD2XX], [0], [0 if you don't want the OpenJTAG driver with FTD2XX driver.]) +AC_DEFINE([BUILD_OPENJTAG_LIBFTDI], [0], [0 if you don't want to build OpenJTAG driver with libftdi.]) + +if test $build_openjtag_ftd2xx = yes; then + AC_DEFINE([BUILD_OPENJTAG], [1], [1 if you want the OpenJTAG driver.]) + AC_DEFINE([BUILD_OPENJTAG_FTD2XX], [1], [1 if you want the OpenJTAG driver with FTD2XX driver.]) +fi +if test $build_openjtag_ftdi = yes; then + AC_DEFINE([BUILD_OPENJTAG], [1], [1 if you want the OpenJTAG drvier.]) + AC_DEFINE([BUILD_OPENJTAG_LIBFTDI], [1], [1 if you want to build OpenJTAG with FTDI driver.]) fi if test $build_oocd_trace = yes; then @@ -741,49 +761,13 @@ else AC_DEFINE([BUILD_OOCD_TRACE], [0], [0 if you don't want the OpenOCD+trace ETM capture driver.]) fi -if test $build_jlink = yes; then - AC_DEFINE([BUILD_JLINK], [1], [1 if you want the J-Link JTAG driver.]) -else - AC_DEFINE([BUILD_JLINK], [0], [0 if you don't want the J-Link JTAG driver.]) -fi - -if test $build_vsllink = yes; then - AC_DEFINE([BUILD_VSLLINK], [1], [1 if you want the Versaloon-Link JTAG driver.]) -else - AC_DEFINE([BUILD_VSLLINK], [0], [0 if you don't want the Versaloon-Link JTAG driver.]) -fi - -if test $build_rlink = yes; then - AC_DEFINE([BUILD_RLINK], [1], [1 if you want the RLink JTAG driver.]) -else - AC_DEFINE([BUILD_RLINK], [0], [0 if you don't want the RLink JTAG driver.]) -fi - -if test $build_ulink = yes; then - AC_DEFINE([BUILD_ULINK], [1], [1 if you want the ULINK JTAG driver.]) -else - AC_DEFINE([BUILD_ULINK], [0], [0 if you don't want the ULINK JTAG driver.]) -fi - -if test $build_armjtagew = yes; then - AC_DEFINE([BUILD_ARMJTAGEW], [1], [1 if you want the ARM-JTAG-EW JTAG driver.]) -else - AC_DEFINE([BUILD_ARMJTAGEW], [0], [0 if you don't want the ARM-JTAG-EW JTAG driver.]) -fi - if test $build_buspirate = yes; then AC_DEFINE([BUILD_BUSPIRATE], [1], [1 if you want the Buspirate JTAG driver.]) else AC_DEFINE([BUILD_BUSPIRATE], [0], [0 if you don't want the Buspirate JTAG driver.]) fi -if test $build_stlink = yes; then - AC_DEFINE(BUILD_STLINK, 1, [1 if you want the ST-Link JTAG driver.]) -else - AC_DEFINE(BUILD_STLINK, 0, [0 if you don't want the ST-Link JTAG driver.]) -fi - -if test "$use_internal_jimtcl" = yes; then +if test $use_internal_jimtcl = yes; then if test -f "$srcdir/jimtcl/configure.ac"; then AX_CONFIG_SUBDIR_OPTION([jimtcl], [--disable-install-jim]) else @@ -795,9 +779,15 @@ if test $build_remote_bitbang = yes; then build_bitbang=yes AC_DEFINE([BUILD_REMOTE_BITBANG], [1], [1 if you want the Remote Bitbang JTAG driver.]) else - AC_DEFINE([BUILD_REMOTE_BITBNAG], [0], [0 if you don't want the Remote Bitbang JTAG driver.]) + AC_DEFINE([BUILD_REMOTE_BITBANG], [0], [0 if you don't want the Remote Bitbang JTAG driver.]) fi +if test $build_sysfsgpio = yes; then + build_bitbang=yes + AC_DEFINE([BUILD_SYSFSGPIO], [1], [1 if you want the SysfsGPIO driver.]) +else + AC_DEFINE([BUILD_SYSFSGPIO], [0], [0 if you don't want SysfsGPIO driver.]) +fi #-- Deal with MingW/Cygwin FTD2XX issues if test $is_win32 = yes; then @@ -806,7 +796,7 @@ then AC_MSG_ERROR([The option: with_ftd2xx_linux_tardir is for LINUX only.]) fi -if test $build_ft2232_ftd2xx = yes -o $build_presto_ftd2xx = yes -o $build_usb_blaster_ftd2xx = yes ; then +if test $build_ft2232_ftd2xx = yes -o $build_presto_ftd2xx = yes -o $build_usb_blaster_ftd2xx = yes -o $build_openjtag_ftd2xx = yes; then AC_MSG_CHECKING([for ftd2xx.lib exists (win32)]) # if we are given a zipdir... @@ -855,7 +845,7 @@ then AC_MSG_ERROR([The option: with_ftd2xx_linux_tardir is for LINUX only.]) fi -if test $build_ft2232_ftd2xx = yes -o $build_presto_ftd2xx = yes ; then +if test $build_ft2232_ftd2xx = yes -o $build_presto_ftd2xx = yes -o $build_usb_blaster_ftd2xx = yes ; then AC_MSG_CHECKING([for libftd2xx.a (darwin)]) if test ! -f /usr/local/include/ftd2xx.h ; then @@ -876,7 +866,7 @@ then AC_MSG_ERROR([The option: --with-ftd2xx-win32-zipdir is for win32 only]) fi -if test $build_ft2232_ftd2xx = yes -o $build_presto_ftd2xx = yes ; then +if test $build_ft2232_ftd2xx = yes -o $build_presto_ftd2xx = yes -o $build_usb_blaster_ftd2xx = yes -o $build_openjtag_ftd2xx = yes; then # Must be linux if test $host_os != linux-gnu && test $host_os != linux ; then AC_MSG_ERROR([The (linux) ftd2xx library from FTDICHIP.com is linux only. Try --enable-ft2232-libftdi instead]) @@ -926,7 +916,7 @@ if test $build_ft2232_ftd2xx = yes -o $build_presto_ftd2xx = yes ; then fi fi LDFLAGS="${LDFLAGS} ${FTD2XX_LDFLAGS}" - LIBS="${LIBS} ${FTD2XX_LIB}" + LIBS="${FTD2XX_LIB} ${LIBS}" AC_MSG_RESULT([${FTD2XX_LDFLAGS} ${FTD2XX_LIB}]) else AC_CHECK_HEADER([ftd2xx.h],[],[ @@ -934,12 +924,12 @@ if test $build_ft2232_ftd2xx = yes -o $build_presto_ftd2xx = yes ; then ]) AC_SEARCH_LIBS([FT_GetLibraryVersion],[ftd2xx],,[ AC_MSG_ERROR([You appear to be missing the FTD2xx driver library.]) - ],[]) + ],[-lrt -lusb-1.0]) fi fi fi # linux -if test $build_ft2232_ftd2xx = yes -o $build_presto_ftd2xx = yes; then +if test $build_ft2232_ftd2xx = yes -o $build_presto_ftd2xx = yes -o $build_usb_blaster_ftd2xx = yes ; then # Before we go any further - make sure we can *BUILD* and *RUN* # a simple app with the "ftd2xx.lib" file - in what ever form we where given @@ -996,24 +986,58 @@ DWORD x = FT_DEVICE_4232H; AC_MSG_WARN([You need a newer FTD2XX driver (version 2.04.16 or later).]) fi +AC_MSG_CHECKING([for ftd2xx FT232H device support]) +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#include "confdefs.h" +#if IS_WIN32 +#include "windows.h" +#endif +#include +#include + +DWORD x = FT_DEVICE_232H; + ]], [])], [ + AC_DEFINE([HAS_ENUM_FT232H], [1], + [Support FT232H with FTD2XX or libftdi.]) + has_enum_ft232h=yes + ], [ + has_enum_ft232h=no + ]) + AC_MSG_RESULT([$has_enum_ft232h]) + + if test $has_enum_ft232h = no; then + AC_MSG_WARN([You need a newer FTD2XX driver (version 2.08.12 or later).]) + fi + LDFLAGS=$LDFLAGS_SAVE CFLAGS=$CFLAGS_SAVE fi -if test $build_ft2232_libftdi = yes ; then - # We assume: the package is preinstalled in the proper place - # these present as 2 libraries.. - LIBS="$LIBS -lftdi -lusb" +if test $build_ft2232_libftdi = yes -o $build_usb_blaster_libftdi = yes -o \ + $build_openjtag_ftdi = yes -o $build_presto_libftdi = yes; then + + # we can have libftdi or libftdi1, so check it and use the latest one + PKG_CHECK_MODULES([LIBFTDI], [libftdi1], [use_libftdi=yes], [use_libftdi=no]) + if test $use_libftdi = no; then + PKG_CHECK_MODULES([LIBFTDI], [libftdi], [use_libftdi=yes], [use_libftdi=no]) + fi + if test $use_libftdi = no; then + AC_MSG_ERROR([The libftdi driver is not present on your system.]) + fi + # # Try to build a small program. AC_MSG_CHECKING([Build & Link with libftdi...]) LDFLAGS_SAVE=$LDFLAGS CFLAGS_SAVE=$CFLAGS + LIBS_SAVE=$LIBS _LDFLAGS=`eval echo $LDFLAGS` _CFLAGS=`eval echo $CFLAGS` + _LIBS=`eval echo $LIBS` LDFLAGS=$_LDFLAGS - CFLAGS=$_CFLAGS + CFLAGS="$_CFLAGS $LIBFTDI_CFLAGS" + LIBS="$_LIBS $LIBFTDI_LIBS" AC_RUN_IFELSE([AC_LANG_PROGRAM([[ #include @@ -1032,7 +1056,8 @@ if test $build_ft2232_libftdi = yes ; then ], [ AC_MSG_ERROR([Cannot build & run test program using libftdi]) ], [ - AC_MSG_RESULT([Skipping as we are cross-compiling]) + AC_MSG_RESULT([Skipping as we are cross-compiling, trying build only]) + AC_SEARCH_LIBS([ftdi_new], [], [], [AC_MSG_ERROR([Cannot link with libftdi])]) ]) AC_MSG_CHECKING([for libftdi highspeed device support]) @@ -1054,81 +1079,121 @@ enum ftdi_chip_type x = TYPE_2232H; AC_MSG_WARN([You need a newer libftdi version (0.16 or later).]) fi +AC_MSG_CHECKING([for libftdi FT232H device support]) +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#include +#include + ]], [[ +enum ftdi_chip_type x = TYPE_232H; + ]])], [ + AC_DEFINE([HAS_ENUM_FT232H], [1], + [Support FT232H with FTD2XX or libftdi.]) + has_enum_ft232h=yes + ], [ + has_enum_ft232h=no + ]) + AC_MSG_RESULT([$has_enum_ft232h]) + + if test $has_enum_ft232h = no; then + AC_MSG_WARN([You need a newer libftdi version (0.20 or later).]) + fi + # Restore the 'unexpanded ldflags' LDFLAGS=$LDFLAGS_SAVE CFLAGS=$CFLAGS_SAVE + LIBS=$LIBS_SAVE fi -# check for usb.h when a driver will require it -build_usb=no -if test $build_vsllink = yes -o $build_usbprog = yes -o \ - $build_rlink = yes -o $build_ulink = yes -o $build_armjtagew = yes -then - build_usb=yes -fi +PKG_CHECK_MODULES([LIBUSB1], [libusb-1.0], [ + use_libusb1=yes + AC_DEFINE([HAVE_LIBUSB1], [1], [Define if you have libusb-1.x]) + PKG_CHECK_EXISTS([libusb-1.0 >= 1.0.9], + [AC_DEFINE([HAVE_LIBUSB_ERROR_NAME], [1], [Define if your libusb has libusb_error_name()])], + [AC_MSG_WARN([libusb-1.x older than 1.0.9 detected, consider updating])]) + LIBUSB1_CFLAGS=`echo $LIBUSB1_CFLAGS | sed 's/-I/-isystem /'` + AC_MSG_NOTICE([libusb-1.0 header bug workaround: LIBUSB1_CFLAGS changed to "$LIBUSB1_CFLAGS"]) + ], [ + use_libusb1=no + AC_MSG_WARN([libusb-1.x not found, trying legacy libusb-0.1 as a fallback; consider installing libusb-1.x instead]) +]) -# Check for libusb1 ported drivers. -build_usb_ng=no -if test $build_jlink = yes -o $build_stlink = yes; then - build_usb_ng=yes -fi +PKG_CHECK_MODULES([LIBUSB0], [libusb], [use_libusb0=yes], [use_libusb0=no]) + +for hidapi_lib in hidapi hidapi-hidraw hidapi-libusb; do + PKG_CHECK_MODULES([HIDAPI],[$hidapi_lib],[ + use_hidapi=yes + break + ],[ + use_hidapi=no + ]) +done + +m4_define([PROCESS_ADAPTERS], [ + m4_foreach([adapter], [$1], [ + if test $2; then + if test $ADAPTER_VAR([adapter]) != no; then + AC_DEFINE([BUILD_]ADAPTER_SYM([adapter]), [1], [1 if you want the ]ADAPTER_DESC([adapter]).) + else + AC_DEFINE([BUILD_]ADAPTER_SYM([adapter]), [0], [0 if you do not want the ]ADAPTER_DESC([adapter]).) + fi + else + if test $ADAPTER_VAR([adapter]) = yes; then + AC_MSG_ERROR([$3 is required for the ADAPTER_DESC([adapter])]) + fi + ADAPTER_VAR([adapter])=no + fi + AM_CONDITIONAL(ADAPTER_SYM([adapter]), [test $ADAPTER_VAR([adapter]) != no]) + ]) +]) -# check for libusb library if necessary -use_libusb0=no -use_libusb1=no -if test $build_usb = yes -o $build_usb_ng = yes; then - if test $check_libusb0 = no -a $build_usb_ng = yes; then - AC_CHECK_HEADER([libusb-1.0/libusb.h], - [AC_DEFINE(HAVE_LIBUSB1, 1, [Define if you have libusb-1.0]) check_libusb0=no use_libusb1=yes ], - [ check_libusb0=yes use_libusb1=no ]) - fi +PROCESS_ADAPTERS([USB1_ADAPTERS], [$use_libusb1 = yes], [libusb-1.x]) +PROCESS_ADAPTERS([USB_ADAPTERS], [$use_libusb1 = yes -o $use_libusb0 = yes], [libusb-1.x or libusb-0.1]) +PROCESS_ADAPTERS([USB0_ADAPTERS], [$use_libusb0 = yes], [libusb-0.1]) +PROCESS_ADAPTERS([HIDAPI_ADAPTERS], [$use_hidapi = yes], [hidapi]) - if test $check_libusb0 = yes -o $build_usb = yes; then - AC_CHECK_HEADERS([usb.h], [use_libusb0=yes], - [AC_MSG_ERROR([libusb or libusb-1.0 are required to build some OpenOCD driver(s)])]) - fi +if test $enable_stlink != no -o $enable_ti_icdi != no; then + AC_DEFINE([BUILD_HLADAPTER], [1], [1 if you want the High Level JTAG driver.]) +else + AC_DEFINE([BUILD_HLADAPTER], [0], [0 if you want the High Level JTAG driver.]) fi +AM_CONDITIONAL([HLADAPTER], [test $enable_stlink != no -o $enable_ti_icdi != no]) AM_CONDITIONAL([RELEASE], [test $build_release = yes]) AM_CONDITIONAL([PARPORT], [test $build_parport = yes]) AM_CONDITIONAL([DUMMY], [test $build_dummy = yes]) AM_CONDITIONAL([GIVEIO], [test x$parport_use_giveio = xyes]) AM_CONDITIONAL([EP93XX], [test $build_ep93xx = yes]) -AM_CONDITIONAL([ECOSBOARD], [test $build_ecosboard = yes]) AM_CONDITIONAL([ZY1000], [test $build_zy1000 = yes]) AM_CONDITIONAL([ZY1000_MASTER], [test $build_zy1000_master = yes]) AM_CONDITIONAL([IOUTIL], [test $build_ioutil = yes]) AM_CONDITIONAL([AT91RM9200], [test $build_at91rm9200 = yes]) +AM_CONDITIONAL([BCM2835GPIO], [test $build_bcm2835gpio = yes]) AM_CONDITIONAL([BITBANG], [test $build_bitbang = yes]) AM_CONDITIONAL([FT2232_LIBFTDI], [test $build_ft2232_libftdi = yes]) AM_CONDITIONAL([FT2232_DRIVER], [test $build_ft2232_ftd2xx = yes -o $build_ft2232_libftdi = yes]) AM_CONDITIONAL([USB_BLASTER_LIBFTDI], [test $build_usb_blaster_libftdi = yes]) -AM_CONDITIONAL([USB_BLASTER_DRIVER], [test $build_usb_blaster_ftd2xx = yes -o $build_usb_blaster_libftdi = yes]) +AM_CONDITIONAL([USB_BLASTER_FTD2XX], [test $build_usb_blaster_ftd2xx = yes]) +AM_CONDITIONAL([JTAG_VPI], [test $build_jtag_vpi = yes -o $build_jtag_vpi = yes]) +AM_CONDITIONAL([USB_BLASTER_DRIVER], [test $build_usb_blaster_ftd2xx = yes -o $build_usb_blaster_libftdi = yes -o $use_libusb1 = yes]) AM_CONDITIONAL([AMTJTAGACCEL], [test $build_amtjtagaccel = yes]) AM_CONDITIONAL([GW16012], [test $build_gw16012 = yes]) AM_CONDITIONAL([PRESTO_LIBFTDI], [test $build_presto_libftdi = yes]) AM_CONDITIONAL([PRESTO_DRIVER], [test $build_presto_ftd2xx = yes -o $build_presto_libftdi = yes]) -AM_CONDITIONAL([USBPROG], [test $build_usbprog = yes]) +AM_CONDITIONAL([OPENJTAG], [test $build_openjtag_ftd2xx = yes -o $build_openjtag_ftdi = yes]) AM_CONDITIONAL([OOCD_TRACE], [test $build_oocd_trace = yes]) -AM_CONDITIONAL([JLINK], [test $build_jlink = yes]) -AM_CONDITIONAL([VSLLINK], [test $build_vsllink = yes]) -AM_CONDITIONAL([RLINK], [test $build_rlink = yes]) -AM_CONDITIONAL([ULINK], [test $build_ulink = yes]) -AM_CONDITIONAL([ARMJTAGEW], [test $build_armjtagew = yes]) AM_CONDITIONAL([REMOTE_BITBANG], [test $build_remote_bitbang = yes]) AM_CONDITIONAL([BUSPIRATE], [test $build_buspirate = yes]) -AM_CONDITIONAL([STLINK], [test $build_stlink = yes]) -AM_CONDITIONAL([USB], [test $build_usb = yes]) -AM_CONDITIONAL([USB_NG], [test $build_usb_ng = yes]) +AM_CONDITIONAL([SYSFSGPIO], [test $build_sysfsgpio = yes]) AM_CONDITIONAL([USE_LIBUSB0], [test $use_libusb0 = yes]) AM_CONDITIONAL([USE_LIBUSB1], [test $use_libusb1 = yes]) AM_CONDITIONAL([IS_CYGWIN], [test $is_cygwin = yes]) -AM_CONDITIONAL([IS_MINGW], [test $is_mingw = ye]s) -AM_CONDITIONAL([IS_WIN32], [test $is_win32 = ye]s) -AM_CONDITIONAL([IS_DARWIN], [test $is_darwin = ye]s) +AM_CONDITIONAL([IS_MINGW], [test $is_mingw = yes]) +AM_CONDITIONAL([IS_WIN32], [test $is_win32 = yes]) +AM_CONDITIONAL([IS_DARWIN], [test $is_darwin = yes]) AM_CONDITIONAL([BITQ], [test $build_bitq = yes]) +AM_CONDITIONAL([CMSIS_DAP], [test $use_hidapi = yes]) -AM_CONDITIONAL([MINIDRIVER], [test $build_minidriver = ye]s) +AM_CONDITIONAL([MINIDRIVER], [test $build_minidriver = yes]) AM_CONDITIONAL([MINIDRIVER_DUMMY], [test $build_minidriver_dummy = yes]) AM_CONDITIONAL([INTERNAL_JIMTCL], [test $use_internal_jimtcl = yes]) @@ -1230,8 +1295,11 @@ AC_CONFIG_FILES([ src/helper/Makefile src/jtag/Makefile src/jtag/drivers/Makefile - src/jtag/stlink/Makefile + src/jtag/drivers/usb_blaster/Makefile + src/jtag/hla/Makefile + src/jtag/aice/Makefile src/transport/Makefile + src/target/openrisc/Makefile src/xsvf/Makefile src/svf/Makefile src/target/Makefile @@ -1244,3 +1312,32 @@ AC_CONFIG_FILES([ doc/Makefile ]) AC_OUTPUT + +echo +echo +echo OpenOCD configuration summary +echo -------------------------------------------------- +m4_foreach([adapter], [USB1_ADAPTERS, USB_ADAPTERS, USB0_ADAPTERS, HIDAPI_ADAPTERS], + [echo -n m4_format(["%-40s"], ADAPTER_DESC([adapter])) + case $ADAPTER_VAR([adapter]) in + auto) + echo yes '(auto)' + ;; + yes) + echo yes + ;; + no) + echo no + ;; + esac +]) +echo + +if test $build_ft2232_libftdi = yes -o $build_ft2232_ftd2xx = yes; then + if test $enable_ftdi = no; then + AC_MSG_WARN([Building the deprecated 'ft2232' adapter driver but not its replacement!]) + AC_MSG_WARN([Please consider using --enable-ftdi instead.]) + else + AC_MSG_WARN([Building the deprecated 'ft2232' adapter driver.]) + fi +fi