summaryrefslogtreecommitdiff
path: root/tcwg-llvm-release.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tcwg-llvm-release.sh')
-rwxr-xr-xtcwg-llvm-release.sh50
1 files changed, 36 insertions, 14 deletions
diff --git a/tcwg-llvm-release.sh b/tcwg-llvm-release.sh
index 5e1b5433..3acaf5cc 100755
--- a/tcwg-llvm-release.sh
+++ b/tcwg-llvm-release.sh
@@ -15,7 +15,7 @@ BASEDIR=$(dirname "$(readlink -f "$0")")
# Syntax
SYN_WORKSPACE="--workspace=/path/to/workspace"
SYN_RELEASE="--release=M.m.p"
-SYN_CANDIDATE="--candidate=N (or 'final' or 'branch=*')"
+SYN_CANDIDATE="--candidate=N (or 'final' or 'git-ref=*')"
SYN_BUILDJOBS="--buildjobs=N (def. CPUS)"
SYN_TOOLCHAIN="--toolchain=http://url/for/tarball"
SYN_TOOLCHAIN_FILE="--toolchain-file=<file-name> (file name to copy the produced toolchain file name)"
@@ -25,7 +25,9 @@ SYNTAX="$0 $SYN_WORKSPACE $SYN_RELEASE $SYN_CANDIDATE $SYN_TOOLCHAIN $SYN_TOOLCH
# Environment Variables and default values
WORKSPACE=$(pwd)
+GITREF=""
RELEASE=""
+RELCALL=""
CANDIDATE=""
RCCALL=""
RCTAG=""
@@ -43,10 +45,15 @@ while [ "$#" -gt 0 ]; do
case "$ARG" in
--release)
RELEASE="$VAL"
- if ! echo "$RELEASE" | grep -E -q "^[0-9]+\\.[0-9]\\.[0-9]"; then
+ if test -z "$RELEASE"; then
+ # The release can be empty if we're building a git ref.
+ echo "No release specified"
+ elif ! echo "$RELEASE" | grep -E -q "^[0-9]+\\.[0-9]\\.[0-9]"; then
echo "ERROR: $1"
echo "Syntax: $SYN_RELEASE"
exit 1
+ else
+ RELCALL="-release $RELEASE"
fi
shift ;;
--candidate)
@@ -120,8 +127,13 @@ while [ "$#" -gt 0 ]; do
done
# Validate options
-if [ "$RELEASE" = "" ] || [ "$CANDIDATE" = "" ]; then
- echo "ERROR: Missing release or candidate"
+if [ "$CANDIDATE" = "" ]; then
+ echo "ERROR: Missing candidate"
+ echo "$SYNTAX"
+ exit 1
+fi
+if [ "$RELEASE" = "" ] && [ "$GITREF" = "" ]; then
+ echo "ERROR: Missing release or git ref"
echo "$SYNTAX"
exit 1
fi
@@ -140,22 +152,24 @@ fi
PLATFORM=$(uname -m)
OPENMP=""
MLIR=""
-FLANG="-flang"
+FLANG=""
TARGET="$PLATFORM-linux-gnu"
-LIMITLINKJOBS=""
-if echo "$PLATFORM" | grep -qi "armv7"; then
+EXTRA_CONFIG_ARGS="-DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON "
+if echo "$PLATFORM" | grep -i "armv7" >/dev/null; then
TARGET="armv7a-linux-gnueabihf"
OPENMP="-no-openmp"
MLIR="-no-mlir"
- FLANG=""
+ FLANG="-no-flang"
if [ x"$USENINJA" != x"" ]; then
- LIMITLINKJOBS="-configure-flags -DLLVM_PARALLEL_LINK_JOBS=$LINKJOBS"
+ EXTRA_CONFIG_ARGS="$EXTRA_CONFIG_ARGS -DLLVM_PARALLEL_LINK_JOBS=$LINKJOBS -DLLVM_LIT_ARGS=-v -DCOMPILER_RT_USE_LLVM_UNWINDER=ON"
fi
-elif ! echo "$PLATFORM" | grep -qi "aarch64" && \
- ! echo "$PLATFORM" | grep -qi "x86_64"; then
+elif echo "$PLATFORM" | grep -i "aarch64" >/dev/null; then
+ EXTRA_CONFIG_ARGS="$EXTRA_CONFIG_ARGS -DLLVM_LIT_ARGS=-vj16"
+elif ! echo "$PLATFORM" | grep -i "x86_64" >/dev/null; then
echo "ERROR: Don't recognise PLATFORM $PLATFORM"
exit 1
fi
+EXTRA_CONFIG_ARGS="$EXTRA_CONFIG_ARGS -DCMAKE_C_COMPILER_TARGET=$TARGET"
# Dump
echo "RELEASE = $RELEASE"
@@ -175,7 +189,11 @@ LOGEXT="txt"
# Release script
RELEASE_SCRIPT="test-release.sh"
-RELEASE_TAG="llvmorg-${RELEASE}${RCTAG}"
+if test -z "$RELEASE"; then
+ RELEASE_TAG="$GITREF"
+else
+ RELEASE_TAG="llvmorg-${RELEASE}${RCTAG}"
+fi
SCRIPT_URL=https://raw.githubusercontent.com/llvm/llvm-project/$RELEASE_TAG/llvm/utils/release/$RELEASE_SCRIPT
(
cd "$WORKSPACE"
@@ -188,11 +206,15 @@ SCRIPT_URL=https://raw.githubusercontent.com/llvm/llvm-project/$RELEASE_TAG/llvm
# - we want to push the binary public on success or failre
result=0
(
- cd "$WORKSPACE" && LC_ALL=C ./$RELEASE_SCRIPT -release $RELEASE $RCCALL -triple $TARGET -j$BUILDJOBS $OPENMP $MLIR $FLANG $USENINJA $LIMITLINKJOBS |& tee "$LOGBASE-release.$LOGEXT"
+ cd "$WORKSPACE" && ulimit -n 65536 && LC_ALL=C ./$RELEASE_SCRIPT $RELCALL $RCCALL -triple $TARGET -j$BUILDJOBS $OPENMP $MLIR $FLANG $USENINJA -configure-flags "$EXTRA_CONFIG_ARGS" |& tee "$LOGBASE-release.$LOGEXT"
) &
wait $! || result=$?
-PKGTAG="$RELEASE$RCTAG"
+if test -z "$RELEASE"; then
+ PKGTAG="$GITREF"
+else
+ PKGTAG="$RELEASE$RCTAG"
+fi
PKGNAME="$(push_binary_name "$PKGTAG" "$TARGET")"
PUSHTYPE="releases"
PUSHDIR="$(push_binary_dir "$PUSHTYPE")"