configure: remove --enable-libusb0 option, rework libusb selection 34/1434/6
authorPaul Fertser <fercerpav@gmail.com>
Mon, 3 Jun 2013 20:07:07 +0000 (00:07 +0400)
committerSpencer Oliver <spen@spen-soft.co.uk>
Wed, 12 Jun 2013 14:40:29 +0000 (14:40 +0000)
This makes libusb handling more consistent: if any driver requires
libusb, first check for libusb-1 availability, if not found and
libusb0 is ok for this case, try libusb0.

A user-visible bug fixed by this is that when a user was selecting a
driver that required libusb-1 but was lacking the necessary dev files
or libraries, configure didn't complain (but the build was failing of
course).

--enable-stlink doesn't really require libusb-1 but since it's using the
same automake symbol HLAADAPTER, ti_icdi is getting built too which needs
libusb1 unconditionally. Since using libusb-0.1 makes little sense anyway,
leave that as is.

Signed-off-by: Paul Fertser <fercerpav@gmail.com>
Change-Id: I630a4ad9e4583743d45b2233bf5d8f4e5c0aab82
Reviewed-on: http://openocd.zylin.com/1434
Tested-by: jenkins
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
README
configure.ac
src/jtag/drivers/Makefile.am

diff --git a/README b/README
index 6a83217425d4dd300e33e48802d82ebbcc6e8e70..14d073b6d2575b525a8f00c3fad3df9d2ed43acb 100644 (file)
--- a/README
+++ b/README
@@ -291,7 +291,7 @@ options may be available there:
 
   --disable-internal-jimtcl
                           Disable building internal jimtcl
 
   --disable-internal-jimtcl
                           Disable building internal jimtcl
-  --enable-libusb0        Use libusb-0.1 library for USB JTAG devices
+
   --enable-remote-bitbang Enable building support for the Remote Bitbang jtag
                           driver
 
   --enable-remote-bitbang Enable building support for the Remote Bitbang jtag
                           driver
 
index 2d50bee495fa375a726f3dd562c96a9b42fca60f..b247aad570ed5253d981ece327b8e87644f85b32 100644 (file)
@@ -516,10 +516,6 @@ AC_ARG_ENABLE([internal-jimtcl],
   AS_HELP_STRING([--disable-internal-jimtcl], [Disable building internal jimtcl]),
   [use_internal_jimtcl=$enableval], [use_internal_jimtcl=yes])
 
   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])
-
 AC_ARG_ENABLE([aice],
   AS_HELP_STRING([--enable-aice], [Enable building support for the Andes JTAG Programmer]),
   [build_aice=$enableval], [build_aice=no])
 AC_ARG_ENABLE([aice],
   AS_HELP_STRING([--enable-aice], [Enable building support for the Andes JTAG Programmer]),
   [build_aice=$enableval], [build_aice=no])
@@ -1178,42 +1174,53 @@ enum ftdi_chip_type x = TYPE_232H;
   CFLAGS=$CFLAGS_SAVE
 fi
 
   CFLAGS=$CFLAGS_SAVE
 fi
 
-# check for usb.h when a driver will require it
-build_usb=no
+# check if some driver requires libusb-0.1
+need_usb0=no
 if test $build_vsllink = yes -o $build_usbprog = yes -o \
 if test $build_vsllink = yes -o $build_usbprog = yes -o \
-  $build_rlink = yes -o $build_ulink = yes -o $build_armjtagew = yes -o \
-  $build_aice = yes
-then
-  build_usb=yes
+        $build_rlink = yes -o $build_ulink = yes -o $build_armjtagew = yes; then
+  need_usb0=yes
 fi
 
 fi
 
-# Check for libusb1 ported drivers.
-build_usb_ng=no
-if test $build_jlink = yes -o $build_hladapter_stlink = yes -o $build_osbdm = yes -o \
-  $build_opendous = yes -o $build_ftdi = yes -o $build_hladapter_icdi = yes
-then
-  build_usb_ng=yes
+# 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
 fi
 
 # check for libusb library if necessary
-use_libusb0=no
 use_libusb1=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
-           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 older than 1.0.9 detected, consider updating])])
-         ], [
-           check_libusb0=yes use_libusb1=no ])
-  fi
+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
 
 
-  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
+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])
 fi
 
 AM_CONDITIONAL([RELEASE], [test $build_release = yes])
@@ -1252,8 +1259,6 @@ AM_CONDITIONAL([HLADAPTER], [test $build_hladapter_stlink = yes -o $build_hladap
 AM_CONDITIONAL([OSBDM], [test $build_osbdm = yes])
 AM_CONDITIONAL([OPENDOUS], [test $build_opendous = yes])
 AM_CONDITIONAL([SYSFSGPIO], [test $build_sysfsgpio = yes])
 AM_CONDITIONAL([OSBDM], [test $build_osbdm = yes])
 AM_CONDITIONAL([OPENDOUS], [test $build_opendous = yes])
 AM_CONDITIONAL([SYSFSGPIO], [test $build_sysfsgpio = yes])
-AM_CONDITIONAL([USB], [test $build_usb = yes])
-AM_CONDITIONAL([USB_NG], [test $build_usb_ng = 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([USE_LIBUSB0], [test $use_libusb0 = yes])
 AM_CONDITIONAL([USE_LIBUSB1], [test $use_libusb1 = yes])
 AM_CONDITIONAL([IS_CYGWIN], [test $is_cygwin = yes])
index 30251be155d794921322d88c09c598fd117b94b8..22bc89bbcad443556a74ad21ddb5685ffd017d81 100644 (file)
@@ -19,18 +19,15 @@ SUBDIRS=
 # Standard Driver: common files
 DRIVERFILES += driver.c
 
 # Standard Driver: common files
 DRIVERFILES += driver.c
 
-if USB
-DRIVERFILES += usb_common.c
-endif
-
 if USE_LIBUSB1
 DRIVERFILES += libusb1_common.c
 if USE_LIBUSB1
 DRIVERFILES += libusb1_common.c
-else
+endif
 
 if USE_LIBUSB0
 
 if USE_LIBUSB0
+DRIVERFILES += usb_common.c
+if !USE_LIBUSB1
 DRIVERFILES += libusb0_common.c
 endif
 DRIVERFILES += libusb0_common.c
 endif
-
 endif
 
 if BITBANG
 endif
 
 if BITBANG

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)