summaryrefslogtreecommitdiffstats
path: root/cmake/detect_cxx_version.cmake
blob: 2021650724ba9db0017f57a168b290772d878649 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
set(cxx17_minimum_msvc_version 19.14)
set(cxx17_minimum_gcc_version 7.0)
set(cxx17_minimum_clang_version 4.0)
set(cxx17_minimum_appleclang_version 6.0)

set(cxx20_minimum_msvc_version 19.22)
set(cxx20_minimum_gcc_version 9.0)
set(cxx20_minimum_clang_version 7.0)
set(cxx20_minimum_appleclang_version 10.0)

set(cxx_17_supported OFF)

if(MSVC AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${cxx17_minimum_msvc_version})
  set(cxx_17_supported ON)
endif()

if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${cxx17_minimum_gcc_version})
  set(cxx_17_supported ON)
endif()

if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${cxx17_minimum_clang_version})
  set(cxx_17_supported ON)
endif()

if(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${cxx17_minimum_appleclang_version})
  set(cxx_17_supported ON)
endif()

set(cxx_20_supported OFF)

if(MSVC AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${cxx20_minimum_msvc_version})
  set(cxx_20_supported ON)
endif()

if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${cxx20_minimum_gcc_version})
  set(cxx_20_supported ON)
endif()

if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${cxx20_minimum_clang_version})
  set(cxx_20_supported ON)
endif()

if(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${cxx20_minimum_appleclang_version})
  set(cxx_20_supported ON)
endif()