This is an automated email from Gerrit.

Matthias Welwarsky ([email protected]) just uploaded a new patch set to 
Gerrit, which you can find at http://openocd.zylin.com/3396

-- gerrit

commit 3a6e1a228c4aca64973a0da9156c24f4cb1e41da
Author: Matthias Welwarsky <[email protected]>
Date:   Wed Apr 6 10:07:17 2016 +0200

    ftdi: make ftdi_location depend on libusb1 version
    
    The function libusb_get_port_numbers(), required for the command
    ftdi_location, is only available in recent version of libusb1.
    Compilation will break if the function is not available. This patch
    enables the command only if libusb1 contains the necessary function.
    
    Change-Id: I091e72dafa4ed22eea51692751d43246a8152987
    Signed-off-by: Matthias Welwarsky <[email protected]>

diff --git a/configure.ac b/configure.ac
index fb01e1b..0343826 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1142,6 +1142,8 @@ PKG_CHECK_MODULES([LIBUSB1], [libusb-1.0], [
                [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"])
+       AC_CHECK_LIB([usb-1.0], [libusb_get_port_numbers], [
+               AC_DEFINE([HAVE_LIBUSB_GET_PORT_NUMBERS], [1], [Define if your 
libusb has libusb_get_port_numbers()])])
   ], [
        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])
diff --git a/doc/openocd.texi b/doc/openocd.texi
index fb987e7..7c6c6fc 100644
--- a/doc/openocd.texi
+++ b/doc/openocd.texi
@@ -2564,6 +2564,8 @@ roots at @var{bus} and walks down the physical ports, 
with each
 @var{port} option specifying a deeper level in the bus topology, the last
 @var{port} denoting where the target adapter is actually plugged.
 The USB bus topology can be queried with the command @emph{lsusb -t}.
+
+This command is only available if your libusb1 is at least version 1.0.16.
 @end deffn
 
 @deffn {Config Command} {ftdi_channel} channel
diff --git a/src/jtag/drivers/ftdi.c b/src/jtag/drivers/ftdi.c
index b32fa6c..3f74f1c 100644
--- a/src/jtag/drivers/ftdi.c
+++ b/src/jtag/drivers/ftdi.c
@@ -699,6 +699,7 @@ COMMAND_HANDLER(ftdi_handle_serial_command)
        return ERROR_OK;
 }
 
+#ifdef HAVE_LIBUSB_GET_PORT_NUMBERS
 COMMAND_HANDLER(ftdi_handle_location_command)
 {
        if (CMD_ARGC == 1) {
@@ -711,6 +712,7 @@ COMMAND_HANDLER(ftdi_handle_location_command)
 
        return ERROR_OK;
 }
+#endif
 
 COMMAND_HANDLER(ftdi_handle_channel_command)
 {
@@ -889,6 +891,7 @@ static const struct command_registration 
ftdi_command_handlers[] = {
                .help = "set the serial number of the FTDI device",
                .usage = "serial_string",
        },
+#ifdef HAVE_LIBUSB_GET_PORT_NUMBERS
        {
                .name = "ftdi_location",
                .handler = &ftdi_handle_location_command,
@@ -896,6 +899,7 @@ static const struct command_registration 
ftdi_command_handlers[] = {
                .help = "set the USB bus location of the FTDI device",
                .usage = "<bus>:port[,port]...",
        },
+#endif
        {
                .name = "ftdi_channel",
                .handler = &ftdi_handle_channel_command,
diff --git a/src/jtag/drivers/mpsse.c b/src/jtag/drivers/mpsse.c
index a3820a2..0d19f38 100644
--- a/src/jtag/drivers/mpsse.c
+++ b/src/jtag/drivers/mpsse.c
@@ -106,12 +106,13 @@ static bool string_descriptor_equal(libusb_device_handle 
*device, uint8_t str_in
 
 static bool device_location_equal(libusb_device *device, const char *location)
 {
+       bool result = false;
+#ifdef HAVE_LIBUSB_GET_PORT_NUMBERS
        char *loc = strdup(location);
        uint8_t port_path[7];
        int path_step, path_len;
        uint8_t dev_bus = libusb_get_bus_number(device);
        char *ptr;
-       bool result = false;
 
        path_len = libusb_get_port_numbers(device, port_path, 7);
        if (path_len == LIBUSB_ERROR_OVERFLOW) {
@@ -154,6 +155,7 @@ static bool device_location_equal(libusb_device *device, 
const char *location)
 
  done:
        free(loc);
+#endif
        return result;
 }
 

-- 

------------------------------------------------------------------------------
_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to