]>
Commit | Line | Data |
---|---|---|
11fdf7f2 TL |
1 | # C++14 feature support detection |
2 | ||
11fdf7f2 | 3 | include(CheckCXXCompilerFlag) |
1e59de90 TL |
4 | function (fmt_check_cxx_compiler_flag flag result) |
5 | if (NOT MSVC) | |
6 | check_cxx_compiler_flag("${flag}" ${result}) | |
7 | endif () | |
8 | endfunction () | |
11fdf7f2 | 9 | |
9f95a23c | 10 | if (NOT CMAKE_CXX_STANDARD) |
11fdf7f2 TL |
11 | set(CMAKE_CXX_STANDARD 11) |
12 | endif() | |
9f95a23c | 13 | message(STATUS "CXX_STANDARD: ${CMAKE_CXX_STANDARD}") |
11fdf7f2 TL |
14 | |
15 | if (CMAKE_CXX_STANDARD EQUAL 20) | |
1e59de90 TL |
16 | fmt_check_cxx_compiler_flag(-std=c++20 has_std_20_flag) |
17 | fmt_check_cxx_compiler_flag(-std=c++2a has_std_2a_flag) | |
11fdf7f2 TL |
18 | |
19 | if (has_std_20_flag) | |
20 | set(CXX_STANDARD_FLAG -std=c++20) | |
21 | elseif (has_std_2a_flag) | |
22 | set(CXX_STANDARD_FLAG -std=c++2a) | |
23 | endif () | |
1e59de90 | 24 | |
11fdf7f2 | 25 | elseif (CMAKE_CXX_STANDARD EQUAL 17) |
1e59de90 TL |
26 | fmt_check_cxx_compiler_flag(-std=c++17 has_std_17_flag) |
27 | fmt_check_cxx_compiler_flag(-std=c++1z has_std_1z_flag) | |
11fdf7f2 TL |
28 | |
29 | if (has_std_17_flag) | |
30 | set(CXX_STANDARD_FLAG -std=c++17) | |
31 | elseif (has_std_1z_flag) | |
32 | set(CXX_STANDARD_FLAG -std=c++1z) | |
33 | endif () | |
1e59de90 | 34 | |
11fdf7f2 | 35 | elseif (CMAKE_CXX_STANDARD EQUAL 14) |
1e59de90 TL |
36 | fmt_check_cxx_compiler_flag(-std=c++14 has_std_14_flag) |
37 | fmt_check_cxx_compiler_flag(-std=c++1y has_std_1y_flag) | |
11fdf7f2 TL |
38 | |
39 | if (has_std_14_flag) | |
40 | set(CXX_STANDARD_FLAG -std=c++14) | |
41 | elseif (has_std_1y_flag) | |
42 | set(CXX_STANDARD_FLAG -std=c++1y) | |
43 | endif () | |
1e59de90 | 44 | |
11fdf7f2 | 45 | elseif (CMAKE_CXX_STANDARD EQUAL 11) |
1e59de90 TL |
46 | fmt_check_cxx_compiler_flag(-std=c++11 has_std_11_flag) |
47 | fmt_check_cxx_compiler_flag(-std=c++0x has_std_0x_flag) | |
11fdf7f2 TL |
48 | |
49 | if (has_std_11_flag) | |
50 | set(CXX_STANDARD_FLAG -std=c++11) | |
51 | elseif (has_std_0x_flag) | |
52 | set(CXX_STANDARD_FLAG -std=c++0x) | |
53 | endif () | |
54 | endif () |