aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Alexey Brodkin <Alexey.Brodkin@synopsys.com>2016-09-23 17:58:49 +0300
committerGravatar Thomas Petazzoni <thomas.petazzoni@free-electrons.com>2016-10-05 10:01:12 +0200
commit3a0ed5d25e26cb2ec99a1da077c9dcfea67b0ecc (patch)
tree97d5be4da5b56c647a1179d455480b3f728c14d3
parentcb5cc2a7002673a0680885c8ce88126883cbee23 (diff)
downloadbuildroot-3a0ed5d25e26cb2ec99a1da077c9dcfea67b0ecc.tar.gz
buildroot-3a0ed5d25e26cb2ec99a1da077c9dcfea67b0ecc.tar.bz2
qt5: Disable passing of -isystem flag in CXXFLAGS
Some Qt5 sub-projects as well as 3rd-party apps written on Qt are failing to compile with gcc 6.x like that: ---------------------------->8------------------------- In file included from XXX/output/host/usr/arc-buildroot-linux-uclibc/include/c++/6.2.1/bits/stl_algo.h:59:0, from XXX/output/host/usr/arc-buildroot-linux-uclibc/include/c++/6.2.1/algorithm:62, from XXX/output/host/usr/arc-buildroot-linux-uclibc/sysroot/usr/include/qt5/QtCore/qglobal.h:88, from XXX/output/host/usr/arc-buildroot-linux-uclibc/sysroot/usr/include/qt5/QtCore/qpair.h:37, from qmediametadata.h:37, from qmediametadata.cpp:28: XXX/output/host/usr/arc-buildroot-linux-uclibc/include/c++/6.2.1/cstdlib:75:25: fatal error: stdlib.h: No such file or directory #include_next <stdlib.h> ^ compilation terminated. ---------------------------->8------------------------- That happens because qmake trying to play smart passes some include paths in Makefile with "-isystem" prefix. Which in some cases lead to build failure well described in [1]. A little bit more details below on what really happens: 1. In "configure" script Qt determines default include paths of the toolchain and stores them in DEFAULT_INCDIRS variable, see [2]. 2. On qmake execution when it creates Makefile out of .pro-file it parses headers in INCLUDEPATH variable and if a path matches one in DEFAULT_INCDIRS then in CXXFLAGS that path is written with $QMAKE_CFLAGS_ISYSTEM prefix, otherwise non-matching include path ends up in CXXFLAGS with normal "-I" prefix. 3. By default for gcc "QMAKE_CFLAGS_ISYSTEM = -isystem", see [3]. 4. gcc fails to find stdlib.h, again refer to Jörg's explanation in [1]. What we do here we force set QMAKE_CFLAGS_ISYSTEM to "" and so qmake won't use "-isystem" any longer instead expected "-I" will be used for all headers, see [4]. That fixes building of Qt5Webkit on ARM with gcc 6.x and a number of autobuilder failures for ARC (the an arch that uses gcc 6 by default) like: http://autobuild.buildroot.net/results/56a/56a6700774af692e7f5a99b452b15e4e8592310f http://autobuild.buildroot.net/results/697/697412b29bf031bf8f246cc3af97ebcbf6bf6d1b [1] https://git.buildroot.net/buildroot/commit/?id=e79272fa7ff3d66c18de3514b912cd9d68d121a4 [2] http://code.qt.io/cgit/qt/qtbase.git/tree/configure?h=5.6.1#n3660 [3] http://code.qt.io/cgit/qt/qtbase.git/tree/mkspecs/common/gcc-base.conf?h=5.6.1#n47 [4] http://code.qt.io/cgit/qt/qtbase.git/tree/qmake/generators/unix/unixmake2.cpp?&h=5.6.1#n193 Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Peter Seiderer <ps.report@gmx.net> Cc: Julien Corjon <corjon.j@ecagroup.com> Cc: "Yann E. MORIN" <yann.morin.1998@free.fr> Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-rw-r--r--package/qt5/qt5base/qmake.conf1
1 files changed, 1 insertions, 0 deletions
diff --git a/package/qt5/qt5base/qmake.conf b/package/qt5/qt5base/qmake.conf
index 2152d3c7a4..49cf898316 100644
--- a/package/qt5/qt5base/qmake.conf
+++ b/package/qt5/qt5base/qmake.conf
@@ -19,6 +19,7 @@ QMAKE_CXXFLAGS_RELEASE += -O3
CONFIG += nostrip
QMAKE_LIBS += -lrt -lpthread -ldl
+QMAKE_CFLAGS_ISYSTEM =
include(../common/linux_device_post.conf)
load(qt_config)