diff --git a/CMakeLists.txt b/CMakeLists.txt index 472f0f07d..bee48a588 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,6 +12,7 @@ option( CPP-NETLIB_BUILD_TESTS "Build the unit tests." ON ) option( CPP-NETLIB_BUILD_EXAMPLES "Build the examples using cpp-netlib." ON ) option( CPP-NETLIB_ALWAYS_LOGGING "Allow cpp-netlib to log debug messages even in non-debug mode." OFF ) option( CPP-NETLIB_DISABLE_LOGGING "Disable logging definitely, no logging code will be generated or compiled." OFF ) +option( CPP-NETLIB_DISABLE_LIBCXX "Disable using libc++ when compiling with clang." OFF ) set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}) @@ -51,8 +52,13 @@ elseif(${CMAKE_CXX_COMPILER_ID} MATCHES Clang) INCLUDE(CheckCXXCompilerFlag) CHECK_CXX_COMPILER_FLAG(-std=c++11 HAVE_STD11) if (HAVE_STD11) - list(APPEND CMAKE_CXX_FLAGS "-std=c++11 -stdlib=libc++ -Wall") - list(APPEND CMAKE_CXX_LINK_FLAGS "-std=c++11 -stdlib=libc++") + if (CPP-NETLIB_DISABLE_LIBCXX) + list(APPEND CMAKE_CXX_FLAGS "-std=c++11 -Wall") + list(APPEND CMAKE_CXX_LINK_FLAGS "-std=c++11") + else() + list(APPEND CMAKE_CXX_FLAGS "-std=c++11 -stdlib=libc++ -Wall") + list(APPEND CMAKE_CXX_LINK_FLAGS "-std=c++11 -stdlib=libc++") + endif() else() message(FATAL_ERROR "No C++11 support for Clang version. Please upgrade Clang to a version supporting C++11.") endif() @@ -81,6 +87,7 @@ message(STATUS " CPP-NETLIB_BUILD_TESTS: ${CPP-NETLIB_BUILD_TESTS}\t(Buil message(STATUS " CPP-NETLIB_BUILD_EXAMPLES: ${CPP-NETLIB_BUILD_EXAMPLES}\t(Build the examples using cpp-netlib: ON, OFF)") message(STATUS " CPP-NETLIB_ALWAYS_LOGGING: ${CPP-NETLIB_ALWAYS_LOGGING}\t(Allow cpp-netlib to log debug messages even in non-debug mode: ON, OFF)") message(STATUS " CPP-NETLIB_DISABLE_LOGGING: ${CPP-NETLIB_DISABLE_LOGGING}\t(Disable logging definitely, no logging code will be generated or compiled: ON, OFF)") +message(STATUS " CPP-NETLIB_DISABLE_LIBCXX: ${CPP-NETLIB_DISABLE_LIBCXX}\t(Disable using libc++ when building with clang: ON, OFF)") message(STATUS "CMake build options selected:") ############################################################################ diff --git a/concurrency/src/CMakeLists.txt b/concurrency/src/CMakeLists.txt index 4661a0d89..8444e2d74 100644 --- a/concurrency/src/CMakeLists.txt +++ b/concurrency/src/CMakeLists.txt @@ -9,8 +9,11 @@ if (${CMAKE_CXX_COMPILER_ID} MATCHES GNU) set(CPP-NETLIB_CXXFLAGS "-Wall -std=c++11") elseif (${CMAKE_CXX_COMPILER_ID} MATCHES Clang) CHECK_CXX_COMPILER_FLAG(-std=c++11 HAVE_STD11) - set(CPP-NETLIB_CXXFLAGS "-Wall -std=c++11 -stdlib=libc++") - set(CPP-NETLIB_CXXFLAGS "-Wall -std=c++11 -stdlib=libc++") + if (CPP-NETLIB_DISABLE_LIBCXX) + set(CPP-NETLIB_CXXFLAGS "-Wall -std=c++11") + else() + set(CPP-NETLIB_CXXFLAGS "-Wall -std=c++11 -stdlib=libc++") + endif() endif() set(CPP-NETLIB_CONCURRENCY_SRCS thread_pool.cpp) diff --git a/http/src/CMakeLists.txt b/http/src/CMakeLists.txt index 5c7ee9379..492c631c8 100644 --- a/http/src/CMakeLists.txt +++ b/http/src/CMakeLists.txt @@ -26,8 +26,11 @@ if (${CMAKE_CXX_COMPILER_ID} MATCHES GNU) endif() elseif (${CMAKE_CXX_COMPILER_ID} MATCHES Clang) CHECK_CXX_COMPILER_FLAG(-std=c++11 HAVE_STD11) - set(CPP-NETLIB_CXXFLAGS "-Wall -std=c++11 -stdlib=libc++") - set(CPP-NETLIB_CXXFLAGS "-Wall -std=c++11 -stdlib=libc++") + if (CPP-NETLIB_DISABLE_LIBCXX) + set(CPP-NETLIB_CXXFLAGS "-Wall -std=c++11") + else() + set(CPP-NETLIB_CXXFLAGS "-Wall -std=c++11 -stdlib=libc++") + endif() endif() set(CPP-NETLIB_HTTP_MESSAGE_SRCS http/request.cpp http/response.cpp) diff --git a/logging/src/CMakeLists.txt b/logging/src/CMakeLists.txt index 0eca48291..5b2ded133 100644 --- a/logging/src/CMakeLists.txt +++ b/logging/src/CMakeLists.txt @@ -7,8 +7,11 @@ if (${CMAKE_CXX_COMPILER_ID} MATCHES GNU) set(CPP-NETLIB_CXXFLAGS "-Wall -std=c++11") elseif (${CMAKE_CXX_COMPILER_ID} MATCHES Clang) CHECK_CXX_COMPILER_FLAG(-std=c++11 HAVE_STD11) - set(CPP-NETLIB_CXXFLAGS "-Wall -std=c++11 -stdlib=libc++") - set(CPP-NETLIB_CXXFLAGS "-Wall -std=c++11 -stdlib=libc++") + if (CPP-NETLIB_DISABLE_LIBCXX) + set(CPP-NETLIB_CXXFLAGS "-Wall -std=c++11") + else() + set(CPP-NETLIB_CXXFLAGS "-Wall -std=c++11 -stdlib=libc++") + endif() endif() include_directories(${CPP-NETLIB_SOURCE_DIR}/logging/src) diff --git a/message/src/CMakeLists.txt b/message/src/CMakeLists.txt index 4971eaeda..7ba68a855 100644 --- a/message/src/CMakeLists.txt +++ b/message/src/CMakeLists.txt @@ -7,8 +7,11 @@ if (${CMAKE_CXX_COMPILER_ID} MATCHES GNU) set(CPP-NETLIB_CXXFLAGS "-Wall -std=c++11") elseif (${CMAKE_CXX_COMPILER_ID} MATCHES Clang) CHECK_CXX_COMPILER_FLAG(-std=c++11 HAVE_STD11) - set(CPP-NETLIB_CXXFLAGS "-Wall -std=c++11 -stdlib=libc++") - set(CPP-NETLIB_CXXFLAGS "-Wall -std=c++11 -stdlib=libc++") + if (CPP-NETLIB_DISABLE_LIBCXX) + set(CPP-NETLIB_CXXFLAGS "-Wall -std=c++11") + else() + set(CPP-NETLIB_CXXFLAGS "-Wall -std=c++11 -stdlib=libc++") + endif() endif() include_directories(${CPP-NETLIB_SOURCE_DIR}/uri/src ${CPP-NETLIB_SOURCE_DIR}/message/src)