#!/bin/bash
# (C) Copyright 2011 DENX Software Engineering GmbH
#
# Licensed under the GPLv2 or later.
##1 Locate the operation directory to the home directory of the current user
echo "====================================================================="
echo "Install step 1 : Set work directory to ~"
echo "====================================================================="
cd ~
##2 Create the used directory
echo "====================================================================="
echo "Install step 2 : Create necessary directorys"
echo "====================================================================="
mkdir crosstool-ppc
cd crosstool-ppc
mkdir build-tools kernel tools
##3 Setup the directory parameter
echo "====================================================================="
echo "Install step 3 :Set the system parameters"
echo "====================================================================="
export PRJROOT=/home/wenlonli/crosstool-ppc
export TARGET=powerpc-8xx-linux
export PREFIX=$PRJROOT/tools
export TARGET_PREFIX=$PREFIX/$TARGET
export PATH=$PREFIX/bin:$PATH
export CURRENT_PASSWD=wuliao
##4 Copy the related packages
echo "====================================================================="
echo "Install step 4 :Copy and prepare the packages"
echo "====================================================================="
cp ~/src/gmp-4.2.2.tar.bz2 $PRJROOT/build-tools/
cp ~/src/mpfr-3.0.0.tar.gz $PRJROOT/build-tools/
cp ~/src/mpc-0[1].8.1.tar.gz $PRJROOT/build-tools/
cp ~/src/binutils-2.21.tar.gz $PRJROOT/build-tools/
cp ~/src/gcc-4.5.3.tar.bz2 $PRJROOT/build-tools/
cp ~/src/gcc-4.3.2.tar.bz2 $PRJROOT/build-tools/
cp ~/src/glibc-2.14.tar.bz2 $PRJROOT/build-tools/
cp ~/src/linux-2.6.30.tar.gz $PRJROOT/kernel/
##5 Extract gmp
echo "====================================================================="
echo "Install step 5 : Extract GMP"
echo "====================================================================="
cd $PRJROOT/build-tools/
tar -jxvf gmp-4.2.2.tar.bz2
cd $PRJROOT/build-tools/gmp-4.2.2
##6 Configure gmp
echo "====================================================================="
echo "Install step 6 : Configure GMP"
echo "====================================================================="
./configure --prefix=/usr/local/gcc
##7 Compile gmp
echo "====================================================================="
echo "Install step 7 : Compile GMP"
echo "====================================================================="
make
make check
##8 Install gmp
echo "====================================================================="
echo "Install step 8 : Install GMP"
echo "====================================================================="
sudo make install
cd ..
rm -rf gmp-4.2.2
###########################################################################
##9 Extract MPFR
echo "====================================================================="
echo "Install step 9 : Extract MPFR"
echo "====================================================================="
cd $PRJROOT/build-tools/
tar -xvf mpfr-3.0.0.tar.gz
cd $PRJROOT/build-tools/mpfr-3.0.0
##A Configure MPFR
echo "====================================================================="
echo "Install step A : Configure MPFR"
echo "====================================================================="
./configure --prefix=/usr/local/gcc --with-gmp=/usr/local/gcc
##B Compile MPFR
echo "====================================================================="
echo "Install step B : Compile MPFR"
echo "====================================================================="
make
make check
##C Install MPFR
echo "====================================================================="
echo "Install step C : Install MPFR"
echo "====================================================================="
sudo make install
cd ..
rm -rf mpfr-3.0.0
###########################################################################
##D Extract MPC
echo "====================================================================="
echo "Install step D : Extract MPC"
echo "====================================================================="
cd $PRJROOT/build-tools/
tar -xvf mpc-0[1].8.1.tar.gz
cd $PRJROOT/build-tools/mpc-0.8.1
##E Configure MPC
echo "====================================================================="
echo "Install step E : Configure MPC"
echo "====================================================================="
./configure --prefix=/usr/local/gcc --with-gmp=/usr/local/gcc --with-mpfr=/usr/local/gcc
#before compile
# we must update the file acos, line 192
# from
# #if MPFR_VERSION_MAJOR > 3
# : rnd_im == GMP_RNDA ? GMP_RNDZ
# #endif
# to
# #if MPFR_VERSION_MAJOR > 3
# : rnd_im == GMP_RNDA ? GMP_RNDZ
# #endif
cp ~/src/patch/acos.c $PRJROOT/build-tools/mpc-0.8.1/src/
##F Compile MPC
echo "====================================================================="
echo "Install step F: Compile MPC"
echo "====================================================================="
make
##10 Install MPC
echo "====================================================================="
echo "Install step 10 : Install MPC"
echo "====================================================================="
sudo make install
cd ..
rm -rf mpc-0.8.1
###########################################################################
##11 Extract binutils
echo "====================================================================="
echo "Install step 11 : Extract binutils"
echo "====================================================================="
cd $PRJROOT/build-tools/
tar -xvf binutils-2.21.tar.gz
mkdir binbud
cd $PRJROOT/build-tools/binbud
##12 Configure binutils
echo "====================================================================="
echo "Install step 12 : Configure binutils"
echo "====================================================================="
../binutils-2.21/configure --target=$TARGET --prefix=$PREFIX --disable-werror
##13 Compile binutils
echo "====================================================================="
echo "Install step F: Compile binutils"
echo "====================================================================="
make
##14 Install binutils
echo "====================================================================="
echo "Install step 10 : Install binutils"
echo "====================================================================="
make install
cd ..
rm -rf binbud
rm -rf binutils-2.21
###########################################################################
##31 Extract GCC
echo "====================================================================="
echo "Install step 31 : Extract GCC"
echo "====================================================================="
cd $PRJROOT/build-tools/
tar -jxvf gcc-4.3.2.tar.bz2
mkdir gcc-boot-bud
cd $PRJROOT/build-tools/gcc-boot-bud
##32 Configure GCC
echo "====================================================================="
echo "Install step 32 : Configure gcc"
echo "====================================================================="
../gcc-4.3.2/configure --target=$TARGET --prefix=$PREFIX --without-headers --enable-language=c --disable-threads --with-newlib --disable-shared --disable-libmudflap --disable-libssp --with-gmp=/usr/local/gcc --disable-decimal-float --disable-libgomp --disable-multilib
##33 Compile GCC
echo "====================================================================="
echo "Install step F: Compile GCC"
echo "====================================================================="
make all-gcc
##34 Install GCC
echo "====================================================================="
echo "Install step 34 : Install GCC"
echo "====================================================================="
make install-gcc
##41 Compile LIBGCC
echo "====================================================================="
echo "Install step 41: Compile LIBGCC"
echo "====================================================================="
LD_LIBRARY_PATH=/usr/local/gcc/lib
export LD_LIBRARY_PATH
make all-target-libgcc
##42 Install binutils
echo "====================================================================="
echo "Install step 42 : Install LIBGCC"
echo "====================================================================="
make install-target-libgcc
cd ..
rm -rf gcc-boot-bud
##51 Extract Kernel
echo "====================================================================="
echo "Install step 51 : Extract Kernel Header"
echo "====================================================================="
cd $PRJROOT/kernel/
tar -xvf linux-2.6.30.tar.gz
cd linux-2.6.30
make ARCH=powerpc INSTALL_HDR_PATH=$TARGET_PREFIX/usr headers_install
#ls -p $TARGET_PREFIX/usr/include asm/ asm-generic/ drm/ linux/ mtd/ rdma/ sound/ video/
###########################################################################
##61 Extract Glibc
echo "====================================================================="
echo "Install step 61 : Extract Glibc"
echo "====================================================================="
cd $PRJROOT/build-tools/
tar -jxvf glibc-2.14.tar.bz2
mkdir glib-bud
cd $PRJROOT/build-tools/glib-bud
##62 Configure Glibc
echo "====================================================================="
echo "Install step 62 : Configure Glibc"
echo "====================================================================="
LD_LIBRARY_PATH=/usr/local/gcc/lib
export LD_LIBRARY_PATH
CC=powerpc-8xx-linux-gcc /home/wenlonli/crosstool-ppc/build-tools/glibc-2.14/configure --host=$TARGET --prefix="/usr" --enable-add-ons --with-headers=$TARGET_PREFIX/usr/include libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes
##63 Compile Glibc
echo "====================================================================="
echo "Install step 63: Compile Glibc"
echo "====================================================================="
cp ~/src/patch/Makeconfig $PRJROOT/build-tools/glibc-2.14
make
##64 Install Glibc
echo "====================================================================="
echo "Install step 64: Install Glibc"
echo "====================================================================="
make install_root=$TARGET_PREFIX prefix="" install
cp ~/src/patch/libc.so $TARGET_PREFIX/lib/libc.so
cd ..
rm -rf glib-bud
rm -rf glibc-2.14
###########################################################################
##71 Extract GCC
echo "====================================================================="
echo "Install step 71 : Prepare for Full GCC"
echo "====================================================================="
#tar -jxvf gcc-4.3.2.tar.bz2
mkdir full-gcc-bud
cd $PRJROOT/build-tools/full-gcc-bud
##72 Configure GCC
echo "====================================================================="
echo "Install step 62 : Configure Full GCC"
echo "====================================================================="
../gcc-4.3.2/configure --target=$TARGET --prefix=$PREFIX --enable-languages=c,c++ --with-headers=$TARGET_PREFIX/usr/include --disable-libgomp --with-gmp=/usr/local/gcc
##73 Compile Full GCC
echo "====================================================================="
echo "Install step 63: Compile Full GCC"
echo "====================================================================="
make all
##74 Install Full GCC
echo "====================================================================="
echo "Install step 74: Install Full GCC"
echo "====================================================================="
make install
cd ..
rm -rf full-gcc-bud
rm -rf gcc-4.3.2