#!/bin/bash set -euo pipefail if [[ $# -ne 2 ]]; then echo "" 1>&2 echo "Compiler for a Go PACKAGE producing android/ANDROIDARCH binaries." 1>&2 echo "" 1>&2 echo "usage: $0 ANDROIDARCH PACKAGE" 1>&2 echo "" 1>&2 echo "ANDROIDARCH must be one of: 386, amd64, arm, arm64." 1>&2 echo "" 1>&2 echo "Features:" 1>&2 echo "" 1>&2 echo "* automatically sets -tags=ooni_psiphon_config when possible;" 1>&2 echo "" 1>&2 echo "* if GOLANG_EXTRA_FLAGS is set, pass it to the Go compiler." 1>&2 echo "" 1>&2 echo "Example:" 1>&2 echo "" 1>&2 echo " ./CLI/go-build-android arm ./internal/cmd/miniooni" 1>&2 echo "" 1>&2 exit 1 fi GOOS=android ANDROIDARCH=$1 PACKAGE=$2 if [[ -f ./internal/engine/psiphon-config.json.age && -f ./internal/engine/psiphon-config.key ]]; then OONI_PSIPHON_TAGS=ooni_psiphon_config else OONI_PSIPHON_TAGS="" fi PRODUCT=$(basename $PACKAGE) ANDROID_HOME=$(./MOBILE/android/home) NDK_VERSION=$(cat NDKVERSION) ANDROID_NDK_HOME=$ANDROID_HOME/ndk/$NDK_VERSION if [[ $ANDROIDARCH == arm ]]; then GOARCH=arm GOARM=7 CC=$(find $ANDROID_NDK_HOME -type f -name armv7a-linux-androideabi21-clang) CXX=$(find $ANDROID_NDK_HOME -type f -name armv7a-linux-androideabi21-clang++) elif [[ $ANDROIDARCH == arm64 ]]; then GOARCH=$ANDROIDARCH GOARM= CC=$(find $ANDROID_NDK_HOME -type f -name aarch64-linux-android21-clang) CXX=$(find $ANDROID_NDK_HOME -type f -name aarch64-linux-android21-clang++) elif [[ $ANDROIDARCH == 386 ]]; then GOARCH=$ANDROIDARCH GOARM= CC=$(find $ANDROID_NDK_HOME -type f -name i686-linux-android21-clang) CXX=$(find $ANDROID_NDK_HOME -type f -name i686-linux-android21-clang++) elif [[ $ANDROIDARCH == amd64 ]]; then GOARCH=$ANDROIDARCH GOARM= CC=$(find $ANDROID_NDK_HOME -type f -name x86_64-linux-android21-clang) CXX=$(find $ANDROID_NDK_HOME -type f -name x86_64-linux-android21-clang++) else echo "FATAL: invalid ANDROIDARCH: $ANDROIDARCH" 1>&2 exit 1 fi set -x export CC=$CC export CXX=$CXX export CGO_ENABLED=1 export GOOS=$GOOS export GOARCH=$GOARCH export GOARM=$GOARM go build -tags=$OONI_PSIPHON_TAGS -ldflags="-s -w" \ -o ./CLI/$PRODUCT-$GOOS-$ANDROIDARCH ${GOLANG_EXTRA_FLAGS:-} \ $PACKAGE