Skip to content

Instantly share code, notes, and snippets.

@cheuerde
Last active August 29, 2015 14:05
Show Gist options
  • Save cheuerde/1fc31f495e603c5b3b87 to your computer and use it in GitHub Desktop.
Save cheuerde/1fc31f495e603c5b3b87 to your computer and use it in GitHub Desktop.
Script for compiling GCC with all dependencies - Taken from: https://github.com/beurdouche/scripts #install
#!/bin/bash
#
# GNU GCC COMPILER INSTALLATION SCRIPT
#
# Copyright (c) 2014 Benjamin Beurdouche. All rights reserved.
#
# You might want to modify the first line to specify your own install location.
# Prerequisites : binutils autoconf automake libtool autogen gettext cloog dejagnu
CORES=10
#set -x
#export LGROUP="staff"
export GNU_PREFIX="${HOME}/opt/gnu"
export GCC_PREFIX="${GNU_PREFIX}/gcc"
mkdir $GNU_PREFIX
#sudo chown -R $USER:$LGROUP $GNU_PREFIX
cd $GNU_PREFIX
# Hopefully, you can tweak these as they get out of date, but the download URL's
# may not be stable to text substitution.
GMP_VERSION=gmp-5.1.1
MPFR_VERSION=mpfr-3.1.2
MPC_VERSION=mpc-1.0.1
ISL_VERSION=isl-0.12.2
CLOOG_VERSION=cloog-0.18.0
GCC_VERSION=gcc-4.8.1
# Downloads, builds, then install gmp, mpfr, mpc, and gcc 4.7 to GCC_PREFIX
export PATH="${GCC_PREFIX}/bin:${PATH}"
export LD_LIBRARY_PATH="${GCC_PREFIX}/lib:${LD_LIBRARY_PATH}"
export DYLD_LIBRARY_PATH="${GCC_PREFIX}/lib:${DYLD_LIBRARY_PATH}"
export CPPFLAGS=-I${GCC_PREFIX}/include
export LDFLAGS=-L${GCC_PREFIX}/lib
#
# GMP
#
if ! test -d "${GMP_VERSION}"
then
if ! test -f "${GMP_VERSION}.tar.bz2"
then
wget "ftp://ftp.gmplib.org/pub/$GMP_VERSION/${GMP_VERSION}.tar.bz2" || exit
tar xfjv "${GMP_VERSION}.tar.bz2" || exit
fi
fi
mkdir "${GMP_VERSION}/build"
cd "${GMP_VERSION}/build" || exit
../configure --prefix="${GCC_PREFIX}" || exit
make -j${CORES} || exit
# make check || exit
make install || exit
cd -
#
# MPFR
#
if ! test -d "${MPFR_VERSION}"
then
if ! test -f "${MPFR_VERSION}.tar.gz"
then
wget "http://www.mpfr.org/mpfr-current/${MPFR_VERSION}.tar.gz" || exit
tar xfvz "${MPFR_VERSION}.tar.gz" || exit
fi
fi
mkdir "${MPFR_VERSION}/build"
cd "${MPFR_VERSION}/build" || exit
../configure --prefix="${GCC_PREFIX}" --with-gmp="${GCC_PREFIX}" || exit
make -j${CORES} || exit
# make check || exit
make install || exit
cd -
#
# MPC
#
if ! test -d "${MPC_VERSION}"
then
if ! test -f "${MPC_VERSION}.tar.gz"
then
wget "http://www.multiprecision.org/mpc/download/${MPC_VERSION}.tar.gz" || exit
tar xfvz "${MPC_VERSION}.tar.gz" || exit
fi
fi
mkdir "${MPC_VERSION}/build"
cd "${MPC_VERSION}/build" || exit
../configure --prefix="${GCC_PREFIX}" --with-gmp="${GCC_PREFIX}" --with-mpfr="${GCC_PREFIX}" || exit
make -j${CORES} || exit
# make check || exit
make install || exit
cd -
#
# ISL
#
if ! test -d "${ISL_VERSION}"
then
if ! test -f "${ISL_VERSION}.tar.bz2"
then
wget "ftp://gcc.gnu.org/pub/gcc/infrastructure/${ISL_VERSION}.tar.bz2" || exit
tar xfvj "${ISL_VERSION}.tar.bz2" || exit
fi
fi
mkdir "${ISL_VERSION}/build"
cd "${ISL_VERSION}/build" || exit
../configure --prefix="${GCC_PREFIX}" --with-gmp="${GCC_PREFIX}" || exit
make -j${CORES} || exit
# make check || exit
make install || exit
cd -
#
# CLOOG
#
if ! test -d "${CLOOG_VERSION}"
then
if ! test -f "${CLOOG_VERSION}.tar.gz"
then
wget "ftp://gcc.gnu.org/pub/gcc/infrastructure/${CLOOG_VERSION}.tar.gz" || exit
tar xfvz "${CLOOG_VERSION}.tar.gz" || exit
fi
fi
mkdir "${CLOOG_VERSION}/build"
cd "${CLOOG_VERSION}/build" || exit
../configure --prefix="${GCC_PREFIX}" --with-bits=gmp --with-gmp="${GCC_PREFIX}" --with-mpfr="${GCC_PREFIX}" --with-mpc="${GCC_PREFIX}" --with-isl="${GCC_PREFIX}"|| exit
make -j${CORES} || exit
# make check || exit
make install || exit
cd -
#
# GCC
#
if ! test -d "${GCC_VERSION}"
then
if ! test -f "${GCC_VERSION}.tar.bz2"
then
wget "ftp://ftp.uvsq.fr/pub/gcc/releases/${GCC_VERSION}/${GCC_VERSION}.tar.bz2" || exit
tar xfvj "${GCC_VERSION}.tar.bz2" || exit
fi
fi
mkdir "${GCC_VERSION}/build"
cd "${GCC_VERSION}/build" || exit
INSTALL_PREFIX=${GCC_PREFIX}/${GCC_VERSION}
mkdir "${INSTALL_PREFIX}"
../configure --prefix="${INSTALL_PREFIX}" --disable-multilib --with-gmp="${GCC_PREFIX}" --with-mpfr="${GCC_PREFIX}" --with-mpc="${GCC_PREFIX}" --with-isl="${GCC_PREFIX}" --with-cloog="${GCC_PREFIX}" --enable-checking=release --enable-languages=c,c++,objc,obj-c++,fortran || exit
make -j${CORES} || exit
# make -k check || exit
make install || exit
cd -
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment