From cb9fd449fcfeef069a21345f1214db5243fdc29a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Micha=C3=ABl=20Celerier?= Date: Thu, 3 Jul 2025 11:28:23 -0400 Subject: [PATCH 1/6] ci: add a mingw ci --- .github/workflows/mingw.yml | 57 +++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 .github/workflows/mingw.yml diff --git a/.github/workflows/mingw.yml b/.github/workflows/mingw.yml new file mode 100644 index 00000000..f12790ce --- /dev/null +++ b/.github/workflows/mingw.yml @@ -0,0 +1,57 @@ +name: MSYS2 build + +on: push + +jobs: + mingw: + runs-on: windows-latest + strategy: + matrix: + include: + - { sys: clang64, env: clang-x86_64 } + steps: + - name: Check out repository code + uses: actions/checkout@v4 + with: + submodules: 'recursive' + + - name: Setup msys2 and mingw-w64 + uses: msys2/setup-msys2@v2 + with: + msystem: ${{matrix.sys}} + update: true + pacboy: >- + cmake:p + ninja:p + toolchain:p + cppwinrt:p + boost:p + + - name: Build debug + shell: msys2 {0} + run: | + cmake -S . -B build-debug \ + -DCMAKE_BUILD_TYPE=Debug \ + -DBUILD_TESTING=1 \ + -DLIBREMIDI_EXAMPLES=1 -DLIBREMIDI_TESTS=1 + cmake --build build-debug + + - name: Test debug + shell: msys2 {0} + run: | + cmake --build build-debug --target test + + - name: Build release + shell: msys2 {0} + run: | + cmake -S . -B build-release \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_TESTING=1 \ + -DLIBREMIDI_EXAMPLES=1 -DLIBREMIDI_TESTS=1 + cmake --build build-release + + - name: Test release + shell: msys2 {0} + run: | + cmake --build build-release --target test + From deab363d4bbbaa3dca8498c719395ec53de3300a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Micha=C3=ABl=20Celerier?= Date: Thu, 3 Jul 2025 12:08:25 -0400 Subject: [PATCH 2/6] Add more MinGW platforms --- .github/workflows/mingw.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/mingw.yml b/.github/workflows/mingw.yml index f12790ce..2b81e318 100644 --- a/.github/workflows/mingw.yml +++ b/.github/workflows/mingw.yml @@ -7,8 +7,13 @@ jobs: runs-on: windows-latest strategy: matrix: - include: - - { sys: clang64, env: clang-x86_64 } + sys: + - msys2 + - mingw64 + - ucrt64 + - clang64 + - clangarm64 + steps: - name: Check out repository code uses: actions/checkout@v4 From a035a3db49d0a0bb0a5dab6229024f182d13134f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Micha=C3=ABl=20Celerier?= Date: Thu, 3 Jul 2025 12:39:35 -0400 Subject: [PATCH 3/6] clang arm64 need windows arm64 runners, of course --- .github/workflows/mingw.yml | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/.github/workflows/mingw.yml b/.github/workflows/mingw.yml index 2b81e318..e8cc5b6e 100644 --- a/.github/workflows/mingw.yml +++ b/.github/workflows/mingw.yml @@ -8,11 +8,10 @@ jobs: strategy: matrix: sys: - - msys2 - mingw64 - ucrt64 - clang64 - - clangarm64 +# - clangarm64 steps: - name: Check out repository code @@ -38,8 +37,14 @@ jobs: cmake -S . -B build-debug \ -DCMAKE_BUILD_TYPE=Debug \ -DBUILD_TESTING=1 \ - -DLIBREMIDI_EXAMPLES=1 -DLIBREMIDI_TESTS=1 + -DLIBREMIDI_EXAMPLES=1 \ + -DLIBREMIDI_TESTS=1 \ + -DLIBREMIDI_CI=1 \ + -DCMAKE_CTEST_ARGUMENTS="--rerun-failed;--output-on-failure" \ + -DCMAKE_INSTALL_PREFIX=install + cmake --build build-debug + cmake --build build-debug --target install - name: Test debug shell: msys2 {0} @@ -52,8 +57,14 @@ jobs: cmake -S . -B build-release \ -DCMAKE_BUILD_TYPE=Release \ -DBUILD_TESTING=1 \ - -DLIBREMIDI_EXAMPLES=1 -DLIBREMIDI_TESTS=1 + -DLIBREMIDI_EXAMPLES=1 \ + -DLIBREMIDI_TESTS=1 \ + -DLIBREMIDI_CI=1 \ + -DCMAKE_CTEST_ARGUMENTS="--rerun-failed;--output-on-failure" \ + -DCMAKE_INSTALL_PREFIX=install + cmake --build build-release + cmake --build build-release --target install - name: Test release shell: msys2 {0} From 90165632688e1acad8a44c18f6c49ca56cc95a0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Micha=C3=ABl=20Celerier?= Date: Thu, 3 Jul 2025 19:24:02 -0400 Subject: [PATCH 4/6] ci: fix mingw warnings --- cmake/libremidi.deps.cmake | 4 ++-- include/libremidi/backends/winmidi/observer.hpp | 2 +- include/libremidi/backends/winuwp/midi_in.hpp | 3 ++- include/libremidi/backends/winuwp/observer.hpp | 11 ++++++----- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/cmake/libremidi.deps.cmake b/cmake/libremidi.deps.cmake index fe488e79..13c878ca 100644 --- a/cmake/libremidi.deps.cmake +++ b/cmake/libremidi.deps.cmake @@ -44,11 +44,11 @@ if(LIBREMIDI_NEEDS_READERWRITERQUEUE AND NOT TARGET readerwriterqueue) if(NOT readerwriterqueue_FOUND) FetchContent_Declare( - readerwriterqueue + rwq GIT_REPOSITORY https://github.com/cameron314/readerwriterqueue GIT_TAG master ) - FetchContent_MakeAvailable(readerwriterqueue) + FetchContent_MakeAvailable(rwq) endif() endif() diff --git a/include/libremidi/backends/winmidi/observer.hpp b/include/libremidi/backends/winmidi/observer.hpp index 304179e2..3380de44 100644 --- a/include/libremidi/backends/winmidi/observer.hpp +++ b/include/libremidi/backends/winmidi/observer.hpp @@ -167,7 +167,7 @@ class observer_impl final } void on_device_updated( - const MidiEndpointDeviceWatcher& e, + const MidiEndpointDeviceWatcher&, const MidiEndpointDeviceInformationUpdatedEventArgs& result) { // OPTIMIZEME diff --git a/include/libremidi/backends/winuwp/midi_in.hpp b/include/libremidi/backends/winuwp/midi_in.hpp index 0ccfbc50..2cd6eeda 100644 --- a/include/libremidi/backends/winuwp/midi_in.hpp +++ b/include/libremidi/backends/winuwp/midi_in.hpp @@ -47,7 +47,8 @@ class midi_in_winuwp final midi_start_timestamp = std::chrono::steady_clock::now(); port_.MessageReceived( - [=](const winrt::Windows::Devices::Midi::IMidiInPort& inputPort, + [this]( + const winrt::Windows::Devices::Midi::IMidiInPort&, const winrt::Windows::Devices::Midi::MidiMessageReceivedEventArgs& args) { this->process_message(args.Message()); }); diff --git a/include/libremidi/backends/winuwp/observer.hpp b/include/libremidi/backends/winuwp/observer.hpp index 7b5d2430..83e7a97f 100644 --- a/include/libremidi/backends/winuwp/observer.hpp +++ b/include/libremidi/backends/winuwp/observer.hpp @@ -1,5 +1,6 @@ #pragma once #include +#include #include namespace libremidi @@ -33,11 +34,11 @@ class observer_winuwp_internal cbs.emplace_back(tk, f); return tk; } + void remove(int tk) { auto it = std::remove_if( cbs.begin(), cbs.end(), [tk](const callback& c) { return c.token == tk; }); - auto r = std::distance(it, cbs.end()); cbs.erase(it, cbs.end()); } }; @@ -122,7 +123,7 @@ class observer_winuwp_internal deviceWatcher_.Added(evTokenOnDeviceAdded_); } - void on_device_added(DeviceWatcher sender, DeviceInformation deviceInfo) + void on_device_added(const DeviceWatcher&, const DeviceInformation& deviceInfo) { port_info p; { @@ -133,7 +134,7 @@ class observer_winuwp_internal portAddedEvent_(p); } - void on_device_removed(DeviceWatcher sender, DeviceInformationUpdate deviceUpdate) + void on_device_removed(const DeviceWatcher&, const DeviceInformationUpdate& deviceUpdate) { const auto id = deviceUpdate.Id(); auto pred = [&id](const port_info& portInfo) { return portInfo.id == id; }; @@ -152,9 +153,9 @@ class observer_winuwp_internal portRemovedEvent_(*p); } - void on_device_updated(DeviceWatcher sender, DeviceInformationUpdate deviceUpdate) { } + void on_device_updated(const DeviceWatcher&, const DeviceInformationUpdate&) { } - void on_device_enumeration_completed(DeviceWatcher sender, IInspectable const&) { } + void on_device_enumeration_completed(const DeviceWatcher&, const IInspectable&) { } private: std::vector portList_; From c71d12af4b43d87fc756ee03a067e6fcd425ac3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Micha=C3=ABl=20Celerier?= Date: Thu, 3 Jul 2025 19:26:07 -0400 Subject: [PATCH 5/6] ci: mark catch2 as SYSTEM so that we do not get bothered by its internal warnings --- cmake/libremidi.tests.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/libremidi.tests.cmake b/cmake/libremidi.tests.cmake index 511b1ffb..c3bf068c 100644 --- a/cmake/libremidi.tests.cmake +++ b/cmake/libremidi.tests.cmake @@ -2,6 +2,7 @@ FetchContent_Declare( Catch2 GIT_REPOSITORY https://github.com/catchorg/Catch2.git GIT_TAG v3.4.0 + SYSTEM ) FetchContent_MakeAvailable(Catch2) From fa7a757ed117908314cf55c72de44c39fec70227 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Micha=C3=ABl=20Celerier?= Date: Thu, 3 Jul 2025 21:24:19 -0400 Subject: [PATCH 6/6] ci: fix for debian bookworm --- cmake/libremidi.tests.cmake | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cmake/libremidi.tests.cmake b/cmake/libremidi.tests.cmake index c3bf068c..505381fb 100644 --- a/cmake/libremidi.tests.cmake +++ b/cmake/libremidi.tests.cmake @@ -1,8 +1,12 @@ +if(CMAKE_VERSION VERSION_GREATER 3.25) + set(CMAKE_FETCHCONTENT_SYSTEM_KEYWORD "SYSTEM") +endif() + FetchContent_Declare( Catch2 GIT_REPOSITORY https://github.com/catchorg/Catch2.git GIT_TAG v3.4.0 - SYSTEM + ${CMAKE_FETCHCONTENT_SYSTEM_KEYWORD} ) FetchContent_MakeAvailable(Catch2)