75 lines
2.9 KiB
Bash
75 lines
2.9 KiB
Bash
|
|
||
|
function usage() {
|
||
|
echo "Usage:"
|
||
|
echo ""
|
||
|
echo "source ./scripts/setup_cpp11_toolchain.sh"
|
||
|
echo ""
|
||
|
exit 1
|
||
|
}
|
||
|
|
||
|
|
||
|
function main() {
|
||
|
|
||
|
if [[ ${1:-unset} != "unset" ]]; then
|
||
|
if [[ $1 == '-h' ]] || [[ $1 == '--help' ]]; then
|
||
|
usage
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
if [[ $(uname -s) == 'Linux' ]]; then
|
||
|
set -e
|
||
|
if [[ ! $(lsb_release --id) =~ "Ubuntu" ]]; then
|
||
|
echo "only Ubuntu precise is supported at this time and not '$(lsb_release --id)'"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
local codename release
|
||
|
codename=$(lsb_release --codename | cut -d : -f 2 | xargs basename)
|
||
|
release=$(lsb_release --release | cut -d : -f 2 | xargs basename)
|
||
|
|
||
|
export CPP11_TOOLCHAIN="$(pwd)/toolchain"
|
||
|
mkdir -p ${CPP11_TOOLCHAIN}
|
||
|
|
||
|
function dpack() {
|
||
|
if [[ ! -f $2 ]]; then
|
||
|
url=$1/$(echo $2 | sed 's/+/%2B/g')
|
||
|
wget $url
|
||
|
dpkg -x $2 ${CPP11_TOOLCHAIN}
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
local PPA LLVM_DIST
|
||
|
PPA="https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test/+files"
|
||
|
# http://llvm.org/apt/precise/dists/llvm-toolchain-${release}-3.5/main/binary-amd64/Packages
|
||
|
# TODO: cache these for faster downloads
|
||
|
LLVM_DIST="http://llvm.org/apt/${codename}/pool/main/l/llvm-toolchain-3.5"
|
||
|
if [[ $codename == "precise" ]]; then
|
||
|
dpack ${LLVM_DIST} clang-3.5_3.5~svn217304-1~exp1_amd64.deb &
|
||
|
dpack ${LLVM_DIST} libllvm3.5_3.5~svn217304-1~exp1_amd64.deb &
|
||
|
dpack ${LLVM_DIST} libclang-common-3.5-dev_3.5~svn215019-1~exp1_amd64.deb &
|
||
|
dpack ${PPA} libstdc++6_4.8.1-2ubuntu1~${release}_amd64.deb &
|
||
|
dpack ${PPA} libstdc++-4.8-dev_4.8.1-2ubuntu1~${release}_amd64.deb &
|
||
|
dpack ${PPA} libgcc-4.8-dev_4.8.1-2ubuntu1~${release}_amd64.deb &
|
||
|
wait
|
||
|
elif [[ $codename == "trusty" ]]; then
|
||
|
dpack ${LLVM_DIST} clang-3.5_3.5~svn215019-1~exp1_amd64.deb &
|
||
|
dpack ${LLVM_DIST} libllvm3.5_3.5~svn215019-1~exp1_amd64.deb &
|
||
|
dpack ${LLVM_DIST} libclang-common-3.5-dev_3.5.1~svn225255-1~exp1_amd64.deb &
|
||
|
wait
|
||
|
else
|
||
|
echo "unsupported distro: $codename $release"
|
||
|
exit 1
|
||
|
fi
|
||
|
export CPLUS_INCLUDE_PATH="${CPP11_TOOLCHAIN}/usr/include/c++/4.8:${CPP11_TOOLCHAIN}/usr/include/x86_64-linux-gnu/c++/4.8:${CPLUS_INCLUDE_PATH:-}"
|
||
|
export LD_LIBRARY_PATH="${CPP11_TOOLCHAIN}/usr/lib/x86_64-linux-gnu:${CPP11_TOOLCHAIN}/usr/lib/gcc/x86_64-linux-gnu/4.8/:${LD_LIBRARY_PATH:-}"
|
||
|
export LIBRARY_PATH="${LD_LIBRARY_PATH}:${LIBRARY_PATH:-}"
|
||
|
export PATH="${CPP11_TOOLCHAIN}/usr/bin":${PATH}
|
||
|
export CXX="${CPP11_TOOLCHAIN}/usr/bin/clang++-3.5"
|
||
|
export CC="${CPP11_TOOLCHAIN}/usr/bin/clang-3.5"
|
||
|
set +e
|
||
|
else
|
||
|
echo "Nothing to be done: this script only bootstraps a c++11 toolchain for linux"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
main $@
|