Ignore all changes to g++ ABI version since 1002

Checking for the exact match of __GXX_ABI_VERSION created more problems
(including for both Fedora and Debian packagers, see
https://github.com/wxWidgets/wxWidgets/pull/828) than it solved
(approximately 0), so relax it and assume that future g++ versions will
remain broadly compatible with the current ABI, which seems like a safe
assumption so far.

It's not really clear if there is any value in having this ABI check at
all, or if we should remove CheckBuildOptions() and all the code calling
it entirely, as it seems that there is no way to trigger this check
during run-time without getting a link error first. But keep it for now,
just because it's simpler to keep it than to remove it.
This commit is contained in:
Vadim Zeitlin 2018-07-09 00:36:15 +02:00
parent 42932d4670
commit 7f1d08d5bd

View File

@ -52,17 +52,18 @@
// GCC and Intel C++ share same C++ ABI (and possibly others in the future),
// check if compiler versions are compatible:
#if defined(__GXX_ABI_VERSION)
// The changes between ABI versions 1002 through 1011 (documented at
// https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Dialect-Options.html
// under -fabi-version) don't affect wxWidgets, so we allow a library
// and an application to differ within that range.
#if ((__GXX_ABI_VERSION >= 1002) && (__GXX_ABI_VERSION <= 1011))
#define wxGXX_EFFECTIVE_ABI_VERSION 1002
#else
#define wxGXX_EFFECTIVE_ABI_VERSION __GXX_ABI_VERSION
#endif
// All the changes since ABI version 1002 so far have been insignificant,
// so just check for this value, first used for g++ 3.4 and used by default
// by all g++ 4 versions, as checking for the exact ABI version simply
// results in run-time breakage whenever a new gcc version is released,
// even if there are no real problems.
#if __GXX_ABI_VERSION >= 1002
#define __WX_BO_COMPILER \
",compiler with C++ ABI " __WX_BO_STRINGIZE(wxGXX_EFFECTIVE_ABI_VERSION)
",compiler with C++ ABI compatible with gcc 4"
#else
#define __WX_BO_COMPILER \
",compiler with C++ ABI " __WX_BO_STRINGIZE(__GXX_ABI_VERSION)
#endif
#elif defined(__GNUG__)
#define __WX_BO_COMPILER ",GCC " \
__WX_BO_STRINGIZE(__GNUC__) "." __WX_BO_STRINGIZE(__GNUC_MINOR__)