-# check for usb.h when a driver will require it
-build_usb=no
-if test $build_jlink = yes -o $build_vsllink = yes -o $build_usbprog = yes -o \
- $build_rlink = yes -o $build_ulink = yes -o $build_armjtagew = yes
-then
- AC_CHECK_HEADERS([usb.h],[],
- [AC_MSG_ERROR([usb.h is required to build some OpenOCD driver(s)])])
- build_usb=yes
-fi
-
-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(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(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(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(BUSPIRATE, test $build_buspirate = yes)
-AM_CONDITIONAL(USB, test $build_usb = yes)
-AM_CONDITIONAL(IS_CYGWIN, test $is_cygwin = yes)
-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(MINIDRIVER, test $build_minidriver = yes)
-AM_CONDITIONAL(MINIDRIVER_DUMMY, test $build_minidriver_dummy = yes)
-
-AM_CONDITIONAL(INTERNAL_JIMTCL, test $use_internal_jimtcl = yes)
+# check if some driver requires libusb-0.1
+need_usb0=no
+if test $build_vsllink = yes -o $build_usbprog = yes -o \
+ $build_rlink = yes -o $build_ulink = yes -o $build_armjtagew = yes; then
+ need_usb0=yes
+fi
+
+# check if some driver can work with either libusb version
+need_usb=no
+if test $build_jlink = yes -o $build_osbdm = yes -o $build_opendous = yes -o \
+ $build_aice = yes; then
+ need_usb=yes
+fi
+
+# check if some driver requires libusb-1.x
+need_usb_ng=no
+if test $build_ftdi = yes -o $build_hladapter_icdi = yes -o \
+ $build_hladapter_stlink = yes; then
+ need_usb_ng=yes
+fi
+
+# check for libusb library if necessary
+use_libusb1=no
+if test $need_usb = yes -o $need_usb_ng = yes; then
+ AC_CHECK_HEADER([libusb-1.0/libusb.h], [
+ AC_DEFINE(HAVE_LIBUSB1, 1, [Define if you have libusb-1.x])
+ use_libusb1=yes
+ AC_SEARCH_LIBS([libusb_error_name], [usb-1.0],
+ [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])])
+ ], [
+ if test $need_usb_ng = yes; then
+ AC_MSG_ERROR([libusb-1.x is required for some driver(s) you've selected])
+ else
+ AC_MSG_WARN([Trying legacy libusb-0.1 as a fallback, consider installing libusb-1 instead])
+ need_usb0=yes
+ fi
+ ])
+fi
+
+use_libusb0=no
+if test $need_usb0 = yes; then
+ AC_CHECK_HEADERS([usb.h], [
+ use_libusb0=yes
+ ], [
+ AC_MSG_ERROR([libusb-0.1 is required to build some OpenOCD driver(s)])
+ ])
+fi
+
+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([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([FTDI_DRIVER], [test $build_ftdi = yes])
+AM_CONDITIONAL([USB_BLASTER_LIBFTDI], [test $build_usb_blaster_libftdi = yes])
+AM_CONDITIONAL([USB_BLASTER_FTD2XX], [test $build_usb_blaster_ftd2xx = yes])
+AM_CONDITIONAL([USB_BLASTER_DRIVER], [test $build_usb_blaster_ftd2xx = yes -o $build_usb_blaster_libftdi = 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([AICE], [test $build_aice = 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([HLADAPTER], [test $build_hladapter_stlink = yes -o $build_hladapter_icdi = yes])
+AM_CONDITIONAL([OSBDM], [test $build_osbdm = yes])
+AM_CONDITIONAL([OPENDOUS], [test $build_opendous = 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([BITQ], [test $build_bitq = yes])
+
+AM_CONDITIONAL([MINIDRIVER], [test $build_minidriver = ye]s)
+AM_CONDITIONAL([MINIDRIVER_DUMMY], [test $build_minidriver_dummy = yes])
+
+AM_CONDITIONAL([INTERNAL_JIMTCL], [test $use_internal_jimtcl = yes])