50 lines
2.0 KiB
Bash
50 lines
2.0 KiB
Bash
|
#!/usr/bin/env bash
|
||
|
|
||
|
export LC_ALL=C
|
||
|
set -o pipefail
|
||
|
|
||
|
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
||
|
CLANG_PACKAGE="$SCRIPT_DIR/../../depends/packages/native_clang.mk"
|
||
|
LIBCXX_PACKAGE="$SCRIPT_DIR/../../depends/packages/libcxx.mk"
|
||
|
|
||
|
CLANG_MAJOR_VERSION=$( cat $CLANG_PACKAGE | grep -oP "_major_version=\K.*" )
|
||
|
CLANG_VERSION=$( cat $CLANG_PACKAGE | grep -v _major_version | grep -oP "_version=\K.*" )
|
||
|
LIBCXX_MSYS2_VERSION=$( cat $LIBCXX_PACKAGE | grep -oP "_msys2_version=\K.*" )
|
||
|
|
||
|
update_clang_hash() {
|
||
|
url="https://github.com/llvm/llvm-project/releases/download/llvmorg-$CLANG_VERSION/clang+llvm-$CLANG_VERSION-$1.tar.xz"
|
||
|
echo "Fetching $url"
|
||
|
hash=$( curl -fL $url | sha256sum | awk '{print $1}' )
|
||
|
retVal=$?
|
||
|
if [ $retVal -ne 0 ]; then
|
||
|
if [ $retVal -eq 22 ]; then
|
||
|
echo
|
||
|
echo "The LLVM project has not published a $CLANG_VERSION build for $1."
|
||
|
echo "You will need to manually fix the Makefile to use a different version."
|
||
|
echo
|
||
|
fi
|
||
|
else
|
||
|
sed -i "/\$(package)_sha256_hash_$2=/c\\\$(package)_sha256_hash_$2=$hash" $CLANG_PACKAGE
|
||
|
sed -i "/\$(package)_sha256_hash_$2=/c\\\$(package)_sha256_hash_$2=$hash" $LIBCXX_PACKAGE
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
update_libcxx_msys2_hash() {
|
||
|
url="https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-$1-$LIBCXX_MSYS2_VERSION-any.pkg.tar.zst"
|
||
|
echo "Fetching $url"
|
||
|
hash=$( curl -fL $url | sha256sum | awk '{print $1}' )
|
||
|
sed -i "/\$(package)_$2=/c\\\$(package)_$2=$hash" $LIBCXX_PACKAGE
|
||
|
}
|
||
|
|
||
|
# For native targets
|
||
|
# update_clang_hash CLANG_COMPILED_TARGET MAKEFILE_PACKAGE_IDENTIFIER
|
||
|
update_clang_hash aarch64-linux-gnu aarch64_linux
|
||
|
update_clang_hash x86_64-apple-darwin darwin
|
||
|
update_clang_hash x86_64-linux-gnu-ubuntu-18.04 linux
|
||
|
update_clang_hash amd64-unknown-freebsd12 freebsd
|
||
|
|
||
|
# For Windows cross-compilation
|
||
|
# update_libcxx_msys2_hash LIBCXX_LIBRARY MAKEFILE_HASH_SUFFIX
|
||
|
update_libcxx_msys2_hash libc++ sha256_hash
|
||
|
update_libcxx_msys2_hash libc++abi libcxxabi_sha256_hash
|