Files
libgofunc/build_lib.sh

85 lines
3.2 KiB
Bash
Raw Permalink Normal View History

2026-03-16 22:42:30 +06:30
#!/bin/bash
2026-03-18 16:58:38 +06:30
APP_NAME="libgofunc"
2026-03-18 17:20:47 +06:30
VERSION="${1:-v0.1.1}"
2026-03-18 16:58:38 +06:30
OUTPUT_DIR="assets"
BUILD_DIR="build"
2026-03-16 22:42:30 +06:30
# need Android NDK
NDK_HOME="$HOME/Android/Sdk/ndk/28.2.13676358" # <--- CHECK YOUR VERSION
API=21
TOOLCHAIN="$NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin"
2026-03-18 14:36:16 +06:30
OS="$(uname -s)"
2026-03-16 22:42:30 +06:30
2026-03-18 14:36:16 +06:30
if [ "$OS" = "Darwin" ]; then
export IOS_SDK=$(xcrun --sdk iphoneos --show-sdk-path)
export IOS_SIM_SDK=$(xcrun --sdk iphonesimulator --show-sdk-path)
2026-03-16 22:42:30 +06:30
2026-03-18 14:36:16 +06:30
echo "Building for iOS arm64..."
GOOS=ios GOARCH=arm64 CGO_ENABLED=1 \
CC="$(xcrun --sdk iphoneos --find clang)" \
CGO_CFLAGS="-isysroot $IOS_SDK -arch arm64" \
CGO_LDFLAGS="-isysroot $IOS_SDK -arch arm64" \
go build -buildmode=c-archive -o build/ios/device/libgofunc_arm64.a .
2026-03-16 22:42:30 +06:30
2026-03-18 14:36:16 +06:30
GOOS=ios GOARCH=amd64 CGO_ENABLED=1 \
CC="$(xcrun --sdk iphonesimulator --find clang)" \
CGO_CFLAGS="-isysroot $IOS_SIM_SDK -arch x86_64" \
CGO_LDFLAGS="-isysroot $IOS_SIM_SDK -arch x86_64" \
go build -buildmode=c-archive -o build/ios/sim/libgofunc_arm64_sim.a .
2026-03-16 22:42:30 +06:30
2026-03-18 14:36:16 +06:30
# xcodebuild -create-xcframework \
# -library build/ios/device/libgofunc_arm64.a -headers build/ios/device/ \
# -library build/ios/sim/libgofunc_arm64_sim.a -headers build/ios/sim/ \
# -output build/libgofunc.xcframework
2026-03-16 22:42:30 +06:30
2026-03-18 14:36:16 +06:30
# CGO_ENABLED=1 GOOS=ios GOARCH=arm64 SDK=iphoneos \
# go build -buildmode=c-archive -o ./build/libgofunc_arm64.a .
2026-03-16 22:42:30 +06:30
2026-03-18 14:36:16 +06:30
# CGO_ENABLED=1 GOOS=ios GOARCH=arm64 SDK=iphonesimulator \
# go build -buildmode=c-archive -o ./build/libgofunc_arm64_sim.a .
2026-03-16 22:42:30 +06:30
2026-03-18 14:36:16 +06:30
lipo -create build/ios/device/libgofunc_arm64.a build/ios/sim/libgofunc_arm64_sim.a -output build/ios/libgofunc.a
2026-03-16 22:42:30 +06:30
2026-03-18 14:36:16 +06:30
cp ./build/ios/libgofunc.a $HOME/ws/forward_pos/native/ios/x86_64/libgofunc.a
elif [ "$OS" = "Linux" ]; then
2026-03-18 17:19:12 +06:30
mkdir -p "${OUTPUT_DIR}/${VERSION}"
2026-03-18 17:06:26 +06:30
echo "Building for Android amd64..."
2026-03-18 14:36:16 +06:30
CC="$TOOLCHAIN/x86_64-linux-android$API-clang" \
CGO_ENABLED=1 GOOS=android GOARCH=amd64 \
2026-03-18 17:06:26 +06:30
go build -buildmode=c-shared -o $BUILD_DIR/libgofunc_amd64.so .
2026-03-18 14:36:16 +06:30
2026-03-18 17:06:26 +06:30
ARCHIVE_NAME="${APP_NAME}-${VERSION}-amd64.tar.gz"
2026-03-18 17:19:12 +06:30
tar -czf "${OUTPUT_DIR}/${VERSION}/${ARCHIVE_NAME}" -C "${BUILD_DIR}" libgofunc_amd64.so
2026-03-18 17:06:26 +06:30
echo "Building for Android arm64..."
2026-03-18 14:36:16 +06:30
CC="$TOOLCHAIN/aarch64-linux-android$API-clang" \
CGO_ENABLED=1 GOOS=android GOARCH=arm64 \
2026-03-18 17:06:26 +06:30
go build -buildmode=c-shared -o $BUILD_DIR/libgofunc_arm64.so .
ARCHIVE_NAME="${APP_NAME}-${VERSION}-arm64.tar.gz"
2026-03-18 17:19:12 +06:30
tar -czf "${OUTPUT_DIR}/${VERSION}/${ARCHIVE_NAME}" -C "${BUILD_DIR}" libgofunc_arm64.so
2026-03-18 14:36:16 +06:30
2026-03-18 17:06:26 +06:30
echo "Building for Android armv7a..."
2026-03-18 14:36:16 +06:30
CC="$TOOLCHAIN/armv7a-linux-androideabi$API-clang" \
CGO_ENABLED=1 GOOS=android GOARCH=arm GOARM=7 \
2026-03-18 17:06:26 +06:30
go build -buildmode=c-shared -o $BUILD_DIR/libgofunc_armv7a.so .
ARCHIVE_NAME="${APP_NAME}-${VERSION}-armv7a.tar.gz"
2026-03-18 17:19:12 +06:30
tar -czf "${OUTPUT_DIR}/${VERSION}/${ARCHIVE_NAME}" -C "${BUILD_DIR}" libgofunc_armv7a.so
2026-03-18 14:36:16 +06:30
2026-03-18 16:58:38 +06:30
# cp ./assets/libgofunc_x64.so $HOME/ws/forward_pos/native/android/x86_64/libgofunc.so
# cp ./assets/libgofunc_arm64.so $HOME/ws/forward_pos/native/android/arm64-v8a/libgofunc.so
# cp ./assets/libgofunc_armv7a.so $HOME/ws/forward_pos/native/android/armeabi-v7a/libgofunc.so
2026-03-18 14:36:16 +06:30
else
echo "Unsupported OS: $OS"
exit 1
fi
2026-03-16 22:42:30 +06:30
2026-03-18 16:58:38 +06:30
echo "Done!"
echo "Artifacts:"
ls -lh "${OUTPUT_DIR}"