Repository navigation
137 lines (112 loc) · 3.72 KB
/
Copy pathCI-mingw.yml
File metadata and controls
137 lines (112 loc) · 3.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
name: CI-mingw
on: [push, pull_request]
permissions:
contents: read
defaults:
run:
shell: msys2 {0}
jobs:
build:
strategy:
matrix:
compiler: [g++, clang++]
# TODO: add MSYS after #556 is fixed
# MINGW32 was removed since MSYS2 is phasing out 32-bit environments
msystem: [MINGW64, CLANG64]
include:
#- msystem: MSYS
# pkg-prefix: ''
- msystem: MINGW64
pkg-prefix: 'mingw-w64-x86_64-'
- msystem: CLANG64
pkg-prefix: 'mingw-w64-clang-x86_64-'
- compiler: g++
compiler-pkg: gcc
- compiler: clang++
compiler-pkg: clang
exclude:
- msystem: CLANG64
compiler: g++
fail-fast: false
runs-on: windows-2025
env:
CXX: ${{ matrix.compiler }}
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Set up MSYS2
uses: msys2/setup-msys2@v2
with:
release: false # use pre-installed
msystem: ${{ matrix.msystem }}
# TODO: install mingw-w64-x86_64-make and use mingw32.make instead - currently fails with "Windows Subsystem for Linux has no installed distributions."
# TODO: also run tests with non-prefixed Python?
install: >-
make
${{ matrix.pkg-prefix }}cmake
${{ matrix.pkg-prefix }}python
${{ matrix.pkg-prefix }}python-pytest
- name: install compiler
run: |
pacman -S --noconfirm ${{ matrix.pkg-prefix }}${{ matrix.compiler-pkg }}
${CXX} -v
- name: make simplecpp
run: |
make -j$(nproc) CXXOPTS="-Werror"
# gcc *and* clang are required to run-tests.py
# install it at this point since it has gcc as dependency which might interfere with the build
- name: install compiler (clang)
if: matrix.compiler == 'g++'
run: |
pacman -S --noconfirm clang
- name: install compiler (gcc)
if: matrix.compiler == 'clang++'
run: |
pacman -S --noconfirm gcc
- name: make test
run: |
# TODO: run tests with Windows paths
make -j$(nproc) test
- name: selfcheck
run: |
# TODO: run tests with Windows paths
make -j$(nproc) selfcheck
- name: make (c++14)
run: |
make clean
make -j$(nproc) CXXOPTS="-Werror -std=c++14"
- name: make (c++17)
run: |
make clean
make -j$(nproc) CXXOPTS="-Werror -std=c++17"
- name: make (c++20)
run: |
make clean
make -j$(nproc) CXXOPTS="-Werror -std=c++20"
- name: make (c++23)
run: |
make clean
make -j$(nproc) CXXOPTS="-Werror -std=c++23"
- name: Run CMake
run: |
cmake -S . -B cmake.output -DCMAKE_COMPILE_WARNING_AS_ERROR=On
- name: CMake simplecpp
run: |
cmake --build cmake.output --target simplecpp -- -j $(nproc)
- name: CMake testrunner
run: |
cmake --build cmake.output --target testrunner -- -j $(nproc)
- name: Run testrunner
run: |
./cmake.output/testrunner
- name: Run with libstdc++ debug mode
if: matrix.compiler == 'g++'
run: |
make clean
make -j$(nproc) test selfcheck CXXOPTS="-Werror -g3 -D_GLIBCXX_DEBUG"
- name: Run with libc++ hardening mode
if: matrix.compiler == 'clang++' && matrix.msystem == 'CLANG64'
run: |
make clean
make -j$(nproc) test selfcheck CXXOPTS="-Werror -stdlib=libc++ -g3 -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_DEBUG" LDOPTS="-lc++"