forked from Ferdi265/cxx-ring-buffer
add feature detection machinery
This commit is contained in:
5
detect/constexpr_destructors.cpp
Normal file
5
detect/constexpr_destructors.cpp
Normal file
@ -0,0 +1,5 @@
|
||||
struct test {
|
||||
constexpr ~test() {}
|
||||
};
|
||||
|
||||
int main() {}
|
19
detect/features.cmake
Normal file
19
detect/features.cmake
Normal file
@ -0,0 +1,19 @@
|
||||
if(cxx_noexcept IN_LIST CMAKE_CXX_COMPILE_FEATURES)
|
||||
set(RING_BUFFER_NOEXCEPT ON)
|
||||
message(STATUS "Detected support for conditional noexcept")
|
||||
endif()
|
||||
|
||||
if(cxx_constexpr IN_LIST CMAKE_CXX_COMPILE_FEATURES)
|
||||
set(RING_BUFFER_CONSTEXPR ON)
|
||||
message(STATUS "Detected support for constexpr")
|
||||
endif()
|
||||
|
||||
try_compile(constexpr-destructors-compile ${CMAKE_BINARY_DIR}/detect ${CMAKE_SOURCE_DIR}/detect/constexpr_destructors.cpp
|
||||
CXX_STANDARD ${CMAKE_CXX_STANDARD}
|
||||
CXX_STANDARD_REQUIRED ${CMAKE_CXX_STANDARD_REQUIRED}
|
||||
CXX_EXTENSIONS ${CMAKE_CXX_EXTENSIONS}
|
||||
)
|
||||
if(constexpr-destructors-compile)
|
||||
set(RING_BUFFER_CONSTEXPR_DESTRUCTORS ON)
|
||||
message(STATUS "Detected support for constexpr destructors")
|
||||
endif()
|
15
detect/standard.cmake
Normal file
15
detect/standard.cmake
Normal file
@ -0,0 +1,15 @@
|
||||
if(cxx_std_20 IN_LIST CMAKE_CXX_COMPILE_FEATURES)
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
elseif(cxx_std_17 IN_LIST CMAKE_CXX_COMPILE_FEATURES)
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
elseif(cxx_std_14 IN_LIST CMAKE_CXX_COMPILE_FEATURES)
|
||||
set(CMAKE_CXX_STANDARD 14)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
elseif(cxx_std_11 IN_LIST CMAKE_CXX_COMPILE_FEATURES)
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
endif()
|
||||
|
||||
message(STATUS "Detected Standard Version: C++${CMAKE_CXX_STANDARD}")
|
Reference in New Issue
Block a user