#!/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 }