From 10abf81b5879ebe8a1430f4078961a8738c0e8fe Mon Sep 17 00:00:00 2001 From: sainw Date: Wed, 18 Mar 2026 14:36:16 +0630 Subject: [PATCH] add ios build --- build_lib.sh | 68 +++++++++++++++++++++++++++++++++++++--------------- img.go | 3 +++ main.go | 8 +++++++ printer.go | 3 +++ vo.go | 3 +++ 5 files changed, 66 insertions(+), 19 deletions(-) diff --git a/build_lib.sh b/build_lib.sh index ab0e716..ca66668 100755 --- a/build_lib.sh +++ b/build_lib.sh @@ -8,32 +8,62 @@ NDK_HOME="$HOME/Android/Sdk/ndk/28.2.13676358" # <--- CHECK YOUR VERSION API=21 TOOLCHAIN="$NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin" +OS="$(uname -s)" -echo "Building for Android x86_64..." -CC="$TOOLCHAIN/x86_64-linux-android$API-clang" \ -CGO_ENABLED=1 GOOS=android GOARCH=amd64 \ -go build -buildmode=c-shared -o ./build/libgofunc_x64.so . +if [ "$OS" = "Darwin" ]; then + export IOS_SDK=$(xcrun --sdk iphoneos --show-sdk-path) + export IOS_SIM_SDK=$(xcrun --sdk iphonesimulator --show-sdk-path) -echo "Building for Android ARM64..." -CC="$TOOLCHAIN/aarch64-linux-android$API-clang" \ -CGO_ENABLED=1 GOOS=android GOARCH=arm64 \ -go build -buildmode=c-shared -o ./build/libgofunc_arm64.so . + 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 . -echo "Building for Android ARMv7..." -CC="$TOOLCHAIN/armv7a-linux-androideabi$API-clang" \ -CGO_ENABLED=1 GOOS=android GOARCH=arm GOARM=7 \ -go build -buildmode=c-shared -o ./build/libgofunc_armv7a.so . + 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 . + # 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 -# echo "Building for iOS ARM64..." -# CGO_ENABLED=1 GOOS=darwin GOARCH=arm64 \ -# go build -buildmode=c-archive -o ./libgofunc_arm64.a . + # CGO_ENABLED=1 GOOS=ios GOARCH=arm64 SDK=iphoneos \ + # go build -buildmode=c-archive -o ./build/libgofunc_arm64.a . -# cp ./libgofunc_x64.so /home/sainw/ws/forward_pos/android/app/src/main/jniLibs/x86_64/libgofuncso + # CGO_ENABLED=1 GOOS=ios GOARCH=arm64 SDK=iphonesimulator \ + # go build -buildmode=c-archive -o ./build/libgofunc_arm64_sim.a . -cp ./build/libgofunc_x64.so $HOME/ws/forward_pos/native/android/x86_64/libgofunc.so -cp ./build/libgofunc_arm64.so $HOME/ws/forward_pos/native/android/arm64-v8a/libgofunc.so -cp ./build/libgofunc_armv7a.so $HOME/ws/forward_pos/native/android/armeabi-v7a/libgofunc.so + lipo -create build/ios/device/libgofunc_arm64.a build/ios/sim/libgofunc_arm64_sim.a -output build/ios/libgofunc.a + cp ./build/ios/libgofunc.a $HOME/ws/forward_pos/native/ios/x86_64/libgofunc.a +elif [ "$OS" = "Linux" ]; then + echo "Building for Android x86_64..." + CC="$TOOLCHAIN/x86_64-linux-android$API-clang" \ + CGO_ENABLED=1 GOOS=android GOARCH=amd64 \ + go build -buildmode=c-shared -o ./build/libgofunc_x64.so . + + echo "Building for Android ARM64..." + CC="$TOOLCHAIN/aarch64-linux-android$API-clang" \ + CGO_ENABLED=1 GOOS=android GOARCH=arm64 \ + go build -buildmode=c-shared -o ./build/libgofunc_arm64.so . + + echo "Building for Android ARMv7..." + CC="$TOOLCHAIN/armv7a-linux-androideabi$API-clang" \ + CGO_ENABLED=1 GOOS=android GOARCH=arm GOARM=7 \ + go build -buildmode=c-shared -o ./build/libgofunc_armv7a.so . + + cp ./build/libgofunc_x64.so $HOME/ws/forward_pos/native/android/x86_64/libgofunc.so + cp ./build/libgofunc_arm64.so $HOME/ws/forward_pos/native/android/arm64-v8a/libgofunc.so + cp ./build/libgofunc_armv7a.so $HOME/ws/forward_pos/native/android/armeabi-v7a/libgofunc.so + cp ./build/libgofunc_armv7a.so $HOME/ws/forward_pos/native/android/armeabi-v7a/libgofunc.so +else + echo "Unsupported OS: $OS" + exit 1 +fi echo "Done!" \ No newline at end of file diff --git a/img.go b/img.go index a006c8f..ff785a0 100644 --- a/img.go +++ b/img.go @@ -1,6 +1,9 @@ package main import ( + /* + #include + */ "C" "bytes" "fmt" diff --git a/main.go b/main.go index 150ab27..16d1b77 100644 --- a/main.go +++ b/main.go @@ -1,11 +1,19 @@ package main import ( + /* + #include + */ "C" "fmt" _ "image/png" ) +//export Sum +func Sum(a, b int) int { + return a + b +} + func main() { payload := `{"Name":"Ko Myo","Amount":3000}` const temp = ` diff --git a/printer.go b/printer.go index 4c915e5..a449bc3 100644 --- a/printer.go +++ b/printer.go @@ -1,6 +1,9 @@ package main import ( + /* + #include + */ "C" _ "image/png" "os" diff --git a/vo.go b/vo.go index def2806..d996cf1 100644 --- a/vo.go +++ b/vo.go @@ -1,6 +1,9 @@ package main import ( + /* + #include + */ "C" "encoding/json" "log"