62 lines
1.5 KiB
Bash
Executable File
62 lines
1.5 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
|
|
|
|
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
|
|
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 -tags="$OONI_PSIPHON_TAGS" \
|
|
-ldflags '-s -w' ${GOLANG_EXTRA_FLAGS:-} $PACKAGE
|