cheri-security / MorelloLinux / exampleCode / .gitlab / build-aarch64-llvm.sh
build-aarch64-llvm.sh
Raw
#!/bin/bash

set -xe

sudo apt update -q=2
sudo apt install -q=2 --yes --no-install-recommends --no-install-suggests wget

export MORELLOIE_PREFIX=${HOME}/morelloie
export MORELLOIE=${MORELLOIE_PREFIX}/bin/morelloie

# Install Morello IE
rm -rf ${HOME}/morelloie-* ${MORELLOIE_PREFIX}
wget -q ${MORELLOIE_DOWNLOAD_URL}/morelloie-${MORELLOIE_VERSION}.tgz.sh -O ${HOME}/morelloie-${MORELLOIE_VERSION}.tgz.sh
bash ${HOME}/morelloie-${MORELLOIE_VERSION}.tgz.sh --i-agree-to-the-contained-eula --prefix=${MORELLOIE_PREFIX}

# Install Morello LLVM
export LLVM_PREFIX=${HOME}/llvm
rm -rf ${LLVM_PREFIX}
mkdir -p ${LLVM_PREFIX}
pushd ${LLVM_PREFIX}
git init
repo=https://git.morello-project.org/morello/llvm-project-releases.git
branch=morello/linux-aarch64-release-${MORELLO_LLVM_VERSION}
git fetch -- ${repo} +refs/heads/${branch}:refs/remotes/origin/${branch}
git checkout origin/${branch} -b ${branch}
popd

# Checkout Musl sources
export MUSL_SOURCES=${HOME}/musl
rm -rf ${MUSL_SOURCES}
mkdir -p ${MUSL_SOURCES}
pushd ${MUSL_SOURCES}
git init
repo=https://git.morello-project.org/morello/musl-libc.git
gitref=${MUSL_GITREF}
git fetch -- ${repo} +refs/heads/${gitref}:refs/remotes/origin/${gitref}
git checkout origin/${gitref} -b ${gitref}
popd

# Build Musl Sysroot for Purecap
export MUSL_PREFIX_PURECAP=${HOME}/musl-sysroot-purecap
pushd ${MUSL_SOURCES}
make distclean
CC=${LLVM_PREFIX}/bin/clang ./configure --prefix=${MUSL_PREFIX_PURECAP} --target=aarch64-linux-musl_purecap
make -j8
make install
popd

# Build Musl Sysroot for Hybrid
export MUSL_PREFIX_HYBRID=${HOME}/musl-sysroot-hybrid
pushd ${MUSL_SOURCES}
make distclean
CC=${LLVM_PREFIX}/bin/clang ./configure --prefix=${MUSL_PREFIX_HYBRID} --disable-morello --target=aarch64-linux-gnu
make -j8
make install
popd


# Build and test:
touch config.make
make distclean
./configure CC=${LLVM_PREFIX}/bin/clang --sysroot=${MUSL_PREFIX_PURECAP} --sysroot-hybrid=${MUSL_PREFIX_HYBRID}
make
make test TEST_RUNNER="${MORELLOIE} --"