summaryrefslogtreecommitdiffstats
path: root/recipes-graphics
diff options
context:
space:
mode:
authorPhilip Craig <phil@blackmoth.com.au>2013-06-27 12:42:19 +0000
committerOtavio Salvador <otavio@ossystems.com.br>2013-07-02 12:14:37 -0300
commitc39839a2cf85e8ee616364c70426dca13bf5a229 (patch)
treebb7ce92a897ce3cb6e248cba25cd5fa47d798791 /recipes-graphics
parentd48e4022824a13206f2a893759cf332a174e6d7d (diff)
downloadmeta-fsl-arm-c39839a2cf85e8ee616364c70426dca13bf5a229.tar.gz
gpu-viv-bin-mx6q.inc: fix libEGL and libGLESv2 installation
Previously, we were only packaging libEGL.so and libGLESv2.so. This worked at runtime because ldconfig installed symlinks for the soname of these libraries (libEGL.so.1 and libGLESv2.so.2). However, there are situations where we need the soname version of these libraries at build time. Specifically, if these libraries are indirectly referenced by another library, then the linker looks them up using the soname. This patch changes the installation of these libraries to the normal way of installing. That is, we install them as the soname, and create symlinks for libEGL.so and libGLESv2.so.2. This also matches the way that these libraries are provided in the source. The one catch with that is libEGL.so also tries to load libGLESv2.so directly at runtime, rather than using the soname, so we need to install the libGLESv2.so symlink to the rootfs also, and we need to disable a QA error to allow this. libGL and libGLESv1 are fixed in a similar manner, but I haven't tested them. This fixes the following errors when building qtgstreamer: oe-core/build/tmp-eglibc/sysroots/i686-linux/usr/libexec/armv7a-vfp-neon-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/4.7.2/ld: warning: libGLESv2.so.2, needed by oe-core/build/tmp-eglibc/sysroots/imx6qsabrelite/usr/lib/libQt5Gui.so.5.0.2, not found (try using -rpath or -rpath-link) oe-core/build/tmp-eglibc/sysroots/i686-linux/usr/libexec/armv7a-vfp-neon-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/4.7.2/ld: warning: libEGL.so.1, needed by oe-core/build/tmp-eglibc/sysroots/imx6qsabrelite/usr/lib/libQt5Gui.so.5.0.2, not found (try using -rpath or -rpath-link) Change-Id: I8e0a2175b6d6bd1a6972c79c8532061edd8dca0d Signed-off-by: Philip Craig <phil@blackmoth.com.au>
Diffstat (limited to 'recipes-graphics')
-rw-r--r--recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc45
1 files changed, 20 insertions, 25 deletions
diff --git a/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc b/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc
index cbcceba..b007079 100644
--- a/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc
+++ b/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc
@@ -55,14 +55,14 @@ SOLIBS = "${SOLIBSDEV}"
55python __anonymous() { 55python __anonymous() {
56 packages = d.getVar('PACKAGES', True).split() 56 packages = d.getVar('PACKAGES', True).split()
57 for p in packages: 57 for p in packages:
58 d.setVar("INSANE_SKIP_%s" % p, "ldflags") 58 d.appendVar("INSANE_SKIP_%s" % p, " ldflags")
59} 59}
60 60
61do_install () { 61do_install () {
62 install -d ${D}${libdir} 62 install -d ${D}${libdir}
63 install -d ${D}${includedir} 63 install -d ${D}${includedir}
64 64
65 cp ${S}/usr/lib/*.so ${D}${libdir} 65 cp -a ${S}/usr/lib/*.so* ${D}${libdir}
66 cp -axr ${S}/usr/include/* ${D}${includedir} 66 cp -axr ${S}/usr/include/* ${D}${includedir}
67 cp -axr ${S}/opt ${D} 67 cp -axr ${S}/opt ${D}
68 68
@@ -71,12 +71,11 @@ do_install () {
71 # FIXME: Remove Wayland contents 71 # FIXME: Remove Wayland contents
72 rm -r ${D}${includedir}/wayland-viv 72 rm -r ${D}${includedir}/wayland-viv
73 find ${D}${libdir} -name '*-wl.so' -exec rm '{}' ';' 73 find ${D}${libdir} -name '*-wl.so' -exec rm '{}' ';'
74 rm ${D}${libdir}/*wayland*.so 74 rm ${D}${libdir}/*wayland*.so*
75 75
76 if [ "${USE_X11}" = "yes" ]; then 76 if [ "${USE_X11}" = "yes" ]; then
77 cp -r ${S}/usr/lib/dri ${D}${libdir} 77 cp -r ${S}/usr/lib/dri ${D}${libdir}
78 find ${D}${libdir} -name '*-dfb.so' -exec rm '{}' ';' 78 backend=x11
79 find ${D}${libdir} -name '*-fb.so' -exec rm '{}' ';'
80 79
81 install -m 0644 ${WORKDIR}/egl_x11.pc ${D}${libdir}/pkgconfig/egl.pc 80 install -m 0644 ${WORKDIR}/egl_x11.pc ${D}${libdir}/pkgconfig/egl.pc
82 install -m 0644 ${WORKDIR}/glesv1_cm_x11.pc ${D}${libdir}/pkgconfig/glesv1_cm.pc 81 install -m 0644 ${WORKDIR}/glesv1_cm_x11.pc ${D}${libdir}/pkgconfig/glesv1_cm.pc
@@ -87,31 +86,22 @@ do_install () {
87 install -m 0644 ${WORKDIR}/glesv2.pc ${D}${libdir}/pkgconfig/glesv2.pc 86 install -m 0644 ${WORKDIR}/glesv2.pc ${D}${libdir}/pkgconfig/glesv2.pc
88 87
89 if [ "${USE_DFB}" = "yes" ]; then 88 if [ "${USE_DFB}" = "yes" ]; then
90 find ${D}${libdir} -name '*-x11.so' -exec rm '{}' ';' 89 backend=dfb
91 find ${D}${libdir} -name '*-fb.so' -exec rm '{}' ';'
92 else 90 else
93 # Regular framebuffer 91 # Regular framebuffer
94 find ${D}${libdir} -name '*-x11.so' -exec rm '{}' ';' 92 backend=fb
95 find ${D}${libdir} -name '*-dfb.so' -exec rm '{}' ';'
96 fi 93 fi
97 fi 94 fi
98 95
99 # We'll only have one backend here so we rename it to generic name 96 # We'll only have one backend here so we rename it to generic name
100 # and avoid rework in other packages, when possible 97 # and avoid rework in other packages, when possible
101 rm ${D}${libdir}/libEGL.so ${D}${libdir}/libGAL.so \ 98 mv ${D}${libdir}/libEGL-${backend}.so ${D}${libdir}/libEGL.so.1
102 ${D}${libdir}/libVIVANTE.so 99 ln -sf libEGL.so.1 ${D}${libdir}/libEGL.so
100 mv ${D}${libdir}/libGAL-${backend}.so ${D}${libdir}/libGAL.so
101 mv ${D}${libdir}/libVIVANTE-${backend}.so ${D}${libdir}/libVIVANTE.so
103 102
104 renamed=
105 for backend in x11 fb dfb; do 103 for backend in x11 fb dfb; do
106 for f in $(find ${D}${libdir} -name "*-$backend.so"); do 104 find ${D}${libdir} -name "*-$backend.so" -exec rm '{}' ';'
107 if [ -n "$renamed" ] && [ "$renamed" != "$backend" ]; then
108 bberror "More than one GPU backend is installed ($backend and $renamed)."
109 exit 1
110 fi
111
112 renamed=$backend
113 mv $f $(echo $f | sed "s,-$backend\.so,.so,g")
114 done
115 done 105 done
116 106
117 find ${D}${libdir} -type f -exec chmod 644 {} \; 107 find ${D}${libdir} -type f -exec chmod 644 {} \;
@@ -128,7 +118,7 @@ FILES_libclc-mx6 = "${libdir}/libCLC${SOLIBS}"
128FILES_libclc-mx6-dev = "${includedir}/CL ${libdir}/libCLC${SOLIBSDEV}" 118FILES_libclc-mx6-dev = "${includedir}/CL ${libdir}/libCLC${SOLIBSDEV}"
129FILES_libclc-mx6-dbg = "${libdir}/.debug/libCLC${SOLIBS}" 119FILES_libclc-mx6-dbg = "${libdir}/.debug/libCLC${SOLIBS}"
130 120
131FILES_libegl-mx6 = "${libdir}/libEGL${SOLIBS}" 121FILES_libegl-mx6 = "${libdir}/libEGL${REALSOLIBS}"
132FILES_libegl-mx6-dev = "${libdir}/libEGL${SOLIBSDEV} ${libdir}/pkgconfig/egl.pc" 122FILES_libegl-mx6-dev = "${libdir}/libEGL${SOLIBSDEV} ${libdir}/pkgconfig/egl.pc"
133FILES_libegl-mx6-dbg = "${libdir}/.debug/libEGL${SOLIBS}" 123FILES_libegl-mx6-dbg = "${libdir}/.debug/libEGL${SOLIBS}"
134 124
@@ -136,14 +126,19 @@ FILES_libgal-mx6 = "${libdir}/libGAL${SOLIBS}"
136FILES_libgal-mx6-dev = "${libdir}/libGAL${SOLIBSDEV}" 126FILES_libgal-mx6-dev = "${libdir}/libGAL${SOLIBSDEV}"
137FILES_libgal-mx6-dbg = "${libdir}/.debug/libGAL${SOLIBS}" 127FILES_libgal-mx6-dbg = "${libdir}/.debug/libGAL${SOLIBS}"
138 128
139FILES_libgl-mx6 = "${libdir}/libGL${SOLIBS}" 129FILES_libgl-mx6 = "${libdir}/libGL${REALSOLIBS}"
130FILES_libgl-mx6-dev = "${libdir}/libGL${SOLIBSDEV}"
140FILES_libgl-mx6-dbg = "${libdir}/.debug/libGL.${SOLIBS}" 131FILES_libgl-mx6-dbg = "${libdir}/.debug/libGL.${SOLIBS}"
141 132
142FILES_libgles-mx6 = "${libdir}/libGLESv1*${SOLIBS} ${libdir}/libGLES_*${SOLIBS}" 133# libEGL needs to open libGLESv1.so
134INSANE_SKIP_libgles-mx6 += "dev-so"
135FILES_libgles-mx6 = "${libdir}/libGLESv1*${REALSOLIBS} ${libdir}/libGLESv1*${SOLIBS} ${libdir}/libGLES_*${SOLIBS}"
143FILES_libgles-mx6-dev = "${includedir}/GLES ${libdir}/libGLESv1*${SOLIBS} ${libdir}/libGLES_*${SOLIBSDEV} ${libdir}/pkgconfig/glesv1_cm.pc" 136FILES_libgles-mx6-dev = "${includedir}/GLES ${libdir}/libGLESv1*${SOLIBS} ${libdir}/libGLES_*${SOLIBSDEV} ${libdir}/pkgconfig/glesv1_cm.pc"
144FILES_libgles-mx6-dbg = "${libdir}/.debug/libGLESv1*${SOLIBS} ${libdir}/.debug/libGLES_*${SOLIBS}" 137FILES_libgles-mx6-dbg = "${libdir}/.debug/libGLESv1*${SOLIBS} ${libdir}/.debug/libGLES_*${SOLIBS}"
145 138
146FILES_libgles2-mx6 = "${libdir}/libGLESv2${SOLIBS}" 139# libEGL needs to open libGLESv2.so
140INSANE_SKIP_libgles2-mx6 += "dev-so"
141FILES_libgles2-mx6 = "${libdir}/libGLESv2${REALSOLIBS} ${libdir}/libGLESv2${SOLIBS}"
147FILES_libgles2-mx6-dev = "${includedir}/GLES2 ${libdir}/libGLESv2${SOLIBSDEV} ${libdir}/pkgconfig/glesv2.pc" 142FILES_libgles2-mx6-dev = "${includedir}/GLES2 ${libdir}/libGLESv2${SOLIBSDEV} ${libdir}/pkgconfig/glesv2.pc"
148FILES_libgles2-mx6-dbg = "${libdir}/.debug/libGLESv2${SOLIBS}" 143FILES_libgles2-mx6-dbg = "${libdir}/.debug/libGLESv2${SOLIBS}"
149RDEPENDS_libgles2-mx6 = "libglslc-mx6" 144RDEPENDS_libgles2-mx6 = "libglslc-mx6"