summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--0001-Adding-windows-support-for-BusPirate.patch254
-rw-r--r--gcc.patch12
-rwxr-xr-xsummon-arm-toolchain334
3 files changed, 426 insertions, 174 deletions
diff --git a/0001-Adding-windows-support-for-BusPirate.patch b/0001-Adding-windows-support-for-BusPirate.patch
new file mode 100644
index 0000000..a46bb5f
--- /dev/null
+++ b/0001-Adding-windows-support-for-BusPirate.patch
@@ -0,0 +1,254 @@
+From d8db6d57f7c946759478eae88aae554fee4c366e Mon Sep 17 00:00:00 2001
+From: Nicolas "Pixel" Noble <pixel@nobis-crew.org>
+Date: Sat, 22 Jan 2011 03:52:48 +0100
+Subject: [PATCH] Adding windows support for BusPirate.
+
+---
+ src/jtag/drivers/buspirate.c | 135 ++++++++++++++++++++++++++++++++++-------
+ 1 files changed, 112 insertions(+), 23 deletions(-)
+
+diff --git a/src/jtag/drivers/buspirate.c b/src/jtag/drivers/buspirate.c
+index 13819ba..d22f0d1 100644
+--- a/src/jtag/drivers/buspirate.c
++++ b/src/jtag/drivers/buspirate.c
+@@ -25,9 +25,13 @@
+ #include <jtag/interface.h>
+ #include <jtag/commands.h>
+
++#ifdef WIN32
++#include <windows.h>
++#else
+ #include <termios.h>
+ #include <fcntl.h>
+ #include <sys/ioctl.h>
++#endif
+
+ #undef DEBUG_SERIAL
+ /*#define DEBUG_SERIAL */
+@@ -80,7 +84,14 @@ enum {
+ };
+
+
+-static int buspirate_fd = -1;
++#ifdef WIN32
++typedef HANDLE fdt;
++#define fdtinvalid INVALID_HANDLE_VALUE
++#else
++typedef int fdt;
++#define fdtinvalid -1
++#endif
++static fdt buspirate_fd = fdtinvalid;
+ static int buspirate_pinmode = MODE_JTAG_OD;
+ static int buspirate_baudrate = SERIAL_NORMAL;
+ static int buspirate_vreg;
+@@ -99,20 +110,20 @@ static void buspirate_tap_make_space(int scan, int bits);
+ static void buspirate_reset(int trst, int srst);
+
+ /* low level interface */
+-static void buspirate_jtag_reset(int);
+-static void buspirate_jtag_enable(int);
+-static unsigned char buspirate_jtag_command(int, char *, int);
+-static void buspirate_jtag_set_speed(int, char);
+-static void buspirate_jtag_set_mode(int, char);
+-static void buspirate_jtag_set_feature(int, char, char);
+-static void buspirate_jtag_get_adcs(int);
++static void buspirate_jtag_reset(fdt fd);
++static void buspirate_jtag_enable(fdt fd);
++static unsigned char buspirate_jtag_command(fdt fd, char *, int);
++static void buspirate_jtag_set_speed(fdt fd, char);
++static void buspirate_jtag_set_mode(fdt fd, char);
++static void buspirate_jtag_set_feature(fdt fd, char, char);
++static void buspirate_jtag_get_adcs(fdt fd);
+
+ /* low level HW communication interface */
+-static int buspirate_serial_open(char *port);
+-static int buspirate_serial_setspeed(int fd, char speed);
+-static int buspirate_serial_write(int fd, char *buf, int size);
+-static int buspirate_serial_read(int fd, char *buf, int size);
+-static void buspirate_serial_close(int fd);
++static fdt buspirate_serial_open(char *port);
++static int buspirate_serial_setspeed(fdt fd, char speed);
++static int buspirate_serial_write(fdt fd, char *buf, int size);
++static int buspirate_serial_read(fdt fd, char *buf, int size);
++static void buspirate_serial_close(fdt fd);
+ static void buspirate_print_buffer(char *buf, int size);
+
+ static int buspirate_speed(int speed)
+@@ -217,7 +228,7 @@ static int buspirate_init(void)
+ }
+
+ buspirate_fd = buspirate_serial_open(buspirate_port);
+- if (buspirate_fd == -1) {
++ if (buspirate_fd == fdtinvalid) {
+ LOG_ERROR("Could not open serial port.");
+ return ERROR_JTAG_INIT_FAILED;
+ }
+@@ -267,7 +278,7 @@ COMMAND_HANDLER(buspirate_handle_adc_command)
+ return ERROR_OK;
+ }
+
+- if (buspirate_fd == -1)
++ if (buspirate_fd == fdtinvalid)
+ return ERROR_OK;
+
+ /* send the command */
+@@ -703,7 +714,7 @@ static void buspirate_reset(int trst, int srst)
+ }
+
+ /*************** jtag lowlevel functions ********************/
+-static void buspirate_jtag_enable(int fd)
++static void buspirate_jtag_enable(fdt fd)
+ {
+ int ret;
+ char tmp[21] = { [0 ... 20] = 0x00 };
+@@ -750,7 +761,7 @@ static void buspirate_jtag_enable(int fd)
+
+ }
+
+-static void buspirate_jtag_reset(int fd)
++static void buspirate_jtag_reset(fdt fd)
+ {
+ int ret;
+ char tmp[5];
+@@ -766,7 +777,7 @@ static void buspirate_jtag_reset(int fd)
+ LOG_ERROR("Bad reply :( Please restart manually");
+ }
+
+-static void buspirate_jtag_set_speed(int fd, char speed)
++static void buspirate_jtag_set_speed(fdt fd, char speed)
+ {
+ int ret;
+ char tmp[2];
+@@ -799,7 +810,7 @@ static void buspirate_jtag_set_speed(int fd, char speed)
+ }
+
+
+-static void buspirate_jtag_set_mode(int fd, char mode)
++static void buspirate_jtag_set_mode(fdt fd, char mode)
+ {
+ char tmp[2];
+ tmp[0] = CMD_PORT_MODE;
+@@ -807,7 +818,7 @@ static void buspirate_jtag_set_mode(int fd, char mode)
+ buspirate_jtag_command(fd, tmp, 2);
+ }
+
+-static void buspirate_jtag_set_feature(int fd, char feat, char action)
++static void buspirate_jtag_set_feature(fdt fd, char feat, char action)
+ {
+ char tmp[3];
+ tmp[0] = CMD_FEATURE;
+@@ -816,7 +827,7 @@ static void buspirate_jtag_set_feature(int fd, char feat, char action)
+ buspirate_jtag_command(fd, tmp, 3);
+ }
+
+-static void buspirate_jtag_get_adcs(int fd)
++static void buspirate_jtag_get_adcs(fdt fd)
+ {
+ uint8_t tmp[10];
+ uint16_t a, b, c, d;
+@@ -833,7 +844,7 @@ static void buspirate_jtag_get_adcs(int fd)
+ ((float)c)/155.1515, ((float)d)/155.1515);
+ }
+
+-static unsigned char buspirate_jtag_command(int fd,
++static unsigned char buspirate_jtag_command(fdt fd,
+ char *cmd, int cmdlen)
+ {
+ int res;
+@@ -869,7 +880,84 @@ static unsigned char buspirate_jtag_command(int fd,
+ }
+
+ /* low level serial port */
+-/* TODO add support for WIN32 and others ! */
++#ifdef WIN32
++static HANDLE buspirate_serial_open(char *port)
++{
++ return CreateFile(port, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
++}
++
++static int buspirate_serial_setspeed(HANDLE fd, char speed)
++{
++ DCB dcbSerialParams;
++ dcbSerialParams.DCBlength = sizeof(dcbSerialParams);
++ if (!GetCommState(fd, &dcbSerialParams))
++ return -1;
++
++ dcbSerialParams.BaudRate = (speed == SERIAL_FAST) ? CBR_256000 : CBR_115200;
++ dcbSerialParams.ByteSize = 8;
++ dcbSerialParams.StopBits = ONESTOPBIT;
++ dcbSerialParams.Parity = NOPARITY;
++
++ if (!SetCommState(fd, &dcbSerialParams))
++ return -1;
++
++ return 0;
++}
++
++static int buspirate_serial_write(HANDLE fd, char *buf, int size)
++{
++ DWORD in = size, ret = 0;
++
++ if (!WriteFile(fd, buf, in, &ret, NULL)) {
++ LOG_ERROR("Error sending data");
++ ret = 0;
++ }
++
++ LOG_DEBUG("size = %d ret = %u", size, (unsigned int) ret);
++ buspirate_print_buffer(buf, size);
++
++ if (ret != (unsigned int) size)
++ LOG_ERROR("Error sending data");
++
++ return ret;
++}
++
++static int buspirate_serial_read(HANDLE fd, char *buf, int size)
++{
++ DWORD len = 0;
++ DWORD ret = 0;
++ int timeout = 0;
++
++ while (len < (unsigned int) size) {
++ if (!ReadFile(fd, buf + len, size - len, &ret, NULL))
++ return -1;
++
++ if (ret == 0) {
++ timeout++;
++
++ if (timeout >= 10)
++ break;
++
++ continue;
++ }
++
++ len += ret;
++ }
++
++ LOG_DEBUG("should have read = %d actual size = %u", size, (unsigned int) len);
++ buspirate_print_buffer(buf, len);
++
++ if (len != (unsigned int) size)
++ LOG_ERROR("Error receiving data");
++
++ return len;
++}
++
++static void buspirate_serial_close(HANDLE fd)
++{
++ CloseHandle(fd);
++}
++#else
+ static int buspirate_serial_open(char *port)
+ {
+ int fd;
+@@ -954,6 +1042,7 @@ static void buspirate_serial_close(int fd)
+ {
+ close(fd);
+ }
++#endif
+
+ #define LINE_SIZE 81
+ #define BYTES_PER_LINE 16
+--
+1.7.2.3
+
diff --git a/gcc.patch b/gcc.patch
new file mode 100644
index 0000000..312def9
--- /dev/null
+++ b/gcc.patch
@@ -0,0 +1,12 @@
+diff -ur gcc-linaro-4.5-2010.11-1/gcc/config/arm/lib1funcs.asm gcc-linaro-4.5-2010.11-1-patched/gcc/config/arm/lib1funcs.asm
+--- gcc-linaro-4.5-2010.11-1/gcc/config/arm/lib1funcs.asm 2010-11-08 23:11:38.000000000 +0100
++++ gcc-linaro-4.5-2010.11-1-patched/gcc/config/arm/lib1funcs.asm 2011-01-19 23:20:14.000000000 +0100
+@@ -113,6 +113,8 @@
+ #error Unable to determine architecture.
+ #endif
+
++#undef __OPTIMIZE_SIZE__
++
+ /* There are times when we might prefer Thumb1 code even if ARM code is
+ permitted, for example, the code might be smaller, or there might be
+ interworking problems with switching to ARM state if interworking is
diff --git a/summon-arm-toolchain b/summon-arm-toolchain
index d77d3a5..fa086ff 100755
--- a/summon-arm-toolchain
+++ b/summon-arm-toolchain
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/bash -x
# Written by Uwe Hermann <uwe@hermann-uwe.de>, released as public domain.
# Modified by Piotr Esden-Tempski <piotr@esden.net>, released as public domain.
@@ -18,23 +18,21 @@ set -e
# Settings section
# You probably want to customize those
##############################################################################
-TARGET=arm-none-eabi # Or: TARGET=arm-elf
-PREFIX=${HOME}/sat # Install location of your final toolchain
-DARWIN_OPT_PATH=/opt/local # Path in which MacPorts or Fink is installed
+TARGET=arm-none-eabi # Or: TARGET=arm-elf
+PREFIX=/usr/local # Install location of your final toolchain
+DARWIN_OPT_PATH=/sw # Path in which MacPorts or Fink is installed
# Set to 'sudo' if you need superuser privileges while installing
-SUDO=
+SUDO=sudo
# Set to 1 to be quieter while running
QUIET=0
# Set to 1 to use linaro gcc instead of the FSF gcc
USE_LINARO=1
# Set to 1 to enable building of OpenOCD
OOCD_EN=1
-# Set to 1 to build libstm32 provided by ST
-LIBSTM32_EN=0
-# Set to 1 to build libopenstm32 an open source library for stm32
-LIBOPENSTM32_EN=1
# Make the gcc default to Cortex-M3
-DEFAULT_TO_CORTEX_M3=0
+DEFAULT_TO_CORTEX_M3=1
+# Build for a second host - mingw32
+#SECOND_HOST=i586-mingw32msvc
##############################################################################
# Version and download url settings section
@@ -53,13 +51,8 @@ else
fi
BINUTILS=binutils-2.20
-NEWLIB=newlib-1.18.0
GDB=gdb-7.2
OOCD=master
-LIBCMSIS=v1.10-2
-LIBSTM32=v3.0.0-1
-LIBSTM32USB=v3.0.1-1
-LIBOPENSTM32=master
##############################################################################
# Flags section
@@ -83,6 +76,8 @@ else
GCCFLAGS="--with-arch=armv7-m --with-mode=thumb --with-float=soft"
fi
+GCCFLAGS_FOR_TARGET="-ffunction-sections -fdata-sections -fomit-frame-pointer -DPREFER_SIZE_OVER_SPEED -D__OPTIMIZE_SIZE__ -g -Os -fshort-wchar -fno-unroll-loops -mabi=aapcs"
+
# Pull in the local configuration, if any
if [ -f local.sh ]; then
. ./local.sh
@@ -124,8 +119,10 @@ case "$(uname)" in
--with-mpfr=${DARWIN_OPT_PATH} \
--with-mpc=${DARWIN_OPT_PATH} \
--with-libiconv-prefix=${DARWIN_OPT_PATH}"
- OOCD_CFLAGS="-m32 -I/opt/mine/include -I/opt/local/include"
- OOCD_LDFLAGS="-L/opt/mine/lib -L/opt/local/lib"
+ GCC_CPPFLAGS="-m32"
+ GCC_LDFLAGS="-m32"
+ OOCD_CFLAGS="-m32 -I${DARWIN_OPT_PATH}/include"
+ OOCD_LDFLAGS="-L${DARWIN_OPT_PATH}/lib"
;;
CYGWIN*)
echo "Found CygWin that means Windows most likely."
@@ -193,7 +190,6 @@ cd ${SOURCES}
fetch ${BINUTILS} http://ftp.gnu.org/gnu/binutils/${BINUTILS}.tar.bz2
fetch ${GCC} ${GCCURL}
-fetch ${NEWLIB} ftp://sources.redhat.com/pub/newlib/${NEWLIB}.tar.gz
fetch ${GDB} http://ftp.gnu.org/gnu/gdb/${GDB}.tar.bz2
if [ ${OOCD_EN} != 0 ]; then
@@ -201,68 +197,21 @@ if [ ! -e openocd-${OOCD}.tar.bz2 ]; then
log "Cloning OpenOCD sources..."
git clone git://openocd.git.sourceforge.net/gitroot/openocd/openocd openocd-${OOCD}
cd openocd-${OOCD}
+ git am ../../0001-Adding-windows-support-for-BusPirate.patch
./bootstrap
+ rm -rf .git
cd ..
tar cfvj openocd-${OOCD}.tar.bz2 openocd-${OOCD}
- #git archive --format=tar --prefix=openocd-${OOCD}/ ${OOCD} | \
- # bzip2 --stdout > ../openocd-${OOCD}.tar.bz2
rm -rf openocd-${OOCD}
fi
fi
-if [ ${LIBSTM32_EN} != 0 ]; then
-if [ ! -e libcmsis-${LIBCMSIS}.tar.bz2 ]; then
- log "Cloning libcmsis sources..."
- git clone git://git.open-bldc.org/libcmsis.git
- cd libcmsis
- git archive --format=tar --prefix=libcmsis-${LIBCMSIS}/ ${LIBCMSIS} | \
- bzip2 --stdout > ../libcmsis-${LIBCMSIS}.tar.bz2
- cd ..
- rm -rf libcmsis
-fi
-
-if [ ! -e libstm32-${LIBSTM32}.tar.bz2 ]; then
- log "Cloning libstm32 sources..."
- git clone git://git.open-bldc.org/libstm32.git
- cd libstm32
- git archive --format=tar --prefix=libstm32-${LIBSTM32}/ ${LIBSTM32} | \
- bzip2 --stdout > ../libstm32-${LIBSTM32}.tar.bz2
- cd ..
- rm -rf libstm32
-fi
-
-if [ ! -e libstm32usb-${LIBSTM32USB}.tar.bz2 ]; then
- log "Cloning libstm32usb sources..."
- git clone git://git.open-bldc.org/libstm32usb.git
- cd libstm32usb
- git archive --format=tar --prefix=libstm32usb-${LIBSTM32USB}/ ${LIBSTM32USB} | \
- bzip2 --stdout > ../libstm32usb-${LIBSTM32USB}.tar.bz2
- cd ..
- rm -rf libstm32usb
-fi
-fi
-
-if [ ${LIBOPENSTM32_EN} != 0 ]; then
-if [ ! -e libopenstm32-${LIBOPENSTM32}.tar.bz2 ]; then
- log "Cloning libopenstm32 sources..."
- git clone git://libopenstm32.git.sourceforge.net/gitroot/libopenstm32/libopenstm32
- cd libopenstm32
- git archive --format=tar --prefix=libopenstm32-${LIBOPENSTM32}/ ${LIBOPENSTM32} | \
- bzip2 --stdout > ../libopenstm32-${LIBOPENSTM32}.tar.bz2
- cd ..
- rm -rf libopenstm32
-fi
-fi
-
cd ${SUMMON_DIR}
-
-if [ ! -e build ]; then
- mkdir build
-fi
-
if [ ! -e ${STAMPS}/${BINUTILS}.build ]; then
unpack ${BINUTILS}
- cd build
+ rm -rf build-${BINUTILS}
+ mkdir -p build-${BINUTILS}
+ cd build-${BINUTILS}
log "Configuring ${BINUTILS}"
../${BINUTILS}/configure --target=${TARGET} \
--prefix=${PREFIX} \
@@ -272,25 +221,55 @@ if [ ! -e ${STAMPS}/${BINUTILS}.build ]; then
--with-gnu-ld \
--disable-nls \
--disable-werror \
- ${BINUTILFLAGS}
+ ${BINUTILFLAGS}
log "Building ${BINUTILS}"
make ${MAKEFLAGS}
install ${BINUTILS} install
cd ..
- log "Cleaning up ${BINUTILS}"
touch ${STAMPS}/${BINUTILS}.build
- rm -rf build/* ${BINUTILS}
fi
-if [ ! -e ${STAMPS}/${GCC}-boot.build ]; then
- unpack ${GCC} boot
- cd build
- log "Configuring ${GCC}-boot"
- ../${GCC}/configure --target=${TARGET} \
+cd ${SUMMON_DIR}
+if [ ${SECOND_HOST} != "" ]; then
+if [ ! -e ${STAMPS}/${BINUTILS}.build.${SECOND_HOST} ]; then
+ unpack ${BINUTILS}
+ rm -rf build-${BINUTILS}.${SECOND_HOST}
+ mkdir -p build-${BINUTILS}.${SECOND_HOST}
+ cd build-${BINUTILS}.${SECOND_HOST}
+ log "Configuring ${BINUTILS}"
+ ../${BINUTILS}/configure --target=${TARGET} \
+ --host=${SECOND_HOST} \
+ --prefix=${PREFIX} \
+ --enable-interwork \
+ --enable-multilib \
+ --with-gnu-as \
+ --with-gnu-ld \
+ --disable-nls \
+ --disable-werror \
+ ${BINUTILFLAGS}
+ log "Building ${BINUTILS}"
+ make ${MAKEFLAGS}
+ make install prefix=${SUMMON_DIR}/${SECOND_HOST}
+ cd ..
+ touch ${STAMPS}/${BINUTILS}.build.${SECOND_HOST}
+fi
+fi
+
+cd ${SUMMON_DIR}
+if [ ! -e ${STAMPS}/${GCC}.build ]; then
+ unpack ${GCC} gcc
+ cd ${GCC}
+ patch -p 1 < ../gcc.patch
+ rm -rf libstdc++-v3
+ cd ..
+ mkdir -p build-${GCC}
+ cd build-${GCC}
+ log "Configuring ${GCC}"
+ LDFLAGS="${GCC_LDFLAGS}" CPPFLAGS="${GCC_CPPFLAGS}" ../${GCC}/configure --target=${TARGET} \
--prefix=${PREFIX} \
--enable-interwork \
--enable-multilib \
- --enable-languages="c" \
+ --enable-languages="c,c++" \
--with-newlib \
--without-headers \
--disable-shared \
@@ -298,70 +277,74 @@ if [ ! -e ${STAMPS}/${GCC}-boot.build ]; then
--with-gnu-ld \
--disable-nls \
--disable-werror \
- --with-system-zlib \
- ${GCCFLAGS}
- log "Building ${GCC}-boot"
- make ${MAKEFLAGS} all-gcc
- install ${GCC}-boot install-gcc
+ --with-system-zlib \
+ --disable-libssp \
+ --enable-target-optspace \
+ --disable-threads \
+ --disable-libmudflap \
+ --disable-libgomp \
+ --disable-libstdcxx-pch \
+ --disable-libunwind-exceptions \
+ --disable-libffi \
+ --enable-extra-sgxxlite-multilibs \
+ --enable-libstdcxx-allocator=malloc \
+ --disable-lto \
+ --enable-cxx-flags="${GCCFLAGS_FOR_TARGET}" \
+ ${GCCFLAGS}
+ log "Building ${GCC}"
+ LDFLAGS="${GCC_LDFLAGS}" CPPFLAGS="${GCC_CPPFLAGS}" make ${MAKEFLAGS} CFLAGS_FOR_TARGET="${GCCFLAGS_FOR_TARGET}"
+ install ${GCC} install
cd ..
log "Cleaning up ${GCC}-boot"
- touch ${STAMPS}/${GCC}-boot.build
- rm -rf build/* ${GCC}
-fi
-
-if [ ! -e ${STAMPS}/${NEWLIB}.build ]; then
- unpack ${NEWLIB}
- cd build
- log "Configuring ${NEWLIB}"
- ../${NEWLIB}/configure --target=${TARGET} \
- --prefix=${PREFIX} \
- --enable-interwork \
- --enable-multilib \
- --with-gnu-as \
- --with-gnu-ld \
- --disable-nls \
- --disable-werror \
- --disable-newlib-supplied-syscalls \
- --with-float=soft
- log "Building ${NEWLIB}"
- make ${MAKEFLAGS} CFLAGS_FOR_TARGET="-msoft-float" CCASFLAGS="-msoft-float"
- install ${NEWLIB} install
- cd ..
- log "Cleaning up ${NEWLIB}"
- touch ${STAMPS}/${NEWLIB}.build
- rm -rf build/* ${NEWLIB}
+ touch ${STAMPS}/${GCC}.build
fi
-# Yes, you need to build gcc again!
-if [ ! -e ${STAMPS}/${GCC}.build ]; then
- unpack ${GCC}
- cd build
+cd ${SUMMON_DIR}
+if [ ${SECOND_HOST} != "" ]; then
+if [ ! -e ${STAMPS}/${GCC}.build.${SECOND_HOST} ]; then
+ mkdir -p build-${GCC}.${SECOND_HOST}
+ cd build-${GCC}.${SECOND_HOST}
log "Configuring ${GCC}"
../${GCC}/configure --target=${TARGET} \
+ --host=${SECOND_HOST} \
--prefix=${PREFIX} \
--enable-interwork \
--enable-multilib \
--enable-languages="c,c++" \
--with-newlib \
+ --without-headers \
--disable-shared \
--with-gnu-as \
--with-gnu-ld \
- --disable-nls \
+ --disable-nls \
--disable-werror \
--with-system-zlib \
- ${GCCFLAGS}
+ --disable-libssp \
+ --enable-target-optspace \
+ --disable-threads \
+ --disable-libmudflap \
+ --disable-libgomp \
+ --disable-libstdcxx-pch \
+ --disable-libunwind-exceptions \
+ --disable-libffi \
+ --enable-extra-sgxxlite-multilibs \
+ --enable-libstdcxx-allocator=malloc \
+ --disable-lto \
+ --enable-cxx-flags="${GCCFLAGS_FOR_TARGET}" \
+ ${GCCFLAGS}
log "Building ${GCC}"
- make ${MAKEFLAGS}
- install ${GCC} install
+ make ${MAKEFLAGS} CFLAGS_FOR_TARGET="${GCCFLAGS_FOR_TARGET}"
+ make install prefix=${SUMMON_DIR}/${SECOND_HOST}
cd ..
- log "Cleaning up ${GCC}"
- touch ${STAMPS}/${GCC}.build
- rm -rf build/* ${GCC}
+ touch ${STAMPS}/${GCC}.build.${SECOND_HOST}
+fi
fi
+cd ${SUMMON_DIR}
if [ ! -e ${STAMPS}/${GDB}.build ]; then
unpack ${GDB}
- cd build
+ mkdir -p build-${GDB}
+ cd build-${GDB}
log "Configuring ${GDB}"
../${GDB}/configure --target=${TARGET} \
--prefix=${PREFIX} \
@@ -373,15 +356,37 @@ if [ ! -e ${STAMPS}/${GDB}.build ]; then
make ${MAKEFLAGS}
install ${GDB} install
cd ..
- log "Cleaning up ${GDB}"
touch ${STAMPS}/${GDB}.build
- rm -rf build/* ${GDB}
+fi
+
+cd ${SUMMON_DIR}
+if [ ${SECOND_HOST} != "" ]; then
+if [ ! -e ${STAMPS}/${GDB}.build.${SECOND_HOST} ]; then
+ unpack ${GDB}
+ mkdir -p build-${GDB}.${SECOND_HOST}
+ cd build-${GDB}.${SECOND_HOST}
+ log "Configuring ${GDB}"
+ ../${GDB}/configure --target=${TARGET} \
+ --host=${SECOND_HOST} \
+ --prefix=${PREFIX} \
+ --enable-interwork \
+ --enable-multilib \
+ --disable-werror \
+ ${GDBFLAGS}
+ log "Building ${GDB}"
+ make ${MAKEFLAGS}
+ make install prefix=${SUMMON_DIR}/${SECOND_HOST}
+ cd ..
+ touch ${STAMPS}/${GDB}.build.${SECOND_HOST}
+fi
fi
if [ ${OOCD_EN} != 0 ]; then
+cd ${SUMMON_DIR}
if [ ! -e ${STAMPS}/openocd-${OOCD}.build ]; then
unpack openocd-${OOCD}
- cd build
+ mkdir build-${OOCD}
+ cd build-${OOCD}
log "Configuring openocd-${OOCD}"
CFLAGS="${CFLAGS} ${OOCD_CFLAGS}" \
LDFLAGS="${LDFLAGS} ${OOCD_LDFLAGS}" \
@@ -407,60 +412,41 @@ if [ ! -e ${STAMPS}/openocd-${OOCD}.build ]; then
make ${MAKEFLAGS}
install openocd-${OOCD} install
cd ..
- log "Cleaning up openocd-${OOCD}"
touch ${STAMPS}/openocd-${OOCD}.build
- rm -rf build/* ${OOCD}
-fi
-fi
-
-if [ ${LIBSTM32_EN} != 0 ]; then
-if [ ! -e ${STAMPS}/libcmsis-${LIBCMSIS}.build ]; then
- unpack libcmsis-${LIBCMSIS}
- cd libcmsis-${LIBCMSIS}
- log "Building libcmsis-${LIBCMSIS}"
- make arch_prefix=${TARGET} prefix=${PREFIX}
- install libcmsis-${LIBCMSIS} arch_prefix=${TARGET} prefix=${PREFIX} install
- cd ..
- log "Cleaning up libcmsis-${LIBCMSIS}"
- touch ${STAMPS}/libcmsis-${LIBCMSIS}.build
- rm -rf libcmsis-${LIBCMSIS}
fi
-if [ ! -e ${STAMPS}/libstm32-${LIBSTM32}.build ]; then
- unpack libstm32-${LIBSTM32}
- cd libstm32-${LIBSTM32}
- log "Building libstm32-${LIBSTM32}"
- make arch_prefix=${TARGET} prefix=${PREFIX}
- install libstm32-${LIBSTM32} arch_prefix=${TARGET} prefix=${PREFIX} install
- cd ..
- log "Cleaning up libstm32-${LIBSTM32}"
- touch ${STAMPS}/libstm32-${LIBSTM32}.build
- rm -rf libstm32-${LIBSTM32}
-fi
-
-if [ ! -e ${STAMPS}/libstm32usb-${LIBSTM32USB}.build ]; then
- unpack libstm32usb-${LIBSTM32USB}
- cd libstm32usb-${LIBSTM32USB}
- log "Building libstm32usb-${LIBSTM32USB}"
- make arch_prefix=${TARGET} prefix=${PREFIX}
- install libstm32usb-${LIBSTM32USB} arch_prefix=${TARGET} prefix=${PREFIX} install
+if [ ${SECOND_HOST} != "" ]; then
+cd ${SUMMON_DIR}
+if [ ! -e ${STAMPS}/openocd-${OOCD}.build.${SECOND_HOST} ]; then
+ mkdir build-${OOCD}.${SECOND_HOST}
+ cd build-${OOCD}.${SECOND_HOST}
+ log "Configuring openocd-${OOCD}"
+ CFLAGS="${CFLAGS} ${OOCD_CFLAGS}" \
+ LDFLAGS="${LDFLAGS} ${OOCD_LDFLAGS}" \
+ ../openocd-${OOCD}/configure --enable-maintainer-mode \
+ --host=${SECOND_HOST} \
+ --prefix=${PREFIX} \
+ --enable-dummy \
+ --enable-parport \
+ --disable-ft2232_libftdi \
+ --disable-usb_blaster_libftdi \
+ --enable-amtjtagaccel \
+ --disable-zy1000 \
+ --enable-ep93xx \
+ --enable-at91rm9200 \
+ --enable-gw16012 \
+ --disable-presto_libftdi \
+ --enable-usbprog \
+ --enable-jlink \
+ --enable-vsllink \
+ --enable-rlink \
+ --enable-arm-jtag-ew \
+ --enable-buspirate
+ log "Building openocd-${OOCD}"
+ make ${MAKEFLAGS}
+ make install prefix=${SUMMON_DIR}/${SECOND_HOST}
cd ..
- log "Cleaning up libstm32usb-${LIBSTM32USB}"
- touch ${STAMPS}/libstm32usb-${LIBSTM32USB}.build
- rm -rf libstm32usb-${LIBSTM32USB}
+ touch ${STAMPS}/openocd-${OOCD}.build.${SECOND_HOST}
fi
fi
-
-if [ $LIBOPENSTM32_EN != 0 ]; then
-if [ ! -e ${STAMPS}/libopenstm32-${LIBOPENSTM32}.build ]; then
- unpack libopenstm32-${LIBOPENSTM32}
- cd libopenstm32-${LIBOPENSTM32}
- log "Building libopenstm32-${LIBOPENSTM32}"
- make PREFIX=${TARGET} DESTDIR=${PREFIX}
- install libopenstm32-${LIBOPENSTM32} PREFIX=${TARGET} DESTDIR=${PREFIX} install
- cd ..
- log "Cleaning up libopenstm32-${LIBOPENSTM32}"
- touch ${STAMPS}/libopenstm32-${LIBOPENSTM32}.build
- rm -rf libopenstm32-${LIBOPENSTM32}
-fi
fi