Skip to content

Commit 9fb8f66

Browse files
committed
Add MinGW support
1 parent 94ee875 commit 9fb8f66

File tree

9 files changed

+438
-26
lines changed

9 files changed

+438
-26
lines changed

.github/workflows/cmake-multi-platform.yml

Lines changed: 204 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ jobs:
5353

5454

5555
##############################################################################
56-
# 2) Windows – MSVC / Ninja
56+
# 2) Windows x64 – MSVC (x64-windows)
5757
##############################################################################
5858
windows-build-and-test:
5959
name: Windows (MSVC) (x64-windows)
@@ -85,6 +85,43 @@ jobs:
8585
shell: bash
8686
run: ./out/Release/unit_tests.exe
8787

88+
89+
90+
##############################################################################
91+
# 3) Windows x86 – MSVC (x86-windows)
92+
##############################################################################
93+
windows-x86-build-and-test:
94+
name: Windows (MSVC) (x86-windows)
95+
runs-on: windows-latest
96+
env:
97+
OMATH_BUILD_VIA_VCPKG: ON
98+
99+
steps:
100+
- name: Checkout repository (with sub-modules)
101+
uses: actions/checkout@v4
102+
with:
103+
submodules: recursive
104+
105+
- name: Install Ninja
106+
uses: seanmiddleditch/gha-setup-ninja@v4
107+
108+
- name: Set up MSVC developer command-prompt
109+
uses: ilammy/msvc-dev-cmd@v1
110+
with:
111+
arch: amd64_x86
112+
113+
- name: Configure (cmake --preset)
114+
shell: bash
115+
run: cmake --preset windows-release-vcpkg-x86 -DOMATH_BUILD_TESTS=ON -DOMATH_BUILD_BENCHMARK=OFF -DVCPKG_MANIFEST_FEATURES="imgui;avx2;tests"
116+
117+
- name: Build
118+
shell: bash
119+
run: cmake --build cmake-build/build/windows-release-vcpkg-x86 --target unit_tests omath
120+
121+
- name: Run unit_tests.exe
122+
shell: bash
123+
run: ./out/Release/unit_tests.exe
124+
88125
##############################################################################
89126
# 3) macOS – AppleClang / Ninja
90127
##############################################################################
@@ -306,4 +343,169 @@ jobs:
306343
- name: Build
307344
shell: bash
308345
run: |
309-
cmake --build cmake-build/build/wasm-release-vcpkg --target unit_tests omath
346+
cmake --build cmake-build/build/wasm-release-vcpkg --target unit_tests omath
347+
348+
##############################################################################
349+
# 7) Windows MSYS2 MinGW – GCC / Ninja / x64-mingw-dynamic
350+
##############################################################################
351+
mingw-build-and-test:
352+
name: MINGW64 (MSYS2) (x64-mingw-dynamic)
353+
runs-on: windows-latest
354+
355+
defaults:
356+
run:
357+
shell: msys2 {0}
358+
359+
env:
360+
VCPKG_ROOT: ${{ github.workspace }}/vcpkg
361+
362+
steps:
363+
- name: Setup MSYS2
364+
uses: msys2/setup-msys2@v2
365+
with:
366+
msystem: MINGW64
367+
update: true
368+
install: >-
369+
mingw-w64-x86_64-toolchain
370+
mingw-w64-x86_64-cmake
371+
mingw-w64-x86_64-ninja
372+
mingw-w64-x86_64-pkg-config
373+
git
374+
base-devel
375+
376+
- name: Checkout repository (with sub-modules)
377+
uses: actions/checkout@v4
378+
with:
379+
submodules: recursive
380+
381+
- name: Set up vcpkg
382+
run: |
383+
git clone https://github.com/microsoft/vcpkg "$VCPKG_ROOT"
384+
cd "$VCPKG_ROOT"
385+
./bootstrap-vcpkg.sh
386+
387+
- name: Configure (cmake --preset)
388+
run: |
389+
cmake --preset mingw-release-vcpkg \
390+
-DVCPKG_INSTALL_OPTIONS="--allow-unsupported" \
391+
-DOMATH_BUILD_TESTS=ON \
392+
-DOMATH_BUILD_BENCHMARK=OFF \
393+
-DVCPKG_MANIFEST_FEATURES="imgui;tests"
394+
395+
- name: Build
396+
run: |
397+
cmake --build cmake-build/build/mingw-release-vcpkg --target unit_tests omath
398+
399+
- name: Run unit_tests.exe
400+
run: |
401+
./out/Release/unit_tests.exe
402+
403+
##############################################################################
404+
# 8) Windows UCRT64 MSYS2 MinGW – GCC / Ninja / x64-mingw-dynamic
405+
##############################################################################
406+
mingw-ucrt-build-and-test:
407+
name: UCRT64 (MSYS2) (x64-mingw-dynamic)
408+
runs-on: windows-latest
409+
410+
defaults:
411+
run:
412+
shell: msys2 {0}
413+
414+
env:
415+
VCPKG_ROOT: ${{ github.workspace }}/vcpkg
416+
417+
steps:
418+
- name: Setup MSYS2
419+
uses: msys2/setup-msys2@v2
420+
with:
421+
msystem: UCRT64
422+
update: true
423+
install: >-
424+
mingw-w64-ucrt-x86_64-toolchain
425+
mingw-w64-ucrt-x86_64-cmake
426+
mingw-w64-ucrt-x86_64-ninja
427+
mingw-w64-ucrt-x86_64-pkg-config
428+
git
429+
base-devel
430+
431+
- name: Checkout repository (with sub-modules)
432+
uses: actions/checkout@v4
433+
with:
434+
submodules: recursive
435+
436+
- name: Set up vcpkg
437+
run: |
438+
git clone https://github.com/microsoft/vcpkg "$VCPKG_ROOT"
439+
cd "$VCPKG_ROOT"
440+
./bootstrap-vcpkg.sh
441+
442+
- name: Configure (cmake --preset)
443+
run: |
444+
cmake --preset mingw-release-vcpkg \
445+
-DVCPKG_INSTALL_OPTIONS="--allow-unsupported" \
446+
-DOMATH_BUILD_TESTS=ON \
447+
-DOMATH_BUILD_BENCHMARK=OFF \
448+
-DVCPKG_MANIFEST_FEATURES="imgui;tests"
449+
450+
- name: Build
451+
run: |
452+
cmake --build cmake-build/build/mingw-release-vcpkg --target unit_tests omath
453+
454+
- name: Run unit_tests.exe
455+
run: |
456+
./out/Release/unit_tests.exe
457+
458+
##############################################################################
459+
# 9) Windows MSYS2 MinGW32 – GCC / Ninja / x86-mingw-dynamic
460+
##############################################################################
461+
mingw32-build-and-test:
462+
name: MINGW32 (MSYS2) (x86-mingw-dynamic)
463+
runs-on: windows-latest
464+
465+
defaults:
466+
run:
467+
shell: msys2 {0}
468+
469+
env:
470+
VCPKG_ROOT: ${{ github.workspace }}/vcpkg
471+
472+
steps:
473+
- name: Setup MSYS2
474+
uses: msys2/setup-msys2@v2
475+
with:
476+
msystem: MINGW32
477+
update: true
478+
install: >-
479+
mingw-w64-i686-toolchain
480+
mingw-w64-i686-cmake
481+
mingw-w64-i686-ninja
482+
mingw-w64-i686-pkg-config
483+
git
484+
base-devel
485+
486+
- name: Checkout repository (with sub-modules)
487+
uses: actions/checkout@v4
488+
with:
489+
submodules: recursive
490+
491+
- name: Set up vcpkg
492+
run: |
493+
git clone https://github.com/microsoft/vcpkg "$VCPKG_ROOT"
494+
cd "$VCPKG_ROOT"
495+
./bootstrap-vcpkg.sh
496+
497+
- name: Configure (cmake --preset)
498+
run: |
499+
cmake --preset mingw32-release-vcpkg \
500+
-DVCPKG_INSTALL_OPTIONS="--allow-unsupported" \
501+
-DOMATH_BUILD_TESTS=ON \
502+
-DOMATH_BUILD_BENCHMARK=OFF \
503+
-DVCPKG_MANIFEST_FEATURES="imgui;tests"
504+
505+
- name: Build
506+
run: |
507+
cmake --build cmake-build/build/mingw32-release-vcpkg --target unit_tests omath
508+
509+
- name: Run unit_tests.exe
510+
run: |
511+
./out/Release/unit_tests.exe

0 commit comments

Comments
 (0)