nes-proj/platform/galileo/bsp/libc/build_newlib.sh

106 lines
2.7 KiB
Bash
Executable File

#!/bin/bash
JOBS=5
TARGET=i586-elf
VERSION=2.2.0-1
MD5=94114fdc1d8391cdbc2653d89249cccf
TARBALL=newlib-${VERSION}.tar.gz
SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
# This script will always run on its own basepath, no matter where you call it from.
pushd ${SCRIPT_DIR}
prepare() {
# If the source tarball doesn't exist of its md5 checksum doesn't match, download it.
if [ ! -e ./${TARBALL} ] || [ "$(md5sum ./${TARBALL} | cut -d' ' -f1)" != $MD5 ]; then
wget -c ftp://sources.redhat.com/pub/newlib/${TARBALL}
fi
# Clean up the previous source dir, if any.
if [[ -d ./newlib-${VERSION} ]]; then
rm -rf ./newlib-${VERSION}
fi
# Clean up the previous install dir, if any.
if [[ -d ./${VERSION} ]]; then
rm -rf ./${VERSION}
fi
tar xf ${TARBALL}
cd newlib-${VERSION}
for i in `ls ../patches/`; do patch -p0 < ../patches/${i}; done
}
build() {
export AR_FOR_TARGET=ar
export AS_FOR_TARGET=as
export CC_FOR_TARGET=cc
export GCC_FOR_TARGET=gcc
export CXX_FOR_TARGET=c++
export RAW_CXX_FOR_TARGET=c++
export GCJ_FOR_TARGET=gcj
export GFORTRAN_FOR_TARGET=gfortran
export GOC_FOR_TARGET=gccgo
export DLLTOOL_FOR_TARGET=dlltool
export LD_FOR_TARGET=ld
export LIPO_FOR_TARGET=lipo
export NM_FOR_TARGET=nm
export OBJDUMP_FOR_TARGET=objdump
export RANLIB_FOR_TARGET=ranlib
export READELF_FOR_TARGET=readelf
export STRIP_FOR_TARGET=strip
export WINDRES_FOR_TARGET=windres
export WINDMC_FOR_TARGET=windmc
export COMPILER_AS_FOR_TARGET=as
export COMPILER_LD_FOR_TARGET=ld
export COMPILER_NM_FOR_TARGET=nm
export CFLAGS_FOR_TARGET="-Os -m32 -march=i586 -mtune=i586 -DPREFER_SIZE_OVER_SPEED"
export CXXFLAGS_FOR_TARGET="-Os -m32 -march=i586 -mtune=i586 -DPREFER_SIZE_OVER_SPEED"
mkdir -p install
./configure --target=${TARGET} \
--prefix=`pwd`/install \
--enable-newlib-nano-formatted-io \
--enable-newlib-nano-malloc \
--enable-multithread \
--disable-newlib-fvwrite-in-streamio \
--disable-newlib-fseek-optimization \
--disable-newlib-wide-orient \
--disable-newlib-unbuf-stream-opt \
--disable-libstdcxx \
--disable-multilib \
--disable-newlib-mb \
--disable-newlib-supplied-syscalls
make -j${JOBS} all && make install
cd ..
}
setup() {
cp -r ./newlib-${VERSION}/install/${TARGET} .
}
cleanup() {
rm -rf ./newlib-${VERSION}*
}
# By default we always call prepare, build and setup.
prepare && build && setup
# But we only cleanup if -c is used.
case $1 in
-c | --cleanup)
cleanup
shift
;;
*)
# unknown option
;;
esac
popd