mirror of
https://github.com/Control-D-Inc/ctrld.git
synced 2026-02-03 22:18:39 +00:00
64 lines
1.9 KiB
Bash
Executable File
64 lines
1.9 KiB
Bash
Executable File
#!/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)." |