build: remove hard coded ftdi and usb libraries
[fw/openocd] / configure.ac
index 17cf43edd560fa00d3012391ffbddfec7be4fc09..968e381be890f4aaf35b42efae44426ec21754ce 100644 (file)
@@ -1,4 +1,4 @@
-AC_PREREQ(2.60)
+AC_PREREQ(2.64)
 AC_INIT([openocd], [0.8.0-dev],
   [OpenOCD Mailing List <openocd-devel@lists.sourceforge.net>])
 AC_CONFIG_SRCDIR([src/openocd.c])
@@ -194,7 +194,8 @@ 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]]])
+       [[ti_icdi], [TI ICDI JTAG Programmer], [HLADAPTER_ICDI]],
+       [[ulink], [Keil ULINK JTAG Programmer], [ULINK]]])
 
 m4_define([USB_ADAPTERS],
        [[[jlink], [Segger J-Link JTAG Programmer], [JLINK]],
@@ -206,7 +207,6 @@ m4_define([USB0_ADAPTERS],
        [[[vsllink], [Versaloon-Link JTAG Programmer], [VSLLINK]],
        [[usbprog], [USBProg JTAG Programmer], [USBPROG]],
        [[rlink], [Raisonance RLink JTAG Programmer], [RLINK]],
-       [[ulink], [Keil ULINK JTAG Programmer], [ULINK]],
        [[armjtagew], [Olimex ARM-JTAG-EW Programmer], [ARMJTAGEW]]])
 
 #========================================
@@ -908,7 +908,7 @@ if test $build_ft2232_ftd2xx = yes -o $build_presto_ftd2xx = yes -o $build_usb_b
       ])
     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
@@ -999,19 +999,29 @@ fi
 
 if test $build_ft2232_libftdi = yes -o $build_usb_blaster_libftdi = yes -o \
   $build_openjtag_ftdi = yes; then
-  # We assume: the package is preinstalled in the proper place
-  # these present as 2 libraries..
-  LIBS="$LIBS -lftdi -lusb"
+
+  # 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 <stdio.h>
@@ -1075,6 +1085,7 @@ enum ftdi_chip_type x = TYPE_232H;
   # Restore the 'unexpanded ldflags'
   LDFLAGS=$LDFLAGS_SAVE
   CFLAGS=$CFLAGS_SAVE
+  LIBS=$LIBS_SAVE
 fi
 
 PKG_CHECK_MODULES([LIBUSB1], [libusb-1.0], [
@@ -1083,6 +1094,8 @@ PKG_CHECK_MODULES([LIBUSB1], [libusb-1.0], [
        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])
@@ -1259,6 +1272,7 @@ AC_CONFIG_FILES([
   src/jtag/hla/Makefile
   src/jtag/aice/Makefile
   src/transport/Makefile
+  src/target/openrisc/Makefile
   src/xsvf/Makefile
   src/svf/Makefile
   src/target/Makefile