@@ -10,10 +10,18 @@ jobs:
1010 include :
1111 - os : windows-latest
1212 arch : x64
13+ compiler-prefix : C:/tools/mingw64/bin/x86_64-w64-mingw32
1314 runtime : win-x64
1415 - os : windows-latest
1516 arch : x86
17+ compiler-prefix : C:/tools/mingw32/bin/i686-w64-mingw32
1618 runtime : win-x86
19+ - os : ubuntu-latest
20+ arch : x64
21+ runtime : linux-x64
22+ - os : ubuntu-latest
23+ arch : x86
24+ runtime : linux-x86
1725
1826 runs-on : ${{ matrix.os }}
1927
@@ -22,40 +30,60 @@ jobs:
2230 with :
2331 submodules : recursive
2432
25- - name : Install MinGW and CMake
26- if : runner.os == 'Windows '
33+ - name : Install build deps (Linux)
34+ if : runner.os == 'Linux '
2735 run : |
28- choco install mingw --no-progress --yes
29- choco install cmake ninja --no-progress --yes
30- shell : pwsh
36+ sudo apt-get update
37+ sudo apt-get install -y g++-multilib gcc-multilib cmake make ninja-build
3138
32- - name : Add MinGW to PATH
39+ - name : Install build deps (Windows)
3340 if : runner.os == 'Windows'
3441 run : |
35- if (${{ matrix.arch }} -eq 'x64') {
36- $mingw = "C:\tools\mingw64\bin"
37- } else {
38- $mingw = "C:\tools\mingw32\bin"
39- }
40- $env:PATH = "$mingw;$env:PATH"
41- echo "PATH=$env:PATH" >> $GITHUB_ENV
42- shell : pwsh
42+ choco install mingw --no-progress --yes
43+ choco install cmake ninja --no-progress --yes
4344
45+ # Limit Binaryen to 1 core
4446 - name : Limit Binaryen to 1 core
4547 run : echo "BINARYEN_CORES=1" >> $GITHUB_ENV
4648
4749 - name : Configure
50+ if : runner.os == 'Linux'
4851 run : |
49- if (${{ runner.os }} -eq 'Windows') {
50- if (${{ matrix.arch }} -eq 'x64') {
51- cmake -S binaryen -B binaryen/build -G "MinGW Makefiles" -DCMAKE_C_FLAGS="-W0 -m64 -static-libgcc -static-libstdc++" -DCMAKE_CXX_FLAGS="-W0 -m64 -static-libgcc -static-libstdc++" -DBUILD_STATIC_LIB=OFF -DBUILD_SHARED_LIBS=ON -DBUILD_TOOLS=OFF -DBUILD_TESTS=OFF
52- } else {
53- cmake -S binaryen -B binaryen/build -G "MinGW Makefiles" -DCMAKE_C_FLAGS="-W0 -m32 -static-libgcc -static-libstdc++" -DCMAKE_CXX_FLAGS="-W0 -m32 -static-libgcc -static-libstdc++" -DBUILD_STATIC_LIB=OFF -DBUILD_SHARED_LIBS=ON -DBUILD_TOOLS=OFF -DBUILD_TESTS=OFF
54- }
55- }
52+ cmake -S binaryen -B binaryen/build \
53+ -DCMAKE_C_FLAGS="-m${{ matrix.arch == 'x64' && echo 64 || echo 32 }} -w -static-libgcc -static-libstdc++" \
54+ -DCMAKE_CXX_FLAGS="-m${{ matrix.arch == 'x64' && echo 64 || echo 32 }} -w -static-libgcc -static-libstdc++" \
55+ -DBUILD_SHARED_LIBS=ON -DBUILD_TOOLS=OFF -DBUILD_TESTS=OFF
56+
57+ - name : Configure
58+ if : runner.os == 'Windows'
59+ run : |
60+ $CC="${{ matrix.compiler-prefix }}-gcc.exe"
61+ $CXX="${{ matrix.compiler-prefix }}-g++.exe"
62+ cmake -S binaryen -B binaryen/build -G "MinGW Makefiles" `
63+ -DCMAKE_C_COMPILER=$CC `
64+ -DCMAKE_CXX_COMPILER=$CXX `
65+ -DCMAKE_C_FLAGS="-W0 -m${{ matrix.arch == 'x64' && echo 64 || echo 32 }} -static-libgcc -static-libstdc++" `
66+ -DCMAKE_CXX_FLAGS="-W0 -m${{ matrix.arch == 'x64' && echo 64 || echo 32 }} -static-libgcc -static-libstdc++" `
67+ -DBUILD_STATIC_LIB=OFF -DBUILD_SHARED_LIBS=ON -DBUILD_TOOLS=OFF -DBUILD_TESTS=OFF
5668 shell : pwsh
5769
70+ - name : Build (Linux)
71+ if : runner.os == 'Linux'
72+ run : cmake --build binaryen/build -- -j1
73+
5874 - name : Build (Windows)
5975 if : runner.os == 'Windows'
6076 run : cmake --build binaryen/build -- -j1
6177 shell : pwsh
78+
79+ - name : Copy to NuGet runtime folder
80+ run : |
81+ mkdir -p package/runtimes/${{ matrix.runtime }}/native
82+ cp -r binaryen/build/lib/* package/runtimes/${{ matrix.runtime }}/native/
83+ shell : bash
84+
85+ - name : Upload artifact
86+ uses : actions/upload-artifact@v4
87+ with :
88+ name : runtimes-${{ matrix.runtime }}
89+ path : package/runtimes/${{ matrix.runtime }}
0 commit comments