88 strategy :
99 matrix :
1010 include :
11+ # Windows x64
1112 - os : windows-latest
1213 arch : x64
13- cmake-args : -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_CXX_FLAGS="-W0 -m64 -static" -DBUILD_STATIC_LIB=OFF -DBUILD_SHARED_LIBS=ON -DBUILD_TOOLS=OFF -DBUILD_TESTS=OFF
14+ cmake-args : >
15+ -G Ninja
16+ -DCMAKE_C_COMPILER=clang
17+ -DCMAKE_CXX_COMPILER=clang++
18+ -DCMAKE_C_FLAGS="-target x86_64-windows-gnu -W0 -m64"
19+ -DCMAKE_CXX_FLAGS="-target x86_64-windows-gnu -W0 -m64"
20+ -DBUILD_STATIC_LIB=OFF
21+ -DBUILD_SHARED_LIBS=ON
22+ -DBUILD_TOOLS=OFF
23+ -DBUILD_TESTS=OFF
1424 runtime : win-x64
25+
26+ # Windows x86
1527 - os : windows-latest
1628 arch : x86
17- cmake-args : -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_CXX_FLAGS="-W0 -m32 -static" -DBUILD_STATIC_LIB=OFF -DBUILD_SHARED_LIBS=ON -DBUILD_TOOLS=OFF -DBUILD_TESTS=OFF
29+ cmake-args : >
30+ -G Ninja
31+ -DCMAKE_C_COMPILER=clang
32+ -DCMAKE_CXX_COMPILER=clang++
33+ -DCMAKE_C_FLAGS="-target i686-windows-gnu -W0 -m32"
34+ -DCMAKE_CXX_FLAGS="-target i686-windows-gnu -W0 -m32"
35+ -DBUILD_STATIC_LIB=OFF
36+ -DBUILD_SHARED_LIBS=ON
37+ -DBUILD_TOOLS=OFF
38+ -DBUILD_TESTS=OFF
1839 runtime : win-x86
40+
41+ # Linux x64
1942 - os : ubuntu-latest
2043 arch : x64
21- cmake-args : -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_FLAGS="-m64 -w -static-libgcc -static-libstdc++" -DCMAKE_CXX_FLAGS="-m64 -w -static-libgcc -static-libstdc++" -DBUILD_SHARED_LIBS=ON -DBUILD_TOOLS=OFF -DBUILD_TESTS=OFF
44+ cmake-args : >
45+ -G Ninja
46+ -DCMAKE_C_COMPILER=clang
47+ -DCMAKE_CXX_COMPILER=clang++
48+ -DCMAKE_C_FLAGS="-m64 -w -static-libgcc -static-libstdc++"
49+ -DCMAKE_CXX_FLAGS="-m64 -w -static-libgcc -static-libstdc++"
50+ -DBUILD_SHARED_LIBS=ON
51+ -DBUILD_TOOLS=OFF
52+ -DBUILD_TESTS=OFF
2253 runtime : linux-x64
54+
55+ # Linux x86
2356 - os : ubuntu-latest
2457 arch : x86
25- cmake-args : -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_FLAGS="-m32 -w -static-libgcc -static-libstdc++" -DCMAKE_CXX_FLAGS="-m32 -w -static-libgcc -static-libstdc++" -DBUILD_SHARED_LIBS=ON -DBUILD_TOOLS=OFF -DBUILD_TESTS=OFF
58+ cmake-args : >
59+ -G Ninja
60+ -DCMAKE_C_COMPILER=clang
61+ -DCMAKE_CXX_COMPILER=clang++
62+ -DCMAKE_C_FLAGS="-m32 -w -static-libgcc -static-libstdc++"
63+ -DCMAKE_CXX_FLAGS="-m32 -w -static-libgcc -static-libstdc++"
64+ -DBUILD_SHARED_LIBS=ON
65+ -DBUILD_TOOLS=OFF
66+ -DBUILD_TESTS=OFF
2667 runtime : linux-x86
2768
2869 runs-on : ${{ matrix.os }}
3273 with :
3374 submodules : recursive
3475
76+ # Install dependencies
3577 - name : Install build deps (Linux)
3678 if : runner.os == 'Linux'
3779 run : |
@@ -40,11 +82,18 @@ jobs:
4082
4183 - name : Install build deps (Windows)
4284 if : runner.os == 'Windows'
43- run : choco install llvm ninja cmake --no-progress --yes
85+ run : choco install llvm ninja cmake mingw --no-progress --yes
86+
87+ # Limit Binaryen to 1 core to prevent thread hang on MinGW
88+ - name : Limit Binaryen to 1 core
89+ if : runner.os == 'Windows'
90+ run : echo "BINARYEN_CORES=1" >> $GITHUB_ENV
4491
92+ # Configure
4593 - name : Configure
4694 run : cmake -S binaryen -B binaryen/build ${{ matrix.cmake-args }}
4795
96+ # Build
4897 - name : Build (Linux)
4998 if : runner.os == 'Linux'
5099 run : cmake --build binaryen/build -- -j$(nproc)
@@ -54,12 +103,14 @@ jobs:
54103 run : cmake --build binaryen/build
55104 shell : pwsh
56105
106+ # Copy artifacts
57107 - name : Copy to NuGet runtime folder
58108 run : |
59109 mkdir -p package/runtimes/${{ matrix.runtime }}/native
60110 cp -r binaryen/build/lib/* package/runtimes/${{ matrix.runtime }}/native/
61111 shell : bash
62112
113+ # Upload artifacts
63114 - name : Upload artifact
64115 uses : actions/upload-artifact@v4
65116 with :
0 commit comments