h2-mod/deps/sol2/scripts/preparation.linux.sh
2024-03-07 03:33:59 -05:00

145 lines
5.0 KiB
Bash

#!/usr/bin/env zsh
# # # # sol2
# The MIT License (MIT)
#
# Copyright (c) 2013-2022 Rapptz, ThePhD, and contributors
#
# Permission is hereby granted, free of charge, to any person obtaining a copy of
# this software and associated documentation files (the "Software"), to deal in
# the Software without restriction, including without limitation the rights to
# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
# the Software, and to permit persons to whom the Software is furnished to do so,
# subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
top_level_dir="$(pwd)"
mkdir -p build-sol2
cd build-sol2
build_dir="$(pwd)"
echo "#\!/usr/bin/env zsh\n\n" > "sol2.compiler.vars"
# # Initial and necessary installations
apt-get update && apt-get -y install lsb-release ninja-build libreadline7 libreadline-dev lib32readline7 lib32readline-dev python3 wget curl libcurl4 cmake git
# # LLVM and GCC updates
# Grab LLVM or GCC
# if we need it
# defining both is probably an expotentially terrible idea
if [ "${LLVM_VERSION}" ]
then
# get and use LLVM
version_nums=(${=LLVM_VERSION//./ })
major=$version_nums[1]
minor=$version_nums[2]
revision=$version_nums[3]
download_llvm=true
image_version=$(lsb_release -rs)
download_version=${image_version}
apt_version=${major}.${minor}
if [ ${major} -le 6 ];
then
download_llvm=true
download_version=16.04
elif [ ${major} -eq 4 ]
then
download_llvm=true
download_version=16.04
elif [ ${major} -eq 3 ]
then
download_llvm=false
if [ ${minor} -lt 5 ]
then
download_llvm=true
download_version=14.04
elif [ ${minor} -lt 10 ]
then
download_llvm=true
download_version=16.04
fi
fi
if [ ${download_llvm} = true ]
then
export LLVM_ARCHIVE_PATH=${build_dir}/clang-llvm.tar.xz
export CLANG_PREFIX=${build_dir}/clang-llvm-${LLVM_VERSION}
export PATH=$CLANG_PREFIX/bin:$PATH
export LD_LIBRARY_PATH=$CLANG_PREFIX/lib:$LD_LIBRARY_PATH
echo "export LLVM_ARCHIVE_PATH=${build_dir}/clang+llvm.tar.xz\nexport CLANG_PREFIX=${build_dir}/clang-$LLVM_VERSION\nexport PATH=$CLANG_PREFIX/bin:$PATH\nexport LD_LIBRARY_PATH=$CLANG_PREFIX/lib:$LD_LIBRARY_PATH\n" >> "sol2.compiler.vars"
apt-get -y install xz-utils clang
#if [${major} -le 5]
#then
# wget http://llvm.org/releases/$LLVM_VERSION/clang+llvm-${LLVM_VERSION}-x86_64-linux-gnu-ubuntu-${download_version}.tar.xz -O ${LLVM_ARCHIVE_PATH}
# http://releases.llvm.org/$LLVM_VERSION/clang+llvm-$LLVM_VERSION-x86_64-linux-gnu-ubuntu-${download_version}.tar.xz
#else
# wget http://llvm.org/releases/$LLVM_VERSION/clang+llvm-${LLVM_VERSION}-x86_64-linux-gnu-ubuntu-${download_version}.tar.xz -O ${LLVM_ARCHIVE_PATH}
#fi
wget http://llvm.org/releases/$LLVM_VERSION/clang+llvm-${LLVM_VERSION}-x86_64-linux-gnu-ubuntu-${download_version}.tar.xz -O ${LLVM_ARCHIVE_PATH}
mkdir -p "${CLANG_PREFIX}"
tar xf "${LLVM_ARCHIVE_PATH}" -C "${CLANG_PREFIX}" --strip-components 1
if [ -f "${CLANG_PREFIX}/bin/clang" ]
then
export CC="${CLANG_PREFIX}/bin/clang"
else
export CC="${CLANG_PREFIX}/bin/clang-${major}"
fi
if [ -f "${CLANG_PREFIX}/bin/clang++-${major}" ]
then
export CXX="${CLANG_PREFIX}/bin/clang++-${major}"
else
export CXX="${CLANG_PREFIX}/bin/clang++"
fi
else
apt-get -y install clang-${apt_version}
export CC=clang-${apt_version}
export CXX=clang++-${apt_version}
fi
elif [ "${GCC_VERSION}" ]
then
# get and use GCC version that we desire
# python-software-properties is no longer needed in 18.04, it
# comes with software-properties-common
apt-get -y install software-properties-common
add-apt-repository -y ppa:ubuntu-toolchain-r/test
apt-get -y update
apt-get -y dist-upgrade
apt-get -y install gcc-${GCC_VERSION} g++-${GCC_VERSION} gcc-${GCC_VERSION}-multilib g++-${GCC_VERSION}-multilib
#update-alternatives --remove-all gcc
#update-alternatives --remove-all g++
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${GCC_VERSION} 60 --slave /usr/bin/g++ g++ /usr/bin/g++-${GCC_VERSION}
update-alternatives --config gcc
export CC=gcc-${GCC_VERSION}
export CXX=g++-${GCC_VERSION}
else
apt-get -y install build-essential gcc-multilib g++-multilib
export CC=cc
export CXX=c++
fi
apt-get -y autoremove
apt-get -y clean
apt-get -y autoclean
# show the tool and compiler versions we're using
echo "=== Compiler and tool variables ==="
ninja --version
cmake --version
${CC} --version
${CXX} --version
echo "export CC=$CC\nexport CXX=$CXX\n" >> "sol2.compiler.vars"
cd "${top_level_dir}"