From 9b020e36b14c7247d9d4217bdd271a2126ef2aef Mon Sep 17 00:00:00 2001 From: "Nicolas \"Pixel\" Noble" Date: Sat, 22 Jan 2011 06:45:28 +0100 Subject: Hacked that script a lot... --- 0001-Adding-windows-support-for-BusPirate.patch | 254 ++++++++++++++++++ gcc.patch | 12 + summon-arm-toolchain | 334 ++++++++++++------------ 3 files changed, 426 insertions(+), 174 deletions(-) create mode 100644 0001-Adding-windows-support-for-BusPirate.patch create mode 100644 gcc.patch 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 +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 + #include + ++#ifdef WIN32 ++#include ++#else + #include + #include + #include ++#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 , released as public domain. # Modified by Piotr Esden-Tempski , 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 -- cgit v1.2.3