* [Buildroot] Fix to Qt5base-build @ 2013-09-17 7:37 Espen Frimann Koren 2013-09-17 9:53 ` [Buildroot] [PATCH v1] Fix EGL support in qt5base Jérôme Pouiller 0 siblings, 1 reply; 6+ messages in thread From: Espen Frimann Koren @ 2013-09-17 7:37 UTC (permalink / raw) To: buildroot Hi. I have found a solution to why Qt5 does not find either OpenGL ES2 or EGL during configuration. In the file package/qt5/qt5base/qt5base-mkspecs-files.patch, two files are created in output/build/qt5base-5.0.2/mkspecs/devices/linux-buildroot-g++. In my opinion the following lines must be included in the file (from the patch): QMAKE_LIBS_EGL += -lEGL QMAKE_LIBS_OPENGL_ES2 += -lEGL -lGAL QMAKE_CFLAGS += -DEGL_API_FB=1 QMAKE_CXXFLAGS += -DEGL_API_FB=1 QMAKE_CFLAGS_DEBUG += -DEGL_API_FB=1 QMAKE_CXXFLAGS_DEBUG += -DEGL_API_FB=1 I cannot commit to the buildroot tree, so someone have to do this. There are other issues in the corresponding file in output/build/qt5base-5.0.2/mkspecs/devices/linux-imx6-g++/qmake.conf, which is provided by Qt themselves, that may need to be taken into consideration, for instance EGLFS_PLATFORM_HOOKS_SOURCES = $$PWD/qeglfshooks_imx6.cpp Maybe there should be possible to select Qt device mkspec in the make menuconfig-system? Sp1 -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20130917/c46171b6/attachment.html> ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH v1] Fix EGL support in qt5base 2013-09-17 7:37 [Buildroot] Fix to Qt5base-build Espen Frimann Koren @ 2013-09-17 9:53 ` Jérôme Pouiller 2013-09-17 11:35 ` Fatih Aşıcı 2013-09-17 18:33 ` Thomas Petazzoni 0 siblings, 2 replies; 6+ messages in thread From: Jérôme Pouiller @ 2013-09-17 9:53 UTC (permalink / raw) To: buildroot For many EGL libraries, Qt5 need special instructions to compile correctly. This patch implement a more generic way to customize Qt5 compilation. In add, it fix support for Rasberry Pi and Vivante GPUs. Signed-off-by: J?r?me Pouiller <jezz@sysmic.org> --- You may try this patch. I have not yet added/tested support for Omap and Mali, but it should work imx6. ...nce-add-egl-to-CONFIG-to-get-correct-incl.patch | 32 -------------------- package/qt5/qt5base/qt5base-mkspecs-files.patch | 2 +- package/qt5/qt5base/qt5base.mk | 29 +++++++++++++++--- 3 files changed, 26 insertions(+), 37 deletions(-) delete mode 100644 package/qt5/qt5base/qt5base-eglconvenience-add-egl-to-CONFIG-to-get-correct-incl.patch diff --git a/package/qt5/qt5base/qt5base-eglconvenience-add-egl-to-CONFIG-to-get-correct-incl.patch b/package/qt5/qt5base/qt5base-eglconvenience-add-egl-to-CONFIG-to-get-correct-incl.patch deleted file mode 100644 index a85a5aa..0000000 --- a/package/qt5/qt5base/qt5base-eglconvenience-add-egl-to-CONFIG-to-get-correct-incl.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 588c60d0c3d11e79d19860fa62b03c935658d13a Mon Sep 17 00:00:00 2001 -From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> -Date: Sun, 13 Jan 2013 14:36:48 +0100 -Subject: [PATCH qtbase] eglconvenience: add egl to CONFIG to get correct include - paths - -The eglconvenience code includes <EGL/egl.h>. Therefore, it should get -the appropriate EGL-specific include paths from QMAKE_INCDIR_EGL, -otherwise the build might if the EGL library has its headers in -special locations. In order to achieve this, we simply add the "egl" -feature to the list of features imported by eglconvenience. - -Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> ---- - .../eglconvenience/eglconvenience.pri | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/platformsupport/eglconvenience/eglconvenience.pri b/src/platformsupport/eglconvenience/eglconvenience.pri -index 188eb1c..8996cea 100644 ---- a/src/platformsupport/eglconvenience/eglconvenience.pri -+++ b/src/platformsupport/eglconvenience/eglconvenience.pri -@@ -5,6 +5,7 @@ contains(QT_CONFIG,egl) { - SOURCES += \ - $$PWD/qeglconvenience.cpp \ - $$PWD/qeglplatformcontext.cpp -+ CONFIG += egl - - contains(QT_CONFIG,xlib) { - HEADERS += \ --- -1.7.9.5 - diff --git a/package/qt5/qt5base/qt5base-mkspecs-files.patch b/package/qt5/qt5base/qt5base-mkspecs-files.patch index bfa9c15..2669c2c 100644 --- a/package/qt5/qt5base/qt5base-mkspecs-files.patch +++ b/package/qt5/qt5base/qt5base-mkspecs-files.patch @@ -52,7 +52,7 @@ Index: b/mkspecs/devices/linux-buildroot-g++/qmake.conf +QMAKE_LIBS += -lrt -lpthread -ldl + +# device specific glue code -+EGLFS_PLATFORM_HOOKS_SOURCES = ++include(qmake-extra-conf.conf) + +# Sanity check +deviceSanityCheckCompiler() diff --git a/package/qt5/qt5base/qt5base.mk b/package/qt5/qt5base/qt5base.mk index 1686dad..41d7dfa 100644 --- a/package/qt5/qt5base/qt5base.mk +++ b/package/qt5/qt5base/qt5base.mk @@ -99,8 +99,30 @@ ifeq ($(BR2_PACKAGE_QT5BASE_EGLFS),y) QT5BASE_CONFIGURE_OPTS += -opengl es2 -eglfs QT5BASE_DEPENDENCIES += libgles libegl ifeq ($(BR2_PACKAGE_RPI_USERLAND),y) -QT5BASE_EGLFS_PLATFORM_HOOKS_SOURCES = \ - $(@D)/mkspecs/devices/linux-rasp-pi-g++/qeglfshooks_pi.cpp +define QT5BASE_EXTRA_OPTIONS +EGLFS_PLATFORM_HOOKS_SOURCES = \ + $(@D)/mkspecs/devices/linux-rasp-pi-g++/qeglfshooks_pi.cpp \n\ +INCLUDEPATH += \ + $(STAGING_DIR)/usr/include/interface/vcos/pthreads \n +endef +else ifeq ($(BR2_PACKAGE_GPU_VIV_BIN_MX6Q)x$(BR2_PACKAGE_XORG7),yx) +define QT5BASE_EXTRA_OPTIONS +EGLFS_PLATFORM_HOOKS_SOURCES = \ + $(@D)/mkspecs/devices/linux-imx6-g++/qeglfshooks_imx6.cpp \n\ +QMAKE_CFLAGS += -DEGL_API_FB=1 \n\ +QMAKE_CXXFLAGS += -DEGL_API_FB=1 \n\ +QMAKE_LIBS_OPENGL_ES2 += -lEGL -lGAL \n\ +QMAKE_LIBS_OPENVG += -lEGL -lGAL \n +endef +else ifeq ($(BR2_PACKAGE_GPU_VIV_BIN_MX6Q)x$(BR2_PACKAGE_XORG7),yxy) +error("GPU_VIV_BIN_MX6Q + XORG7 + qt5 w/ eglfs is known to be broken.") +define QT5BASE_EXTRA_OPTIONS +# Notice this configuration is broken since eglvivante.h include \n\ +# Xlib.h and Xlib.h defines tons of macros which conflict with Qt5 \n\ +# compilation \n\ +QMAKE_LIBS_OPENGL_ES2 += -lEGL -lGAL \n\ +QMAKE_LIBS_OPENVG += -lEGL -lGAL \n +endef endif else QT5BASE_CONFIGURE_OPTS += -no-opengl -no-eglfs @@ -154,8 +176,7 @@ define QT5BASE_CONFIGURE_CMDS $(call QT5BASE_CONFIG_SET,BUILDROOT_COMPILER_CFLAGS,$(TARGET_CFLAGS)) $(call QT5BASE_CONFIG_SET,BUILDROOT_COMPILER_CXXFLAGS,$(TARGET_CXXFLAGS)) $(call QT5BASE_CONFIG_SET,BUILDROOT_INCLUDE_PATH,$(STAGING_DIR)/usr/include) - $(call QT5BASE_CONFIG_SET,EGLFS_PLATFORM_HOOKS_SOURCES, \ - $(QT5BASE_EGLFS_PLATFORM_HOOKS_SOURCES)) + printf '$(QT5BASE_EXTRA_OPTIONS)' > $(@D)/mkspecs/devices/linux-buildroot-g++/qmake-extra-conf.conf (cd $(@D); \ PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ PKG_CONFIG_LIBDIR="$(STAGING_DIR)/usr/lib/pkgconfig" \ -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH v1] Fix EGL support in qt5base 2013-09-17 9:53 ` [Buildroot] [PATCH v1] Fix EGL support in qt5base Jérôme Pouiller @ 2013-09-17 11:35 ` Fatih Aşıcı 2013-09-17 18:33 ` Thomas Petazzoni 1 sibling, 0 replies; 6+ messages in thread From: Fatih Aşıcı @ 2013-09-17 11:35 UTC (permalink / raw) To: buildroot Hi, On Tue, 2013-09-17 at 11:53 +0200, J?r?me Pouiller wrote: > +else ifeq ($(BR2_PACKAGE_GPU_VIV_BIN_MX6Q)x$(BR2_PACKAGE_XORG7),yx) > +define QT5BASE_EXTRA_OPTIONS > +EGLFS_PLATFORM_HOOKS_SOURCES = \ > + $(@D)/mkspecs/devices/linux-imx6-g++/qeglfshooks_imx6.cpp \n\ > +QMAKE_CFLAGS += -DEGL_API_FB=1 \n\ > +QMAKE_CXXFLAGS += -DEGL_API_FB=1 \n\ > +QMAKE_LIBS_OPENGL_ES2 += -lEGL -lGAL \n\ > +QMAKE_LIBS_OPENVG += -lEGL -lGAL \n Hardcoding device specific code in qt5base.mk is not nice; but it seems impossible to get rid of them since qt needs a platform hook path. I have sent a patch to the list which adds .pc files to gpu-viv-bin-mx6q package. This helps qt5 to get needed flags; but for the platform hook .mk file still needs to be modified. I have also sent a bug report[1] to qt developers for another file with hardcoded EGL flags. [1] https://bugreports.qt-project.org/browse/QTBUG-33494 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH v1] Fix EGL support in qt5base 2013-09-17 9:53 ` [Buildroot] [PATCH v1] Fix EGL support in qt5base Jérôme Pouiller 2013-09-17 11:35 ` Fatih Aşıcı @ 2013-09-17 18:33 ` Thomas Petazzoni 2013-09-18 11:13 ` Jérôme Pouiller 1 sibling, 1 reply; 6+ messages in thread From: Thomas Petazzoni @ 2013-09-17 18:33 UTC (permalink / raw) To: buildroot Dear J?r?me Pouiller, On Tue, 17 Sep 2013 11:53:09 +0200, J?r?me Pouiller wrote: > For many EGL libraries, Qt5 need special instructions to compile correctly. > This patch implement a more generic way to customize Qt5 compilation. > > In add, it fix support for Rasberry Pi and Vivante GPUs. > > Signed-off-by: J?r?me Pouiller <jezz@sysmic.org> I'm sorry, but this really looks ugly, and doesn't seem needed at all. We already have a working solution for this problem (which we already had for the RPi, and we solved in a much nicer way I believe) : (1) The OpenGL implementation should install proper pkg-config files to allow Qt5 to get the right compilation flags/libraries. See the "gpu-viv-bin-mx6q: add pkgconfig files for EGL and OpenGLESv2" patch that Fatih has sent today. (2) We already have a mechanism in qt5.mk to customize the EGL platform hook implementation. It just need to be extended to cover the i.MX6 case. I.e, next to: ifeq ($(BR2_PACKAGE_RPI_USERLAND),y) QT5BASE_EGLFS_PLATFORM_HOOKS_SOURCES = \ $(@D)/mkspecs/devices/linux-rasp-pi-g++/qeglfshooks_pi.cpp endif one should add: ifeq ($(BR2_PACKAGE_GPU_VIV_BIN_MX6Q),y) QT5BASE_EGLFS_PLATFORM_HOOKS_SOURCES = \ $(@D)/mkspecs/devices/linux-imx6-g++/qeglfshooks_imx6.cpp endif If someone makes a patch with both of these changes, then it'll have my Acked-by. Best regards, Thomas -- Thomas Petazzoni, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH v1] Fix EGL support in qt5base 2013-09-17 18:33 ` Thomas Petazzoni @ 2013-09-18 11:13 ` Jérôme Pouiller 2013-09-18 16:27 ` Thomas Petazzoni 0 siblings, 1 reply; 6+ messages in thread From: Jérôme Pouiller @ 2013-09-18 11:13 UTC (permalink / raw) To: buildroot On 2013-09-17 20:33, Thomas Petazzoni wrote: > Dear J?r?me Pouiller, > > On Tue, 17 Sep 2013 11:53:09 +0200, J?r?me Pouiller wrote: >> For many EGL libraries, Qt5 need special instructions to compile >> correctly. >> This patch implement a more generic way to customize Qt5 >> compilation. >> >> In add, it fix support for Rasberry Pi and Vivante GPUs. >> >> Signed-off-by: J?r?me Pouiller <jezz@sysmic.org> > > I'm sorry, but this really looks ugly. I agree :-) In fact, I mainly wrote this patch as a work around for one of my imx6 compilations. I sent it only because Espen seemed to have same issue. > and doesn't seem needed at all. > We already have a working solution for this problem (which we already > had for the RPi, and we solved in a much nicer way I believe) : > > (1) The OpenGL implementation should install proper pkg-config files > to allow Qt5 to get the right compilation flags/libraries. See > the > "gpu-viv-bin-mx6q: add pkgconfig files for EGL and OpenGLESv2" > patch that Fatih has sent today. 100% agree > (2) We already have a mechanism in qt5.mk to customize the EGL > platform hook implementation. It just need to be extended to > cover > the i.MX6 case. I.e, next to: > > ifeq ($(BR2_PACKAGE_RPI_USERLAND),y) > QT5BASE_EGLFS_PLATFORM_HOOKS_SOURCES = \ > $(@D)/mkspecs/devices/linux-rasp-pi-g++/qeglfshooks_pi.cpp > endif > > one should add: > > ifeq ($(BR2_PACKAGE_GPU_VIV_BIN_MX6Q),y) > QT5BASE_EGLFS_PLATFORM_HOOKS_SOURCES = \ > $(@D)/mkspecs/devices/linux-imx6-g++/qeglfshooks_imx6.cpp > endif My idea was QT5BASE_EGLFS_PLATFORM_HOOKS_SOURCES may not be sufficient to support all future cases and we may have a more generic way to customize qmake.conf. But I am agree, this case is not yet arrived. -- J?r?me Pouiller, Sysmic Embedded Linux specialist http://www.sysmic.fr ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH v1] Fix EGL support in qt5base 2013-09-18 11:13 ` Jérôme Pouiller @ 2013-09-18 16:27 ` Thomas Petazzoni 0 siblings, 0 replies; 6+ messages in thread From: Thomas Petazzoni @ 2013-09-18 16:27 UTC (permalink / raw) To: buildroot Dear J?r?me Pouiller, On Wed, 18 Sep 2013 13:13:57 +0200, J?r?me Pouiller wrote: > > I'm sorry, but this really looks ugly. > I agree :-) > > In fact, I mainly wrote this patch as a work around for one of my > imx6 > compilations. I sent it only because Espen seemed to have same issue. Ok, no problem :) > > ifeq ($(BR2_PACKAGE_GPU_VIV_BIN_MX6Q),y) > > QT5BASE_EGLFS_PLATFORM_HOOKS_SOURCES = \ > > $(@D)/mkspecs/devices/linux-imx6-g++/qeglfshooks_imx6.cpp > > endif > My idea was QT5BASE_EGLFS_PLATFORM_HOOKS_SOURCES may not be > sufficient > to support all future cases and we may have a more generic way > to > customize qmake.conf. But I am agree, this case is not yet arrived. Of course, this might happen, but until that happens, let's not plan something in advance without having any idea of what will exactly happen :-) Best regards, Thomas -- Thomas Petazzoni, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2013-09-18 16:27 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-09-17 7:37 [Buildroot] Fix to Qt5base-build Espen Frimann Koren 2013-09-17 9:53 ` [Buildroot] [PATCH v1] Fix EGL support in qt5base Jérôme Pouiller 2013-09-17 11:35 ` Fatih Aşıcı 2013-09-17 18:33 ` Thomas Petazzoni 2013-09-18 11:13 ` Jérôme Pouiller 2013-09-18 16:27 ` Thomas Petazzoni
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox