+Many Linux distributions provide these packages through their automated
+installation and update mechanisms; however, some Linux versions include
+older versions of libftdi. In particular, using Ubuntu 8.04 has been
+problematic, but newer versions of Ubuntu do not have this problem.
+
+Compiling OpenOCD
+-----------------
+
+To build OpenOCD (on both Linux and Cygwin), use the following sequence
+of commands:
+
+ ./configure [with some options listed in the next section]
+ make
+ make install
+
+The 'configure' step generates the Makefiles required to build OpenOCD,
+usually with one or more options provided to it. The first 'make' step
+will build OpenOCD and place the final executable in ./src/. The
+final (optional) step, ``make install'', places all of the files in the
+required location.
+
+Cross-Compiling Options
+-----------------------
+
+To cross-compile, you must specify both --build and --host options to
+the 'configure' script. For example, you can configure OpenOCD to
+cross-compile on a x86 Linux host to run on Windows (MinGW32), you could
+use the following configuration options:
+
+ ./configure --build=i686-pc-linux-gnu --host=i586-mingw32msvc ...
+
+Likewise, the following options allow OpenOCD to be cross-compiled for
+an ARM target on the same x86 host:
+
+ ./configure --build=i686-pc-linux-gnu --host=arm-elf ...
+
+Both must be specified to work around bugs in autoconf.
+
+Scripts for producing ARM cross-compilers can be found on the web with a
+little searching. A script to produce an x86 Linux-hosted MinGW32
+cross-compiler can be downloaded from the following URL:
+
+ http://www.mingw.org/wiki/LinuxCrossMinGW
+
+Configuration Options
+---------------------
+
+The configure script takes numerous options, specifying which JTAG
+interfaces should be included (among other things). The following list
+of options was extracted from the output of './configure --help'. Other
+options may be available there:
+
+ --enable-maintainer-mode enable make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer
+ NOTE: This option is *required* for SVN builds!
+ It should *not* be used to build a release.
+
+ --enable-dummy Enable building the dummy JTAG port driver
+
+ --enable-ft2232_libftdi Enable building support for FT2232 based devices
+ using the libftdi driver, opensource alternate of
+ FTD2XX
+ --enable-ft2232_ftd2xx Enable building support for FT2232 based devices
+ using the FTD2XX driver from ftdichip.com
+ --enable-ftd2xx-highspeed
+ Enable building support for FT2232H and
+ FT4232H-based devices (requires >=libftd2xx-0.4.16)
+
+ --enable-gw16012 Enable building support for the Gateworks GW16012
+ JTAG Programmer
+
+ --enable-parport Enable building the pc parallel port driver
+ --disable-parport-ppdev Disable use of ppdev (/dev/parportN) for parport
+ (for x86 only)
+ --enable-parport-giveio Enable use of giveio for parport (for CygWin only)
+
+ --enable-presto_libftdi Enable building support for ASIX Presto Programmer
+ using the libftdi driver
+ --enable-presto_ftd2xx Enable building support for ASIX Presto Programmer
+ using the FTD2XX driver
+
+ --enable-amtjtagaccel Enable building the Amontec JTAG-Accelerator driver
+ --enable-arm-jtag-ew Enable building support for the Olimex ARM-JTAG-EW
+ Programmer
+ --enable-jlink Enable building support for the Segger J-Link JTAG
+ Programmer
+ --enable-rlink Enable building support for the Raisonance RLink
+ JTAG Programmer
+ --enable-usbprog Enable building support for the usbprog JTAG
+ Programmer
+ --enable-vsllink Enable building support for the Versaloon-Link JTAG
+ Programmer
+
+ --enable-oocd_trace Enable building support for the OpenOCD+trace ETM
+ capture device
+
+ --enable-ep93xx Enable building support for EP93xx based SBCs
+ --enable-at91rm9200 Enable building support for AT91RM9200 based SBCs
+
+ --enable-ecosboard Enable building support for eCos based JTAG debugger
+ --enable-zy1000 Enable ZY1000 interface
+
+ --enable-minidriver-dummy
+ Enable the dummy minidriver.
+
+ --enable-ioutil Enable ioutil functions - useful for standalone
+ OpenOCD implementations
+ --enable-httpd Enable builtin httpd server - useful for standalone
+ OpenOCD implementations
+
+Miscellaneous Configure Options
+-------------------------------
+
+The following additional options may also be useful:
+
+ --disable-assert turn off assertions
+
+ --enable-verbose Enable verbose JTAG I/O messages (for debugging).
+ --enable-verbose-jtag-io
+ Enable verbose JTAG I/O messages (for debugging).
+ --enable-verbose-usb-io Enable verbose USB I/O messages (for debugging)
+ --enable-verbose-usb-comms
+ Enable verbose USB communication messages (for
+ debugging)
+ --enable-malloc-logging Include free space in logging messages (requires
+ malloc.h).
+
+ --disable-gccwarnings Disable extra gcc warnings during build.
+ --disable-wextra Disable extra compiler warnings
+ --disable-werror Do not treat warnings as errors
+
+ --disable-option-checking
+ Ignore unrecognized --enable and --with options.
+ --disable-dependency-tracking speeds up one-time build
+ --enable-shared[=PKGS] build shared libraries [default=no]
+ --enable-static[=PKGS] build static libraries [default=yes]
+
+Parallel Port Dongles
+---------------------
+
+If you want to access the parallel port using the PPDEV interface you
+have to specify both --enable-parport AND --enable-parport-ppdev, since the
+the later option is an option to the parport driver (see
+http://forum.sparkfun.com/viewtopic.php?t=3795 for more info).
+
+The same is true for the --enable-parport-giveio option, you
+have to use both the --enable-parport AND the --enable-parport-giveio
+option if you want to use giveio instead of ioperm parallel port access
+method.
+
+FT2232C Based USB Dongles
+-------------------------
+
+There are 2 methods of using the FTD2232, either (1) using the
+FTDICHIP.COM closed source driver, or (2) the open (and free) driver
+libftdi.
+
+Using LIBFTDI
+-------------
+
+For both Linux and Windows, both libusb and libftdi must be built and
+installed. To use the newer FT2232H chips, supporting RTCK and USB high
+speed (480 Mbps), you need libftdi version 0.16 or newer. Many Linux
+distributions provide suitable packages for these libraries.
+
+For Windows, libftdi is supported with versions 0.14 and later.
+
+With these prerequisites met, configure the libftdi solution like this:
+
+ ./configure --prefix=/path/for/your/install --enable-ft2232_libftdi
+
+Then type ``make'', and perhaps ``make install''.
+
+Using FTDI's FTD2XX
+-------------------
+
+Some claim the (closed) FTDICHIP.COM solution is faster, which
+is the motivation for supporting it even though its licensing restricts
+it to non-redistributable OpenOCD binaries, and it is not available for
+all operating systems used with OpenOCD. You may, however, build such
+copies for personal use.
+
+The FTDICHIP drivers come as either a (win32) ZIP file, or a (Linux)
+TAR.GZ file. You must unpack them ``some where'' convient. As of this
+writing FTDICHIP does not supply means to install these files "in an
+appropriate place."
+
+If your distribution does not package these, there are several
+'./configure' options to solve this problem:
+
+ --with-ftd2xx-win32-zipdir
+ Where (CYGWIN/MINGW) the zip file from ftdichip.com
+ was unpacked <default=search>
+ --with-ftd2xx-linux-tardir
+ Where (Linux/Unix) the tar file from ftdichip.com
+ was unpacked <default=search>
+ --with-ftd2xx-lib Use static or shared ftd2xx libs on default static
+
+If you are using the FTDICHIP.COM driver, download and unpack the
+Windows or Linux FTD2xx drivers from the following location:
+
+ http://www.ftdichip.com/Drivers/D2XX.htm
+
+Remember, this library is binary-only, while OpenOCD is licenced
+according to GNU GPLv2 without any exceptions. That means that
+_distributing_ copies of OpenOCD built with the FTDI code would violate
+the OpenOCD licensing terms.
+
+
+Cygwin/Win32 Notes
+******************
+
+The Cygwin/Win32 ZIP file contains a directory named ftd2xx.win32.
+Assuming that you have extracted this archive in the same directory as
+the OpenOCD package, you could configure with options like the following:
+
+ ./configure \
+ --enable-ft2232_ftd2xx \
+ --with-ftd2xx-win32-zipdir=../ftd2xx.win32 \
+ ... other options ...
+
+Linux Notes
+***********
+
+The Linux tar.gz archive contains a directory named libftd2xx0.4.16
+(or similar). Assuming that you have extracted this archive in the same
+directory as the OpenOCD package, you could configure with options like
+the following:
+
+ ./configure \
+ --enable-ft2232_ftd2xx \
+ --with-ft2xx-linux-tardir=../libftd2xx0.4.16 \
+ ... other options ...
+
+=================================
+Obtaining OpenOCD From Subversion
+---------------------------------
+
+You can download the current SVN version with an SVN client of your
+choice from the following repositories:
+
+ svn://svn.berlios.de/openocd/trunk
+or
+ http://svn.berlios.de/svnroot/repos/openocd/trunk
+
+Using the SVN command line client, you can use the following command to
+fetch the latest version (make sure there is no (non-svn) directory
+called "openocd" in the current directory):
+
+ svn checkout svn://svn.berlios.de/openocd/trunk openocd
+
+If you prefer GIT based tools, the git-svn package works too:
+
+ git svn clone -s svn://svn.berlios.de/openocd
+
+Tips For Building From The Subversion Repository
+************************************************
+
+Building OpenOCD from a repository requires a recent version of the GNU
+autotools (autoconf >= 2.59 and automake >= 1.9). For building on
+Windows, you have to use Cygwin. Make sure that your PATH
+environment variable contains no other locations with Unix utils (like
+UnxUtils) - these can't handle the Cygwin paths, resulting in obscure
+dependency errors. This was an observation gathered from the logs of
+one user; please correct us if this is wrong.
+
+1) Run './bootstrap' to create the 'configure' script and prepare
+ the build process for your host system.
+
+2) Run './configure --enable-maintainer-mode' with other options.
+
+The following URL is a good reference if you want to build OpenOCD
+under cygwin.
+http://forum.sparkfun.com/viewtopic.php?t=11221
+
+Alternatively you can build the Windows binary under Linux using
+MinGW cross compiler. The following documents some tips of
+using this cross build option.
+
+a) libusb-win32
+You can choose to use the libusb-win32 binary distribution from
+its Sourceforge page. As of this writing, the latest version
+is 0.1.12.2. This is the recommend version to use since it fixed
+an issue with USB composite device and this is important for FTDI
+based JTAG debuggers.
+http://sourceforge.net/projects/libusb-win32/
+
+You need to download the libusb-win32-device-bin-0.1.12.2.tar.gz
+package. Please extract this file into a temp directory.
+
+Copy the file libusb-win32-device-bin-0.1.12.2\include\usb.h
+to your MinGW include directory.
+
+Copy the library libusb-win32-device-bin-0.1.12.2\lib\gcc\libusb.a
+to your MinGW library directory.
+
+Take note that different Linux distros often have different
+MinGW installation directory. Some of them also put the
+library and include into a seperate sys-root directory.
+
+If there is a new svn version of libusb-win32, you can build it
+as well.
+
+This is the instrunction from the libusb-win32 Makefile.
+# If you're cross-compiling and your mingw32 tools are called
+# i586-mingw32msvc-gcc and so on, then you can compile libusb-win32
+# by running
+# make host_prefix=i586-mingw32msvc all
+
+b) libftdi
+libftdi source codes can be download from the following website.
+http://www.intra2net.com/en/developer/libftdi/download.php
+
+It does not provide Windows binary. You can build it from the
+source tarball or the git tree.
+
+If you are using the git tree, the following is the instruction
+from README.mingw. You need to have cmake installed.
+- Edit Toolchain-mingw32.cmake to point to the correct MinGW
+installation.
+- Create a build directory like "mkdir build-win32", e.g in ../libftdi/
+- cd in that directory and run
+ "cmake -DCMAKE_TOOLCHAIN_FILE=../Toolchain-mingw32.cmake .."
+- Copy src/ftdi.h to your MinGW include directory.
+- Copy build-win32/src/*.a to your MinGW lib directory.
+
+c) OpenOCD
+Now you can build OpenOCD under Linux using MinGW.
+You need to use --host=your_mingW_prefix in the configure option.
+
+Example for libftdi (in one line, tested under Ubuntu 9.04):
+./configure --host=i586-mingw32msvc --enable-maintainer-mode
+--disable-shared --enable-ft2232_libftdi
+
+Example for ftd2xx (in one line, tested under Ubuntu 9.04)
+./configure --host=i586-mingw32msvc --enable-maintainer-mode
+--disable-shared --enable-ft2232_ftd2xx
+--with-ftd2xx-win32-zipdir=/home/mcuee/Desktop/build/openocd/libftd2xx-win32