Skip to content

Commit e2a14b7

Browse files
committed
Consolidate macOS libs into libs/macos/ using universal dylibs (arm64+x64)
1 parent c0f1294 commit e2a14b7

18 files changed

Lines changed: 71 additions & 58 deletions

.github/workflows/build-macos-libs.yml

Lines changed: 40 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -4,46 +4,54 @@ on:
44
workflow_dispatch:
55

66
jobs:
7-
build-arm64:
7+
build:
88
runs-on: macos-latest
99
steps:
1010
- uses: actions/checkout@v4
11-
- name: Install GLFW and GLEW
11+
12+
- name: Install build tools
1213
run: |
1314
export HOMEBREW_NO_REQUIRE_TAP_TRUST=1
14-
brew install glfw glew
15-
- name: Collect arm64 dylibs
15+
brew install cmake glfw glew
16+
17+
- name: Build GLFW universal from source
1618
run: |
17-
mkdir -p libs/macos-arm64
18-
cp $(brew --prefix glfw)/lib/libglfw.3.dylib libs/macos-arm64/
19-
cp $(brew --prefix glew)/lib/libGLEW.dylib libs/macos-arm64/
20-
install_name_tool -id @rpath/libglfw.3.dylib libs/macos-arm64/libglfw.3.dylib
21-
install_name_tool -id @rpath/libGLEW.dylib libs/macos-arm64/libGLEW.dylib
22-
file libs/macos-arm64/*.dylib
23-
- uses: actions/upload-artifact@v4
24-
with:
25-
name: macos-arm64-dylibs
26-
path: libs/macos-arm64/
27-
retention-days: 30
19+
GLFW_VER=$(brew info --json glfw | python3 -c "import sys,json; print(json.load(sys.stdin)[0]['versions']['stable'])")
20+
curl -L "https://github.com/glfw/glfw/archive/refs/tags/${GLFW_VER}.tar.gz" -o glfw.tar.gz
21+
tar xf glfw.tar.gz
22+
cd glfw-${GLFW_VER}
23+
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
24+
cmake --build build-arm64
25+
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
26+
cmake --build build-x64
27+
lipo -create build-arm64/src/libglfw.3.dylib build-x64/src/libglfw.3.dylib -output ../libglfw.3.dylib
28+
install_name_tool -id @rpath/libglfw.3.dylib ../libglfw.3.dylib
29+
cd ..
2830
29-
build-x64:
30-
runs-on: macos-13
31-
steps:
32-
- uses: actions/checkout@v4
33-
- name: Install GLFW and GLEW
31+
- name: Build GLEW universal from source
3432
run: |
35-
export HOMEBREW_NO_REQUIRE_TAP_TRUST=1
36-
brew install glfw glew
37-
- name: Collect x64 dylibs
33+
GLEW_VER=$(brew info --json glew | python3 -c "import sys,json; print(json.load(sys.stdin)[0]['versions']['stable'])")
34+
curl -L "https://github.com/nigels-com/glew/releases/download/glew-${GLEW_VER}/glew-${GLEW_VER}.tgz" -o glew.tgz
35+
tar xf glew.tgz
36+
cd glew-${GLEW_VER}
37+
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
38+
make clean
39+
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
40+
cd ..
41+
lipo -create glew-arm64/lib/libGLEW.dylib glew-x64/lib/libGLEW.dylib -output libGLEW.dylib
42+
install_name_tool -id @rpath/libGLEW.dylib libGLEW.dylib
43+
44+
- name: Copy universal dylibs to libs/macos/
3845
run: |
39-
mkdir -p libs/macos-x64
40-
cp $(brew --prefix glfw)/lib/libglfw.3.dylib libs/macos-x64/
41-
cp $(brew --prefix glew)/lib/libGLEW.dylib libs/macos-x64/
42-
install_name_tool -id @rpath/libglfw.3.dylib libs/macos-x64/libglfw.3.dylib
43-
install_name_tool -id @rpath/libGLEW.dylib libs/macos-x64/libGLEW.dylib
44-
file libs/macos-x64/*.dylib
46+
mkdir -p libs/macos
47+
cp libglfw.3.dylib libs/macos/
48+
cp libGLEW.dylib libs/macos/
49+
echo "Architecture check:"
50+
lipo -info libs/macos/libglfw.3.dylib
51+
lipo -info libs/macos/libGLEW.dylib
52+
4553
- uses: actions/upload-artifact@v4
4654
with:
47-
name: macos-x64-dylibs
48-
path: libs/macos-x64/
49-
retention-days: 30
55+
name: macos-dylibs
56+
path: libs/macos/
57+
retention-days: 90

.github/workflows/integration-test.yml

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -123,8 +123,8 @@ jobs:
123123
124124
- name: Test bundled macOS dylibs exist
125125
run: |
126-
test -f libs/macos-arm64/libglfw.3.dylib || (echo "FAIL: missing arm64 glfw" && exit 1)
127-
test -f libs/macos-arm64/libGLEW.dylib || (echo "FAIL: missing arm64 GLEW" && exit 1)
126+
test -f libs/macos/libglfw.3.dylib || (echo "FAIL: missing glfw" && exit 1)
127+
test -f libs/macos/libGLEW.dylib || (echo "FAIL: missing GLEW" && exit 1)
128128
echo "macOS dylibs: PASS"
129129
130130
- name: Test macOS g++ compilation with bundled dylibs
@@ -139,9 +139,7 @@ jobs:
139139
140140
- name: Test dylib linking
141141
run: |
142-
arch=$(uname -m)
143-
libdir="libs/macos-arm64"
144-
if [ "$arch" = "x86_64" ]; then libdir="libs/macos-x64"; fi
142+
libdir="libs/macos"
145143
g++ -std=c++23 \
146144
-I$(pwd)/libs/include \
147145
-I$(pwd)/src \

.gitignore

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
.zip
2-
# Allow prebuilt platform cache files (committed by CI)
3-
cache/**/*.tmp
4-
cache/**/_macro_preprocess_input.cpp
2+
cache/
53

CppMode.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ authors=[Jose Gonzalez Llamas](https://github.com/pepc84)
44
url=https://github.com/processing-cpp/processing.cpp
55
sentence=Write and run Processing sketches in C++.
66
paragraph=C++ Mode lets you write sketches using the familiar Processing API — size(), ellipse(), mouseX, draw() — but compiled to a native binary via g++. Runs on Linux and Windows (via MSYS2). Requires g++ and OpenGL (GLFW + GLEW).
7-
version=11
8-
prettyVersion=0.4.1
7+
version=15
8+
prettyVersion=0.4.5
99
minRevision=1280
1010
maxRevision=0

dist/processing-cpp-cmake.zip

1.64 KB
Binary file not shown.
1.71 KB
Binary file not shown.

libs/macos-x64/libGLEW.2.3.1.dylib

-579 KB
Binary file not shown.

libs/macos-x64/libGLEW.dylib

-579 KB
Binary file not shown.

libs/macos-x64/libglfw.3.dylib

-241 KB
Binary file not shown.

libs/macos/.gitkeep

Whitespace-only changes.

0 commit comments

Comments
 (0)