0d57899f46
See https://github.com/ooni/probe/issues/2119 While there, shrink the Makefile to only export the minimum set of rules to comfortable build using GHA.
79 lines
1.9 KiB
Bash
Executable File
79 lines
1.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -euo pipefail
|
|
|
|
if [[ $# -ne 2 ]]; then
|
|
echo "" 1>&2
|
|
echo "Calls gomobile for either Android or iOS to build PACKAGE." 1>&2
|
|
echo "" 1>&2
|
|
echo "usage: $0 TARGET PACKAGE" 1>&2
|
|
echo "" 1>&2
|
|
echo "TARGET must be one of: android, ios." 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 " ./MOBILE/gomobile android ./pkg/oonimkall" 1>&2
|
|
echo "" 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
TARGET=$1
|
|
PACKAGE=$2
|
|
|
|
if [[ $TARGET == "android" ]]; then
|
|
EXT="aar"
|
|
elif [[ $TARGET == "ios" ]]; then
|
|
EXT="xcframework"
|
|
else
|
|
echo "FATAL: unsupported target: $TARGET" 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
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
|
|
|
|
if [[ $TARGET == "android" ]]; then
|
|
ANDROID_HOME=$(./MOBILE/android/home)
|
|
NDK_VERSION=$(cat NDKVERSION)
|
|
ANDROID_NDK_HOME=$ANDROID_HOME/ndk/$NDK_VERSION
|
|
MAYBE_ANDROID_API="-androidapi 21"
|
|
else
|
|
ANDROID_HOME=""
|
|
ANDROID_NDK_HOME=""
|
|
MAYBE_ANDROID_API=""
|
|
fi
|
|
|
|
PRODUCT=$(basename $PACKAGE)
|
|
|
|
function cleanup() {
|
|
# Undoes the effects of go-getting golang.org/x/mobile/cmd/gomobile
|
|
go mod tidy
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
set -x
|
|
|
|
# for documenting the environ variables used by the build
|
|
export ANDROID_HOME=$ANDROID_HOME
|
|
export ANDROID_NDK_HOME=$ANDROID_NDK_HOME
|
|
|
|
go install golang.org/x/mobile/cmd/gomobile@latest
|
|
$(go env GOPATH)/bin/gomobile init
|
|
# Adding gomobile to go.mod as documented by golang.org/wiki/Mobile
|
|
go get -d golang.org/x/mobile/cmd/gomobile
|
|
|
|
$(go env GOPATH)/bin/gomobile bind -target $TARGET \
|
|
-o ./MOBILE/$TARGET/$PRODUCT.$EXT $MAYBE_ANDROID_API \
|
|
-tags="$OONI_PSIPHON_TAGS" \
|
|
-ldflags '-s -w' ${GOLANG_EXTRA_FLAGS:-} $PACKAGE
|