1#!/bin/bash
2
3# Make sure that libgmp and libmpfr are installed before you run this script.
4# On Debian systems, e.g. Ubuntu, you can install these libraries as follows:
5# sudo apt-get install libgmp3-dev libmpfr-dev. In openSUSE these packages
6# are called gmp-devel and mpfr-devel.
7
8
9GCC_VERSION=4.5.0
10FSF_MIRROR=ftp://ftp.easynet.be/gnu
11SRCDIR=$HOME/software
12DOWNLOADS=$SRCDIR/downloads
13SRC=$HOME/software/gcc-${GCC_VERSION}
14BUILD=${SRC}-build
15TAR=gcc-${GCC_VERSION}.tar.bz2
16PREFIX=$HOME/gcc-${GCC_VERSION}
17GMP_PREFIX=/usr
18#GMP_PREFIX=$HOME/gmp-5.0.1
19MPFR_PREFIX=/usr
20#MPFR_PREFIX=$HOME/mpfr-2.4.2
21MPC_PREFIX=/usr
22#MPC_PREFIX=$HOME/mpc-0.8.1
23export LC_ALL=C
24export MAKEFLAGS="-j$(($(grep -c '^processor' /proc/cpuinfo) + 1))"
25
26if [ ! -e $GMP_PREFIX/include/gmp.h ]; then
27  echo "Please install the gmp library development package first."
28  exit 1
29fi
30
31if [ ! -e $MPFR_PREFIX/include/mpfr.h ]; then
32  echo "Please install the mpfr library development package first."
33  exit 1
34fi
35
36if [ ! -e $MPC_PREFIX/include/mpc.h ]; then
37  echo "Please install the mpc library development package first."
38  exit 1
39fi
40
41rm -rf   ${BUILD}     || exit $?
42rm -rf   ${PREFIX}    || exit $?
43mkdir -p ${DOWNLOADS} || exit $?
44mkdir -p ${BUILD}     || exit $?
45cd       ${BUILD}     || exit $?
46
47if [ ! -e $DOWNLOADS/$TAR ]; then
48(
49  if cd $DOWNLOADS; then
50    wget -q $FSF_MIRROR/gcc/gcc-${GCC_VERSION}/$TAR \
51    || { wget -q -O- $FSF_MIRROR/gcc/gcc-${GCC_VERSION}/${TAR%bz2}gz \
52         | gzip -cd | bzip2 -9 >${TAR}; }
53  fi
54)
55fi
56
57if [ ! -e $SRC ]; then
58  ( cd $SRCDIR && tar -xjf $DOWNLOADS/$TAR )
59fi
60
61${SRC}/configure            \
62  --disable-linux-futex     \
63  --disable-mudflap         \
64  --disable-nls             \
65  --enable-languages=c,c++  \
66  --enable-threads=posix    \
67  --enable-tls              \
68  --prefix=$PREFIX          \
69  --with-gmp=$GMP_PREFIX    \
70  --with-mpfr=$MPFR_PREFIX  \
71  --with-mpc=$MPC_PREFIX
72
73time { make -s && make -s install; }
74