62 lines
1.8 KiB
Bash
62 lines
1.8 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
export TARGET=aarch64-linux-android
|
|
export PREFIX=/tmp/"$TARGET"-emerald
|
|
|
|
export EMERALD_SCRIPT_DIR=$(dirname "$(realpath "$0")")
|
|
export EMERALD_BUILD_DIR="$EMERALD_SCRIPT_DIR"/build
|
|
export EMERALD_DL_DIR="$EMERALD_SCRIPT_DIR"/dl
|
|
|
|
export CC=clang
|
|
export CXX=clang++
|
|
export CFLAGS="-O3 -march=x86-64 -mtune=generic"
|
|
export CPPFLAGS="$CFLAGS"
|
|
export CXXFLAGS="$CFLAGS"
|
|
|
|
export LDFLAGS="-Wl,--as-needed -L/usr/lib -lintl -llzma -s -w -static --static -rtlib=compiler-rt -unwindlib=libunwind"
|
|
|
|
export CFLAGS_FOR_TARGET="$CFLAGS"
|
|
export CPPFLAGS_FOR_TARGET="$CFLAGS"
|
|
export CXXFLAGS_FOR_TARGET="$CFLAGS"
|
|
export LDFLAGS_FOR_TARGET="-s -w"
|
|
|
|
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
|
|
}
|