Skip to content

Commit 2e83159

Browse files
Copilotmackron
andcommitted
Add FreeBSD, OpenBSD, NetBSD support and enable examples/tests building in CI workflow
Co-authored-by: mackron <[email protected]>
1 parent 5b04b49 commit 2e83159

File tree

1 file changed

+189
-14
lines changed

1 file changed

+189
-14
lines changed

.github/workflows/ci.yml

Lines changed: 189 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,23 +17,41 @@ jobs:
1717
matrix:
1818
compiler: [gcc, clang]
1919
config:
20-
- {name: "Default", cmake_args: ""}
20+
- name: "Default"
21+
cmake_args: "-DMINIAUDIO_BUILD_EXAMPLES=ON -DMINIAUDIO_BUILD_TESTS=ON"
2122
- name: "ALSA Only"
2223
cmake_args: >-
2324
-DMINIAUDIO_ENABLE_ONLY_SPECIFIC_BACKENDS=ON
2425
-DMINIAUDIO_ENABLE_ALSA=ON
26+
-DMINIAUDIO_BUILD_EXAMPLES=ON
27+
-DMINIAUDIO_BUILD_TESTS=ON
2528
- name: "PulseAudio Only"
2629
cmake_args: >-
2730
-DMINIAUDIO_ENABLE_ONLY_SPECIFIC_BACKENDS=ON
2831
-DMINIAUDIO_ENABLE_PULSEAUDIO=ON
32+
-DMINIAUDIO_BUILD_EXAMPLES=ON
33+
-DMINIAUDIO_BUILD_TESTS=ON
2934
- name: "JACK Only"
3035
cmake_args: >-
3136
-DMINIAUDIO_ENABLE_ONLY_SPECIFIC_BACKENDS=ON
3237
-DMINIAUDIO_ENABLE_JACK=ON
33-
- {name: "No Device IO", cmake_args: "-DMINIAUDIO_NO_DEVICEIO=ON"}
34-
- {name: "Force C++", cmake_args: "-DMINIAUDIO_FORCE_CXX=ON"}
38+
-DMINIAUDIO_BUILD_EXAMPLES=ON
39+
-DMINIAUDIO_BUILD_TESTS=ON
40+
- name: "No Device IO"
41+
cmake_args: >-
42+
-DMINIAUDIO_NO_DEVICEIO=ON
43+
-DMINIAUDIO_BUILD_EXAMPLES=ON
44+
-DMINIAUDIO_BUILD_TESTS=ON
45+
- name: "Force C++"
46+
cmake_args: >-
47+
-DMINIAUDIO_FORCE_CXX=ON
48+
-DMINIAUDIO_BUILD_EXAMPLES=ON
49+
-DMINIAUDIO_BUILD_TESTS=ON
3550
- name: "Force C89"
36-
cmake_args: "-DMINIAUDIO_FORCE_C89=ON"
51+
cmake_args: >-
52+
-DMINIAUDIO_FORCE_C89=ON
53+
-DMINIAUDIO_BUILD_EXAMPLES=ON
54+
-DMINIAUDIO_BUILD_TESTS=ON
3755
continue_on_error: true
3856

3957
steps:
@@ -69,21 +87,36 @@ jobs:
6987
matrix:
7088
compiler: [msvc, mingw]
7189
config:
72-
- {name: "Default", cmake_args: ""}
90+
- name: "Default"
91+
cmake_args: "-DMINIAUDIO_BUILD_EXAMPLES=ON -DMINIAUDIO_BUILD_TESTS=ON"
7392
- name: "WASAPI Only"
7493
cmake_args: >-
7594
-DMINIAUDIO_ENABLE_ONLY_SPECIFIC_BACKENDS=ON
7695
-DMINIAUDIO_ENABLE_WASAPI=ON
96+
-DMINIAUDIO_BUILD_EXAMPLES=ON
97+
-DMINIAUDIO_BUILD_TESTS=ON
7798
- name: "DirectSound Only"
7899
cmake_args: >-
79100
-DMINIAUDIO_ENABLE_ONLY_SPECIFIC_BACKENDS=ON
80101
-DMINIAUDIO_ENABLE_DSOUND=ON
102+
-DMINIAUDIO_BUILD_EXAMPLES=ON
103+
-DMINIAUDIO_BUILD_TESTS=ON
81104
- name: "WinMM Only"
82105
cmake_args: >-
83106
-DMINIAUDIO_ENABLE_ONLY_SPECIFIC_BACKENDS=ON
84107
-DMINIAUDIO_ENABLE_WINMM=ON
85-
- {name: "No Device IO", cmake_args: "-DMINIAUDIO_NO_DEVICEIO=ON"}
86-
- {name: "Force C++", cmake_args: "-DMINIAUDIO_FORCE_CXX=ON"}
108+
-DMINIAUDIO_BUILD_EXAMPLES=ON
109+
-DMINIAUDIO_BUILD_TESTS=ON
110+
- name: "No Device IO"
111+
cmake_args: >-
112+
-DMINIAUDIO_NO_DEVICEIO=ON
113+
-DMINIAUDIO_BUILD_EXAMPLES=ON
114+
-DMINIAUDIO_BUILD_TESTS=ON
115+
- name: "Force C++"
116+
cmake_args: >-
117+
-DMINIAUDIO_FORCE_CXX=ON
118+
-DMINIAUDIO_BUILD_EXAMPLES=ON
119+
-DMINIAUDIO_BUILD_TESTS=ON
87120
88121
steps:
89122
- uses: actions/checkout@v4
@@ -127,15 +160,29 @@ jobs:
127160
fail-fast: false
128161
matrix:
129162
config:
130-
- {name: "Default", cmake_args: ""}
163+
- name: "Default"
164+
cmake_args: "-DMINIAUDIO_BUILD_EXAMPLES=ON -DMINIAUDIO_BUILD_TESTS=ON"
131165
- name: "CoreAudio Only"
132166
cmake_args: >-
133167
-DMINIAUDIO_ENABLE_ONLY_SPECIFIC_BACKENDS=ON
134168
-DMINIAUDIO_ENABLE_COREAUDIO=ON
135-
- {name: "No Device IO", cmake_args: "-DMINIAUDIO_NO_DEVICEIO=ON"}
136-
- {name: "Force C++", cmake_args: "-DMINIAUDIO_FORCE_CXX=ON"}
169+
-DMINIAUDIO_BUILD_EXAMPLES=ON
170+
-DMINIAUDIO_BUILD_TESTS=ON
171+
- name: "No Device IO"
172+
cmake_args: >-
173+
-DMINIAUDIO_NO_DEVICEIO=ON
174+
-DMINIAUDIO_BUILD_EXAMPLES=ON
175+
-DMINIAUDIO_BUILD_TESTS=ON
176+
- name: "Force C++"
177+
cmake_args: >-
178+
-DMINIAUDIO_FORCE_CXX=ON
179+
-DMINIAUDIO_BUILD_EXAMPLES=ON
180+
-DMINIAUDIO_BUILD_TESTS=ON
137181
- name: "Force C89"
138-
cmake_args: "-DMINIAUDIO_FORCE_C89=ON"
182+
cmake_args: >-
183+
-DMINIAUDIO_FORCE_C89=ON
184+
-DMINIAUDIO_BUILD_EXAMPLES=ON
185+
-DMINIAUDIO_BUILD_TESTS=ON
139186
continue_on_error: true
140187

141188
steps:
@@ -154,12 +201,19 @@ jobs:
154201
fail-fast: false
155202
matrix:
156203
config:
157-
- {name: "Default", cmake_args: ""}
204+
- name: "Default"
205+
cmake_args: "-DMINIAUDIO_BUILD_EXAMPLES=ON -DMINIAUDIO_BUILD_TESTS=ON"
158206
- name: "WebAudio Only"
159207
cmake_args: >-
160208
-DMINIAUDIO_ENABLE_ONLY_SPECIFIC_BACKENDS=ON
161209
-DMINIAUDIO_ENABLE_WEBAUDIO=ON
162-
- {name: "No Device IO", cmake_args: "-DMINIAUDIO_NO_DEVICEIO=ON"}
210+
-DMINIAUDIO_BUILD_EXAMPLES=ON
211+
-DMINIAUDIO_BUILD_TESTS=ON
212+
- name: "No Device IO"
213+
cmake_args: >-
214+
-DMINIAUDIO_NO_DEVICEIO=ON
215+
-DMINIAUDIO_BUILD_EXAMPLES=ON
216+
-DMINIAUDIO_BUILD_TESTS=ON
163217
164218
steps:
165219
- uses: actions/checkout@v4
@@ -183,15 +237,20 @@ jobs:
183237
matrix:
184238
arch: [arm64-v8a, armeabi-v7a, x86_64]
185239
config:
186-
- {name: "Default", cmake_args: ""}
240+
- name: "Default"
241+
cmake_args: "-DMINIAUDIO_BUILD_EXAMPLES=ON -DMINIAUDIO_BUILD_TESTS=ON"
187242
- name: "AAudio Only"
188243
cmake_args: >-
189244
-DMINIAUDIO_ENABLE_ONLY_SPECIFIC_BACKENDS=ON
190245
-DMINIAUDIO_ENABLE_AAUDIO=ON
246+
-DMINIAUDIO_BUILD_EXAMPLES=ON
247+
-DMINIAUDIO_BUILD_TESTS=ON
191248
- name: "OpenSL Only"
192249
cmake_args: >-
193250
-DMINIAUDIO_ENABLE_ONLY_SPECIFIC_BACKENDS=ON
194251
-DMINIAUDIO_ENABLE_OPENSL=ON
252+
-DMINIAUDIO_BUILD_EXAMPLES=ON
253+
-DMINIAUDIO_BUILD_TESTS=ON
195254
196255
steps:
197256
- uses: actions/checkout@v4
@@ -213,6 +272,120 @@ jobs:
213272
- name: Build
214273
run: cmake --build build --parallel $(nproc)
215274

275+
freebsd:
276+
name: FreeBSD (${{ matrix.config.name }})
277+
runs-on: ubuntu-latest
278+
continue-on-error: true
279+
strategy:
280+
fail-fast: false
281+
matrix:
282+
config:
283+
- {name: "Default", cmake_args: "-DMINIAUDIO_BUILD_EXAMPLES=ON -DMINIAUDIO_BUILD_TESTS=ON"}
284+
- name: "OSS Only"
285+
cmake_args: >-
286+
-DMINIAUDIO_ENABLE_ONLY_SPECIFIC_BACKENDS=ON
287+
-DMINIAUDIO_ENABLE_OSS=ON
288+
-DMINIAUDIO_BUILD_EXAMPLES=ON
289+
-DMINIAUDIO_BUILD_TESTS=ON
290+
- name: "No Device IO"
291+
cmake_args: >-
292+
-DMINIAUDIO_NO_DEVICEIO=ON
293+
-DMINIAUDIO_BUILD_EXAMPLES=ON
294+
-DMINIAUDIO_BUILD_TESTS=ON
295+
296+
steps:
297+
- uses: actions/checkout@v4
298+
299+
- name: Test on FreeBSD
300+
uses: vmactions/freebsd-vm@v1
301+
with:
302+
usesh: true
303+
prepare: |
304+
pkg install -y cmake
305+
run: |
306+
cmake -B build ${{ matrix.config.cmake_args }}
307+
cmake --build build --parallel $(sysctl -n hw.ncpu)
308+
309+
openbsd:
310+
name: OpenBSD (${{ matrix.config.name }})
311+
runs-on: ubuntu-latest
312+
continue-on-error: true
313+
strategy:
314+
fail-fast: false
315+
matrix:
316+
config:
317+
- {name: "Default", cmake_args: "-DMINIAUDIO_BUILD_EXAMPLES=ON -DMINIAUDIO_BUILD_TESTS=ON"}
318+
- name: "sndio Only"
319+
cmake_args: >-
320+
-DMINIAUDIO_ENABLE_ONLY_SPECIFIC_BACKENDS=ON
321+
-DMINIAUDIO_ENABLE_SNDIO=ON
322+
-DMINIAUDIO_BUILD_EXAMPLES=ON
323+
-DMINIAUDIO_BUILD_TESTS=ON
324+
- name: "OSS Only"
325+
cmake_args: >-
326+
-DMINIAUDIO_ENABLE_ONLY_SPECIFIC_BACKENDS=ON
327+
-DMINIAUDIO_ENABLE_OSS=ON
328+
-DMINIAUDIO_BUILD_EXAMPLES=ON
329+
-DMINIAUDIO_BUILD_TESTS=ON
330+
- name: "No Device IO"
331+
cmake_args: >-
332+
-DMINIAUDIO_NO_DEVICEIO=ON
333+
-DMINIAUDIO_BUILD_EXAMPLES=ON
334+
-DMINIAUDIO_BUILD_TESTS=ON
335+
336+
steps:
337+
- uses: actions/checkout@v4
338+
339+
- name: Test on OpenBSD
340+
uses: vmactions/openbsd-vm@v1
341+
with:
342+
usesh: true
343+
prepare: |
344+
pkg_add cmake
345+
run: |
346+
cmake -B build ${{ matrix.config.cmake_args }}
347+
cmake --build build --parallel $(sysctl -n hw.ncpu)
348+
349+
netbsd:
350+
name: NetBSD (${{ matrix.config.name }})
351+
runs-on: ubuntu-latest
352+
continue-on-error: true
353+
strategy:
354+
fail-fast: false
355+
matrix:
356+
config:
357+
- {name: "Default", cmake_args: "-DMINIAUDIO_BUILD_EXAMPLES=ON -DMINIAUDIO_BUILD_TESTS=ON"}
358+
- name: "audio4 Only"
359+
cmake_args: >-
360+
-DMINIAUDIO_ENABLE_ONLY_SPECIFIC_BACKENDS=ON
361+
-DMINIAUDIO_ENABLE_AUDIO4=ON
362+
-DMINIAUDIO_BUILD_EXAMPLES=ON
363+
-DMINIAUDIO_BUILD_TESTS=ON
364+
- name: "OSS Only"
365+
cmake_args: >-
366+
-DMINIAUDIO_ENABLE_ONLY_SPECIFIC_BACKENDS=ON
367+
-DMINIAUDIO_ENABLE_OSS=ON
368+
-DMINIAUDIO_BUILD_EXAMPLES=ON
369+
-DMINIAUDIO_BUILD_TESTS=ON
370+
- name: "No Device IO"
371+
cmake_args: >-
372+
-DMINIAUDIO_NO_DEVICEIO=ON
373+
-DMINIAUDIO_BUILD_EXAMPLES=ON
374+
-DMINIAUDIO_BUILD_TESTS=ON
375+
376+
steps:
377+
- uses: actions/checkout@v4
378+
379+
- name: Test on NetBSD
380+
uses: vmactions/netbsd-vm@v1
381+
with:
382+
usesh: true
383+
prepare: |
384+
/usr/sbin/pkg_add cmake
385+
run: |
386+
cmake -B build ${{ matrix.config.cmake_args }}
387+
cmake --build build --parallel $(sysctl -n hw.ncpu)
388+
216389
additional-configs:
217390
name: Additional Configurations (${{ matrix.config.name }})
218391
runs-on: ubuntu-latest
@@ -234,6 +407,8 @@ jobs:
234407
- {name: "No MP3", cmake_args: "-DMINIAUDIO_NO_MP3=ON"}
235408
- {name: "Use stdint", cmake_args: "-DMINIAUDIO_USE_STDINT=ON"}
236409
- {name: "Debug Output", cmake_args: "-DMINIAUDIO_DEBUG_OUTPUT=ON"}
410+
- name: "Examples and Tests"
411+
cmake_args: "-DMINIAUDIO_BUILD_EXAMPLES=ON -DMINIAUDIO_BUILD_TESTS=ON"
237412

238413
steps:
239414
- uses: actions/checkout@v4

0 commit comments

Comments
 (0)