url="https://github.com/fortanix/llvm-project/archive/${1}.tar.gz"
repo_name="llvm-project"
-install_prereq()
-{
+install_prereq() {
apt-get update
apt-get install -y --no-install-recommends \
build-essential \
git
}
-# Clone Fortanix's port of llvm-project to build libunwind that would link with this target.
-# The below method to download a single commit from llvm-project is based on fetch_submodule
-# from init_repo.sh
-fetch_llvm_commit()
-{
- cached="download-${repo_name}.tar.gz"
- curl -f -sSL -o ${cached} ${url}
- tar -xvzf ${cached}
- mkdir "./${repo_name}" && tar -xf ${cached} -C ${repo_name} --strip-components 1
-}
-
-build_unwind()
-{
+build_unwind() {
+ set -x
dir_name="${target}_temp"
- rm -rf "./${dir_name}"
+ rm -rf ${dir_name}
mkdir -p ${dir_name}
- cd ${dir_name}
+ pushd ${dir_name}
- retry fetch_llvm_commit
+ # 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_PATH=../../llvm/ ../
+ 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() {
- set +x
+ { set +x; } 2>/dev/null
on_err="
echo ERROR: An error was encountered with the build.
cat /tmp/build.log
set -x
}
+# Copied from ../../shared.sh
function retry {
echo "Attempting with retry:" "$@"
local n=1
}
done
}
+
+# Copied from ../../init_repo.sh
+function fetch_github_commit_archive {
+ local module=$1
+ local cached="download-${module//\//-}.tar.gz"
+ retry sh -c "rm -f $cached && \
+ curl -f -sSL -o $cached $2"
+ mkdir $module
+ touch "$module/.git"
+ tar -C $module --strip-components=1 -xf $cached
+ rm $cached
+}
git fetch origin --unshallow beta master
fi
-function fetch_submodule {
+# Duplicated in docker/dist-various-2/shared.sh
+function fetch_github_commit_archive {
local module=$1
local cached="download-${module//\//-}.tar.gz"
retry sh -c "rm -f $cached && \
- curl -sSL -o $cached $2"
+ curl -f -sSL -o $cached $2"
mkdir $module
touch "$module/.git"
tar -C $module --strip-components=1 -xf $cached
git rm $module
url=${urls[$i]}
url=${url/\.git/}
- fetch_submodule $module "$url/archive/$commit.tar.gz" &
+ fetch_github_commit_archive $module "$url/archive/$commit.tar.gz" &
continue
else
use_git="$use_git $module"
# marked as an executable file in git.
# See http://unix.stackexchange.com/questions/82598
+# Duplicated in docker/dist-various-2/shared.sh
function retry {
echo "Attempting with retry:" "$@"
local n=1