#!/bin/bash set -eu source shared.sh if [ -z "$1" ]; then echo "Usage: ${0} " exit -1 fi target="x86_64-fortanix-unknown-sgx" url="https://github.com/fortanix/llvm-project/archive/${1}.tar.gz" repo_name="llvm-project" install_prereq() { apt-get update apt-get install -y --no-install-recommends \ build-essential \ ca-certificates \ cmake \ git } build_unwind() { set -x dir_name="${target}_temp" rm -rf ${dir_name} mkdir -p ${dir_name} pushd ${dir_name} # Clone Fortanix's fork of llvm-project which has a port of libunwind fetch_github_commit_archive "$repo_name" "$url" cd "${repo_name}/libunwind" # Build libunwind mkdir -p build cd build cmake -DCMAKE_BUILD_TYPE="RELEASE" -DRUST_SGX=1 -G "Unix Makefiles" \ -DLLVM_ENABLE_WARNINGS=1 -DLIBUNWIND_ENABLE_WERROR=1 -DLIBUNWIND_ENABLE_PEDANTIC=0 \ -DLLVM_PATH=../../llvm/ ../ make unwind_static install -D "lib/libunwind.a" "/${target}/lib/libunwind.a" popd rm -rf ${dir_name} { set +x; } 2>/dev/null } set -x hide_output install_prereq build_unwind