Skip to content

Build macOS bundled dylibs #12

Build macOS bundled dylibs

Build macOS bundled dylibs #12

name: Build macOS bundled dylibs
on:
workflow_dispatch:
jobs:
build:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Install build tools
run: |
export HOMEBREW_NO_REQUIRE_TAP_TRUST=1
brew install cmake glfw glew
- name: Build GLFW universal from source
run: |
GLFW_VER=$(brew info --json glfw | python3 -c "import sys,json; print(json.load(sys.stdin)[0]['versions']['stable'])")
curl -L "https://github.com/glfw/glfw/archive/refs/tags/${GLFW_VER}.tar.gz" -o glfw.tar.gz
tar xf glfw.tar.gz
cd glfw-${GLFW_VER}
cmake -B build-arm64 -DCMAKE_OSX_ARCHITECTURES=arm64 -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 -DBUILD_SHARED_LIBS=ON -DGLFW_BUILD_EXAMPLES=OFF -DGLFW_BUILD_TESTS=OFF -DGLFW_BUILD_DOCS=OFF
cmake --build build-arm64
cmake -B build-x64 -DCMAKE_OSX_ARCHITECTURES=x86_64 -DCMAKE_OSX_DEPLOYMENT_TARGET=10.13 -DBUILD_SHARED_LIBS=ON -DGLFW_BUILD_EXAMPLES=OFF -DGLFW_BUILD_TESTS=OFF -DGLFW_BUILD_DOCS=OFF
cmake --build build-x64
lipo -create build-arm64/src/libglfw.3.dylib build-x64/src/libglfw.3.dylib -output ../libglfw.3.dylib
install_name_tool -id @rpath/libglfw.3.dylib ../libglfw.3.dylib
cd ..
- name: Build GLEW universal from source
run: |
GLEW_VER=$(brew info --json glew | python3 -c "import sys,json; print(json.load(sys.stdin)[0]['versions']['stable'])")
curl -L "https://github.com/nigels-com/glew/releases/download/glew-${GLEW_VER}/glew-${GLEW_VER}.tgz" -o glew.tgz
tar xf glew.tgz
cd glew-${GLEW_VER}
make SYSTEM=darwin CC="clang -arch arm64 -mmacosx-version-min=11.0" LD="clang -arch arm64 -mmacosx-version-min=11.0" LDFLAGS="-framework OpenGL" GLEW_DEST=../glew-arm64 install.lib
make clean
make SYSTEM=darwin CC="clang -arch x86_64 -mmacosx-version-min=10.13" LD="clang -arch x86_64 -mmacosx-version-min=10.13" LDFLAGS="-framework OpenGL" GLEW_DEST=../glew-x64 install.lib
cd ..
lipo -create glew-arm64/lib/libGLEW.dylib glew-x64/lib/libGLEW.dylib -output libGLEW.dylib
install_name_tool -id @rpath/libGLEW.dylib libGLEW.dylib
- name: Copy universal dylibs to libs/macos/
run: |
mkdir -p libs/macos
cp libglfw.3.dylib libs/macos/
cp libGLEW.dylib libs/macos/
echo "Architecture check:"
lipo -info libs/macos/libglfw.3.dylib
lipo -info libs/macos/libGLEW.dylib
- uses: actions/upload-artifact@v4
with:
name: macos-dylibs
path: libs/macos/
retention-days: 90