First Commit
This commit is contained in:
207
externals/cryptopp/TestScripts/install-ndk.sh
vendored
Normal file
207
externals/cryptopp/TestScripts/install-ndk.sh
vendored
Normal file
@@ -0,0 +1,207 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
#############################################################################
|
||||
# Tests Android cross-compiles
|
||||
#
|
||||
# This script installs a SDK and NDK to test Android cross-compiles.
|
||||
#
|
||||
# Written and placed in public domain by Jeffrey Walton
|
||||
#
|
||||
# Crypto++ Library is copyrighted as a compilation and (as of version 5.6.2)
|
||||
# licensed under the Boost Software License 1.0, while the individual files
|
||||
# in the compilation are all public domain.
|
||||
#
|
||||
# See http://www.cryptopp.com/wiki/Android_(Command_Line) for more details
|
||||
#############################################################################
|
||||
|
||||
# NDK-r19: https://dl.google.com/android/repository/android-ndk-r19c-linux-x86_64.zip
|
||||
# SDK for r19: https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
|
||||
# SDK for Mac: https://dl.google.com/android/repository/sdk-tools-mac-4333796.zip
|
||||
|
||||
# NDK-r20: https://dl.google.com/android/repository/android-ndk-r20b-linux-x86_64.zip
|
||||
# SDK for r20: https://dl.google.com/android/repository/commandlinetools-linux-6200805_latest.zip
|
||||
# SDK for Mac: https://dl.google.com/android/repository/commandlinetools-mac-6200805_latest.zip
|
||||
|
||||
# NDK-r21: https://dl.google.com/android/repository/android-ndk-r21-linux-x86_64.zip
|
||||
# SDK for r21: https://dl.google.com/android/repository/commandlinetools-linux-6200805_latest.zip
|
||||
# SDK for Mac: https://dl.google.com/android/repository/commandlinetools-mac-6200805_latest.zip
|
||||
|
||||
# NDK-r22: https://dl.google.com/android/repository/android-ndk-r22-linux-x86_64.zip
|
||||
# SDK for r22: https://dl.google.com/android/repository/commandlinetools-linux-6858069_latest.zip
|
||||
# SDK for Mac: https://dl.google.com/android/repository/commandlinetools-mac-6858069_latest.zip
|
||||
|
||||
# Platform tools
|
||||
# Linux: https://dl.google.com/android/repository/platform-tools-latest-linux.zip
|
||||
# Mac: https://dl.google.com/android/repository/platform-tools-latest-darwin.zip
|
||||
# Windows: https://dl.google.com/android/repository/platform-tools-latest-windows.zip
|
||||
|
||||
function cleanup {
|
||||
# Cleanup downloads
|
||||
rm -f android-sdk.zip android-ndk.zip platform-tools.zip
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
if [ -z "${ANDROID_SDK_ROOT}" ]; then
|
||||
echo "ERROR: ANDROID_SDK_ROOT is not set for ${USER}. Please set it."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "${ANDROID_NDK_ROOT}" ]; then
|
||||
echo "ERROR: ANDROID_NDK_ROOT is not set for ${USER}. Please set it."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Temp directory
|
||||
if [[ -z "${TMPDIR}" ]]; then
|
||||
TMPDIR="$HOME/tmp"
|
||||
mkdir -p "${TMPDIR}"
|
||||
if [ -n "${SUDO_USER}" ]; then
|
||||
chown -R "${SUDO_USER}" "${TMPDIR}"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Install Android deps
|
||||
if [[ -z "$(command -v java 2>/dev/null)" && -n "$(command -v apt-get 2>/dev/null)" ]]; then
|
||||
apt-get -qq update 2>/dev/null || true
|
||||
apt-get -qq install --no-install-recommends unzip curl wget 2>/dev/null || true
|
||||
|
||||
if [[ -n "$(apt-cache search openjdk-13-jdk 2>/dev/null | head -n 1)" ]]; then
|
||||
apt-get -qq install --no-install-recommends openjdk-13-jdk 2>/dev/null || true
|
||||
elif [[ -n "$(apt-cache search openjdk-8-jdk 2>/dev/null | head -n 1)" ]]; then
|
||||
apt-get -qq install --no-install-recommends openjdk-8-jdk 2>/dev/null || true
|
||||
fi
|
||||
elif [[ -z "$(command -v java 2>/dev/null)" && -n "$(command -v dnf 2>/dev/null)" ]]; then
|
||||
dnf update 2>/dev/null || true
|
||||
dnf install unzip curl wget 2>/dev/null || true
|
||||
|
||||
if [[ -n "$(dnf search java-latest-openjdk-devel 2>/dev/null | head -n 1)" ]]; then
|
||||
dnf install java-latest-openjdk-devel 2>/dev/null || true
|
||||
elif [[ -n "$(dnf search java-11-openjdk-devel 2>/dev/null | head -n 1)" ]]; then
|
||||
dnf install java-11-openjdk-devel 2>/dev/null || true
|
||||
fi
|
||||
elif [[ -z "$(command -v java 2>/dev/null)" && -n "$(command -v yum 2>/dev/null)" ]]; then
|
||||
yum update 2>/dev/null || true
|
||||
yum install unzip curl wget 2>/dev/null || true
|
||||
|
||||
if [[ -n "$(yum search java-latest-openjdk-devel 2>/dev/null | head -n 1)" ]]; then
|
||||
yum install java-latest-openjdk-devel 2>/dev/null || true
|
||||
elif [[ -n "$(yum search java-11-openjdk-devel 2>/dev/null | head -n 1)" ]]; then
|
||||
yum install java-11-openjdk-devel 2>/dev/null || true
|
||||
fi
|
||||
fi
|
||||
|
||||
# User feedback
|
||||
#echo "ANDROID_NDK_ROOT is '${ANDROID_NDK_ROOT}'"
|
||||
#echo "ANDROID_SDK_ROOT is '${ANDROID_SDK_ROOT}'"
|
||||
|
||||
IS_DARWIN=$(uname -s 2>/dev/null | grep -i -c darwin)
|
||||
IS_LINUX=$(uname -s 2>/dev/null | grep -i -c linux)
|
||||
|
||||
# Change NDK_NAME as required
|
||||
NDK_NAME=android-ndk-r20b
|
||||
NDK_TOP=$(dirname "${ANDROID_NDK_ROOT}")
|
||||
|
||||
# Keep this in sync with the move at the end.
|
||||
if [ "$IS_LINUX" -eq 1 ]; then
|
||||
NDK_URL=https://dl.google.com/android/repository/${NDK_NAME}-linux-x86_64.zip
|
||||
SDK_URL=https://dl.google.com/android/repository/commandlinetools-linux-6200805_latest.zip
|
||||
TOOLS_URL=https://dl.google.com/android/repository/platform-tools-latest-linux.zip
|
||||
elif [ "$IS_DARWIN" -eq 1 ]; then
|
||||
NDK_URL=https://dl.google.com/android/repository/${NDK_NAME}-darwin-x86_64.zip
|
||||
SDK_URL=https://dl.google.com/android/repository/commandlinetools-mac-6200805_latest.zip
|
||||
TOOLS_URL=https://dl.google.com/android/repository/platform-tools-latest-darwin.zip
|
||||
else
|
||||
echo "Unknown platform: \"$(uname -s 2>/dev/null)\". Please fix this script."
|
||||
fi
|
||||
|
||||
echo "Downloading SDK"
|
||||
if ! curl -L -s -o android-sdk.zip "${SDK_URL}";
|
||||
then
|
||||
echo "Failed to download SDK"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Downloading NDK"
|
||||
if ! curl -L -s -o android-ndk.zip "${NDK_URL}";
|
||||
then
|
||||
echo "Failed to download NDK"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Downloading Platform Tools"
|
||||
if ! curl -L -s -o platform-tools.zip "${TOOLS_URL}";
|
||||
then
|
||||
echo "Failed to download Platform Tools"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Android SDK does not include a top level directory
|
||||
echo "Unpacking SDK to ${ANDROID_SDK_ROOT}"
|
||||
if ! unzip -u -qq android-sdk.zip -d "${ANDROID_SDK_ROOT}";
|
||||
then
|
||||
echo "Failed to unpack SDK"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Android NDK includes top level NDK_NAME directory
|
||||
echo "Unpacking NDK to ${NDK_TOP}/${NDK_NAME}"
|
||||
if ! unzip -u -qq android-ndk.zip -d "${NDK_TOP}";
|
||||
then
|
||||
echo "Failed to unpack NDK"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Unpacking Platform Tools to ${ANDROID_SDK_ROOT}"
|
||||
if ! unzip -u -qq platform-tools.zip -d "${ANDROID_SDK_ROOT}";
|
||||
then
|
||||
echo "Failed to unpack Platform Tools"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Unlink as needed
|
||||
if [[ -e "${ANDROID_NDK_ROOT}" ]]; then
|
||||
ls_output=$(ls -l "${ANDROID_NDK_ROOT}" 2>/dev/null | head -n 1)
|
||||
# Only remove soft links
|
||||
if [[ ${ls_output:0:1} == "l" ]]; then
|
||||
unlink "${ANDROID_NDK_ROOT}"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Create softlink
|
||||
(
|
||||
echo "Symlinking ${NDK_NAME} to android-ndk"
|
||||
cd ${NDK_TOP} || exit 1
|
||||
if ! ln -s "${NDK_NAME}" android-ndk; then
|
||||
echo "Failed to link ${NDK_NAME} to android-ndk"
|
||||
fi
|
||||
)
|
||||
|
||||
# We don't set ANDROID_HOME to ANDROID_SDK_ROOT.
|
||||
# https://stackoverflow.com/a/47028911/608639
|
||||
touch "${ANDROID_SDK_ROOT}/repositories.cfg"
|
||||
|
||||
# And https://stackoverflow.com/q/43433542
|
||||
mkdir -p "${HOME}/.android"
|
||||
touch "${HOME}/.android/repositories.cfg"
|
||||
|
||||
if [[ -n "${SUDO_USER}" ]]; then
|
||||
chown -R "${SUDO_USER}" "${HOME}/.android"
|
||||
fi
|
||||
|
||||
count=$(ls -1 "${ANDROID_SDK_ROOT}" 2>/dev/null | wc -l)
|
||||
if [[ "${count}" -lt 2 ]]; then
|
||||
echo "ANDROID_SDK_ROOT appears empty. The contents are listed."
|
||||
echo "$(ls "${ANDROID_SDK_ROOT}")"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
count=$(ls -1 "${ANDROID_NDK_ROOT}" 2>/dev/null | wc -l)
|
||||
if [[ "${count}" -lt 2 ]]; then
|
||||
echo "ANDROID_NDK_ROOT appears empty. The contents are listed."
|
||||
echo "$(ls "${ANDROID_NDK_ROOT}")"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Finished installing SDK and NDK"
|
||||
|
||||
exit 0
|
||||
Reference in New Issue
Block a user