Build: Use C++23 across the board

pull/3794/head
Stenzek 3 weeks ago
parent 9c91b91562
commit 7762f953c5
No known key found for this signature in database

@ -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)

@ -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 <version>
@ -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}")

@ -25,7 +25,7 @@
<SDLCheck>true</SDLCheck>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<LanguageStandard>stdcpp20</LanguageStandard>
<LanguageStandard>stdcpp23</LanguageStandard>
<LanguageStandard_C>stdc17</LanguageStandard_C>
<ConformanceMode>true</ConformanceMode>
<PreprocessorDefinitions>_HAS_EXCEPTIONS=0;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>

Loading…
Cancel
Save