Pass --disable-werror to openocd.
[fw/cortex-toolchain] / summon-arm-toolchain
index d0050ef835e4559a49c1b66c2062e2be15e98316..558f3149839488e4c1c2911070b9dd3d23a3f277 100755 (executable)
@@ -15,8 +15,9 @@
 set -e
 
 ##############################################################################
-# Settings section
+# Default settings section
 # You probably want to customize those
+# You can also pass them as parameters to the script
 ##############################################################################
 TARGET=arm-none-eabi           # Or: TARGET=arm-elf
 PREFIX=${HOME}/sat     # Install location of your final toolchain
@@ -35,6 +36,69 @@ LIBSTM32_EN=0
 LIBOPENSTM32_EN=1
 # Make the gcc default to Cortex-M3
 DEFAULT_TO_CORTEX_M3=0
+# Override automatic detection of cpus to compile on
+CPUS=
+
+##############################################################################
+# Parsing command line parameters
+##############################################################################
+
+while [ $# -gt 0 ]; do
+       case $1 in
+               TARGET=*)
+               TARGET=$(echo $1 | sed 's,^TARGET=,,')
+               ;;
+               PREFIX=*)
+               PREFIX=$(echo $1 | sed 's,^PREFIX=,,')
+               ;;
+               DARWIN_OPT_PATH=*)
+               DARWIN_OPT_PATH=$(echo $1 | sed 's,^DARWIN_OPT_PATH=,,')
+               ;;
+               SUDO=*)
+               SUDO=$(echo $1 | sed 's,^SUDO=,,')
+               ;;
+               QUIET=*)
+               QUIET=$(echo $1 | sed 's,^QUIET=,,')
+               ;;
+               USE_LINARO=*)
+               USE_LINARO=$(echo $1 | sed 's,^USE_LINARO=,,')
+               ;;
+               OOCD_EN=*)
+               OOCD_EN=$(echo $1 | sed 's,^OOCD_EN=,,')
+               ;;
+               LIBSTM32_EN=*)
+               LIBSTM32_EN=$(echo $1 | sed 's,^LIBSTM32_EN=,,')
+               ;;
+               LIBOPENSTM32_EN=*)
+               LIBOPENSTM32_EN=$(echo $1 | sed 's,^LIBOPENSTM32_EN=,,')
+               ;;
+               DEFAULT_TO_CORTEX_M3=*)
+               DEFAULT_TO_CORTEX_M3=$(echo $1 | sed 's,^DEFAULT_TO_CORTEX_M3=,,')
+               ;;
+               CPUS=*)
+               CPUS=$(echo $1 | sed 's,^CPUS=,,')
+               ;;
+               *)
+               echo "Unknown parameter: $1"
+               exit 1
+               ;;
+       esac
+
+       shift # shifting parameter list to access the next one
+done
+
+echo "Settings used for this build are:"
+echo "TARGET=$TARGET"
+echo "PREFIX=$PREFIX"
+echo "DARWIN_OPT_PATH=$DARWIN_OPT_PATH"
+echo "SUDO=$SUDO"
+echo "QUIET=$QUIET"
+echo "USE_LINARO=$USE_LINARO"
+echo "OOCD_EN=$OOCD_EN"
+echo "LIBSTM32_EN=$LIBSTM32_EN"
+echo "LIBOPENSTM32_EN=$LIBOPENSTM32_EN"
+echo "DEFAULT_TO_CORTEX_M3=$DEFAULT_TO_CORTEX_M3"
+echo "CPUS=$CPUS"
 
 ##############################################################################
 # Version and download url settings section
@@ -52,12 +116,12 @@ else
        GCCURL=http://launchpad.net/gcc-linaro/4.5/${GCCRELEASE}/+download/${GCC}.tar.bz2
 fi
 
-BINUTILS=binutils-2.21
+BINUTILS=binutils-2.21.1
 NEWLIB=newlib-1.19.0
-GDB=gdb-7.2
+GDB=gdb-7.3.1
 OOCD=master
-LIBCMSIS=v1.10-2
-LIBSTM32=v3.0.0-1
+LIBCMSIS=v1.10-3
+LIBSTM32=v3.0.0-2
 LIBSTM32USB=v3.0.1-1
 LIBOPENSTM32=master
 
@@ -65,12 +129,18 @@ LIBOPENSTM32=master
 # Flags section
 ##############################################################################
 
-if which getconf > /dev/null; then
-       CPUS=$(getconf _NPROCESSORS_ONLN)
+if [ "x${CPUS}" == "x" ]; then
+       if which getconf > /dev/null; then
+               CPUS=$(getconf _NPROCESSORS_ONLN)
+       else
+               CPUS=1
+       fi
+
+       PARALLEL=-j$((CPUS + 1))
 else
-       CPUS=1
+       PARALLEL=-j${CPUS}
 fi
-PARALLEL=-j$((CPUS + 1))
+
 echo "${CPUS} cpu's detected running make with '${PARALLEL}' flag"
 
 GDBFLAGS=
@@ -126,6 +196,10 @@ case "$(uname)" in
                  --with-libiconv-prefix=${DARWIN_OPT_PATH}"
        OOCD_CFLAGS="-I/opt/mine/include -I/opt/local/include"
        OOCD_LDFLAGS="-L/opt/mine/lib -L/opt/local/lib"
+       if gcc --version | grep llvm-gcc > /dev/null ; then
+               echo "Found you are using llvm gcc, switching to clang for gcc compile."
+               GCC_CC=clang
+       fi
        ;;
        CYGWIN*)
        echo "Found CygWin that means Windows most likely."
@@ -145,8 +219,7 @@ esac
 function fetch {
     if [ ! -e ${STAMPS}/$1.fetch ]; then
         log "Downloading $1 sources..."
-        wget -c --no-passive-ftp $2
-        touch ${STAMPS}/$1.fetch
+        wget -c --no-passive-ftp $2 && touch ${STAMPS}/$1.fetch
     fi
 }
 
@@ -265,14 +338,14 @@ if [ ! -e ${STAMPS}/${BINUTILS}.build ]; then
     cd build
     log "Configuring ${BINUTILS}"
     ../${BINUTILS}/configure --target=${TARGET} \
-                           --prefix=${PREFIX} \
-                           --enable-interwork \
-                           --enable-multilib \
-                           --with-gnu-as \
-                           --with-gnu-ld \
-                           --disable-nls \
-                           --disable-werror \
-                          ${BINUTILFLAGS}
+                             --prefix=${PREFIX} \
+                             --enable-interwork \
+                             --enable-multilib \
+                             --with-gnu-as \
+                             --with-gnu-ld \
+                             --disable-nls \
+                             --disable-werror \
+                             ${BINUTILFLAGS}
     log "Building ${BINUTILS}"
     make ${MAKEFLAGS}
     install ${BINUTILS} install
@@ -299,6 +372,12 @@ if [ ! -e ${STAMPS}/${GCC}-${NEWLIB}.build ]; then
     fi
 
     cd build
+    if [ "X${GCC_CC}" != "X" ] ; then
+           export GLOBAL_CC=${CC}
+           log "Overriding the default compiler with: \"${GCC_CC}\""
+           export CC=${GCC_CC}
+    fi
+
     log "Configuring ${GCC} and ${NEWLIB}"
     ../${GCC}/configure --target=${TARGET} \
                       --prefix=${PREFIX} \
@@ -325,6 +404,13 @@ if [ ! -e ${STAMPS}/${GCC}-${NEWLIB}.build ]; then
     install ${GCC} install
     cd ..
     log "Cleaning up ${GCC} and ${NEWLIB}"
+
+    if [ "X${GCC_CC}" != "X" ] ; then
+           unset CC
+           CC=${GLOBAL_CC}
+           unset GLOBAL_CC
+    fi
+
     touch ${STAMPS}/${GCC}-${NEWLIB}.build
     rm -rf build/* ${GCC} ${NEWLIB}
 fi
@@ -356,6 +442,7 @@ if [ ! -e ${STAMPS}/openocd-${OOCD}.build ]; then
     CFLAGS="${CFLAGS} ${OOCD_CFLAGS}" \
     LDFLAGS="${LDFLAGS} ${OOCD_LDFLAGS}" \
     ../openocd-${OOCD}/configure --enable-maintainer-mode \
+                                --disable-werror \
                                 --prefix=${PREFIX} \
                                 --enable-dummy \
                                 --enable-ft2232_libftdi \