From 4753b3a5c60846d0b211142accca2062be77cb17 Mon Sep 17 00:00:00 2001 From: Geoffrey McRae Date: Fri, 6 Nov 2026 19:46:25 +1100 Subject: [PATCH] [build] ci: fix platform build regressions Correct the clean IDD MsQuic archive lookup and enable XSAVE for MinGW CPU probing. Compile audio transports with precise floating-point semantics so finite-value validation remains valid under Clang. Install the OBS samplerate development dependency. --- .github/workflows/build.yml | 4 +++- client/transports/LGMP/CMakeLists.txt | 10 ++++++++++ client/transports/Network/CMakeLists.txt | 10 ++++++++++ cmake/MsQuic.Static.targets | 2 +- common/src/platform/windows/CMakeLists.txt | 4 ++++ 5 files changed, 28 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b817025a..b3e2a425 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -218,7 +218,9 @@ jobs: sudo apt-get update - name: Install obs plugin dependencies run: | - sudo apt-get install libdw-dev libunwind-dev libobs-dev libgl1-mesa-dev + sudo apt-get install \ + libdw-dev libunwind-dev libobs-dev libgl1-mesa-dev \ + libsamplerate0-dev - name: Configure obs plugin run: | mkdir obs/build diff --git a/client/transports/LGMP/CMakeLists.txt b/client/transports/LGMP/CMakeLists.txt index bb773ce6..764f483e 100644 --- a/client/transports/LGMP/CMakeLists.txt +++ b/client/transports/LGMP/CMakeLists.txt @@ -17,6 +17,16 @@ endif() if(ENABLE_AUDIO) list(APPEND TRANSPORT_LGMP_SOURCES audio.c) + + if(MSVC) + set_source_files_properties(audio.c PROPERTIES + COMPILE_OPTIONS "/fp:precise" + ) + elseif(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang") + set_source_files_properties(audio.c PROPERTIES + COMPILE_OPTIONS "-fno-fast-math" + ) + endif() endif() add_library(transport_LGMP STATIC ${TRANSPORT_LGMP_SOURCES}) diff --git a/client/transports/Network/CMakeLists.txt b/client/transports/Network/CMakeLists.txt index 0ff60de4..71c637d0 100644 --- a/client/transports/Network/CMakeLists.txt +++ b/client/transports/Network/CMakeLists.txt @@ -20,6 +20,16 @@ set(TRANSPORT_NETWORK_SOURCES video/pyrowave.c ) +if(MSVC) + set_source_files_properties(audio.c PROPERTIES + COMPILE_OPTIONS "/fp:precise" + ) +elseif(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang") + set_source_files_properties(audio.c PROPERTIES + COMPILE_OPTIONS "-fno-fast-math" + ) +endif() + if(WIN32) list(APPEND TRANSPORT_NETWORK_SOURCES platform/windows/auth_crypto.c diff --git a/cmake/MsQuic.Static.targets b/cmake/MsQuic.Static.targets index d214cb36..fee62022 100644 --- a/cmake/MsQuic.Static.targets +++ b/cmake/MsQuic.Static.targets @@ -6,7 +6,7 @@ Win32 x64 $(LGMsQuicBuildDir)obj\$(LGBaseConfiguration)\ - $(LGMsQuicLibraryDir)msquic_static.lib + $(LGMsQuicLibraryDir)msquic.lib $(LGMsQuicLibraryDir)core.lib $(LGMsQuicLibraryDir)msquic_platform.lib diff --git a/common/src/platform/windows/CMakeLists.txt b/common/src/platform/windows/CMakeLists.txt index 15ff15c3..c3f00b56 100644 --- a/common/src/platform/windows/CMakeLists.txt +++ b/common/src/platform/windows/CMakeLists.txt @@ -11,6 +11,10 @@ add_compile_definitions(WINVER=0x0601 _WIN32_WINNT=0x0601) if(MINGW) add_compile_definitions(__USE_MINGW_ANSI_STDIO=0) + set_property(SOURCE cpuinfo.c APPEND PROPERTY + COMPILE_OPTIONS -mxsave + ) + # Build our own ntdll.dll import library # This tricks MinGW into not linking stuff like memcpy from ntdll.dll instead of mscvrt.dll if(NOT CMAKE_DLLTOOL)