From 7762f953c5d9d2d6e40f880fe248b6b3208903f2 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sat, 5 Sep 2026 13:04:26 +1000 Subject: [PATCH] Build: Use C++23 across the board --- .../DuckStationCompilerRequirement.cmake | 28 +++++++++---------- CMakeModules/DuckStationUtils.cmake | 12 ++++---- dep/vsprops/Base.props | 2 +- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/CMakeModules/DuckStationCompilerRequirement.cmake b/CMakeModules/DuckStationCompilerRequirement.cmake index 54d3b1298..3e6451705 100644 --- a/CMakeModules/DuckStationCompilerRequirement.cmake +++ b/CMakeModules/DuckStationCompilerRequirement.cmake @@ -4,19 +4,19 @@ # NOTE: In addition to the terms of CC-BY-NC-ND-4.0, you may not use this file to create # packages or build recipes without explicit permission from the copyright holder. -# Use C++20. -set(CMAKE_CXX_STANDARD 20) +# Use C++23. +set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) -# C++20 feature checks. Some Linux environments are incomplete. -check_cpp20_feature("__cpp_structured_bindings" 201606) -check_cpp20_feature("__cpp_constinit" 201907) -check_cpp20_feature("__cpp_designated_initializers" 201707) -check_cpp20_feature("__cpp_using_enum" 201907) -check_cpp20_feature("__cpp_lib_bit_cast" 201806) -check_cpp20_feature("__cpp_lib_bitops" 201907) -check_cpp20_feature("__cpp_lib_int_pow2" 202002) -check_cpp20_feature("__cpp_lib_starts_ends_with" 201711) -check_cpp20_attribute("likely" 201803) -check_cpp20_attribute("unlikely" 201803) -check_cpp20_attribute("no_unique_address" 201803) +# C++ feature checks. Some Linux environments are incomplete. +check_cpp_feature("__cpp_structured_bindings" 201606) +check_cpp_feature("__cpp_constinit" 201907) +check_cpp_feature("__cpp_designated_initializers" 201707) +check_cpp_feature("__cpp_using_enum" 201907) +check_cpp_feature("__cpp_lib_bit_cast" 201806) +check_cpp_feature("__cpp_lib_bitops" 201907) +check_cpp_feature("__cpp_lib_int_pow2" 202002) +check_cpp_feature("__cpp_lib_starts_ends_with" 201711) +check_cpp_attribute("likely" 201803) +check_cpp_attribute("unlikely" 201803) +check_cpp_attribute("no_unique_address" 201803) diff --git a/CMakeModules/DuckStationUtils.cmake b/CMakeModules/DuckStationUtils.cmake index c3f606bcd..6e47245eb 100644 --- a/CMakeModules/DuckStationUtils.cmake +++ b/CMakeModules/DuckStationUtils.cmake @@ -250,8 +250,8 @@ function(add_debug_symbol_flag var) endif() endfunction() -function(check_cpp20_feature MACRO MINIMUM_VALUE) - set(CACHE_VAR "CHECK_CPP20_FEATURE_${MACRO}") +function(check_cpp_feature MACRO MINIMUM_VALUE) + set(CACHE_VAR "CHECK_CPP_FEATURE_${MACRO}") if(NOT DEFINED ${CACHE_VAR}) # Create a small source code snippet that fails to compile if the feature is not available. set(TEMP_FILE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.cpp") @@ -263,7 +263,7 @@ function(check_cpp20_feature MACRO MINIMUM_VALUE) set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) try_compile(HAS_FEATURE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY} "${TEMP_FILE}" - CXX_STANDARD 20 + CXX_STANDARD 23 CXX_STANDARD_REQUIRED TRUE ) set(${CACHE_VAR} ${HAS_FEATURE} CACHE INTERNAL "Cached feature test result for ${MACRO}") @@ -273,8 +273,8 @@ function(check_cpp20_feature MACRO MINIMUM_VALUE) endif() endfunction() -function(check_cpp20_attribute ATTRIBUTE MINIMUM_VALUE) - set(CACHE_VAR "CHECK_CPP20_ATTRIBUTE_${MACRO}") +function(check_cpp_attribute ATTRIBUTE MINIMUM_VALUE) + set(CACHE_VAR "CHECK_CPP_ATTRIBUTE_${MACRO}") if(NOT DEFINED ${CACHE_VAR}) set(TEMP_FILE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.cpp") file(WRITE "${TEMP_FILE}" "#include @@ -285,7 +285,7 @@ function(check_cpp20_attribute ATTRIBUTE MINIMUM_VALUE) set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) try_compile(HAS_FEATURE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY} "${TEMP_FILE}" - CXX_STANDARD 20 + CXX_STANDARD 23 CXX_STANDARD_REQUIRED TRUE ) set(${CACHE_VAR} ${HAS_FEATURE} CACHE INTERNAL "Cached attribute test result for ${MACRO}") diff --git a/dep/vsprops/Base.props b/dep/vsprops/Base.props index 3410b1ae0..8563bfeb1 100644 --- a/dep/vsprops/Base.props +++ b/dep/vsprops/Base.props @@ -25,7 +25,7 @@ true ProgramDatabase true - stdcpp20 + stdcpp23 stdc17 true _HAS_EXCEPTIONS=0;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;WIN32;%(PreprocessorDefinitions)