Skip to content

Commit 256aeb1

Browse files
committed
cxx modules: add a CI
1 parent 5a98df9 commit 256aeb1

4 files changed

Lines changed: 35 additions & 29 deletions

File tree

.github/workflows/build_cmake.yml

Lines changed: 22 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -12,34 +12,34 @@ on:
1212

1313
jobs:
1414
build:
15-
name: ${{ matrix.config.name }}
15+
name: ${{ matrix.config.name }}-${{ matrix.config.library_mode }}-${{ matrix.config.boost }}
1616
runs-on: ${{ matrix.config.os }}
1717
strategy:
1818
fail-fast: false
1919
matrix:
2020
boost: [0, 1]
21-
header_only: [0, 1]
21+
library_mode: [LIBRARY, HEADER_ONLY, MODULE]
2222
config:
2323
- {
24-
name: "Windows (MSVC)",
24+
name: "MSVC x86_64",
2525
os: windows-latest,
2626
generator: "",
27-
cmakeflags: "-DLIBREMIDI_NO_WINUWP=0 -DBOOST_ROOT=$PWD/boost_1_86_0",
27+
cmakeflags: "-DLIBREMIDI_NO_WINUWP=0 -DBOOST_ROOT=$PWD/boost_1_90_0",
2828
test_target: "RUN_TESTS",
2929
tests: 1,
3030
examples: 1
3131
}
3232
- {
33-
name: "Windows (MSVC, arm64)",
33+
name: "MSVC arm64",
3434
os: windows-11-arm,
3535
generator: "",
36-
cmakeflags: "-DLIBREMIDI_NO_WINUWP=0 -DBOOST_ROOT=$PWD/boost_1_86_0",
36+
cmakeflags: "-DLIBREMIDI_NO_WINUWP=0 -DBOOST_ROOT=$PWD/boost_1_90_0",
3737
test_target: "RUN_TESTS",
3838
tests: 1,
3939
examples: 1
4040
}
4141
- {
42-
name: "Ubuntu (gcc)",
42+
name: "Ubuntu gcc",
4343
os: ubuntu-latest,
4444
generator: "",
4545
cmakeflags: "-DCMAKE_CXX_FLAGS='-Werror=return-type -fsanitize=address -fsanitize=undefined -D_GLIBCXX_DEBUG=1 -D_GLIBCXX_DEBUG_PEDANTIC=1 -D_GLIBCXX_ASSERTIONS=1 -D_GLIBCXX_SANITIZE_VECTOR=1'",
@@ -48,7 +48,7 @@ jobs:
4848
examples: 1
4949
}
5050
- {
51-
name: "Ubuntu (clang-18, libstdc++)",
51+
name: "Ubuntu clang-18 libstdc++",
5252
os: ubuntu-latest,
5353
generator: "",
5454
cmakeflags: "-DCMAKE_CXX_COMPILER=clang++-18 -DCMAKE_CXX_FLAGS='-Werror=return-type -fsanitize=address -fsanitize=undefined'",
@@ -57,7 +57,7 @@ jobs:
5757
examples: 1
5858
}
5959
- {
60-
name: "Ubuntu (clang, libc++)",
60+
name: "Ubuntu clang libc++",
6161
os: ubuntu-latest,
6262
generator: "",
6363
cmakeflags: "-DCMAKE_CXX_COMPILER=clang++ -DCMAKE_CXX_FLAGS='-stdlib=libc++ -Werror=return-type'",
@@ -76,18 +76,18 @@ jobs:
7676
}
7777
- {
7878
name: "macOS",
79-
os: macos-14,
79+
os: macos-latest,
8080
generator: "",
81-
cmakeflags: "-DCMAKE_CXX_FLAGS=-Werror=return-type -DBOOST_ROOT=$PWD/boost_1_86_0",
81+
cmakeflags: "-DCMAKE_CXX_FLAGS=-Werror=return-type -DBOOST_ROOT=$PWD/boost_1_90_0",
8282
test_target: "test",
8383
tests: 1,
8484
examples: 1
8585
}
8686
- {
8787
name: "iOS",
88-
os: macos-14,
88+
os: macos-latest,
8989
generator: "-GXcode",
90-
cmakeflags: "-DCMAKE_CXX_FLAGS=-Werror=return-type -DBOOST_ROOT=$PWD/boost_1_86_0 -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_XCODE_EFFECTIVE_PLATFORMS=-iphoneos",
90+
cmakeflags: "-DCMAKE_CXX_FLAGS=-Werror=return-type -DBOOST_ROOT=$PWD/boost_1_90_0 -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_XCODE_EFFECTIVE_PLATFORMS=-iphoneos",
9191
test_target: "test",
9292
tests: 0,
9393
examples: 0
@@ -117,7 +117,7 @@ jobs:
117117
sudo apt update
118118
sudo apt install cmake libboost-dev libasound-dev libjack-jackd2-dev clang libc++-dev
119119
else
120-
curl -L https://github.com/ossia/sdk/releases/download/sdk31/boost_1_86_0.tar.gz > boost.tar.gz
120+
curl -L https://github.com/ossia/sdk/releases/download/sdk31/boost_1_90_0.tar.gz > boost.tar.gz
121121
tar -xzf boost.tar.gz
122122
rm boost.tar.gz
123123
fi
@@ -131,7 +131,7 @@ jobs:
131131
${{ matrix.config.generator }} \
132132
${{ matrix.config.cmakeflags }} \
133133
-DLIBREMIDI_FIND_BOOST=${{ matrix.boost }} \
134-
-DLIBREMIDI_HEADER_ONLY=${{ matrix.header_only }} \
134+
-DLIBREMIDI_LIBRARY_MODE=${{ matrix.library_mode }} \
135135
-DLIBREMIDI_EXAMPLES=${{ matrix.config.examples }} \
136136
-DLIBREMIDI_TESTS=${{ matrix.config.tests }} \
137137
-DLIBREMIDI_CI=1 \
@@ -163,7 +163,7 @@ jobs:
163163
fail-fast: false
164164
matrix:
165165
boost: [0, 1]
166-
header_only: [0, 1]
166+
library_mode: [LIBRARY, HEADER_ONLY, MODULE]
167167
steps:
168168
- uses: actions/checkout@v4
169169

@@ -182,7 +182,7 @@ jobs:
182182
183183
cmake -S . -B build \
184184
-DLIBREMIDI_FIND_BOOST=${{ matrix.boost }} \
185-
-DLIBREMIDI_HEADER_ONLY=${{ matrix.header_only }} \
185+
-DLIBREMIDI_LIBRARY_MODE=${{ matrix.library_mode }} \
186186
-DLIBREMIDI_EXAMPLES=1 \
187187
-DLIBREMIDI_TESTS=1 \
188188
-DLIBREMIDI_CI=1 \
@@ -202,8 +202,8 @@ jobs:
202202
fail-fast: false
203203
matrix:
204204
boost: [0, 1]
205-
header_only: [0, 1]
206-
distro: [bookworm, trixie]
205+
library_mode: [LIBRARY, HEADER_ONLY, MODULE]
206+
distro: [bookworm, trixie, testing]
207207

208208
steps:
209209
- name: Add backports repo if necessary
@@ -230,19 +230,14 @@ jobs:
230230
libasound-dev \
231231
libjack-jackd2-dev \
232232
libudev-dev \
233-
libpipewire-0.3-dev
234-
235-
if [[ "${{matrix.distro}}" == 'bullseye' ]]; then
236-
apt-get install -qq --force-yes cmake/bullseye-backports
237-
else
238-
apt-get install -qq --force-yes cmake
239-
fi
233+
libpipewire-0.3-dev \
234+
cmake
240235
241236
- name: Configure
242237
run: |
243238
cmake -S . -B build \
244239
-DLIBREMIDI_FIND_BOOST=${{ matrix.boost }} \
245-
-DLIBREMIDI_HEADER_ONLY=${{ matrix.header_only }} \
240+
-DLIBREMIDI_LIBRARY_MODE=${{ matrix.library_mode }} \
246241
-DLIBREMIDI_EXAMPLES=1 \
247242
-DLIBREMIDI_TESTS=1 \
248243
-DLIBREMIDI_CI=1 \

CMakeLists.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,17 @@ include(GNUInstallDirs)
1919
### Options ###
2020
option(LIBREMIDI_MODULE_BUILD "C++ module mode" OFF)
2121
option(LIBREMIDI_HEADER_ONLY "Header-only mode" OFF)
22+
option(LIBREMIDI_LIBRARY_MODE "Library mode: LIBRARY,HEADER_ONLY,MODULE" "")
23+
if("${LIBREMIDI_LIBRARY_MODE}" MATCHES "HEADER_ONLY")
24+
set(LIBREMIDI_HEADER_ONLY ON)
25+
set(LIBREMIDI_MODULE_BUILD OFF)
26+
elseif("${LIBREMIDI_LIBRARY_MODE}" MATCHES "MODULE")
27+
set(LIBREMIDI_HEADER_ONLY OFF)
28+
set(LIBREMIDI_MODULE_BUILD ON)
29+
else()
30+
set(LIBREMIDI_HEADER_ONLY OFF)
31+
set(LIBREMIDI_MODULE_BUILD OFF)
32+
endif()
2233

2334
cmake_dependent_option(LIBREMIDI_NO_COREMIDI "Disable CoreMidi back-end" OFF "APPLE" OFF)
2435
cmake_dependent_option(LIBREMIDI_NO_WINMM "Disable WinMM back-end" OFF "WIN32" OFF)

cmake/libremidi.examples.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ if(Boost_cobalt_FOUND)
110110
target_link_libraries(coroutines PRIVATE Boost::cobalt)
111111
endif()
112112

113-
if(NOT LIBREMIDI_MODULES_BUILD)
113+
if(NOT LIBREMIDI_MODULE_BUILD)
114114
add_executable(libremidi_c_api examples/c_api.c)
115115
target_link_libraries(libremidi_c_api PRIVATE libremidi)
116116
if(LIBREMIDI_HEADER_ONLY)
@@ -119,5 +119,5 @@ if(NOT LIBREMIDI_MODULES_BUILD)
119119
endif()
120120

121121

122-
add_executable(libremidi_modules examples/modules.cppm)
122+
add_executable(libremidi_modules examples/modules.cpp)
123123
target_link_libraries(libremidi_modules PRIVATE libremidi)

0 commit comments

Comments
 (0)