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>__archive__
parent
10df176b0f
commit
191a5736c2
14
README
14
README
|
@ -210,6 +210,7 @@ You'll also need:
|
||||||
|
|
||||||
- make
|
- make
|
||||||
- libtool
|
- libtool
|
||||||
|
- pkg-config >= 0.23 (or compatible)
|
||||||
|
|
||||||
Additionally, for building from git:
|
Additionally, for building from git:
|
||||||
|
|
||||||
|
@ -218,7 +219,8 @@ Additionally, for building from git:
|
||||||
- texinfo
|
- texinfo
|
||||||
|
|
||||||
USB-based adapters depend on libusb-1.0 and some older drivers require
|
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
|
USB-Blaster, ASIX Presto, OpenJTAG and ft2232 interface adapter
|
||||||
drivers need either one of:
|
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]
|
./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
|
Parallel Port Dongles
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
|
|
|
@ -9,9 +9,9 @@ There are a few prerequisites you will need first:
|
||||||
or
|
or
|
||||||
- Homebrew (http://mxcl.github.io/homebrew/)
|
- Homebrew (http://mxcl.github.io/homebrew/)
|
||||||
|
|
||||||
libtool, automake, autoconf and libusb can be easily installed via
|
libtool, automake, autoconf, pkg-config and libusb can be easily
|
||||||
MacPorts:
|
installed via MacPorts:
|
||||||
sudo port install libtool automake autoconf libusb [libusb-compat]
|
sudo port install libtool automake autoconf pkgconfig libusb [libusb-compat]
|
||||||
or with Homebrew:
|
or with Homebrew:
|
||||||
brew install libtool automake libusb [libusb-compat]
|
brew install libtool automake libusb [libusb-compat]
|
||||||
|
|
||||||
|
|
|
@ -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
|
Cygwin. Alternatively, one can cross-compile it using MinGW on a *nix
|
||||||
host. See README for the generic instructions.
|
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
|
USB adapters
|
||||||
------------
|
------------
|
||||||
|
|
||||||
|
|
11
configure.ac
11
configure.ac
|
@ -19,6 +19,7 @@ AC_PROG_CC
|
||||||
AC_PROG_CC_C99
|
AC_PROG_CC_C99
|
||||||
AM_PROG_CC_C_O
|
AM_PROG_CC_C_O
|
||||||
AC_PROG_RANLIB
|
AC_PROG_RANLIB
|
||||||
|
PKG_PROG_PKG_CONFIG([0.23])
|
||||||
|
|
||||||
dnl disable checks for C++, Fortran and GNU Java Compiler
|
dnl disable checks for C++, Fortran and GNU Java Compiler
|
||||||
m4_defun([_LT_AC_LANG_CXX_CONFIG], [:])
|
m4_defun([_LT_AC_LANG_CXX_CONFIG], [:])
|
||||||
|
@ -1175,10 +1176,10 @@ fi
|
||||||
# check for libusb library if necessary
|
# check for libusb library if necessary
|
||||||
use_libusb1=no
|
use_libusb1=no
|
||||||
if test $need_usb = yes -o $need_usb_ng = yes; then
|
if test $need_usb = yes -o $need_usb_ng = yes; then
|
||||||
AC_CHECK_HEADER([libusb-1.0/libusb.h], [
|
PKG_CHECK_MODULES([LIBUSB1], [libusb-1.0], [
|
||||||
AC_DEFINE([HAVE_LIBUSB1], [1], [Define if you have libusb-1.x])
|
|
||||||
use_libusb1=yes
|
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_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])])
|
[AC_MSG_WARN([libusb-1.x older than 1.0.9 detected, consider updating])])
|
||||||
], [
|
], [
|
||||||
|
@ -1193,9 +1194,7 @@ fi
|
||||||
|
|
||||||
use_libusb0=no
|
use_libusb0=no
|
||||||
if test $need_usb0 = yes; then
|
if test $need_usb0 = yes; then
|
||||||
AC_CHECK_HEADERS([usb.h], [
|
PKG_CHECK_MODULES([LIBUSB0], [libusb], [use_libusb0=yes], [
|
||||||
use_libusb0=yes
|
|
||||||
], [
|
|
||||||
AC_MSG_ERROR([libusb-0.1 is required to build some OpenOCD driver(s)])
|
AC_MSG_ERROR([libusb-0.1 is required to build some OpenOCD driver(s)])
|
||||||
])
|
])
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -75,11 +75,11 @@ endif
|
||||||
|
|
||||||
LIBUSB =
|
LIBUSB =
|
||||||
if USE_LIBUSB1
|
if USE_LIBUSB1
|
||||||
LIBUSB += -lusb-1.0
|
LIBUSB += $(LIBUSB1_LIBS)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if USE_LIBUSB0
|
if USE_LIBUSB0
|
||||||
LIBUSB += -lusb
|
LIBUSB += $(LIBUSB0_LIBS)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
libopenocd_la_LIBADD = \
|
libopenocd_la_LIBADD = \
|
||||||
|
|
|
@ -5,6 +5,8 @@ noinst_LTLIBRARIES = libhelper.la
|
||||||
|
|
||||||
CONFIGFILES = options.c time_support_common.c
|
CONFIGFILES = options.c time_support_common.c
|
||||||
|
|
||||||
|
libhelper_la_CPPFLAGS = $(AM_CPPFLAGS) $(LIBUSB1_CFLAGS)
|
||||||
|
|
||||||
libhelper_la_SOURCES = \
|
libhelper_la_SOURCES = \
|
||||||
binarybuffer.c \
|
binarybuffer.c \
|
||||||
$(CONFIGFILES) \
|
$(CONFIGFILES) \
|
||||||
|
|
|
@ -278,7 +278,7 @@ int win_select(int max_fd, fd_set *rfds, fd_set *wfds, fd_set *efds, struct time
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined HAVE_LIBUSB1 && !defined HAVE_LIBUSB_ERROR_NAME
|
#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
|
/* Verbatim from git://git.libusb.org/libusb.git tag 1.0.9
|
||||||
* The libusb_error enum is compatible down to v0.9.1
|
* The libusb_error enum is compatible down to v0.9.1
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
include $(top_srcdir)/common.mk
|
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
|
noinst_LTLIBRARIES = libocdaice.la
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,8 @@ libocdjtagdrivers_la_LIBADD =
|
||||||
libocdjtagdrivers_la_SOURCES = \
|
libocdjtagdrivers_la_SOURCES = \
|
||||||
$(DRIVERFILES)
|
$(DRIVERFILES)
|
||||||
|
|
||||||
|
libocdjtagdrivers_la_CPPFLAGS = $(AM_CPPFLAGS) $(LIBUSB1_CFLAGS) $(LIBUSB0_CFLAGS)
|
||||||
|
|
||||||
ULINK_FIRMWARE = $(srcdir)/OpenULINK
|
ULINK_FIRMWARE = $(srcdir)/OpenULINK
|
||||||
|
|
||||||
EXTRA_DIST = $(ULINK_FIRMWARE)
|
EXTRA_DIST = $(ULINK_FIRMWARE)
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
#ifndef JTAG_LIBUSB_COMMON_H
|
#ifndef JTAG_LIBUSB_COMMON_H
|
||||||
#define 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 libusb_device
|
||||||
#define jtag_libusb_device_handle libusb_device_handle
|
#define jtag_libusb_device_handle libusb_device_handle
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
|
|
||||||
#include "mpsse.h"
|
#include "mpsse.h"
|
||||||
#include "helper/log.h"
|
#include "helper/log.h"
|
||||||
#include <libusb-1.0/libusb.h>
|
#include <libusb.h>
|
||||||
|
|
||||||
/* Compatibility define for older libusb-1.0 */
|
/* Compatibility define for older libusb-1.0 */
|
||||||
#ifndef LIBUSB_CALL
|
#ifndef LIBUSB_CALL
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
|
|
||||||
#include <target/cortex_m.h>
|
#include <target/cortex_m.h>
|
||||||
|
|
||||||
#include <libusb-1.0/libusb.h>
|
#include <libusb.h>
|
||||||
|
|
||||||
#define ICDI_WRITE_ENDPOINT 0x02
|
#define ICDI_WRITE_ENDPOINT 0x02
|
||||||
#define ICDI_READ_ENDPOINT 0x83
|
#define ICDI_READ_ENDPOINT 0x83
|
||||||
|
|
Loading…
Reference in New Issue