mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-22 13:15:12 +00:00
Build platform ABI tag improvements
This commit adapts the ABI tag as follows: - It removes ``PYBIND11_INTERNALS_KIND`` that was neither used nor documented. - It adapts the MSVC ABI tag to be less stringent (see PR #4953) - It adapts the GCC ABI tag to be less stringent. - It adds a check for a Clang/libc++ ABI tag that wasn't present before I plan to make a consistent set of changes to nanobind so that both libraries use interchangeable platform ABI tags.
This commit is contained in:
parent
037310ea8a
commit
7a10c4adb2
@ -310,25 +310,38 @@ struct type_info {
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/// On Linux/OSX, changes in __GXX_ABI_VERSION__ indicate ABI incompatibility.
|
// Catch other conditions that imply ABI incompatibility
|
||||||
/// On MSVC, changes in _MSC_VER may indicate ABI incompatibility (#2898).
|
// - MSVC builds with different CRT versions
|
||||||
#ifndef PYBIND11_BUILD_ABI
|
// - An anticipated MSVC ABI break ("vNext")
|
||||||
# if defined(__GXX_ABI_VERSION)
|
// - Builds using libc++ with unstable ABIs
|
||||||
# define PYBIND11_BUILD_ABI "_cxxabi" PYBIND11_TOSTRING(__GXX_ABI_VERSION)
|
// - Builds using libstdc++ with the legacy (pre-C++11) ABI
|
||||||
# elif defined(_MSC_VER)
|
#if defined(_MSC_VER)
|
||||||
# define PYBIND11_BUILD_ABI "_mscver" PYBIND11_TOSTRING(_MSC_VER)
|
# if defined(_MT) && defined(_DLL) // catches /MD or /MDd
|
||||||
|
# define PYBIND11_BUILD_LIB "_md"
|
||||||
|
# elif defined(_MT)
|
||||||
|
# define PYBIND11_BUILD_LIB "_mt" // catches /MT or /MTd
|
||||||
|
# else
|
||||||
|
# define PYBIND11_BUILD_LIB ""
|
||||||
|
# endif
|
||||||
|
# if (_MSC_VER) / 100 == 19
|
||||||
|
# define PYBIND11_BUILD_ABI NB_BUILD_LIB "_19"
|
||||||
|
# else
|
||||||
|
# define PYBIND11_BUILD_ABI NB_BUILD_LIB "_unknown"
|
||||||
|
# endif
|
||||||
|
#elif defined(_LIBCPP_ABI_VERSION)
|
||||||
|
# define PYBIND11_BUILD_ABI "_abi" NB_TOSTRING(_LIBCPP_ABI_VERSION)
|
||||||
|
#elif defined(__GLIBCXX__)
|
||||||
|
# if _GLIBCXX_USE_CXX11_ABI
|
||||||
|
# define PYBIND11_BUILD_ABI ""
|
||||||
|
# else
|
||||||
|
# define PYBIND11_BUILD_ABI "_legacy"
|
||||||
|
# endif
|
||||||
#else
|
#else
|
||||||
# define PYBIND11_BUILD_ABI ""
|
# define PYBIND11_BUILD_ABI ""
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef PYBIND11_INTERNALS_KIND
|
|
||||||
# define PYBIND11_INTERNALS_KIND ""
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define PYBIND11_PLATFORM_ABI_ID \
|
#define PYBIND11_PLATFORM_ABI_ID \
|
||||||
PYBIND11_INTERNALS_KIND PYBIND11_COMPILER_TYPE PYBIND11_STDLIB PYBIND11_BUILD_ABI \
|
PYBIND11_COMPILER_TYPE PYBIND11_STDLIB PYBIND11_BUILD_ABI PYBIND11_BUILD_TYPE
|
||||||
PYBIND11_BUILD_TYPE
|
|
||||||
|
|
||||||
#define PYBIND11_INTERNALS_ID \
|
#define PYBIND11_INTERNALS_ID \
|
||||||
"__pybind11_internals_v" PYBIND11_TOSTRING(PYBIND11_INTERNALS_VERSION) \
|
"__pybind11_internals_v" PYBIND11_TOSTRING(PYBIND11_INTERNALS_VERSION) \
|
||||||
|
Loading…
Reference in New Issue
Block a user