Hi again guys,
after more investigations:
I found out that the default value -lEGL comes from
./mkspecs/common/linux.conf which is included in
./mkspecs/linux-oe-g++/qmake.conf
linux-oe-g++ being the only generic mkspecs that should be used in Yocto
So! At the time the configuration enters egl.pro the content of the
variables LIBS and QMAKE_EGL_LIBS are still a bit weird for me :
1- LIBS already has the content of the QMAKE_EGL_LIBS content from the
result of the pkg-config command.
2- QMAKE_EGL_LIBS has the content of the default value found in
./mkspecs/common/linux.conf
There are two options to have it properly working:
- First and easy option : remove the QMAKE_EGL_LIBS default variable in
./mkspecs/linux-oe-g++/qmake.conf since the good libs seems to already
been present in the LIBS variable.
- Second option : understand why the LIBS variable is already properly
set and why the QMAKE_EGL_LIBS properly computed in the configure and
present .qmake.vars is not used. (I would say that the device spec
overrides the one from qmake spec... I did not dig further yet.)
Anyway I'm pretty sure the trouble comes from meta-qt5 side now. I'm
pretty sure meta-raspberrypi maintainers can confirm that their master
branch handles pkg-config stuff now.
Thanks advance for having a look on this guys,
Best Regards
Le 19/04/2016 10:46, Julien Gueytat a écrit :
Hi,
I still can't figure out the patch to apply in meta-qt5 to get EGL
support with the Raspberry.
The test to check EGL does not pass and fails with the following command:
arm-poky-linux-gnueabi-g++ -march=armv7-a -marm -mthumb-interwork
-mfloat-abi=hard -mfpu=neon-vfpv4 -mtune=cortex-a7
--sysroot=/home/jgueytat/projects/LightPixels/poky/build/tmp/sysroots/lightpixels
-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -Wl,-O1 -o egl egl.o
-lGLESv2 -lbcm_host -lvchostif -lvcos -lvchiq_arm -pthread -lEGL
Here is the content of the file egl.pro:
$ cat egl.pro
SOURCES = egl.cpp
for(p, QMAKE_LIBDIR_EGL) {
exists($$p):LIBS += -L$$p
}
message("In egl.pro - 1: QMAKE_LIBS_EGL = $$QMAKE_LIBS_EGL")
message("In egl.pro - 1: LIBS = $$LIBS")
!isEmpty(QMAKE_INCDIR_EGL): INCLUDEPATH += $$QMAKE_INCDIR_EGL
!isEmpty(QMAKE_LIBS_EGL): LIBS += $$QMAKE_LIBS_EGL
message("In egl.pro - 2: QMAKE_LIBS_EGL = $$QMAKE_LIBS_EGL")
message("In egl.pro - 2: LIBS = $$LIBS")
CONFIG -= qt
In the main ./configure file of qtbase:
| In configure #1: QMAKE_LIBS_EGL =
| In configure #2: QMAKE_LIBS_EGL = -lEGL -lGLESv2 -lbcm_host
-lvchostif -lbcm_host -lvcos -lvchiq_arm -pthread
The variable QMAKE_LIBS_EGL is set properly.
In the ./config.tests/qpa/egl/egl.pro file:
| Project MESSAGE: In egl.pro - 1: QMAKE_LIBS_EGL = -lEGL
| Project MESSAGE: In egl.pro - 1: LIBS = -lEGL -lGLESv2 -lbcm_host
-lvchostif -lvcos -lvchiq_arm -pthread
| Project MESSAGE: In egl.pro - 2: QMAKE_LIBS_EGL = -lEGL
| Project MESSAGE: In egl.pro - 2: LIBS = -lEGL -lGLESv2 -lbcm_host
-lvchostif -lvcos -lvchiq_arm -pthread -lEGL
*What I see is that:*
In the configure file the variable QMAKE_LIBS_EGL is properly set
through pkg-config.
In the egl.pro file... The variable LIBS gets the content of
QMAKE_LIBS_EGL and the variable QMAKE_LIBS_EGL gets back to its
default -lEGL.
In the end with have -lGLESv2 before -lEGL and this does not link.
I checked also the content of .qmake.vars:
grep QMAKE_LIBS_EGL .qmake.vars
QMAKE_LIBS_EGL = -lEGL -lGLESv2 -lbcm_host -lvchostif -lbcm_host
-lvcos -lvchiq_arm -pthread
The command QMakeVar set QMAKE_LIBS_EGL "$QMAKE_LIBS_EGL" seems to
have his job done too late...
If someone has an idea to get the proper correction done...
Best Regards,
Julien
--
_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto