Files
SpotiFLAC-Mobile/scripts/build_ios.sh
T

46 lines
1.1 KiB
Bash

#!/usr/bin/env bash
# Build the Go backend XCFramework used by SpotiFLAC Mobile on iOS.
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
GO_BACKEND_DIR="$PROJECT_DIR/go_backend"
OUTPUT_DIR="$PROJECT_DIR/ios/Frameworks"
echo "SpotiFLAC Mobile iOS backend build"
echo "Project: $PROJECT_DIR"
echo "Output: $OUTPUT_DIR"
if [[ "$(uname)" != "Darwin" ]]; then
echo "Error: this script must run on macOS with Xcode installed." >&2
exit 1
fi
if ! command -v go >/dev/null 2>&1; then
echo "Error: Go is not installed." >&2
exit 1
fi
cd "$GO_BACKEND_DIR"
go mod download
# Running inside the module installs the x/mobile revision pinned by go.mod.
go install golang.org/x/mobile/cmd/gomobile
export PATH="$(go env GOPATH)/bin:$PATH"
gomobile init
mkdir -p "$OUTPUT_DIR"
gomobile bind \
-target=ios \
-tags ios \
-o "$OUTPUT_DIR/Gobackend.xcframework" \
.
if [[ ! -d "$OUTPUT_DIR/Gobackend.xcframework" ]]; then
echo "Error: Gobackend.xcframework was not created." >&2
exit 1
fi
echo "Built $OUTPUT_DIR/Gobackend.xcframework"