106 lines
2.7 KiB
Bash
106 lines
2.7 KiB
Bash
|
#!/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
|