| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
1 |
# C++14 feature support detection |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
2 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
3 |
include(CheckCXXSourceCompiles) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
4 |
include(CheckCXXCompilerFlag) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
5 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
6 |
if (NOT CMAKE_CXX_STANDARD) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
7 |
set(CMAKE_CXX_STANDARD 11) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
8 |
endif() |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
9 |
message(STATUS "CXX_STANDARD: ${CMAKE_CXX_STANDARD}") |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
10 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
11 |
if (CMAKE_CXX_STANDARD EQUAL 20) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
12 |
check_cxx_compiler_flag(-std=c++20 has_std_20_flag) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
13 |
check_cxx_compiler_flag(-std=c++2a has_std_2a_flag) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
14 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
15 |
if (has_std_20_flag) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
16 |
set(CXX_STANDARD_FLAG -std=c++20) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
17 |
elseif (has_std_2a_flag) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
18 |
set(CXX_STANDARD_FLAG -std=c++2a) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
19 |
endif () |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
20 |
elseif (CMAKE_CXX_STANDARD EQUAL 17) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
21 |
check_cxx_compiler_flag(-std=c++17 has_std_17_flag) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
22 |
check_cxx_compiler_flag(-std=c++1z has_std_1z_flag) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
23 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
24 |
if (has_std_17_flag) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
25 |
set(CXX_STANDARD_FLAG -std=c++17) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
26 |
elseif (has_std_1z_flag) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
27 |
set(CXX_STANDARD_FLAG -std=c++1z) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
28 |
endif () |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
29 |
elseif (CMAKE_CXX_STANDARD EQUAL 14) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
30 |
check_cxx_compiler_flag(-std=c++14 has_std_14_flag) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
31 |
check_cxx_compiler_flag(-std=c++1y has_std_1y_flag) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
32 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
33 |
if (has_std_14_flag) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
34 |
set(CXX_STANDARD_FLAG -std=c++14) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
35 |
elseif (has_std_1y_flag) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
36 |
set(CXX_STANDARD_FLAG -std=c++1y) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
37 |
endif () |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
38 |
elseif (CMAKE_CXX_STANDARD EQUAL 11) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
39 |
check_cxx_compiler_flag(-std=c++11 has_std_11_flag) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
40 |
check_cxx_compiler_flag(-std=c++0x has_std_0x_flag) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
41 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
42 |
if (has_std_11_flag) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
43 |
set(CXX_STANDARD_FLAG -std=c++11) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
44 |
elseif (has_std_0x_flag) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
45 |
set(CXX_STANDARD_FLAG -std=c++0x) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
46 |
endif () |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
47 |
endif () |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
48 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
49 |
set(CMAKE_REQUIRED_FLAGS ${CXX_STANDARD_FLAG}) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
50 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
51 |
# Check if user-defined literals are available |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
52 |
check_cxx_source_compiles(" |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
53 |
void operator\"\" _udl(long double); |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
54 |
int main() {}" |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
55 |
SUPPORTS_USER_DEFINED_LITERALS) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
56 |
if (NOT SUPPORTS_USER_DEFINED_LITERALS) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
57 |
set (SUPPORTS_USER_DEFINED_LITERALS OFF) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
58 |
endif () |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
59 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
60 |
# Check if <variant> is available |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
61 |
set(CMAKE_REQUIRED_FLAGS -std=c++1z) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
62 |
check_cxx_source_compiles(" |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
63 |
#include <variant> |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
64 |
int main() {}" |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
65 |
FMT_HAS_VARIANT) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
66 |
if (NOT FMT_HAS_VARIANT) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
67 |
set (FMT_HAS_VARIANT OFF) |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
68 |
endif () |
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
69 |
|
| f8deb5b9 |
Poul Sander |
2022-01-15 13:55 |
70 |
set(CMAKE_REQUIRED_FLAGS ) |
|
|
1970-01-01 00:00 |
71 |
|