Skip to content

Commit

Permalink
[core] C++23
Browse files Browse the repository at this point in the history
  • Loading branch information
jcelerier committed May 26, 2024
1 parent 87a99ef commit 8465beb
Showing 1 changed file with 12 additions and 19 deletions.
31 changes: 12 additions & 19 deletions cmake/OssiaConfiguration.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
if(MSVC)
set(CMAKE_CXX_FLAGS " /EHsc /MP /Zc:__cplusplus /permissive- /volatile:iso ${CMAKE_CXX_FLAGS} ")
if(OSSIA_TESTING OR OSSIA_EXAMPLES)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_FLAGS "/std:c++latest ${CMAKE_CXX_FLAGS}")
elseif(OSSIA_CXX_STANDARD)
set(CMAKE_CXX_STANDARD ${OSSIA_CXX_STANDARD})
Expand All @@ -91,46 +91,39 @@ if(MSVC)
set(CMAKE_CXX_FLAGS "/std:c++20 ${CMAKE_CXX_FLAGS}")
endif()
else()
if(NOT APPLE AND NOT WIN32 AND CMAKE_VERSION VERSION_GREATER 3.20)
if(CMAKE_VERSION VERSION_GREATER 3.20)
check_cxx_compiler_flag(-std=c++2b has_std_2b_flag)
endif()
if(CMAKE_VERSION VERSION_GREATER 3.12)
check_cxx_compiler_flag(-std=c++20 has_std_20_flag)
check_cxx_compiler_flag(-std=c++2a has_std_2a_flag)
endif()
check_cxx_compiler_flag(-std=c++20 has_std_20_flag)
check_cxx_compiler_flag(-std=c++2a has_std_2a_flag)
check_cxx_compiler_flag(-std=c++17 has_std_17_flag)
check_cxx_compiler_flag(-std=c++1z has_std_1z_flag)

if(OSSIA_CXX_STANDARD)
if("${OSSIA_CXX_STANDARD}" EQUAL 20)
if(has_std_20_flag)
if("${OSSIA_CXX_STANDARD}" EQUAL 23)
set(CMAKE_CXX_STANDARD 23)
set(CXX_STANDARD_FLAG -std=c++2b)
elseif("${OSSIA_CXX_STANDARD}" EQUAL 20)
set(CMAKE_CXX_STANDARD 20)
set(CXX_STANDARD_FLAG -std=c++20)
elseif (has_std_2a_flag)
set(CMAKE_CXX_STANDARD 20)
set(CXX_STANDARD_FLAG -std=c++2a)
endif()
else()
set(CMAKE_CXX_STANDARD ${OSSIA_CXX_STANDARD})
set(CXX_STANDARD_FLAG "-std=c++${OSSIA_CXX_STANDARD}")
endif()
elseif(EMSCRIPTEN)
set(CMAKE_CXX_STANDARD 20)
set(CXX_STANDARD_FLAG -std=c++20)
elseif (has_std_2b_flag)
set(CMAKE_CXX_STANDARD 23)
set(CXX_STANDARD_FLAG -std=c++2b)
elseif (has_std_20_flag)
set(CMAKE_CXX_STANDARD 20)
set(CXX_STANDARD_FLAG -std=c++20)
elseif (has_std_2a_flag)
set(CMAKE_CXX_STANDARD 20)
set(CXX_STANDARD_FLAG -std=c++2a)
elseif (has_std_17_flag)
set(CMAKE_CXX_STANDARD 17)
set(CXX_STANDARD_FLAG -std=c++17)
elseif (has_std_1z_flag)
set(CMAKE_CXX_STANDARD 17)
set(CXX_STANDARD_FLAG -std=c++1z)
else()
message(WARNING "check_cxx_compiler_flag was not able to find C++17 or C++20. We will assume C++20")
message(WARNING "check_cxx_compiler_flag was not able to find C++20 or C++23. We will assume C++20")
set(CMAKE_CXX_STANDARD 20)
set(CXX_STANDARD_FLAG -std=c++20)
endif ()
Expand Down

0 comments on commit 8465beb

Please sign in to comment.