git repos / blockattack-game

blame: source/misc/embedded_libs/fmt-8.1.1/support/cmake/cxx14.cmake

normal view · raw

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