From: <sv...@op...> - 2025-03-15 19:12:44
|
Author: manx Date: Sat Mar 15 20:12:32 2025 New Revision: 23038 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=23038 Log: [Fix] build: Makefile: AOCC: Limit AOCC 5.0.0 (AMD compiler, based on Clang 17.0.6) to C++20 by default. It errors out in libstdc++ 14 when trying to do overload resolution where one overload takes a std::pair during considering conversions to std::pair. This should be a SFINAE context and not a hard error. It works in C++20 mode. A language-level work-around does not appear to be feasible because it affects internal code paths of std::map. Modified: trunk/OpenMPT/build/make/config-aocc.mk Modified: trunk/OpenMPT/build/make/config-aocc.mk ============================================================================== --- trunk/OpenMPT/build/make/config-aocc.mk Sat Mar 15 17:24:25 2025 (r23037) +++ trunk/OpenMPT/build/make/config-aocc.mk Sat Mar 15 20:12:32 2025 (r23038) @@ -12,6 +12,8 @@ AR = $(TOOLCHAIN_PREFIX)ar$(TOOLCHAIN_SUFFIX) endif +STDCXX?=c++20 + ifneq ($(STDCXX),) CXXFLAGS_STDCXX = -std=$(STDCXX) -fexceptions -frtti -pthread else ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=c++23 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++23' ; fi ), c++23) |