From b1c57f9f5427da09f7e1088b44c05cd26ab8a660 Mon Sep 17 00:00:00 2001 From: Matthew Barr Date: Thu, 6 Apr 2017 10:53:28 +1000 Subject: [PATCH] cmake: check for libc++ directly Rather than trying to infer libc++ use from platform and compiler, just look for a defined symbol. --- CMakeLists.txt | 4 ++++ cmake/boost.cmake | 6 ++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fbcb5399..34405097 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,6 +9,7 @@ set (HS_VERSION ${HS_MAJOR_VERSION}.${HS_MINOR_VERSION}.${HS_PATCH_VERSION}) set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) include(CheckCCompilerFlag) include(CheckCXXCompilerFlag) +include(CheckCXXSymbolExists) INCLUDE (CheckFunctionExists) INCLUDE (CheckIncludeFiles) INCLUDE (CheckIncludeFileCXX) @@ -264,6 +265,9 @@ CHECK_FUNCTION_EXISTS(_aligned_malloc HAVE__ALIGNED_MALLOC) CHECK_C_COMPILER_FLAG(-fvisibility=hidden HAS_C_HIDDEN) CHECK_CXX_COMPILER_FLAG(-fvisibility=hidden HAS_CXX_HIDDEN) +# are we using libc++ +CHECK_CXX_SYMBOL_EXISTS(_LIBCPP_VERSION ciso646 HAVE_LIBCPP) + if (RELEASE_BUILD) if (HAS_C_HIDDEN) set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -fvisibility=hidden") diff --git a/cmake/boost.cmake b/cmake/boost.cmake index ff4e2f94..44b4e8ba 100644 --- a/cmake/boost.cmake +++ b/cmake/boost.cmake @@ -3,10 +3,8 @@ set(BOOST_USE_STATIC_LIBS OFF) set(BOOST_USE_MULTITHREADED OFF) set(BOOST_USE_STATIC_RUNTIME OFF) -if (CMAKE_SYSTEM_NAME MATCHES "Darwin" - OR (CMAKE_SYSTEM_NAME MATCHES "FreeBSD" - AND CMAKE_C_COMPILER_ID MATCHES "Clang")) - # we need a more recent boost for libc++ used by clang on OSX and FreeBSD +if (HAVE_LIBCPP) + # we need a more recent boost for libc++ set(BOOST_MINVERSION 1.61.0) else () set(BOOST_MINVERSION 1.57.0)