qt4-build-multilib.eclass: explicitly build with -std=gnu++98
authorAnthony Ryan <anthonyryan1@gmail.com>
Fri, 25 Nov 2016 03:49:17 +0000 (22:49 -0500)
committerDavide Pesavento <pesa@gentoo.org>
Fri, 25 Nov 2016 17:47:25 +0000 (18:47 +0100)
While some of the Qt4 packages build correctly with -std=gnu++14,
others rely upon std::tr1 and other renamed library items. Because
most of these issues have been resolved upstream in Qt5, the easiest
solution is to ensure Qt4 is always built with -std=gnu++98.

Gentoo-Bug: 582522, 582618, 583744, 583662
Closes: https://github.com/gentoo/gentoo/pull/2908

eclass/qt4-build-multilib.eclass

index 2a84bc5733c12863c2127ad2ef29cffbd3a7d14c..d0b11afe3a4088ae48d39a3c20016e59791ebbf9 100644 (file)
@@ -158,6 +158,12 @@ qt4-build-multilib_src_prepare() {
                        || die "sed failed (skip X11 tests)"
        fi
 
+       # Qt4 is not safe to build with C++14 (the new gcc-6 default).
+       # Upstream has addressed this for Qt5, but while we continue to
+       # support Qt4, we need to ensure everything is built in C++98 mode.
+       # See bugs 582522, 582618, 583662, 583744.
+       append-cxxflags -std=gnu++98
+
        if [[ ${PN} == qtcore ]]; then
                # Bug 373061
                # qmake bus errors with -O2 or -O3 but -O1 works