emerald-gcc/common.sh

55 lines
1.5 KiB
Bash

#!/usr/bin/env bash
TARGET=aarch64-linux-android
export PREFIX=/tmp/"$TARGET"-emerald
export CFLAGS="-O3"
export CPPFLAGS="$CFLAGS"
export CXXFLAGS="$CFLAGS -static-libgcc -static-libstdc++"
export LDFLAGS="-s -w"
export CFLAGS_FOR_TARGET="$CFLAGS"
export CPPFLAGS_FOR_TARGET="$CFLAGS"
export CXXFLAGS_FOR_TARGET="$CFLAGS"
export LDFLAGS_FOR_TARGET="$LDFLAGS"
download() {
if [ $# != 3 ]; then
echo "download(): Invalid arguments - expected \$URL \$DESTINATION \$CHECKSUM"
return 1
fi
local URL="$1"
local DESTINATION="$2"
local CHECKSUM="$3"
if [ -f "$DESTINATION" ] && [ "$CHECKSUM" != "SKIP_CHECKSUM" ]; then
# Keep existing file if checksum matches.
local EXISTING_CHECKSUM
EXISTING_CHECKSUM=$(sha256sum "$DESTINATION" | cut -f 1 -d ' ')
if [ "$EXISTING_CHECKSUM" = "$CHECKSUM" ]; then return; fi
fi
local TMPFILE
TMPFILE=$(mktemp "${TMPDIR:-/tmp}/download.emerald-dl.XXXXXXXXX")
echo "Downloading ${URL}"
if curl --fail --retry 20 --retry-connrefused --retry-delay 30 --location --output "$TMPFILE" "$URL"; then
local ACTUAL_CHECKSUM
ACTUAL_CHECKSUM=$(sha256sum "$TMPFILE" | cut -f 1 -d ' ')
if [ "$CHECKSUM" != "SKIP_CHECKSUM" ]; then
if [ "$CHECKSUM" != "$ACTUAL_CHECKSUM" ]; then
printf >&2 "Wrong checksum for %s:\nExpected: %s\nFound: %s\n" \
"$URL" "$ACTUAL_CHECKSUM" "$CHECKSUM"
return 1
fi
elif [ -z "$CHECKSUM" ]; then
printf "WARNING: No checksum check for %s:\nExpected: %s\n" \
"$URL" "$ACTUAL_CHECKSUM"
fi
mv "$TMPFILE" "$DESTINATION"
return 0
fi
echo "Failed to download $URL" >&2
return 1
}