From 3d8164c06d869478f434082a561ef33e19bb0585 Mon Sep 17 00:00:00 2001 From: Linus Gasser Date: Mon, 10 May 2021 20:25:49 +0200 Subject: [PATCH] Build ios --- .gitignore | 1 + Makefile | 19 +++++++++++++++++++ clangwrap.sh | 14 ++++++++++++++ switch-ffi.sh | 6 +++--- 4 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 clangwrap.sh diff --git a/.gitignore b/.gitignore index dbb20d7..53069a5 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ cwtch.aar libCwtch.h libCwtch.so libCwtch.dll +ios/ diff --git a/Makefile b/Makefile index 179e701..a275090 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,5 @@ +IOS_OUT := ./ios + .PHONY: all linux android windows clean DEFAULT_GOAL: linux @@ -24,3 +26,20 @@ libCwtch.dll: lib.go clean: rm -f cwtch.aar cwtch_go.apk libCwtch.h libCwtch.so cwtch-sources.jar libCwtch.dll + +ios-arm64: + CGO_ENABLED=1 \ + GOOS=darwin \ + GOARCH=arm64 \ + CGO_CFLAGS="-fembed-bitcode" \ + go build -buildmode=c-archive -tags ios -o $(IOS_OUT)/arm64.a . + +ios-x86_64: + CGO_ENABLED=1 \ + GOOS=darwin \ + GOARCH=amd64 \ + go build -buildmode=c-archive -tags ios -o $(IOS_OUT)/x86_64.a . + +ios: ios-arm64 ios-x86_64 + lipo $(IOS_OUT)/x86_64.a $(IOS_OUT)/arm64.a -create -output $(IOS_OUT)/cwtch.a + cp $(IOS_OUT)/arm64.h $(IOS_OUT)/cwtch.h diff --git a/clangwrap.sh b/clangwrap.sh new file mode 100644 index 0000000..763187e --- /dev/null +++ b/clangwrap.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +# go/clangwrap.sh + +SDK_PATH=`xcrun --sdk $SDK --show-sdk-path` +CLANG=`xcrun --sdk $SDK --find clang` + +if [ "$GOARCH" == "amd64" ]; then + CARCH="x86_64" +elif [ "$GOARCH" == "arm64" ]; then + CARCH="arm64" +fi + +exec $CLANG -arch $CARCH -isysroot $SDK_PATH -mios-version-min=10.0 "$@" diff --git a/switch-ffi.sh b/switch-ffi.sh index 7985e9f..a75c3b3 100755 --- a/switch-ffi.sh +++ b/switch-ffi.sh @@ -1,5 +1,5 @@ #!/bin/sh -sed -i "s/^package cwtch/\/\/package cwtch/" lib.go -sed -i "s/^\/\/package main/package main/" lib.go -sed -i "s/^\/\/func main()/func main()/" lib.go \ No newline at end of file +perl -pi -e "s/^package cwtch/\/\/package cwtch/" lib.go +perl -pi -e "s/^\/\/package main/package main/" lib.go +perl -pi -e "s/^\/\/func main()/func main()/" lib.go