mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-11 08:03:55 +00:00
Added minimum compiler version assertions
We now require (and enforce at compile time): - GCC 4.8+ - clang 3.3+ (5.0+ for Apple's renumbered clang) - MSVC 2015u3+ - ICC 15+ This also updates the versions listed in the README, and removes a now-redundant MSVC version check.
This commit is contained in:
parent
3d591e8f2f
commit
5a9247872d
@ -96,9 +96,9 @@ In addition to the core functionality, pybind11 provides some extra goodies:
|
||||
|
||||
## Supported compilers
|
||||
|
||||
1. Clang/LLVM (any non-ancient version with C++11 support)
|
||||
1. Clang/LLVM 3.3 or newer (for Apple Xcode's clang, this is 5.0.0 or newer)
|
||||
2. GCC 4.8 or newer
|
||||
3. Microsoft Visual Studio 2015 or newer
|
||||
3. Microsoft Visual Studio 2015 Update 3 or newer
|
||||
4. Intel C++ compiler 16 or newer (15 with a [workaround](https://github.com/pybind/pybind11/issues/276))
|
||||
5. Cygwin/GCC (tested on 2.5.1)
|
||||
|
||||
|
@ -28,6 +28,33 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
// Compiler version assertions
|
||||
#if defined(__INTEL_COMPILER)
|
||||
# if __INTEL_COMPILER < 1500
|
||||
# error pybind11 requires Intel C++ compiler v15 or newer
|
||||
# endif
|
||||
#elif defined(__clang__) && !defined(__apple_build_version__)
|
||||
# if __clang_major__ < 3 || (__clang_major__ == 3 && __clang_minor__ < 3)
|
||||
# error pybind11 requires clang 3.3 or newer
|
||||
# endif
|
||||
#elif defined(__clang__)
|
||||
// Apple changes clang version macros to its Xcode version; the first Xcode release based on
|
||||
// (upstream) clang 3.3 was Xcode 5:
|
||||
# if __clang_major__ < 5
|
||||
# error pybind11 requires Xcode/clang 5.0 or newer
|
||||
# endif
|
||||
#elif defined(__GNUG__)
|
||||
# if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8)
|
||||
# error pybind11 requires gcc 4.8 or newer
|
||||
# endif
|
||||
#elif defined(_MSC_VER)
|
||||
// Pybind hits various compiler bugs in 2015u2 and earlier, and also makes use of some stl features
|
||||
// (e.g. std::negation) added in 2015u3:
|
||||
# if _MSC_FULL_VER < 190024213
|
||||
# error pybind11 requires MSVC 2015 update 3 or newer
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if !defined(PYBIND11_EXPORT)
|
||||
# if defined(WIN32) || defined(_WIN32)
|
||||
# define PYBIND11_EXPORT __declspec(dllexport)
|
||||
@ -651,8 +678,8 @@ struct error_scope {
|
||||
/// Dummy destructor wrapper that can be used to expose classes with a private destructor
|
||||
struct nodelete { template <typename T> void operator()(T*) { } };
|
||||
|
||||
// overload_cast requires variable templates: C++14 or MSVC 2015 Update 2
|
||||
#if defined(PYBIND11_CPP14) || _MSC_FULL_VER >= 190023918
|
||||
// overload_cast requires variable templates: C++14 or MSVC
|
||||
#if defined(PYBIND11_CPP14) || defined(_MSC_VER)
|
||||
#define PYBIND11_OVERLOAD_CAST 1
|
||||
|
||||
NAMESPACE_BEGIN(detail)
|
||||
|
Loading…
Reference in New Issue
Block a user