Download raw body.
UPDATE: OpenAL 1.25.1
ok
On Sun, 15 Feb 2026 at 03:28, Brad Smith <brad@comstyle.com> wrote:
> Here is an update to OpenAL 1.25.1.
>
>
> openal-soft-1.25.1:
>
> Fixed the OpenSL and JACK backends.
>
> Fixed WASAPI and CoreAudio capture.
>
> Fixed building the OSS backend with OSS v4.
>
> Fixed a debug assertion with HRTF enabled.
>
> Fixed an STL hardening assertion in the polyphase resampler with
> certain
> resampling ratios.
>
> Added a new stereo-encoding option for Tetraphonic Surround Matrix
> Encoding.
>
> openal-soft-1.25.0:
>
> Updated library codebase to C++20.
>
> Fixed alcIsExtensionPresent to do a case-insensitive compare.
>
> Fixed potential noise when switching reverbs.
>
> Fixed reverb panning with certain output modes.
>
> Fixed retrieving the alGetProcAddressDirect extension function.
>
> Fixed negative source offsets with a callback buffer.
>
> Fixed a memory issue that could occur in rare situations with looping
> sources.
>
> Fixed compiling for and running on older macOS versions.
>
> Fixed using unicode in environment variable values on Windows.
>
> Fixed memory alignment issues with 32-bit MinGW builds.
>
> Fixed a crash in sofa-info with SOFA files that have null strings.
>
> Updated alsoft-config to Qt6.
>
> Added build options for STL hardening. Performant checks meant for
> production are enabled by default.
>
> Added support for fourth-order ambisonics.
>
> Added support for CAF files to the Wave Writer backend.
>
> Added optional support for C++20 modules. These are intended to be
> copied
> into projects wishing to use them, since modules depend on being built
> with
> compatible compile flags as the sources they're imported into.
>
> Added a .note.dlopen section to ELF shared library builds to record
> dynamic
> dependencies for build maintainers.
>
> Converted the headers to XML files, which are used to generate the
> headers
> (and modules) with a script. Other scripts can be made to generate
> bindings
> for various other languages.
>
> Changed AL_PANNING_ENABLED_SOFT to allow being toggled on playing
> sources.
>
> Changed the default period size to 512 sample frames.
>
> Changed the default Super Stereo width to 0.46.
>
>
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/audio/openal/Makefile,v
> retrieving revision 1.71
> diff -u -p -u -p -r1.71 Makefile
> --- Makefile 13 Feb 2026 12:02:13 -0000 1.71
> +++ Makefile 15 Feb 2026 03:19:24 -0000
> @@ -1,6 +1,6 @@
> COMMENT = cross-platform 3D audio API
>
> -V = 1.24.3
> +V = 1.25.1
> DISTNAME = openal-soft-$V
> PKGNAME = openal-$V
> EPOCH = 0
> @@ -8,9 +8,9 @@ CATEGORIES = audio
>
> SHARED_LIBS = openal 6.0
>
> -HOMEPAGE = http://openal-soft.org/
> +HOMEPAGE = https://openal-soft.org/
>
> -SITES =
> https://github.com/kcat/openal-soft/releases/download/$V/
> +SITES = ${HOMEPAGE}openal-releases/
> EXTRACT_SUFX = .tar.bz2
>
> MAINTAINER = David Carlier <devnexen@gmail.com>
> @@ -18,9 +18,9 @@ MAINTAINER = David Carlier <devnexen@gma
> # LGPLv2+
> PERMIT_PACKAGE =Yes
>
> -WANTLIB += c m mysofa pthread sndio z ${COMPILER_LIBCXX}
> +WANTLIB += c m mysofa pthread sndio ${COMPILER_LIBCXX}
>
> -LIB_DEPENDS += audio/libmysofa>=1.3.3
> +LIB_DEPENDS += audio/libmysofa
>
> CONFIGURE_ARGS =-DALSOFT_BACKEND_PIPEWIRE=Off \
> -DALSOFT_BACKEND_WAVE=Off \
> Index: distinfo
> ===================================================================
> RCS file: /cvs/ports/audio/openal/distinfo,v
> retrieving revision 1.18
> diff -u -p -u -p -r1.18 distinfo
> --- distinfo 18 Nov 2025 12:12:48 -0000 1.18
> +++ distinfo 15 Feb 2026 03:19:24 -0000
> @@ -1,2 +1,2 @@
> -SHA256 (openal-soft-1.24.3.tar.bz2) =
> y15hl6HA2g7c8qgQJJU8yPqFRcO5R05IyFKvcJ1YeJI=
> -SIZE (openal-soft-1.24.3.tar.bz2) = 1025568
> +SHA256 (openal-soft-1.25.1.tar.bz2) =
> TCr/b4GXX0bsxRSNCSxJSMcdv7duS5ukvx/OKH9H1LU=
> +SIZE (openal-soft-1.25.1.tar.bz2) = 1119330
> Index: patches/patch-CMakeLists_txt
> ===================================================================
> RCS file: /cvs/ports/audio/openal/patches/patch-CMakeLists_txt,v
> retrieving revision 1.17
> diff -u -p -u -p -r1.17 patch-CMakeLists_txt
> --- patches/patch-CMakeLists_txt 18 Nov 2025 12:12:48 -0000
> 1.17
> +++ patches/patch-CMakeLists_txt 15 Feb 2026 03:19:24 -0000
> @@ -1,25 +1,7 @@
> Index: CMakeLists.txt
> --- CMakeLists.txt.orig
> +++ CMakeLists.txt
> -@@ -165,7 +165,7 @@ add_subdirectory(fmt-11.1.1 EXCLUDE_FROM_ALL)
> - set(CPP_DEFS ) # C pre-processor, not C++
> - set(INC_PATHS )
> - set(C_FLAGS )
> --set(LINKER_FLAGS )
> -+set(LINKER_FLAGS
> $<$<AND:$<CXX_COMPILER_ID:GNU>,$<VERSION_LESS:$<CXX_COMPILER_VERSION>,9.0>>:stdc++fs>)
> - set(LINKER_FLAGS_DEBUG )
> - set(LINKER_FLAGS_RELEASE )
> - set(EXTRA_LIBS )
> -@@ -1402,7 +1402,7 @@ target_include_directories(alsoft.common PRIVATE
> ${Ope
> - PUBLIC ${OpenAL_BINARY_DIR} ${OpenAL_SOURCE_DIR}/common)
> - target_compile_definitions(alsoft.common PRIVATE ${CPP_DEFS})
> - target_compile_options(alsoft.common PRIVATE ${C_FLAGS})
> --target_link_libraries(alsoft.common PRIVATE alsoft::fmt)
> -+target_link_libraries(alsoft.common PRIVATE ${LINKER_FLAGS} alsoft::fmt)
> - set_target_properties(alsoft.common PROPERTIES
> ${ALSOFT_STD_VERSION_PROPS}
> - POSITION_INDEPENDENT_CODE TRUE)
> -
> -@@ -1676,7 +1676,7 @@ endif()
> +@@ -1883,7 +1883,7 @@ endif()
>
> if(ALSOFT_INSTALL_CONFIG)
> install(FILES alsoftrc.sample
> Index: patches/patch-al_auxeffectslot_cpp
> ===================================================================
> RCS file: patches/patch-al_auxeffectslot_cpp
> diff -N patches/patch-al_auxeffectslot_cpp
> --- patches/patch-al_auxeffectslot_cpp 18 Nov 2025 12:12:48 -0000 1.2
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,18 +0,0 @@
> -gcc8: error: expression '<throw-expression>' is not a constant expression
> -
> -Index: al/auxeffectslot.cpp
> ---- al/auxeffectslot.cpp.orig
> -+++ al/auxeffectslot.cpp
> -@@ -241,9 +241,10 @@ constexpr auto EffectSlotTypeFromEnum(ALenum type)
> noe
> - case AL_EFFECT_DEDICATED_LOW_FREQUENCY_EFFECT: return
> EffectSlotType::Dedicated;
> - case AL_EFFECT_DEDICATED_DIALOGUE: return EffectSlotType::Dedicated;
> - case AL_EFFECT_CONVOLUTION_SOFT: return EffectSlotType::Convolution;
> -+ default:
> -+ ERR("Unhandled effect enum: {:#04x}", as_unsigned(type));
> -+ return EffectSlotType::None;
> - }
> -- ERR("Unhandled effect enum: {:#04x}", as_unsigned(type));
> -- return EffectSlotType::None;
> - }
> -
> - [[nodiscard]]
> Index: patches/patch-al_buffer_cpp
> ===================================================================
> RCS file: patches/patch-al_buffer_cpp
> diff -N patches/patch-al_buffer_cpp
> --- patches/patch-al_buffer_cpp 29 Apr 2025 12:50:31 -0000 1.1
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,33 +0,0 @@
> -gcc8: error: expression '<throw-expression>' is not a constant expression
> -
> -Index: al/buffer.cpp
> ---- al/buffer.cpp.orig
> -+++ al/buffer.cpp
> -@@ -87,9 +87,10 @@ constexpr auto EnumFromAmbiLayout(AmbiLayout layout) -
> - {
> - case AmbiLayout::FuMa: return AL_FUMA_SOFT;
> - case AmbiLayout::ACN: return AL_ACN_SOFT;
> -+ default:
> -+ throw std::runtime_error{fmt::format("Invalid AmbiLayout: {}",
> -+ int{al::to_underlying(layout)})};
> - }
> -- throw std::runtime_error{fmt::format("Invalid AmbiLayout: {}",
> -- int{al::to_underlying(layout)})};
> - }
> -
> - constexpr auto AmbiScalingFromEnum(ALenum scale) noexcept ->
> std::optional<AmbiScaling>
> -@@ -109,10 +110,11 @@ constexpr auto EnumFromAmbiScaling(AmbiScaling
> scale)
> - case AmbiScaling::FuMa: return AL_FUMA_SOFT;
> - case AmbiScaling::SN3D: return AL_SN3D_SOFT;
> - case AmbiScaling::N3D: return AL_N3D_SOFT;
> -- case AmbiScaling::UHJ: break;
> -+ case AmbiScaling::UHJ:
> -+ default:
> -+ throw std::runtime_error{fmt::format("Invalid AmbiScaling: {}",
> -+ int{al::to_underlying(scale)})};
> - }
> -- throw std::runtime_error{fmt::format("Invalid AmbiScaling: {}",
> -- int{al::to_underlying(scale)})};
> - }
> -
> - #if ALSOFT_EAX
> Index: patches/patch-al_debug_cpp
> ===================================================================
> RCS file: patches/patch-al_debug_cpp
> diff -N patches/patch-al_debug_cpp
> --- patches/patch-al_debug_cpp 29 Apr 2025 12:50:31 -0000 1.1
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,44 +0,0 @@
> -gcc8: error: expression '<throw-expression>' is not a constant expression
> -
> -Index: al/debug.cpp
> ---- al/debug.cpp.orig
> -+++ al/debug.cpp
> -@@ -109,9 +109,10 @@ constexpr auto GetDebugSourceEnum(DebugSource
> source)
> - case DebugSource::ThirdParty: return AL_DEBUG_SOURCE_THIRD_PARTY_EXT;
> - case DebugSource::Application: return
> AL_DEBUG_SOURCE_APPLICATION_EXT;
> - case DebugSource::Other: return AL_DEBUG_SOURCE_OTHER_EXT;
> -+ default:
> -+ throw std::runtime_error{fmt::format("Unexpected debug source
> value: {}",
> -+ int{al::to_underlying(source)})};
> - }
> -- throw std::runtime_error{fmt::format("Unexpected debug source value:
> {}",
> -- int{al::to_underlying(source)})};
> - }
> -
> - constexpr auto GetDebugTypeEnum(DebugType type) -> ALenum
> -@@ -127,9 +128,10 @@ constexpr auto GetDebugTypeEnum(DebugType type) ->
> ALe
> - case DebugType::PushGroup: return AL_DEBUG_TYPE_PUSH_GROUP_EXT;
> - case DebugType::PopGroup: return AL_DEBUG_TYPE_POP_GROUP_EXT;
> - case DebugType::Other: return AL_DEBUG_TYPE_OTHER_EXT;
> -+ default:
> -+ throw std::runtime_error{fmt::format("Unexpected debug type
> value: {}",
> -+ int{al::to_underlying(type)})};
> - }
> -- throw std::runtime_error{fmt::format("Unexpected debug type value:
> {}",
> -- int{al::to_underlying(type)})};
> - }
> -
> - constexpr auto GetDebugSeverityEnum(DebugSeverity severity) -> ALenum
> -@@ -140,9 +142,10 @@ constexpr auto GetDebugSeverityEnum(DebugSeverity
> seve
> - case DebugSeverity::Medium: return AL_DEBUG_SEVERITY_MEDIUM_EXT;
> - case DebugSeverity::Low: return AL_DEBUG_SEVERITY_LOW_EXT;
> - case DebugSeverity::Notification: return
> AL_DEBUG_SEVERITY_NOTIFICATION_EXT;
> -+ default:
> -+ throw std::runtime_error{fmt::format("Unexpected debug severity
> value: {}",
> -+ int{al::to_underlying(severity)})};
> - }
> -- throw std::runtime_error{fmt::format("Unexpected debug severity
> value: {}",
> -- int{al::to_underlying(severity)})};
> - }
> -
> -
> Index: patches/patch-al_effects_chorus_cpp
> ===================================================================
> RCS file: patches/patch-al_effects_chorus_cpp
> diff -N patches/patch-al_effects_chorus_cpp
> --- patches/patch-al_effects_chorus_cpp 18 Nov 2025 12:12:48 -0000 1.2
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,18 +0,0 @@
> -gcc8: error: expression '<throw-expression>' is not a constant expression
> -
> -Index: al/effects/chorus.cpp
> ---- al/effects/chorus.cpp.orig
> -+++ al/effects/chorus.cpp
> -@@ -43,9 +43,10 @@ constexpr ALenum EnumFromWaveform(ChorusWaveform type)
> - {
> - case ChorusWaveform::Sinusoid: return AL_CHORUS_WAVEFORM_SINUSOID;
> - case ChorusWaveform::Triangle: return AL_CHORUS_WAVEFORM_TRIANGLE;
> -+ default:
> -+ throw std::runtime_error{fmt::format("Invalid chorus waveform:
> {}",
> -+ int{al::to_underlying(type)})};
> - }
> -- throw std::runtime_error{fmt::format("Invalid chorus waveform: {}",
> -- int{al::to_underlying(type)})};
> - }
> -
> - constexpr EffectProps genDefaultChorusProps() noexcept
> Index: patches/patch-al_effects_fshifter_cpp
> ===================================================================
> RCS file: patches/patch-al_effects_fshifter_cpp
> diff -N patches/patch-al_effects_fshifter_cpp
> --- patches/patch-al_effects_fshifter_cpp 29 Apr 2025 12:50:31
> -0000 1.1
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,16 +0,0 @@
> -gcc8: error: expression '<throw-expression>' is not a constant expression
> -
> -Index: al/effects/fshifter.cpp
> ---- al/effects/fshifter.cpp.orig
> -+++ al/effects/fshifter.cpp
> -@@ -39,8 +39,9 @@ constexpr ALenum EnumFromDirection(FShifterDirection d
> - case FShifterDirection::Down: return
> AL_FREQUENCY_SHIFTER_DIRECTION_DOWN;
> - case FShifterDirection::Up: return AL_FREQUENCY_SHIFTER_DIRECTION_UP;
> - case FShifterDirection::Off: return
> AL_FREQUENCY_SHIFTER_DIRECTION_OFF;
> -+ default:
> -+ throw std::runtime_error{fmt::format("Invalid direction: {}",
> int{al::to_underlying(dir)})};
> - }
> -- throw std::runtime_error{fmt::format("Invalid direction: {}",
> int{al::to_underlying(dir)})};
> - }
> -
> - constexpr EffectProps genDefaultProps() noexcept
> Index: patches/patch-al_effects_modulator_cpp
> ===================================================================
> RCS file: patches/patch-al_effects_modulator_cpp
> diff -N patches/patch-al_effects_modulator_cpp
> --- patches/patch-al_effects_modulator_cpp 29 Apr 2025 12:50:31
> -0000 1.1
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,18 +0,0 @@
> -gcc8: error: expression '<throw-expression>' is not a constant expression
> -
> -Index: al/effects/modulator.cpp
> ---- al/effects/modulator.cpp.orig
> -+++ al/effects/modulator.cpp
> -@@ -39,9 +39,10 @@ constexpr ALenum EnumFromWaveform(ModulatorWaveform ty
> - case ModulatorWaveform::Sinusoid: return AL_RING_MODULATOR_SINUSOID;
> - case ModulatorWaveform::Sawtooth: return AL_RING_MODULATOR_SAWTOOTH;
> - case ModulatorWaveform::Square: return AL_RING_MODULATOR_SQUARE;
> -+ default:
> -+ throw std::runtime_error{fmt::format("Invalid modulator
> waveform: {}",
> -+ int{al::to_underlying(type)})};
> - }
> -- throw std::runtime_error{fmt::format("Invalid modulator waveform:
> {}",
> -- int{al::to_underlying(type)})};
> - }
> -
> - constexpr EffectProps genDefaultProps() noexcept
> Index: patches/patch-al_effects_vmorpher_cpp
> ===================================================================
> RCS file: patches/patch-al_effects_vmorpher_cpp
> diff -N patches/patch-al_effects_vmorpher_cpp
> --- patches/patch-al_effects_vmorpher_cpp 29 Apr 2025 12:50:31
> -0000 1.1
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,29 +0,0 @@
> -gcc8: error: expression '<throw-expression>' is not a constant expression
> -
> -Index: al/effects/vmorpher.cpp
> ---- al/effects/vmorpher.cpp.orig
> -+++ al/effects/vmorpher.cpp
> -@@ -96,8 +96,9 @@ constexpr ALenum EnumFromPhenome(VMorpherPhenome pheno
> - HANDLE_PHENOME(T);
> - HANDLE_PHENOME(V);
> - HANDLE_PHENOME(Z);
> -+ default:
> -+ throw std::runtime_error{fmt::format("Invalid phenome: {}",
> int{al::to_underlying(phenome)})};
> - }
> -- throw std::runtime_error{fmt::format("Invalid phenome: {}",
> int{al::to_underlying(phenome)})};
> - #undef HANDLE_PHENOME
> - }
> -
> -@@ -118,9 +119,10 @@ constexpr ALenum EnumFromWaveform(VMorpherWaveform
> typ
> - case VMorpherWaveform::Sinusoid: return
> AL_VOCAL_MORPHER_WAVEFORM_SINUSOID;
> - case VMorpherWaveform::Triangle: return
> AL_VOCAL_MORPHER_WAVEFORM_TRIANGLE;
> - case VMorpherWaveform::Sawtooth: return
> AL_VOCAL_MORPHER_WAVEFORM_SAWTOOTH;
> -+ default:
> -+ throw std::runtime_error{fmt::format("Invalid vocal morpher
> waveform: {}",
> -+ int{al::to_underlying(type)})};
> - }
> -- throw std::runtime_error{fmt::format("Invalid vocal morpher
> waveform: {}",
> -- int{al::to_underlying(type)})};
> - }
> -
> - constexpr EffectProps genDefaultProps() noexcept
> Index: patches/patch-al_state_cpp
> ===================================================================
> RCS file: patches/patch-al_state_cpp
> diff -N patches/patch-al_state_cpp
> --- patches/patch-al_state_cpp 18 Nov 2025 12:12:48 -0000 1.2
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,16 +0,0 @@
> -gcc8: error: expression '<throw-expression>' is not a constant expression
> -
> -Index: al/state.cpp
> ---- al/state.cpp.orig
> -+++ al/state.cpp
> -@@ -146,8 +146,9 @@ constexpr auto ALenumFromDistanceModel(DistanceModel m
> - case DistanceModel::LinearClamped: return AL_LINEAR_DISTANCE_CLAMPED;
> - case DistanceModel::Exponent: return AL_EXPONENT_DISTANCE;
> - case DistanceModel::ExponentClamped: return
> AL_EXPONENT_DISTANCE_CLAMPED;
> -+ default:
> -+ throw std::runtime_error{"Unexpected distance model
> "+std::to_string(static_cast<int>(model))};
> - }
> -- throw std::runtime_error{"Unexpected distance model
> "+std::to_string(static_cast<int>(model))};
> - }
> -
> - enum PropertyValue : ALenum {
> Index: patches/patch-alc_alconfig_cpp
> ===================================================================
> RCS file: /cvs/ports/audio/openal/patches/patch-alc_alconfig_cpp,v
> retrieving revision 1.6
> diff -u -p -u -p -r1.6 patch-alc_alconfig_cpp
> --- patches/patch-alc_alconfig_cpp 29 Jan 2025 10:59:26 -0000 1.6
> +++ patches/patch-alc_alconfig_cpp 15 Feb 2026 03:19:24 -0000
> @@ -1,12 +1,12 @@
> Index: alc/alconfig.cpp
> --- alc/alconfig.cpp.orig
> +++ alc/alconfig.cpp
> -@@ -381,7 +381,7 @@ void ReadALConfig()
> +@@ -426,7 +426,7 @@ void ReadALConfig()
>
> void ReadALConfig()
> {
> -- fs::path path{"/etc/openal/alsoft.conf"};
> -+ fs::path path{"${SYSCONFDIR}/openal/alsoft.conf"};
> +- auto path = fs::path{"/etc/openal/alsoft.conf"};
> ++ auto path = fs::path{"${SYSCONFDIR}/openal/alsoft.conf"};
>
> TRACE("Loading config {}...", al::u8_as_char(path.u8string()));
> - if(fs::ifstream f{path}; f.is_open())
> + if(auto f = fs::ifstream{path}; f.is_open())
> Index: patches/patch-alc_effects_reverb_cpp
> ===================================================================
> RCS file: patches/patch-alc_effects_reverb_cpp
> diff -N patches/patch-alc_effects_reverb_cpp
> --- patches/patch-alc_effects_reverb_cpp 29 Apr 2025 12:50:31
> -0000 1.1
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,16 +0,0 @@
> -gcc8 is too old for std::reduce
> -
> -Index: alc/effects/reverb.cpp
> ---- alc/effects/reverb.cpp.orig
> -+++ alc/effects/reverb.cpp
> -@@ -931,8 +931,8 @@ void EarlyReflections::updateLines(const float density
> - /* Calculate the gain (coefficient) for the secondary reflections
> based on
> - * the average delay and decay time.
> - */
> -- const auto length = std::reduce(EARLY_LINE_LENGTHS.begin(),
> EARLY_LINE_LENGTHS.end(), 0.0f)
> -- / float{EARLY_LINE_LENGTHS.size()} * density_mult;
> -+ const auto length = std::accumulate(EARLY_LINE_LENGTHS.begin(),
> EARLY_LINE_LENGTHS.end(), 0.0f)
> -+ / static_cast<float>(EARLY_LINE_LENGTHS.size()) * density_mult;
> - Coeff = CalcDecayCoeff(length, decayTime);
> -
> - }
> Index: patches/patch-fmt-11_1_1_CMakeLists_txt
> ===================================================================
> RCS file: patches/patch-fmt-11_1_1_CMakeLists_txt
> diff -N patches/patch-fmt-11_1_1_CMakeLists_txt
> --- patches/patch-fmt-11_1_1_CMakeLists_txt 29 Apr 2025 12:50:31
> -0000 1.1
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,14 +0,0 @@
> -gcc8: undefined reference to
> `std::filesystem::__cxx11::path::_M_split_cmpts()'
> -
> -Index: fmt-11.1.1/CMakeLists.txt
> ---- fmt-11.1.1/CMakeLists.txt.orig
> -+++ fmt-11.1.1/CMakeLists.txt
> -@@ -61,6 +61,8 @@ set(FMT_SOURCES src/format.cc src/os.cc)
> - add_library(alsoft.fmt OBJECT ${FMT_SOURCES} ${FMT_HEADERS} README.md
> ChangeLog.md)
> - add_library(alsoft::fmt ALIAS alsoft.fmt)
> -
> -+target_link_libraries(alsoft.fmt PRIVATE
> $<$<AND:$<CXX_COMPILER_ID:GNU>,$<VERSION_LESS:$<CXX_COMPILER_VERSION>,9.0>>:stdc++fs>)
> -+
> - if (cxx_std_11 IN_LIST CMAKE_CXX_COMPILE_FEATURES)
> - target_compile_features(alsoft.fmt PUBLIC cxx_std_11)
> - else ()
>
UPDATE: OpenAL 1.25.1