Message ID | 1387868037-31734-1-git-send-email-fatih.asici@gmail.com |
---|---|
State | Accepted |
Headers | show |
Dear Fatih Aşıcı, On Tue, 24 Dec 2013 08:53:57 +0200, Fatih Aşıcı wrote: > There are places in Qt's source where headers included with the name of > the module subdirectory (e.g. #include <QtCore/QHash>). Therefore, the > build system passes the top header directory to the compiler; but this > results in a error when building host tools since sysroot/usr/include > directory includes architecture specific system headers. > > In order to prevent this, install all Qt headers into a subdirectory in > /usr/include. > > Fixes: http://autobuild.buildroot.net/results/4f1/4f16c0b38bdd6e40efcc781c12fae81c0bfabb72/ > > Signed-off-by: Fatih Aşıcı <fatih.asici@gmail.com> With this change, what does the compilation command line of host tools look like? To me, this change seems more like work-arounding a problem in the Qt build system rather than a real fix. Best regards, Thomas
On Tuesday 24 December 2013 09:47:20 Thomas Petazzoni wrote: > Dear Fatih Aşıcı, > > On Tue, 24 Dec 2013 08:53:57 +0200, Fatih Aşıcı wrote: > > There are places in Qt's source where headers included with the name of > > the module subdirectory (e.g. #include <QtCore/QHash>). Therefore, the > > build system passes the top header directory to the compiler; but this > > results in a error when building host tools since sysroot/usr/include > > directory includes architecture specific system headers. > > > > In order to prevent this, install all Qt headers into a subdirectory in > > /usr/include. > > > > Fixes: > > http://autobuild.buildroot.net/results/4f1/4f16c0b38bdd6e40efcc781c12fae > > 81c0bfabb72/ > > > > Signed-off-by: Fatih Aşıcı <fatih.asici@gmail.com> > > With this change, what does the compilation command line of host tools > look like? g++ -c -pipe -O2 -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -fno-exceptions -Wall -W -D_REENTRANT -DQT_NO_LIBUDEV -DQT_NO_XCB -DQT_NO_XKBCOMMON - DQT_BUILD_QMLDEVTOOLS_LIB -DQT_BUILDING_QT -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS - DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -DQT_NO_EXCEPTIONS -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -DQT_BOOTSTRAP_LIB -DQT_BOOTSTRAPPED - DQT_LITE_UNICODE -DQT_NO_CAST_TO_ASCII -DQT_NO_CODECS -DQT_NO_DATASTREAM -DQT_NO_LIBRARY -DQT_NO_QOBJECT -DQT_NO_SYSTEMLOCALE -DQT_NO_THREAD -DQT_NO_UNICODETABLES - DQT_NO_USING_NAMESPACE -DQT_NO_DEPRECATED -DQT_NO_TRANSLATION -DQT_QMAKE_LOCATION="/home/fatih/git/buildroot/output/build/qt5base-5.2.0/bin/qmake" - I/home/fatih/git/buildroot/output/host/usr/mkspecs/linux-g++ -I. -I../../include -I../../include/QtQml -I../../include/QtQml/5.2.0 -I../../include/QtQml/5.2.0/QtQml -I/home/fatih/git/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/qt5 -I/home/fatih/git/buildroot/output/host/usr/arm-buildroot- linux-uclibcgnueabi/sysroot/usr/include/qt5/QtCore -I/home/fatih/git/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/qt5/QtXml - I/home/fatih/git/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/qt5/QtCore/5.2.0 -I/home/fatih/git/buildroot/output/host/usr/arm- buildroot-linux-uclibcgnueabi/sysroot/usr/include/qt5/QtCore/5.2.0/QtCore -I/home/fatih/git/buildroot/output/host/usr/arm-buildroot-linux- uclibcgnueabi/sysroot/usr/include/qt5/QtXml/5.2.0 -I/home/fatih/git/buildroot/output/host/usr/arm-buildroot-linux- uclibcgnueabi/sysroot/usr/include/qt5/QtXml/5.2.0/QtXml -o .obj/qqmljsparser.o ../qml/parser/qqmljsparser.cpp > To me, this change seems more like work-arounding a problem in the Qt > build system rather than a real fix. Upstream states[1] that including qt headers from sysroot is not a problem since they don't contain anything platform-specific. [1] https://bugreports.qt-project.org/browse/QTBUG-35330?focusedCommentId=224486&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-224486
Dear Fatih Aşıcı, On Tue, 24 Dec 2013 10:15:24 +0200, Fatih Aşıcı wrote: > g++ -c -pipe -O2 -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -fno-exceptions -Wall -W -D_REENTRANT -DQT_NO_LIBUDEV -DQT_NO_XCB -DQT_NO_XKBCOMMON - > DQT_BUILD_QMLDEVTOOLS_LIB -DQT_BUILDING_QT -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS - > DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -DQT_NO_EXCEPTIONS -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -DQT_BOOTSTRAP_LIB -DQT_BOOTSTRAPPED - > DQT_LITE_UNICODE -DQT_NO_CAST_TO_ASCII -DQT_NO_CODECS -DQT_NO_DATASTREAM -DQT_NO_LIBRARY -DQT_NO_QOBJECT -DQT_NO_SYSTEMLOCALE -DQT_NO_THREAD -DQT_NO_UNICODETABLES - > DQT_NO_USING_NAMESPACE -DQT_NO_DEPRECATED -DQT_NO_TRANSLATION -DQT_QMAKE_LOCATION="/home/fatih/git/buildroot/output/build/qt5base-5.2.0/bin/qmake" - > I/home/fatih/git/buildroot/output/host/usr/mkspecs/linux-g++ -I. -I../../include -I../../include/QtQml -I../../include/QtQml/5.2.0 -I../../include/QtQml/5.2.0/QtQml > -I/home/fatih/git/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/qt5 This is still really ugly, as it is including target headers when doing a compilation for the host. If they know what they are doing and know that including Qt headers is fine and needed, then they should include them from the Qt source tree and not from the Qt installation tree. > > To me, this change seems more like work-arounding a problem in the Qt > > build system rather than a real fix. > > Upstream states[1] that including qt headers from sysroot is not a problem > since they don't contain anything platform-specific. > > [1] https://bugreports.qt-project.org/browse/QTBUG-35330?focusedCommentId=224486&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-224486 I don't really agree, but if that's what upstream recommends, then ok for the patch. Thanks! Thomas
Dear Fatih Aşıcı, On Tue, 24 Dec 2013 08:53:57 +0200, Fatih Aşıcı wrote: > There are places in Qt's source where headers included with the name of > the module subdirectory (e.g. #include <QtCore/QHash>). Therefore, the > build system passes the top header directory to the compiler; but this > results in a error when building host tools since sysroot/usr/include > directory includes architecture specific system headers. > > In order to prevent this, install all Qt headers into a subdirectory in > /usr/include. > > Fixes: http://autobuild.buildroot.net/results/4f1/4f16c0b38bdd6e40efcc781c12fae81c0bfabb72/ > > Signed-off-by: Fatih Aşıcı <fatih.asici@gmail.com> > --- > package/qt5/qt5base/qt5base.mk | 1 + > 1 file changed, 1 insertion(+) Applied, thanks! Thomas
diff --git a/package/qt5/qt5base/qt5base.mk b/package/qt5/qt5base/qt5base.mk index 1b753d3..e46bdeb 100644 --- a/package/qt5/qt5base/qt5base.mk +++ b/package/qt5/qt5base/qt5base.mk @@ -159,6 +159,7 @@ define QT5BASE_CONFIGURE_CMDS -v \ -prefix /usr \ -hostprefix $(HOST_DIR)/usr \ + -headerdir /usr/include/qt5 \ -sysroot $(STAGING_DIR) \ -plugindir /usr/lib/qt/plugins \ -no-rpath \
There are places in Qt's source where headers included with the name of the module subdirectory (e.g. #include <QtCore/QHash>). Therefore, the build system passes the top header directory to the compiler; but this results in a error when building host tools since sysroot/usr/include directory includes architecture specific system headers. In order to prevent this, install all Qt headers into a subdirectory in /usr/include. Fixes: http://autobuild.buildroot.net/results/4f1/4f16c0b38bdd6e40efcc781c12fae81c0bfabb72/ Signed-off-by: Fatih Aşıcı <fatih.asici@gmail.com> --- package/qt5/qt5base/qt5base.mk | 1 + 1 file changed, 1 insertion(+)