diff mbox

[LEDE-DEV] rules.mk: disable CXX11 ABI with uClibc++

Message ID 20170321181353.29273-1-stijn@linux-ipv6.be
State Changes Requested
Headers show

Commit Message

Stijn Tintel March 21, 2017, 6:13 p.m. UTC
GCC 5.1 introduced a new library ABI to conform to the 2011 C++
standard. This new ABI is enabled by default. This causes compatibility
issues between libraries compiled against libstdc++ and libraries
compiled against uClibc++, as the latter doesn't support this new ABI.

Solve this by disabling the _GLIBCXX_USE_CXX11_ABI macro when uClibc++
is selected as the preferred standard C++ library.

Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
---
 rules.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Felix Fietkau March 21, 2017, 9:27 p.m. UTC | #1
On 2017-03-21 19:13, Stijn Tintel wrote:
> GCC 5.1 introduced a new library ABI to conform to the 2011 C++
> standard. This new ABI is enabled by default. This causes compatibility
> issues between libraries compiled against libstdc++ and libraries
> compiled against uClibc++, as the latter doesn't support this new ABI.
> 
> Solve this by disabling the _GLIBCXX_USE_CXX11_ABI macro when uClibc++
> is selected as the preferred standard C++ library.
> 
> Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
This should be changed in uclibc++.mk so that it does not affect
packages that only use libstdc++

- Felix
diff mbox

Patch

diff --git a/rules.mk b/rules.mk
index ed796a5..bf051b7 100644
--- a/rules.mk
+++ b/rules.mk
@@ -164,7 +164,7 @@  TARGET_PATH:=$(subst $(space),:,$(filter-out .,$(filter-out ./,$(subst :,$(space
 TARGET_INIT_PATH:=$(call qstrip,$(CONFIG_TARGET_INIT_PATH))
 TARGET_INIT_PATH:=$(if $(TARGET_INIT_PATH),$(TARGET_INIT_PATH),/usr/sbin:/sbin:/usr/bin:/bin)
 TARGET_CFLAGS:=$(TARGET_OPTIMIZATION)$(if $(CONFIG_DEBUG), -g3) $(call qstrip,$(CONFIG_EXTRA_OPTIMIZATION))
-TARGET_CXXFLAGS = $(TARGET_CFLAGS)
+TARGET_CXXFLAGS = $(TARGET_CFLAGS) $(if $(CONFIG_USE_UCLIBCXX), -D_GLIBCXX_USE_CXX11_ABI=0)
 TARGET_ASFLAGS_DEFAULT = $(TARGET_CFLAGS)
 TARGET_ASFLAGS = $(TARGET_ASFLAGS_DEFAULT)
 TARGET_CPPFLAGS:=-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include