On Mon, 28 Apr 2025 07:20:03 +0200, Kurt Mosiejczuk <k...@cranky.work> wrote: > > On Sun, Apr 27, 2025 at 10:21:33PM +0200, Kirill A. Korinsky wrote: > > I see. > > > Here a diff which backport audio/openal to C++ which is supported by gcc8. > > > It is quite trivial, but I only compiled it. > > Tried it. It dies with another classic "I'm using ports-gcc for C++" error: > > [19/104] : && /usr/ports/pobj/openal-1.24.2/bin/c++ -O2 -pipe > fmt-11.1.1/CMakeFiles/alsoft.fmt.dir/src/format.cc.o > fmt-11.1.1/CMakeFiles/alsoft.fmt.dir/src/os.cc.o > CMakeFiles/makemhr.dir/utils/makemhr/loaddef.cpp.o > CMakeFiles/makemhr.dir/utils/makemhr/loadsofa.cpp.o > CMakeFiles/makemhr.dir/utils/makemhr/makemhr.cpp.o -o makemhr -pthread > libalsoft.sofa-support.a -pthread libalsoft.common.a > /usr/local/lib/libmysofa.so.0.1 /usr/lib/libz.so.7.1 /usr/lib/libm.so.10.1 > -Wl,-rpath-link,/usr/X11R6/lib && : > FAILED: makemhr > : && /usr/ports/pobj/openal-1.24.2/bin/c++ -O2 -pipe > fmt-11.1.1/CMakeFiles/alsoft.fmt.dir/src/format.cc.o > fmt-11.1.1/CMakeFiles/alsoft.fmt.dir/src/os.cc.o > CMakeFiles/makemhr.dir/utils/makemhr/loaddef.cpp.o > CMakeFiles/makemhr.dir/utils/makemhr/loadsofa.cpp.o > CMakeFiles/makemhr.dir/utils/makemhr/makemhr.cpp.o -o makemhr -pthread > libalsoft.sofa-support.a -pthread libalsoft.common.a > /usr/local/lib/libmysofa.so.0.1 /usr/lib/libz.so.7.1 /usr/lib/libm.so.10.1 > -Wl,-rpath-link,/usr/X11R6/lib && : > /usr/local/lib/libmysofa.so.0.1: warning: strcpy() is almost always misused, > please use strlcpy() > /usr/local/lib/libmysofa.so.0.1: warning: sprintf() is often misused, please > use snprintf() > /usr/local/lib/libmysofa.so.0.1: warning: strcat() is almost always misused, > please use strlcat() > CMakeFiles/makemhr.dir/utils/makemhr/loaddef.cpp.o: In function `(anonymous > namespace)::ProcessSources((anonymous namespace)::TokenReaderT*, HrirDataT*, > unsigned int)': > loaddef.cpp:(.text+0x4424): undefined reference to > `std::filesystem::__cxx11::path::_M_split_cmpts()' > loaddef.cpp:(.text+0x51dc): undefined reference to > `std::filesystem::__cxx11::path::_M_split_cmpts()' > CMakeFiles/makemhr.dir/utils/makemhr/makemhr.cpp.o: In function > `std::filesystem::__cxx11::path::path<std::basic_string_view<char, > std::char_traits<char> >, > std::filesystem::__cxx11::path>(std::basic_string_view<char, > std::char_traits<char> > const&, std::filesystem::__cxx11::path::format)': > makemhr.cpp:(.text._ZNSt10filesystem7__cxx114pathC2ISt17basic_string_viewIcSt11char_traitsIcEES1_EERKT_NS1_6formatE[_ZNSt10filesystem7__cxx114pathC5ISt17basic_string_viewIcSt11char_traitsIcEES1_EERKT_NS1_6formatE]+0x44): > undefined reference to `std::filesystem::__cxx11::path::_M_split_cmpts()' > collect2: error: ld returned 1 exit status > ninja: build stopped: subcommand failed. >
Thanks for testing, here an updated diff which should address this one, and similar issue. May I ask you to re-try it? Index: audio/openal/Makefile =================================================================== RCS file: /home/cvs/ports/audio/openal/Makefile,v diff -u -p -r1.68 Makefile --- audio/openal/Makefile 1 Feb 2025 09:56:08 -0000 1.68 +++ audio/openal/Makefile 29 Apr 2025 11:01:36 -0000 @@ -4,7 +4,7 @@ V = 1.24.2 DISTNAME = openal-soft-$V PKGNAME = openal-$V EPOCH = 0 -REVISION = 0 +REVISION = 1 CATEGORIES = audio SHARED_LIBS = openal 6.0 Index: audio/openal/patches/patch-CMakeLists_txt =================================================================== RCS file: /home/cvs/ports/audio/openal/patches/patch-CMakeLists_txt,v diff -u -p -r1.15 patch-CMakeLists_txt --- audio/openal/patches/patch-CMakeLists_txt 29 Jan 2025 10:59:26 -0000 1.15 +++ audio/openal/patches/patch-CMakeLists_txt 29 Apr 2025 10:57:28 -0000 @@ -1,6 +1,24 @@ Index: CMakeLists.txt --- CMakeLists.txt.orig +++ CMakeLists.txt +@@ -149,7 +149,7 @@ endif() + 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 ) +@@ -1375,7 +1375,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) + @@ -1649,7 +1649,7 @@ endif() if(ALSOFT_INSTALL_CONFIG) Index: audio/openal/patches/patch-al_auxeffectslot_cpp =================================================================== RCS file: audio/openal/patches/patch-al_auxeffectslot_cpp diff -N audio/openal/patches/patch-al_auxeffectslot_cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ audio/openal/patches/patch-al_auxeffectslot_cpp 27 Apr 2025 18:22:56 -0000 @@ -0,0 +1,18 @@ +gcc8: error: expression '<throw-expression>' is not a constant expression + +Index: al/auxeffectslot.cpp +--- al/auxeffectslot.cpp.orig ++++ al/auxeffectslot.cpp +@@ -242,9 +242,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: audio/openal/patches/patch-al_buffer_cpp =================================================================== RCS file: audio/openal/patches/patch-al_buffer_cpp diff -N audio/openal/patches/patch-al_buffer_cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ audio/openal/patches/patch-al_buffer_cpp 27 Apr 2025 20:10:42 -0000 @@ -0,0 +1,33 @@ +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: audio/openal/patches/patch-al_debug_cpp =================================================================== RCS file: audio/openal/patches/patch-al_debug_cpp diff -N audio/openal/patches/patch-al_debug_cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ audio/openal/patches/patch-al_debug_cpp 27 Apr 2025 20:10:49 -0000 @@ -0,0 +1,44 @@ +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: audio/openal/patches/patch-al_effects_chorus_cpp =================================================================== RCS file: audio/openal/patches/patch-al_effects_chorus_cpp diff -N audio/openal/patches/patch-al_effects_chorus_cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ audio/openal/patches/patch-al_effects_chorus_cpp 27 Apr 2025 20:10:54 -0000 @@ -0,0 +1,18 @@ +gcc8: error: expression '<throw-expression>' is not a constant expression + +Index: al/effects/chorus.cpp +--- al/effects/chorus.cpp.orig ++++ al/effects/chorus.cpp +@@ -42,9 +42,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: audio/openal/patches/patch-al_effects_fshifter_cpp =================================================================== RCS file: audio/openal/patches/patch-al_effects_fshifter_cpp diff -N audio/openal/patches/patch-al_effects_fshifter_cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ audio/openal/patches/patch-al_effects_fshifter_cpp 27 Apr 2025 20:10:58 -0000 @@ -0,0 +1,16 @@ +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: audio/openal/patches/patch-al_effects_modulator_cpp =================================================================== RCS file: audio/openal/patches/patch-al_effects_modulator_cpp diff -N audio/openal/patches/patch-al_effects_modulator_cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ audio/openal/patches/patch-al_effects_modulator_cpp 27 Apr 2025 20:11:01 -0000 @@ -0,0 +1,18 @@ +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: audio/openal/patches/patch-al_effects_vmorpher_cpp =================================================================== RCS file: audio/openal/patches/patch-al_effects_vmorpher_cpp diff -N audio/openal/patches/patch-al_effects_vmorpher_cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ audio/openal/patches/patch-al_effects_vmorpher_cpp 27 Apr 2025 20:11:05 -0000 @@ -0,0 +1,29 @@ +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: audio/openal/patches/patch-al_state_cpp =================================================================== RCS file: audio/openal/patches/patch-al_state_cpp diff -N audio/openal/patches/patch-al_state_cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ audio/openal/patches/patch-al_state_cpp 27 Apr 2025 20:11:12 -0000 @@ -0,0 +1,16 @@ +gcc8: error: expression '<throw-expression>' is not a constant expression + +Index: al/state.cpp +--- al/state.cpp.orig ++++ al/state.cpp +@@ -140,8 +140,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: audio/openal/patches/patch-alc_alu_cpp =================================================================== RCS file: audio/openal/patches/patch-alc_alu_cpp diff -N audio/openal/patches/patch-alc_alu_cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ audio/openal/patches/patch-alc_alu_cpp 27 Apr 2025 20:09:40 -0000 @@ -0,0 +1,16 @@ +gcc8 is too old for std::for_each_n + +Index: alc/alu.cpp +--- alc/alu.cpp.orig ++++ alc/alu.cpp +@@ -2155,7 +2155,9 @@ void Write(const al::span<const FloatBufferLine> InBuf + out[c] = SampleConv<T>(s); + out += ptrdiff_t(FrameStep); + }; +- std::for_each_n(inbuf.cbegin(), SamplesToDo, conv_sample); ++ auto first = inbuf.cbegin(); ++ auto last = first + SamplesToDo; ++ std::for_each(first, last, conv_sample); + ++c; + } + if(const size_t extra{FrameStep - c}) Index: audio/openal/patches/patch-alc_effects_reverb_cpp =================================================================== RCS file: audio/openal/patches/patch-alc_effects_reverb_cpp diff -N audio/openal/patches/patch-alc_effects_reverb_cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ audio/openal/patches/patch-alc_effects_reverb_cpp 27 Apr 2025 20:15:17 -0000 @@ -0,0 +1,16 @@ +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: audio/openal/patches/patch-fmt-11_1_1_CMakeLists_txt =================================================================== RCS file: audio/openal/patches/patch-fmt-11_1_1_CMakeLists_txt diff -N audio/openal/patches/patch-fmt-11_1_1_CMakeLists_txt --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ audio/openal/patches/patch-fmt-11_1_1_CMakeLists_txt 27 Apr 2025 20:12:07 -0000 @@ -0,0 +1,14 @@ +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 ()