diff options
author | Cory Fields <cory-nospam-@coryfields.com> | 2016-01-05 15:58:48 -0500 |
---|---|---|
committer | Cory Fields <cory-nospam-@coryfields.com> | 2016-01-05 17:17:29 -0500 |
commit | 76ac35f36d87078da62f95b4a1167ec296e37363 (patch) | |
tree | 823c769c50135b102f4e9790d418c1976b628962 /src | |
parent | 605c17844ea32b6d237db6d83871164dc7d59dab (diff) |
c++11: detect and correct for boost builds with an incompatible abi
This is ugly, but temporary. boost::filesystem will likely be dropped soon
after c++11 is enabled. Otherwise, we could simply roll our own copy_file. I've
fixed this at the buildsystem level for now in order to avoid mixing in
functional changes.
Explanation:
If boost (prior to 1.57) was built without c++11, it emulated scoped enums
using c++98 constructs. Unfortunately, this implementation detail leaked into
the abi. This was fixed in 1.57.
When building against that installed version using c++11, the headers pick up
on the native c++11 scoped enum support and enable it, however it will fail to
link. This can be worked around by disabling c++11 scoped enums if linking will
fail.
Add an autoconf test to determine incompatibility. At build-time, if native
enums are being used (a c++11 build), and force-disabling them causes a
successful link, we can be sure that there's an incompatibility and enable the
work-around.
Diffstat (limited to 'src')
-rw-r--r-- | src/wallet/walletdb.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/wallet/walletdb.cpp b/src/wallet/walletdb.cpp index 88dc3102da..f0e1776958 100644 --- a/src/wallet/walletdb.cpp +++ b/src/wallet/walletdb.cpp @@ -15,6 +15,12 @@ #include "utiltime.h" #include "wallet/wallet.h" +#if defined(FORCE_BOOST_EMULATED_SCOPED_ENUMS) +#define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_CXX11_SCOPED_ENUMS +#endif + +#include <boost/version.hpp> #include <boost/filesystem.hpp> #include <boost/foreach.hpp> #include <boost/scoped_ptr.hpp> |