aboutsummaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorVincent Richard <[email protected]>2018-04-01 09:29:07 +0000
committerVincent Richard <[email protected]>2018-04-01 09:29:07 +0000
commit8564b2f8b0d563a2c328a09916e9e4e3def5978f (patch)
treef7d2a3022b79f4769dcb3a96c4693f981c764842 /CMakeLists.txt
parentMerge pull request #181 from rusdevops/patch-2 (diff)
downloadvmime-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.txt90
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)