- make
- libtool
+- pkg-config >= 0.23 (or compatible)
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:
./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
---------------------
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]
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
------------
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], [:])
# 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])])
], [
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])
LIBUSB =
if USE_LIBUSB1
-LIBUSB += -lusb-1.0
+LIBUSB += $(LIBUSB1_LIBS)
endif
if USE_LIBUSB0
-LIBUSB += -lusb
+LIBUSB += $(LIBUSB0_LIBS)
endif
libopenocd_la_LIBADD = \
CONFIGFILES = options.c time_support_common.c
+libhelper_la_CPPFLAGS = $(AM_CPPFLAGS) $(LIBUSB1_CFLAGS)
+
libhelper_la_SOURCES = \
binarybuffer.c \
$(CONFIGFILES) \
#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
*/
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
libocdjtagdrivers_la_SOURCES = \
$(DRIVERFILES)
+libocdjtagdrivers_la_CPPFLAGS = $(AM_CPPFLAGS) $(LIBUSB1_CFLAGS) $(LIBUSB0_CFLAGS)
+
ULINK_FIRMWARE = $(srcdir)/OpenULINK
EXTRA_DIST = $(ULINK_FIRMWARE)
#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
#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
#include <target/cortex_m.h>
-#include <libusb-1.0/libusb.h>
+#include <libusb.h>
#define ICDI_WRITE_ENDPOINT 0x02
#define ICDI_READ_ENDPOINT 0x83