X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=kitten%2Fscripts%2Ftoolchain%2Fbuild-x86_64.sh;fp=kitten%2Fscripts%2Ftoolchain%2Fbuild-x86_64.sh;h=38061945962bc0f6baec8faf39eed7afe22247e2;hb=66a1a4c7a9edcd7d8bc207aca093d694a6e6b5b2;hp=0000000000000000000000000000000000000000;hpb=f7cf9c19ecb0a589dd45ae0d2c91814bd3c2acc2;p=palacios.git diff --git a/kitten/scripts/toolchain/build-x86_64.sh b/kitten/scripts/toolchain/build-x86_64.sh new file mode 100755 index 0000000..3806194 --- /dev/null +++ b/kitten/scripts/toolchain/build-x86_64.sh @@ -0,0 +1,90 @@ +#!/bin/bash + +# Cross-Compiler Toolchain for ${PLATFORM} +# by Martin Decky +# +# GPL'ed, copyleft +# + + +check_error() { + if [ "$1" -ne "0" ]; then + echo + echo "Script failed: $2" + exit + fi +} + +BINUTILS_VERSION="2.17" +GCC_VERSION="4.1.1" + +BINUTILS="binutils-${BINUTILS_VERSION}.tar.gz" +GCC_CORE="gcc-core-${GCC_VERSION}.tar.bz2" +GCC_CPP="gcc-g++-${GCC_VERSION}.tar.bz2" + +BINUTILS_SOURCE="ftp://ftp.gnu.org/gnu/binutils/" +GCC_SOURCE="ftp://ftp.gnu.org/gnu/gcc/gcc-${GCC_VERSION}/" + +PLATFORM="x86_64" +WORKDIR=`pwd` +TARGET="${PLATFORM}-linux-gnu" +PREFIX="/opt/toolchain/${PLATFORM}" +BINUTILSDIR="${WORKDIR}/binutils-${BINUTILS_VERSION}" +GCCDIR="${WORKDIR}/gcc-${GCC_VERSION}" +OBJDIR="${WORKDIR}/gcc-obj" + +echo ">>> Downloading tarballs" + +if [ ! -f "${BINUTILS}" ]; then + wget -c "${BINUTILS_SOURCE}${BINUTILS}" + check_error $? "Error downloading binutils." +fi +if [ ! -f "${GCC_CORE}" ]; then + wget -c "${GCC_SOURCE}${GCC_CORE}" + check_error $? "Error downloading GCC Core." +fi +if [ ! -f "${GCC_CPP}" ]; then + wget -c "${GCC_SOURCE}${GCC_CPP}" + check_error $? "Error downloading GCC C++." +fi + +echo ">>> Creating destionation directory" +if [ ! -d "${PREFIX}" ]; then + mkdir -p "${PREFIX}" + test -d "${PREFIX}" + check_error $? "Unable to create ${PREFIX}." +fi + +echo ">>> Creating GCC work directory" +if [ ! -d "${OBJDIR}" ]; then + mkdir -p "${OBJDIR}" + test -d "${OBJDIR}" + check_error $? "Unable to create ${OBJDIR}." +fi + +echo ">>> Unpacking tarballs" +tar -xvzf "${BINUTILS}" +check_error $? "Error unpacking binutils." +tar -xvjf "${GCC_CORE}" +check_error $? "Error unpacking GCC Core." +tar -xvjf "${GCC_CPP}" +check_error $? "Error unpacking GCC C++." + +echo ">>> Compiling and installing binutils" +cd "${BINUTILSDIR}" +check_error $? "Change directory failed." +./configure "--target=${TARGET}" "--prefix=${PREFIX}" "--program-prefix=${TARGET}-" "--disable-nls" +check_error $? "Error configuring binutils." +make all install +check_error $? "Error compiling/installing binutils." + +echo ">>> Compiling and installing GCC" +cd "${OBJDIR}" +check_error $? "Change directory failed." +"${GCCDIR}/configure" "--target=${TARGET}" "--prefix=${PREFIX}" "--program-prefix=${TARGET}-" --with-gnu-as --with-gnu-ld --disable-nls --disable-threads --enable-languages=c,c++ --disable-multilib --disable-libgcj --without-headers --disable-shared +check_error $? "Error configuring GCC." +PATH="${PATH}:${PREFIX}/bin" make all-gcc install-gcc +check_error $? "Error compiling/installing GCC." + +echo +echo ">>> Cross-compiler for ${TARGET} installed."