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
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
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
# 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=
--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."
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
}
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
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} \
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