Skip to content

Commit c252c9c

Browse files
committed
New github workflow to compile the native library.
1 parent 99f1a78 commit c252c9c

File tree

1 file changed

+102
-0
lines changed

1 file changed

+102
-0
lines changed
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
# .github/workflows/meshoptimizer-cmake.yml
2+
name: Build meshoptimizer Libraries
3+
4+
on:
5+
workflow_dispatch:
6+
7+
jobs:
8+
build:
9+
runs-on: ${{ matrix.os }}
10+
strategy:
11+
matrix:
12+
include:
13+
- os: ubuntu-latest
14+
arch: x64
15+
cmake-arch: x64
16+
- os: ubuntu-latest
17+
arch: arm64
18+
cmake-arch: aarch64
19+
- os: windows-latest
20+
arch: x64
21+
cmake-arch: x64
22+
- os: windows-latest
23+
arch: arm64
24+
cmake-arch: ARM64
25+
- os: macos-latest
26+
arch: arm64
27+
cmake-arch: arm64
28+
29+
steps:
30+
- name: Checkout meshoptimizer
31+
uses: actions/checkout@v4
32+
with:
33+
repository: zeux/meshoptimizer
34+
submodules: false
35+
36+
- name: Install dependencies on Ubuntu
37+
if: matrix.os == 'ubuntu-latest'
38+
run: |
39+
sudo apt-get update
40+
sudo apt-get install -y build-essential cmake
41+
42+
- name: Install Cross-Compilation Tools for ARM64
43+
if: matrix.os == 'ubuntu-latest' && matrix.arch == 'arm64'
44+
run: |
45+
sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
46+
47+
- name: Configure meshoptimizer (Linux ARM64)
48+
if: matrix.os == 'ubuntu-latest' && matrix.arch == 'arm64'
49+
run: |
50+
cmake -S . -B build \
51+
-DCMAKE_BUILD_TYPE=Release \
52+
-DMESHOPT_BUILD_SHARED_LIBS=ON \
53+
-DCMAKE_SYSTEM_NAME=Linux \
54+
-DCMAKE_SYSTEM_PROCESSOR=aarch64 \
55+
-DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc \
56+
-DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++
57+
58+
- name: Configure meshoptimizer (Linux x64)
59+
if: matrix.os == 'ubuntu-latest' && matrix.arch == 'x64'
60+
run: |
61+
cmake -S . -B build \
62+
-DCMAKE_BUILD_TYPE=Release \
63+
-DMESHOPT_BUILD_SHARED_LIBS=ON
64+
65+
- name: Configure meshoptimizer (macOS ARM64)
66+
if: matrix.os == 'macos-latest'
67+
run: |
68+
cmake -S . -B build \
69+
-DCMAKE_BUILD_TYPE=Release \
70+
-DMESHOPT_BUILD_SHARED_LIBS=ON \
71+
-DCMAKE_OSX_ARCHITECTURES=${{ matrix.cmake-arch }}
72+
73+
- name: Configure meshoptimizer (Windows)
74+
if: matrix.os == 'windows-latest'
75+
run: |
76+
cmake -S . -B build \
77+
-A ${{ matrix.cmake-arch }} \
78+
-DMESHOPT_BUILD_SHARED_LIBS=ON
79+
80+
- name: Build meshoptimizer
81+
run: cmake --build build --config Release
82+
83+
- name: Upload meshoptimizer.dll (Windows)
84+
if: matrix.os == 'windows-latest'
85+
uses: actions/upload-artifact@v4
86+
with:
87+
name: meshoptimizer-${{ matrix.arch }}-dll
88+
path: build/**/*.dll
89+
90+
- name: Upload libmeshoptimizer.so (Linux)
91+
if: matrix.os == 'ubuntu-latest'
92+
uses: actions/upload-artifact@v4
93+
with:
94+
name: meshoptimizer-${{ matrix.arch }}-so
95+
path: build/**/*.so
96+
97+
- name: Upload libmeshoptimizer.dylib (macOS)
98+
if: matrix.os == 'macos-latest'
99+
uses: actions/upload-artifact@v4
100+
with:
101+
name: meshoptimizer-${{ matrix.arch }}-dylib
102+
path: build/**/*.dylib

0 commit comments

Comments
 (0)