mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2026-01-01 01:41:18 +01:00
* build_gnuarm_naked.sh: builds arm toolchain without newlib
This commit is contained in:
parent
b9a52bd231
commit
5ce95c155b
163
tools/toolchains/build_gnuarm_naked.sh
Executable file
163
tools/toolchains/build_gnuarm_naked.sh
Executable file
@ -0,0 +1,163 @@
|
||||
#!/bin/bash
|
||||
|
||||
# directory to install compiled binaries into
|
||||
PREFIX=${HOME}/gnuarm-naked
|
||||
|
||||
# directory to download source files and store intermediates
|
||||
GNUARM_BUILDDIR=${GNUARM_BUILDDIR:-"/tmp/gnuarm-naked-${USER}"}
|
||||
|
||||
#GCC_VER=4.5.1
|
||||
#GCC_MD5=dc8959e31b01a65ce10d269614815054
|
||||
GCC_VER=4.3.4
|
||||
GCC_MD5=575b3220bb8e7060939c429fc8608d22
|
||||
|
||||
BINUTILS_VER=2.20.1
|
||||
BINUTILS_MD5=9cdfb9d6ec0578c166d3beae5e15c4e5
|
||||
|
||||
NEWLIB_VER=1.18.0
|
||||
NEWLIB_MD5=3dae127d4aa659d72f8ea8c0ff2a7a20
|
||||
|
||||
GDB_VER=7.2
|
||||
GDB_MD5=64260e6c56979ee750a01055f16091a5
|
||||
|
||||
#uncomment to support multi-threaded compile
|
||||
MAKE_THREADS=-j4
|
||||
|
||||
DOWNLOADER=wget
|
||||
DOWNLOADER_OPTS="-nv -c"
|
||||
|
||||
#
|
||||
# Build targets
|
||||
#
|
||||
FILES=.
|
||||
|
||||
build_binutils() {
|
||||
echo "Building binutils..."
|
||||
if [ ! -e .binutils_extracted ] ; then
|
||||
tar -xjf ${FILES}/binutils-${BINUTILS_VER}.tar.bz2
|
||||
touch .binutils_extracted
|
||||
fi
|
||||
rm -rf binutils-build && mkdir -p binutils-build && cd binutils-build &&
|
||||
../binutils-${BINUTILS_VER}/configure --target=arm-elf --prefix=${PREFIX} --enable-interwork --enable-multilibi --with-float=soft --with-fpu=vfp &&
|
||||
make ${MAKE_THREADS} all CFLAGS=-Wformat=0 &&
|
||||
make install &&
|
||||
cd ${GNUARM_BUILDDIR}
|
||||
}
|
||||
|
||||
build_gcc() {
|
||||
echo "Building gcc..."
|
||||
if [ ! -e .gcc_extracted ] ; then
|
||||
tar -xjf ${FILES}/gcc-core-${GCC_VER}.tar.bz2 &&
|
||||
touch .gcc_extracted
|
||||
fi
|
||||
rm -rf gcc-build && mkdir -p gcc-build && cd gcc-build &&
|
||||
../gcc-${GCC_VER}/configure --target=arm-elf --prefix=${PREFIX} --enable-interwork --enable-multilib --enable-languages="c" --enable-lto --disable-libssp --disable-hardfloat --with-float=soft --with-fpu=vfp --without-headers &&
|
||||
|
||||
make ${MAKE_THREADS} all &&
|
||||
make install &&
|
||||
|
||||
cd ${GNUARM_BUILDDIR}
|
||||
}
|
||||
|
||||
extract_newlib() {
|
||||
if [ ! -e .newlib_extracted ] ; then
|
||||
echo -n "Extracting newlib..."
|
||||
tar -xzf ${FILES}/newlib-${NEWLIB_VER}.tar.gz &&
|
||||
touch .newlib_extracted &&
|
||||
echo " Done."
|
||||
fi
|
||||
}
|
||||
|
||||
build_newlib() {
|
||||
cd ${GNUARM_BUILDDIR} &&
|
||||
|
||||
if [ ! -e .newlib_extracted ] ; then
|
||||
extract_newlib
|
||||
fi
|
||||
|
||||
rm -rf newlib-build && mkdir -p newlib-build && cd newlib-build &&
|
||||
../newlib-${NEWLIB_VER}/configure --target=arm-elf --prefix=${PREFIX} --enable-interwork --enable-multilib --disable-newlib-supplied-syscalls --enable-newlib-reent-small --enable-newlib-io-long-long --enable-newlib-io-float --with-float=soft --with-fpu=vfp &&
|
||||
#--enable-newlib-supplied-syscalls &&
|
||||
# options to try: --enable-newlib-reent-small
|
||||
make ${MAKE_THREADS} TARGET_CFLAGS=-DREENTRANT_SYSCALLS_PROVIDED all &&
|
||||
make install &&
|
||||
|
||||
# generate zip-file to provide binary download
|
||||
cd ${PREFIX}/arm-elf &&
|
||||
|
||||
#
|
||||
# package compiled newlib for windows users. any new version must be uploaded to the
|
||||
# webserver. see manual arm/toolchain/windows for paths and documentation.
|
||||
#
|
||||
zip -ru newlib-${NEWLIB_VER}.zip include sys-include lib/*.a lib/thumb/*.a
|
||||
|
||||
cd ${GNUARM_BUILDDIR}
|
||||
}
|
||||
|
||||
build_gdb() {
|
||||
echo "Building gdb..."
|
||||
if [ ! -e .gdb_extracted ] ; then
|
||||
tar -xjf ${FILES}/gdb-${GDB_VER}.tar.bz2 &&
|
||||
touch .gdb_extracted
|
||||
fi
|
||||
rm -rf gdb-build && mkdir -p gdb-build && cd gdb-build &&
|
||||
../gdb-${GDB_VER}/configure --target=arm-elf --prefix=${PREFIX} --enable-interwork --enable-multilib &&
|
||||
|
||||
make ${MAKE_THREADS} all CFLAGS=-D_FORTIFY_SOURCE=0 &&
|
||||
make install &&
|
||||
|
||||
cd ${GNUARM_BUILDDIR}
|
||||
}
|
||||
|
||||
clean() {
|
||||
echo "Cleaning up..."
|
||||
rm -rf .gdb_extracted .newlib_extracted .gcc_extracted .binutils_extracted
|
||||
rm -rf binutils-build gcc-build newlib-build gdb-build
|
||||
}
|
||||
|
||||
export PATH=$PATH:${PREFIX}/bin
|
||||
|
||||
download() {
|
||||
download_file http://ftp.gnu.org/gnu/binutils binutils-${BINUTILS_VER}.tar.bz2 ${BINUTILS_MD5} &&
|
||||
download_file ftp://ftp.fu-berlin.de/unix/languages/gcc/releases/gcc-${GCC_VER} gcc-core-${GCC_VER}.tar.bz2 ${GCC_MD5} &&
|
||||
download_file http://ftp.gnu.org/gnu/gdb gdb-${GDB_VER}.tar.bz2 ${GDB_MD5}
|
||||
}
|
||||
|
||||
download_file() {
|
||||
echo "Downloading ${1}/${2}..."
|
||||
${DOWNLOADER} ${DOWNLOADER_OPTS} $1/$2
|
||||
|
||||
echo -n "Checking MD5 of "
|
||||
echo "${3} ${2}" | md5sum -c -
|
||||
}
|
||||
|
||||
build_all() {
|
||||
echo "Starting in ${GNUARM_BUILDDIR}. Installing to ${PREFIX}."
|
||||
download &&
|
||||
build_binutils &&
|
||||
build_gcc &&
|
||||
build_gdb &&
|
||||
|
||||
echo "Build complete."
|
||||
}
|
||||
|
||||
usage() {
|
||||
echo "usage: ${0} build_[binutils|gcc|newlib|gdb|all]"
|
||||
echo "example: ./build_gnuarm build_all"
|
||||
echo ""
|
||||
echo "Builds a GNU ARM toolchain. installs to HOME/gnuarm, uses /tmp/gnuarm-USER as temp."
|
||||
echo "Edit to change these directories."
|
||||
echo "Run like \"MAKE_THREADS=-j4 ${0} build_all\" to speed up on multicore systems."
|
||||
}
|
||||
|
||||
if [ -z "${1}" ]; then
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p ${GNUARM_BUILDDIR}
|
||||
|
||||
cd ${GNUARM_BUILDDIR}
|
||||
|
||||
$*
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user