Browse Source

libusb: require pkg-config support

An alternative approach to show how much cleaner the pure pkg-config
way is.

This changes the discovery procedures for libusb-1.0 and libusb-0.1,
making them depend on pkg-config being properly installed and
configured, including the necessary build host configuration for the
cross-builds (see
http://www.flameeyes.eu/autotools-mythbuster/pkgconfig/cross-compiling.html)

It should make it possible to compile OpenOCD without changes and
extra effort on GNU/Linux, FreeBSD users would need to supply a .pc
file for their libusb implementation or add LIBUSB1_LIBS and
LIBUSB1_CFLAGS to the configure environment.

Change-Id: I826e378dd1e0d101a549a573b2c63212a7e00b64
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
Reviewed-on: http://openocd.zylin.com/1467
Reviewed-by: Xiaofan <xiaofanc@gmail.com>
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
Tested-by: Spencer Oliver <spen@spen-soft.co.uk>
tags/v0.8.0-rc1
Paul Fertser 7 years ago
committed by Andreas Fritiofson
parent
commit
191a5736c2
12 changed files with 46 additions and 19 deletions
  1. +13
    -1
      README
  2. +3
    -3
      README.OSX
  3. +12
    -0
      README.Windows
  4. +7
    -8
      configure.ac
  5. +2
    -2
      src/Makefile.am
  6. +2
    -0
      src/helper/Makefile.am
  7. +1
    -1
      src/helper/replacements.c
  8. +1
    -1
      src/jtag/aice/Makefile.am
  9. +2
    -0
      src/jtag/drivers/Makefile.am
  10. +1
    -1
      src/jtag/drivers/libusb1_common.h
  11. +1
    -1
      src/jtag/drivers/mpsse.c
  12. +1
    -1
      src/jtag/drivers/ti_icdi_usb.c

+ 13
- 1
README View File

@@ -210,6 +210,7 @@ You'll also need:

- make
- libtool
- pkg-config >= 0.23 (or compatible)

Additionally, for building from git:

@@ -218,7 +219,8 @@ Additionally, for building from git:
- texinfo

USB-based adapters depend on libusb-1.0 and some older drivers require
libusb-0.1 or libusb-compat-0.1.
libusb-0.1 or libusb-compat-0.1. A compatible implementation, such as
FreeBSD's, additionally needs the corresponding .pc files.

USB-Blaster, ASIX Presto, OpenJTAG and ft2232 interface adapter
drivers need either one of:
@@ -272,6 +274,16 @@ e.g. for cross-building for Windows 32-bit with MinGW on Debian:

./configure --host=i686-w64-mingw32 [options]

To make pkg-config work nicely for cross-compiling, you might need an
additional wrapper script as described at

http://www.flameeyes.eu/autotools-mythbuster/pkgconfig/cross-compiling.html

This is needed to tell pkg-config where to look for the target
libraries that OpenOCD depends on. Alternatively, you can specify
*_CFLAGS and *_LIBS environment variables directly, see "./configure
--help" for the details.

Parallel Port Dongles
---------------------



+ 3
- 3
README.OSX View File

@@ -9,9 +9,9 @@ There are a few prerequisites you will need first:
or
- Homebrew (http://mxcl.github.io/homebrew/)

libtool, automake, autoconf and libusb can be easily installed via
MacPorts:
sudo port install libtool automake autoconf libusb [libusb-compat]
libtool, automake, autoconf, pkg-config and libusb can be easily
installed via MacPorts:
sudo port install libtool automake autoconf pkgconfig libusb [libusb-compat]
or with Homebrew:
brew install libtool automake libusb [libusb-compat]



+ 12
- 0
README.Windows View File

@@ -5,6 +5,18 @@ You can build OpenOCD for Windows natively with either MinGW/MSYS or
Cygwin. Alternatively, one can cross-compile it using MinGW on a *nix
host. See README for the generic instructions.

Native MinGW/MSYS compilation
-----------------------------

As MSYS doesn't come with pkg-config pre-installed, you need to add it
manually. The easiest way to do that is to download pkg-config-lite
from:

http://sourceforge.net/projects/pkgconfiglite/

Then simply unzip the archive to the root directory of your MSYS
installation.

USB adapters
------------



+ 7
- 8
configure.ac View File

@@ -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], [:])
@@ -1175,10 +1176,10 @@ 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])
PKG_CHECK_MODULES([LIBUSB1], [libusb-1.0], [
use_libusb1=yes
AC_SEARCH_LIBS([libusb_error_name], [usb-1.0],
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])])
], [
@@ -1193,11 +1194,9 @@ 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)])
])
PKG_CHECK_MODULES([LIBUSB0], [libusb], [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])


+ 2
- 2
src/Makefile.am View File

@@ -75,11 +75,11 @@ endif

LIBUSB =
if USE_LIBUSB1
LIBUSB += -lusb-1.0
LIBUSB += $(LIBUSB1_LIBS)
endif

if USE_LIBUSB0
LIBUSB += -lusb
LIBUSB += $(LIBUSB0_LIBS)
endif

libopenocd_la_LIBADD = \


+ 2
- 0
src/helper/Makefile.am View File

@@ -5,6 +5,8 @@ noinst_LTLIBRARIES = libhelper.la

CONFIGFILES = options.c time_support_common.c

libhelper_la_CPPFLAGS = $(AM_CPPFLAGS) $(LIBUSB1_CFLAGS)

libhelper_la_SOURCES = \
binarybuffer.c \
$(CONFIGFILES) \


+ 1
- 1
src/helper/replacements.c View File

@@ -278,7 +278,7 @@ int win_select(int max_fd, fd_set *rfds, fd_set *wfds, fd_set *efds, struct time
#endif

#if defined HAVE_LIBUSB1 && !defined HAVE_LIBUSB_ERROR_NAME
#include <libusb-1.0/libusb.h>
#include <libusb.h>
/* Verbatim from git://git.libusb.org/libusb.git tag 1.0.9
* The libusb_error enum is compatible down to v0.9.1
*/


+ 1
- 1
src/jtag/aice/Makefile.am View File

@@ -1,6 +1,6 @@
include $(top_srcdir)/common.mk

AM_CPPFLAGS += -I$(top_srcdir)/src/jtag/drivers
AM_CPPFLAGS += -I$(top_srcdir)/src/jtag/drivers $(LIBUSB1_CFLAGS) $(LIBUSB0_CFLAGS)

noinst_LTLIBRARIES = libocdaice.la



+ 2
- 0
src/jtag/drivers/Makefile.am View File

@@ -6,6 +6,8 @@ libocdjtagdrivers_la_LIBADD =
libocdjtagdrivers_la_SOURCES = \
$(DRIVERFILES)

libocdjtagdrivers_la_CPPFLAGS = $(AM_CPPFLAGS) $(LIBUSB1_CFLAGS) $(LIBUSB0_CFLAGS)

ULINK_FIRMWARE = $(srcdir)/OpenULINK

EXTRA_DIST = $(ULINK_FIRMWARE)


+ 1
- 1
src/jtag/drivers/libusb1_common.h View File

@@ -22,7 +22,7 @@
#ifndef JTAG_LIBUSB_COMMON_H
#define JTAG_LIBUSB_COMMON_H

#include <libusb-1.0/libusb.h>
#include <libusb.h>

#define jtag_libusb_device libusb_device
#define jtag_libusb_device_handle libusb_device_handle


+ 1
- 1
src/jtag/drivers/mpsse.c View File

@@ -24,7 +24,7 @@

#include "mpsse.h"
#include "helper/log.h"
#include <libusb-1.0/libusb.h>
#include <libusb.h>

/* Compatibility define for older libusb-1.0 */
#ifndef LIBUSB_CALL


+ 1
- 1
src/jtag/drivers/ti_icdi_usb.c View File

@@ -33,7 +33,7 @@

#include <target/cortex_m.h>

#include <libusb-1.0/libusb.h>
#include <libusb.h>

#define ICDI_WRITE_ENDPOINT 0x02
#define ICDI_READ_ENDPOINT 0x83


Loading…
Cancel
Save