From 2e45598d8a9e6ec86883e1a34515c165fe406951 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Tue, 3 Apr 2018 20:00:14 +0800 Subject: [PATCH] cmake: detect if std::map::merge() is supported Signed-off-by: Kefu Chai --- src/CMakeLists.txt | 11 +++++++++++ src/include/config-h.in.cmake | 3 +++ 2 files changed, 14 insertions(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d0a2d9e66d6c0..be1ebaf2d5c1a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -167,6 +167,17 @@ else() set(C_STANDARD_REQUIRED ON) endif() +if(CXX_STDLIB STREQUAL "libc++") + include(CheckCXXSourceCompiles) + CHECK_CXX_SOURCE_COMPILES(" +#include +using Map = std::map; +int main() { + Map m; + m.merge(Map{}); +} +" HAVE_STDLIB_MAP_SPLICING) +endif() if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.1) diff --git a/src/include/config-h.in.cmake b/src/include/config-h.in.cmake index d621ac0e01732..ba3d27b2c92c9 100644 --- a/src/include/config-h.in.cmake +++ b/src/include/config-h.in.cmake @@ -339,4 +339,7 @@ /* Defined if OpenSSL is available for the rgw beast frontend */ #cmakedefine WITH_RADOSGW_BEAST_OPENSSL +/* Defined if std::map::merge() is supported */ +#cmakedefine HAVE_STDLIB_MAP_SPLICING + #endif /* CONFIG_H */ -- 2.39.5