diff options
author | Vincent Richard <[email protected]> | 2018-04-01 09:29:07 +0000 |
---|---|---|
committer | Vincent Richard <[email protected]> | 2018-04-01 09:29:07 +0000 |
commit | 8564b2f8b0d563a2c328a09916e9e4e3def5978f (patch) | |
tree | f7d2a3022b79f4769dcb3a96c4693f981c764842 /CMakeLists.txt | |
parent | Merge pull request #181 from rusdevops/patch-2 (diff) | |
download | vmime-8564b2f8b0d563a2c328a09916e9e4e3def5978f.tar.gz vmime-8564b2f8b0d563a2c328a09916e9e4e3def5978f.zip |
#193 Dropped support for boot::shared_ptr<>, enabled C++11 support in CMake
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 90 |
1 files changed, 6 insertions, 84 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 74291351..f570479f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,7 +12,7 @@ # http://www.cmake.org # -CMAKE_MINIMUM_REQUIRED(VERSION 2.8.6 FATAL_ERROR) +CMAKE_MINIMUM_REQUIRED(VERSION 3.1 FATAL_ERROR) INCLUDE(cmake/Utils.cmake) @@ -68,6 +68,11 @@ SET(VMIME_API_VERSION ${VMIME_API_VERSION_CURRENT}.${VMIME_API_VERSION_REVISION} # Set base name SET(VMIME_LIBRARY_NAME vmime) +# Enable C++11 +SET(CMAKE_CXX_STANDARD 11) +SET(CMAKE_CXX_STANDARD_REQUIRED ON) +SET(CMAKE_CXX_EXTENSIONS OFF) + # Source files FILE( GLOB_RECURSE @@ -796,89 +801,6 @@ ENDIF() ############################################################################## -# Language features - -# C++11 -INCLUDE(cmake/cmake-cxx11/Modules/CheckCXX11Features.cmake) - -# Smart pointers -# -# If a C++11-compliant compiler is available and supports std::shared_ptr<>, -# use the standard implementation. Else, use boost::shared_ptr<>. -# In any case, let the user override the choice with VMIME_SHARED_PTR_USE_CXX -# and VMIME_SHARED_PTR_USE_BOOST variables. - -CHECK_CXX_SOURCE_COMPILES( - " - #include <memory> - struct A { int foo; }; - int main() { - std::shared_ptr <A> a = std::make_shared <A>(); - return 0; - } - " - VMIME_HAS_CXX11_SHARED_PTR -) - -IF(NOT VMIME_SHARED_PTR_USE_CXX AND NOT VMIME_SHARED_PTR_USE_BOOST) - IF(CXX11_COMPILER_FLAGS AND VMIME_HAS_CXX11_SHARED_PTR) - # If std::shared_ptr<> is available, use it by default - SET(VMIME_SHARED_PTR_USE_CXX_DEFAULT ON) - SET(VMIME_SHARED_PTR_USE_BOOST_DEFAULT OFF) - ELSE() - # Else, set default to boost::shared_ptr<> - SET(VMIME_SHARED_PTR_USE_CXX_DEFAULT OFF) - SET(VMIME_SHARED_PTR_USE_BOOST_DEFAULT ON) - ENDIF() -ENDIF() - -OPTION( - VMIME_SHARED_PTR_USE_CXX - "Use standard std::shared_ptr<> (requires a C++11 compiler)" - ${VMIME_SHARED_PTR_USE_CXX_DEFAULT} -) - -OPTION( - VMIME_SHARED_PTR_USE_BOOST - "Use boost::shared_ptr<> (requires Boost)" - ${VMIME_SHARED_PTR_USE_BOOST_DEFAULT} -) - -IF(VMIME_SHARED_PTR_USE_CXX AND VMIME_SHARED_PTR_USE_BOOST) - MESSAGE(FATAL_ERROR "Options VMIME_SHARED_PTR_USE_CXX and VMIME_SHARED_PTR_USE_BOOST are mutually exclusive (select one or the other, but not both!)") -ENDIF() - -IF(VMIME_SHARED_PTR_USE_CXX) - - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX11_COMPILER_FLAGS}") - - IF("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") - ENDIF() - - MESSAGE(STATUS "Checking support for shared_ptr<>: built-in (C++11)") - -ELSEIF(VMIME_SHARED_PTR_USE_BOOST) - - # Depends on Boost library if C++11 is not supported - FIND_PACKAGE(Boost) - - IF(Boost_FOUND) - INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS}) - ELSE() - MESSAGE(FATAL_ERROR "Boost library is required for shared_ptr<>, unless you compile using C++11") - ENDIF() - - MESSAGE(STATUS "Checking support for shared_ptr<>: boost library") - -ELSE() - - MESSAGE(FATAL_ERROR "No implementation for shared_ptr<> was selected/found") - -ENDIF() - - -############################################################################## # Platform SET(VMIME_PLATFORM_IS_POSIX OFF) |