diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 7b829e9..3fa6298 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -1,9 +1,9 @@ -name: MacOS Build +name: macOS Build on: workflow_dispatch jobs: build-macos: runs-on: macos-11.0 - name: Build on darwin-amd64 + darwin-arm64 + name: Build on darwin-amd64 steps: - name: Update binaries run: | @@ -12,8 +12,7 @@ jobs: make macos cd ../ git add libsocketify_darwin_amd64.so - git add libsocketify_darwin_arm64.so git config --global user.email "ciro.spaciari@gmail.com" git config --global user.name "Ciro Spaciari" - git commit -m "[GitHub Actions] Updated darwin-amd64 + darwin-arm64 binaries" || true + git commit -m "[GitHub Actions] Updated darwin-amd64" || true git push "https://cirospaciari:${{ secrets.BUILDTOKEN }}@github.com/cirospaciari/socketify.py.git" \ No newline at end of file diff --git a/src/socketify/native/Makefile b/src/socketify/native/Makefile index 3096ab3..5b3661a 100644 --- a/src/socketify/native/Makefile +++ b/src/socketify/native/Makefile @@ -22,15 +22,27 @@ clean: rm -rf ../uWebSockets/uSockets/boringssl/vcpkg rm -rf ../uWebSockets/uSockets/boringssl/arm64 + +macos-arm64: + $(MAKE) clean + # build boringssl for arm64 (cross compile) + cd ../uWebSockets/uSockets/boringssl && mkdir -p arm64 && cd arm64 && cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES=arm64 .. && make crypto ssl + + # build uWebSockets for arm64 (cross compile) + cd ../uWebSockets/uSockets && $(CC) -target arm64-apple-macos11 -I src -I boringssl/include -DUWS_WITH_PROXY -DLIBUS_USE_OPENSSL -DLIBUS_USE_LIBUV -pthread -fPIC -std=c11 -O3 -c src/*.c src/eventing/*.c src/crypto/*.c + cd ../uWebSockets/uSockets && $(CXX) -stdlib=libc++ -target arm64-apple-macos11 -I boringssl/include -DUWS_WITH_PROXY -DLIBUS_USE_OPENSSL -DLIBUS_USE_LIBUV -pthread -fPIC -std=c++17 -O3 -c src/crypto/*.cpp + cd ../uWebSockets/uSockets && $(AR) rvs uSockets_darwin_arm64.a *.o + + # build CAPI + libsocketify for arm64 (cross compile) + $(CXX) -stdlib=libc++ -target arm64-apple-macos11 -I ./src -I ../uWebSockets/src -I ../uWebSockets/uSockets/src -I ../uWebSockets/capi -I ../uWebSockets/uSockets/boringssl/include -DUWS_WITH_PROXY -pthread -fPIC -std=c++17 -c -O3 ./src/$(LIBRARY_NAME).cpp + $(CXX) -stdlib=libc++ -target arm64-apple-macos11 -shared -undefined dynamic_lookup -o ../$(LIBRARY_NAME)_darwin_arm64.so $(LIBRARY_NAME).o ../uWebSockets/uSockets/uSockets_darwin_arm64.a ../uWebSockets/uSockets/boringssl/arm64/ssl/libssl.a ../uWebSockets/uSockets/boringssl/arm64/crypto/libcrypto.a -flto -fPIC -lz -L /opt/homebrew/lib -luv + macos: $(MAKE) clean # build boringssl cd ../uWebSockets/uSockets/boringssl && mkdir -p amd64 && cd amd64 && cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_DEPLOYMENT_TARGET=10.14 .. && make crypto ssl - # build boringssl for arm64 (cross compile) - cd ../uWebSockets/uSockets/boringssl && mkdir -p arm64 && cd arm64 && cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES=arm64 .. && make crypto ssl - # build lsquic cd ../uWebSockets/uSockets/lsquic && cmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBORINGSSL_DIR=../boringssl -DCMAKE_BUILD_TYPE=Release -DLSQUIC_BIN=Off . && make lsquic @@ -39,18 +51,9 @@ macos: cd ../uWebSockets/uSockets && $(CXX) -stdlib=libc++ -mmacosx-version-min=10.14 -I boringssl/include -DUWS_WITH_PROXY -DLIBUS_USE_OPENSSL -DLIBUS_USE_LIBUV -DLIBUS_USE_QUIC -pthread -fPIC -std=c++17 -O3 -c src/crypto/*.cpp cd ../uWebSockets/uSockets && $(AR) rvs uSockets_darwin_amd64.a *.o - # build uWebSockets for arm64 (cross compile) - cd ../uWebSockets/uSockets && $(CC) -target arm64-apple-macos11 -I src -I boringssl/include -DUWS_WITH_PROXY -DLIBUS_USE_OPENSSL -DLIBUS_USE_LIBUV -pthread -fPIC -std=c11 -O3 -c src/*.c src/eventing/*.c src/crypto/*.c - cd ../uWebSockets/uSockets && $(CXX) -stdlib=libc++ -target arm64-apple-macos11 -I boringssl/include -DUWS_WITH_PROXY -DLIBUS_USE_OPENSSL -DLIBUS_USE_LIBUV -pthread -fPIC -std=c++17 -O3 -c src/crypto/*.cpp - cd ../uWebSockets/uSockets && $(AR) rvs uSockets_darwin_arm64.a *.o - # build CAPI + libsocketify $(CXX) -stdlib=libc++ -mmacosx-version-min=10.14 -I ./src -I ../uWebSockets/src -I ../uWebSockets/uSockets/src -I ../uWebSockets/capi -I ../uWebSockets/uSockets/lsquic/include -I ../uWebSockets/uSockets/boringssl/include -DUWS_WITH_PROXY -pthread -fPIC -std=c++17 -c -O3 ./src/$(LIBRARY_NAME).cpp - $(CXX) -stdlib=libc++ -mmacosx-version-min=10.14 -shared -undefined dynamic_lookup -o ../$(LIBRARY_NAME)_darwin_amd64.so $(LIBRARY_NAME).o ../uWebSockets/uSockets/uSockets_darwin_amd64.a ../uWebSockets/uSockets/boringssl/amd64/ssl/libssl.a ../uWebSockets/uSockets/boringssl/amd64/crypto/libcrypto.a ../uWebSockets/uSockets/lsquic/src/liblsquic/liblsquic.a -flto -fPIC -lz -luv - - # build CAPI + libsocketify for arm64 (cross compile) - $(CXX) -stdlib=libc++ -target arm64-apple-macos11 -I ./src -I ../uWebSockets/src -I ../uWebSockets/uSockets/src -I ../uWebSockets/capi -I ../uWebSockets/uSockets/boringssl/include -DUWS_WITH_PROXY -pthread -fPIC -std=c++17 -c -O3 ./src/$(LIBRARY_NAME).cpp - $(CXX) -stdlib=libc++ -target arm64-apple-macos11 -shared -undefined dynamic_lookup -o ../$(LIBRARY_NAME)_darwin_arm64.so $(LIBRARY_NAME).o ../uWebSockets/uSockets/uSockets_darwin_arm64.a ../uWebSockets/uSockets/boringssl/arm64/ssl/libssl.a ../uWebSockets/uSockets/boringssl/arm64/crypto/libcrypto.a -flto -fPIC -lz -luv + $(CXX) -stdlib=libc++ -mmacosx-version-min=10.14 -shared -undefined dynamic_lookup -o ../$(LIBRARY_NAME)_darwin_amd64.so $(LIBRARY_NAME).o ../uWebSockets/uSockets/uSockets_darwin_amd64.a ../uWebSockets/uSockets/boringssl/amd64/ssl/libssl.a ../uWebSockets/uSockets/boringssl/amd64/crypto/libcrypto.a ../uWebSockets/uSockets/lsquic/src/liblsquic/liblsquic.a -flto -fPIC -lz -luv linux: $(MAKE) clean