cmake: make the c++11 abi configurable, default unset
authorJosh Stone <jistone@redhat.com>
Thu, 28 Apr 2016 20:18:08 +0000 (13:18 -0700)
committerJosh Stone <jistone@redhat.com>
Wed, 4 May 2016 21:26:34 +0000 (14:26 -0700)
commit948063ca2ff68377bc2371a22d8f9496b7e2a105
treeb9172129a5951524334f95618e24ee1038bbfbbf
parent4c6360a9a0bf6b3cb2a54508b1b155e672ddd47e
cmake: make the c++11 abi configurable, default unset

GCC 5 made several ABI changes for C++11 support, but they also kept
support for the older ABI.  The macro _GLIBCXX_USE_CXX11_ABI can force
which mode you compile against.

Fedora 22 shipped with GCC 5 configured to use the old ABI by default,
as if -D_GLIBCXX_USE_CXX11_ABI=0, and Fedora 23 moved to the new ABI.
In either case you could make a different choice with that macro, but
any APIs you expose will be ABI-tagged, and programs you link with must
use the same choice.  For working in a Linux distribution, it's usually
best to leave it at the default.

Commit dbd452640a57 forced the old ABI unconditionally.  This patch adds
a cmake USE_CXX11_ABI setting, left blank to use the compiler default,
or set to a cmake boolean to force the new ABI on or off.

References:
  http://developers.redhat.com/blog/2015/02/05/gcc5-and-the-c11-abi/
  http://developers.redhat.com/blog/2015/02/10/gcc-5-in-fedora/
cmake/shared.cmake