diff --git a/scripts/build_lib.sh b/scripts/build_lib.sh new file mode 100755 index 0000000..332a5ef --- /dev/null +++ b/scripts/build_lib.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +# This script is used to locally build Android .aar library and iOS .xcframework from ctrld source using go mobile tool. + +# Requirements: +# - Android NDK (version 23+) +# - Android SDK (version 33+) +# - Xcode 15 + Build tools +# - Go 1.21 +# - Git +# usage: $ ./build_lib.sh v1.3.4 + +TAG="$1" +# Hacky way to replace version info. +update_versionInfo() { + local file="$1/ctrld/cmd/cli/cli.go" + local tag="$2" + local commit="$3" + awk -v tag="$tag" -v commit="$commit" ' + BEGIN { version_updated = 0; commit_updated = 0 } + /^\tversion/ { + sub(/= ".+"/, "= \"" tag "\""); + version_updated = 1; + } + /^\tcommit/ { + sub(/= ".+"/, "= \"" commit "\""); + commit_updated = 1; + } + { print } + END { + if (version_updated == 0) { + print "\tversion = \"" tag "\""; + } + if (commit_updated == 0) { + print "\tcommit = \"" commit "\""; + } + } + ' "$file" > "$file.tmp" && mv "$file.tmp" "$file" +} +export ANDROID_NDK_HOME=~/Library/Android/sdk/ndk/23.0.7599858 +mkdir bin +cd bin || exit +root=$(pwd) +# Get source from github and switch to tag +git clone --depth 1 --branch "$TAG" https://github.com/Control-D-Inc/ctrld.git +# Prepare gomobile tool +sourcePath=./ctrld/cmd/ctrld_library +cd $sourcePath || exit +go mod tidy +go install golang.org/x/mobile/cmd/gomobile@latest +go get golang.org/x/mobile/bind +gomobile init +# Prepare build info +buildDir=$root/../build +mkdir -p "$buildDir" +COMMIT=$(git rev-parse HEAD) +update_versionInfo "$root" "$TAG" "$COMMIT" +ldflags="-s -w" +# Build +gomobile bind -target ios/arm64 -ldflags="$ldflags" -o "$buildDir"/ctrld-"$TAG".xcframework || exit +gomobile bind -ldflags="$ldflags" -o "$buildDir"/ctrld-"$TAG".aar || exit +# Clean up +rm -r "$root" +echo "Successfully built Ctrld library $TAG($COMMIT)." \ No newline at end of file