summaryrefslogtreecommitdiffstats
path: root/recipes-graphics/imx-gpu-viv/imx-gpu-viv.inc
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-graphics/imx-gpu-viv/imx-gpu-viv.inc')
-rw-r--r--recipes-graphics/imx-gpu-viv/imx-gpu-viv.inc346
1 files changed, 346 insertions, 0 deletions
diff --git a/recipes-graphics/imx-gpu-viv/imx-gpu-viv.inc b/recipes-graphics/imx-gpu-viv/imx-gpu-viv.inc
new file mode 100644
index 00000000..4b6e030e
--- /dev/null
+++ b/recipes-graphics/imx-gpu-viv/imx-gpu-viv.inc
@@ -0,0 +1,346 @@
1# Copyright (C) 2012-2015 Freescale Semiconductor
2# Copyright (C) 2012-2014 O.S. Systems Software LTDA.
3# Released under the MIT license (see COPYING.MIT for the terms)
4
5DESCRIPTION = "GPU driver and apps for imx6"
6SECTION = "libs"
7LICENSE = "Proprietary"
8LIC_FILES_CHKSUM = "file://gpu-core/usr/include/gc_vdk.h;beginline=5;endline=11;md5=12c028cbbbedb4b8770267131500592c"
9
10DEPENDS += "${@base_contains('DISTRO_FEATURES', 'x11', 'virtual/libx11 libxdamage libxext libxfixes mesa', \
11 base_contains('DISTRO_FEATURES', 'wayland', 'wayland', \
12 '', d), d)}"
13
14EXTRA_PROVIDES = ""
15EXTRA_PROVIDES_mx6q = " virtual/libgl virtual/libgles1 virtual/libgles2"
16EXTRA_PROVIDES_mx6dl = " virtual/libgl virtual/libgles1 virtual/libgles2"
17EXTRA_PROVIDES_mx6sx = " virtual/libgl virtual/libgles1 virtual/libgles2"
18PROVIDES += "virtual/wayland-egl virtual/libgal-x11 virtual/egl virtual/libopenvg virtual/libg2d ${EXTRA_PROVIDES}"
19
20PE = "1"
21
22inherit fsl-eula-unpack
23
24SRC_URI = "${FSL_MIRROR}/${PN}-${PV}.bin;fsl-eula=true"
25
26PACKAGES =+ "libclc-mx6 libclc-mx6-dev libclc-mx6-dbg \
27 libgl-mx6 libgl-mx6-dev libgl-mx6-dbg \
28 libgles-mx6 libgles-mx6-dev libgles-mx6-dbg \
29 libgles2-mx6 libgles2-mx6-dev libgles2-mx6-dbg \
30 libgles3-mx6-dev \
31 libglslc-mx6 libglslc-mx6-dev libglslc-mx6-dbg \
32 libopencl-mx6 libopencl-mx6-dev libopencl-mx6-dbg \
33 libopenvg-mx6 libopenvg-mx6-dev libopenvg-mx6-dbg \
34 libvdk-mx6 libvdk-mx6-dev libvdk-mx6-dbg \
35 libegl-mx6 libegl-mx6-dev libegl-mx6-dbg \
36 libgal-mx6 libgal-mx6-dev libgal-mx6-dbg \
37 libvivante-mx6 libvivante-mx6-dev libvivante-mx6-dbg \
38 libvivante-dri-mx6 \
39 libvivante-dfb-mx6 \
40 libvsc-mx6 \
41 libwayland-viv-mx6 libwayland-viv-mx6-dev libwayland-viv-mx6-dbg \
42 libgc-wayland-protocol-mx6 libgc-wayland-protocol-mx6-dev libgc-wayland-protocol-mx6-dbg \
43 libwayland-egl-mx6-dev \
44 imx-gpu-viv-g2d imx-gpu-viv-g2d-dev imx-gpu-viv-g2d-dbg \
45 imx-gpu-viv-tools imx-gpu-viv-tools-dbg \
46 imx-gpu-viv-tools-apitrace imx-gpu-viv-tools-apitrace-dbg \
47 imx-gpu-viv-demos imx-gpu-viv-demos-dbg \
48"
49
50# Skip package if it does not match the machine float-point type in use
51python __anonymous () {
52 is_machine_hardfp = base_contains("TUNE_FEATURES", "callconvention-hard", True, False, d)
53 is_package_hardfp = d.getVar("PACKAGE_FP_TYPE", True) == "hardfp"
54
55 if is_package_hardfp != is_machine_hardfp:
56 PN = d.getVar("PN", True)
57 PV = d.getVar("PV", True)
58 bb.debug(1, "Skipping %s (%s) as machine and package float-point does not match" % (PN, PV))
59 raise bb.parse.SkipPackage("Package Float-Point is not compatible with the machine")
60}
61
62USE_X11 = "${@base_contains("DISTRO_FEATURES", "x11", "yes", "no", d)}"
63USE_DFB = "${@base_contains("DISTRO_FEATURES", "directfb", "yes", "no", d)}"
64USE_WL = "${@base_contains("DISTRO_FEATURES", "wayland", "yes", "no", d)}"
65
66# Inhibit warnings about files being stripped.
67INHIBIT_PACKAGE_STRIP = "1"
68INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
69
70# FIXME: The provided binary doesn't provide soname. If in future BSP
71# release the libraries are fixed, we can drop this hack.
72REALSOLIBS := "${SOLIBS}"
73SOLIBS = "${SOLIBSDEV}"
74
75# For the packages that make up the OpenGL interfaces, inject variables so that
76# they don't get Debian-renamed (which would remove the -mx6 suffix).
77#
78# FIXME: All binaries lack GNU_HASH in elf binary but as we don't have
79# the source we cannot fix it. Disable the insane check for now.
80python __anonymous() {
81 packages = d.getVar('PACKAGES', True).split()
82 for p in packages:
83 d.appendVar("INSANE_SKIP_%s" % p, " ldflags")
84
85 for p in (("libegl", "libegl1"), ("libgl", "libgl1"),
86 ("libgles1", "libglesv1-cm1"), ("libgles2", "libglesv2-2"),
87 ("libgles3",)):
88 fullp = p[0] + "-mx6"
89 pkgs = " ".join(p)
90 d.setVar("DEBIAN_NOAUTONAME_" + fullp, "1")
91 d.appendVar("RREPLACES_" + fullp, pkgs)
92 d.appendVar("RPROVIDES_" + fullp, pkgs)
93 d.appendVar("RCONFLICTS_" + fullp, pkgs)
94
95 # For -dev, the first element is both the Debian and original name
96 fullp += "-dev"
97 pkgs = p[0] + "-dev"
98 d.setVar("DEBIAN_NOAUTONAME_" + fullp, "1")
99 d.appendVar("RREPLACES_" + fullp, pkgs)
100 d.appendVar("RPROVIDES_" + fullp, pkgs)
101 d.appendVar("RCONFLICTS_" + fullp, pkgs)
102}
103
104IS_MX6SL = "0"
105IS_MX6SL_mx6sl = "1"
106
107do_install () {
108 install -d ${D}${libdir}
109 install -d ${D}${includedir}
110 install -d ${D}${bindir}
111
112 cp -P ${S}/gpu-core/usr/lib/*.so* ${D}${libdir}
113 cp ${S}/g2d/usr/lib/*.so* ${D}${libdir}
114 cp -r ${S}/gpu-core/usr/include/* ${D}${includedir}
115 cp -Pr ${S}/g2d/usr/include/* ${D}${includedir}
116 cp -r ${S}/gpu-demos/opt ${D}
117 cp -axr ${S}/gpu-tools/gmem-info/usr/bin/* ${D}${bindir}
118
119 install -d ${D}${libdir}/pkgconfig
120
121 # The preference order, based in DISTRO_FEATURES, is x11, wayland, directfb and fb
122 if [ "${USE_X11}" = "yes" ]; then
123 cp -r ${S}/gpu-core/usr/lib/dri ${D}${libdir}
124 cp -axr ${S}/apitrace/x11/usr/lib/* ${D}${libdir}
125 cp -axr ${S}/apitrace/x11/usr/bin/* ${D}${bindir}
126
127 backend=x11
128
129 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/egl_x11.pc ${D}${libdir}/pkgconfig/egl.pc
130 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/glesv1_cm_x11.pc ${D}${libdir}/pkgconfig/glesv1_cm.pc
131 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/glesv2_x11.pc ${D}${libdir}/pkgconfig/glesv2.pc
132 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/vg_x11.pc ${D}${libdir}/pkgconfig/vg.pc
133 mv ${D}${libdir}/libGAL_egl.dri.so ${D}${libdir}/libGAL_egl.so
134 #FIXME: WL & X11 is not currently functional
135 #if [ "${USE_WL}" = "yes" ]; then
136 # install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/gc_wayland_protocol.pc ${D}${libdir}/pkgconfig/gc_wayland_protocol.pc
137 # install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/wayland-egl.pc ${D}${libdir}/pkgconfig/wayland-egl.pc
138 # install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/wayland-viv.pc ${D}${libdir}/pkgconfig/wayland-viv.pc
139 #fi
140 elif [ "${USE_WL}" = "yes" ]; then
141 cp -axr ${S}/apitrace/non-x11/usr/lib/* ${D}${libdir}
142 cp -axr ${S}/apitrace/non-x11/usr/bin/* ${D}${bindir}
143
144 backend=wl
145
146 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/egl_wayland.pc ${D}${libdir}/pkgconfig/egl.pc
147 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/glesv1_cm.pc ${D}${libdir}/pkgconfig/glesv1_cm.pc
148 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/glesv2.pc ${D}${libdir}/pkgconfig/glesv2.pc
149 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/vg.pc ${D}${libdir}/pkgconfig/vg.pc
150 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/gc_wayland_protocol.pc ${D}${libdir}/pkgconfig/gc_wayland_protocol.pc
151 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/wayland-egl.pc ${D}${libdir}/pkgconfig/wayland-egl.pc
152 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/wayland-viv.pc ${D}${libdir}/pkgconfig/wayland-viv.pc
153 mv ${D}${libdir}/libGAL_egl.${backend}.so ${D}${libdir}/libGAL_egl.so
154 else
155 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/glesv1_cm.pc ${D}${libdir}/pkgconfig/glesv1_cm.pc
156 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/glesv2.pc ${D}${libdir}/pkgconfig/glesv2.pc
157 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/vg.pc ${D}${libdir}/pkgconfig/vg.pc
158
159 if [ "${USE_DFB}" = "yes" ]; then
160 install -d ${D}/${sysconfdir}
161 install -m 644 ${S}/gpu-core/etc/directfbrc ${D}/${sysconfdir}/directfbrc
162 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/egl_directfb.pc ${D}${libdir}/pkgconfig/egl.pc
163
164 cp -r ${S}/gpu-core/usr/lib/directfb-* ${D}${libdir}
165 cp -axr ${S}/apitrace/non-x11/usr/lib/* ${D}${libdir}
166 cp -axr ${S}/apitrace/non-x11/usr/bin/* ${D}${bindir}
167 backend=dfb
168 else
169 # Regular framebuffer
170 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/egl_linuxfb.pc ${D}${libdir}/pkgconfig/egl.pc
171 cp -axr ${S}/apitrace/non-x11/usr/lib/* ${D}${libdir}
172 cp -axr ${S}/apitrace/non-x11/usr/bin/* ${D}${bindir}
173 backend=fb
174 fi
175 mv ${D}${libdir}/libGAL_egl.${backend}.so ${D}${libdir}/libGAL_egl.so
176 fi
177
178 # Install Vendor ICDs for OpenCL's installable client driver loader (ICDs Loader)
179 install -d ${D}${sysconfdir}/OpenCL/vendors/
180 install -m 0644 ${S}/gpu-core/etc/Vivante.icd ${D}${sysconfdir}/OpenCL/vendors/Vivante.icd
181
182 # We'll only have one backend here so we rename it to generic name
183 # and avoid rework in other packages, when possible
184 mv ${D}${libdir}/libGL.so.1.2 ${D}${libdir}/libGL.so.1.2.0
185 ln -sf libGL.so.1.2.0 ${D}${libdir}/libGL.so.1.2
186 ln -sf libGL.so.1.2.0 ${D}${libdir}/libGL.so.1
187 ln -sf libGL.so.1.2.0 ${D}${libdir}/libGL.so
188 mv ${D}${libdir}/libEGL-${backend}.so ${D}${libdir}/libEGL.so.1.0
189 ln -sf libEGL.so.1.0 ${D}${libdir}/libEGL.so.1
190 ln -sf libEGL.so.1.0 ${D}${libdir}/libEGL.so
191 mv ${D}${libdir}/libGAL-${backend}.so ${D}${libdir}/libGAL.so
192 mv ${D}${libdir}/libVIVANTE-${backend}.so ${D}${libdir}/libVIVANTE.so
193
194 # update libglesv2 as backend dependent
195 rm -rf ${D}${libdir}/libGLESv2*
196 cp ${S}/gpu-core/usr/lib/libGLESv2-${backend}.so ${D}${libdir}/libGLESv2.so.2.0.0
197 ln -sf libGLESv2.so.2.0.0 ${D}${libdir}/libGLESv2.so.2
198 ln -sf libGLESv2.so.2.0.0 ${D}${libdir}/libGLESv2.so
199
200 # FIXME: The libGL.so* libraries depend on the X11 libraries and
201 # libglapi.so from mesa. For non-X11 distros, neither of them are listed
202 # as build dependencies, which can lead to non-deterministic package
203 # dependencies. If the intention is that the GL backend should be usable
204 # without X11, the linking should be fixed. For now just skip
205 # packaging them.
206 if [ "${USE_X11}" = "no" ]; then
207 rm ${D}${libdir}/libGL.*
208 fi
209
210 # skip packaging wayland libraries if no support is requested
211 if [ "${USE_WL}" = "no" ]; then
212 rm ${D}${libdir}/libgc_wayland_protocol.*
213 rm ${D}${libdir}/libwayland-viv.*
214 fi
215
216 for backend in wl x11 fb dfb dri; do
217 find ${D}${libdir} -name "*-$backend.so" -exec rm '{}' ';'
218 find ${D}${libdir} -name "*.$backend.so" -exec rm '{}' ';'
219 done
220
221 # FIXME: MX6SL does not have 3D support; hack it for now
222 if [ "${IS_MX6SL}" = "1" ]; then
223 rm -rf ${D}${libdir}/libCLC* ${D}${includedir}/CL \
224 \
225 ${D}${libdir}/libGL* ${D}${includedir}/GL* \
226 \
227 ${D}${libdir}/libGLES* \
228 \
229 ${D}${libdir}/libOpenCL* ${D}${includedir}/CL \
230 \
231 ${D}${libdir}/libOpenVG.so ${D}${libdir}/libOpenVG.3d.so \
232 \
233 ${D}${libdir}/libVivanteOpenCL.so \
234 \
235 ${D}/opt/viv_samples/vdk \
236 ${D}/opt/viv_samples/es20 ${D}/opt/viv_samples/cl11
237
238 ln -sf libOpenVG.2d.so ${D}${libdir}/libOpenVG.so
239 fi
240
241 find ${D}${libdir} -type f -exec chmod 644 {} \;
242 find ${D}${includedir} -type f -exec chmod 644 {} \;
243}
244
245ALLOW_EMPTY_${PN} = "1"
246
247FILES_libclc-mx6 = "${libdir}/libCLC${SOLIBS}"
248FILES_libclc-mx6-dev = "${includedir}/CL ${libdir}/libCLC${SOLIBSDEV}"
249FILES_libclc-mx6-dbg = "${libdir}/.debug/libCLC${SOLIBS}"
250
251# libEGL.so is used by some demo apps from Freescale
252INSANE_SKIP_libegl-mx6 += "dev-so"
253FILES_libegl-mx6 = "${libdir}/libEGL${REALSOLIBS} ${libdir}/libEGL${SOLIBSDEV} "
254FILES_libegl-mx6-dev = "${includedir}/EGL ${includedir}/KHR ${libdir}/pkgconfig/egl.pc"
255FILES_libegl-mx6-dbg = "${libdir}/.debug/libEGL${SOLIBS}"
256
257FILES_libgal-mx6 = "${libdir}/libGAL${SOLIBS} ${libdir}/libGAL_egl${SOLIBS}"
258FILES_libgal-mx6-dev = "${libdir}/libGAL${SOLIBSDEV} ${includedir}/HAL"
259FILES_libgal-mx6-dbg = "${libdir}/.debug/libGAL${SOLIBS}"
260
261FILES_libvsc-mx6 = "${libdir}/libVSC${SOLIBS}"
262
263FILES_libgl-mx6 = "${libdir}/libGL${REALSOLIBS}"
264FILES_libgl-mx6-dev = "${libdir}/libGL${SOLIBSDEV}"
265FILES_libgl-mx6-dbg = "${libdir}/.debug/libGL.${SOLIBS}"
266RDEPENDS_libgl-mx6 = "libglapi"
267# Includes GL headers from mesa
268RDEPENDS_libgl-mx6-dev += "libgl-mesa-dev"
269
270# libEGL needs to open libGLESv1.so
271INSANE_SKIP_libgles-mx6 += "dev-so"
272FILES_libgles-mx6 = "${libdir}/libGLESv1*${REALSOLIBS} ${libdir}/libGLESv1*${SOLIBS} ${libdir}/libGLES_*${REALSOLIBS} ${libdir}/libGLES_*${SOLIBS}"
273FILES_libgles-mx6-dev = "${includedir}/GLES ${libdir}/libGLESv1*${SOLIBS} ${libdir}/libGLES_*${SOLIBSDEV} ${libdir}/pkgconfig/glesv1_cm.pc"
274FILES_libgles-mx6-dbg = "${libdir}/.debug/libGLESv1*${SOLIBS} ${libdir}/.debug/libGLES_*${SOLIBS}"
275
276# libEGL needs to open libGLESv2.so
277INSANE_SKIP_libgles2-mx6 += "dev-so"
278FILES_libgles2-mx6 = "${libdir}/libGLESv2${REALSOLIBS} ${libdir}/libGLESv2${SOLIBS}"
279FILES_libgles2-mx6-dev = "${includedir}/GLES2 ${libdir}/libGLESv2${SOLIBSDEV} ${libdir}/pkgconfig/glesv2.pc"
280FILES_libgles2-mx6-dbg = "${libdir}/.debug/libGLESv2${SOLIBS}"
281RDEPENDS_libgles2-mx6 = "libglslc-mx6"
282
283FILES_libgles3-mx6-dev = "${includedir}/GLES3"
284# as long as there is no libgles3-mx6: ship libgles3-mx6-dev along with
285# libgles2-mx6-dev - otherwise GLES3 headers have to be added manually
286RDEPENDS_libgles2-mx6-dev += "libgles3-mx6-dev"
287
288FILES_libglslc-mx6 = "${libdir}/libGLSLC${SOLIBS}"
289FILES_libglslc-mx6-dev = "${includedir}/CL ${libdir}/libGLSLC${SOLIBSDEV}"
290FILES_libglslc-mx6-dbg = "${libdir}/.debug/libGLSLC${SOLIBS}"
291
292FILES_libopencl-mx6 = "${libdir}/libOpenCL${SOLIBS} \
293 ${libdir}/libVivanteOpenCL${SOLIBS} \
294 ${sysconfdir}/OpenCL/vendors/Vivante.icd"
295FILES_libopencl-mx6-dev = "${includedir}/CL ${libdir}/libOpenCL${SOLIBSDEV}"
296FILES_libopencl-mx6-dbg = "${libdir}/.debug/libOpenCL${SOLIBS}"
297RDEPENDS_libopencl-mx6 = "libclc-mx6"
298
299INSANE_SKIP_libopenvg-mx6 += "dev-so"
300FILES_libopenvg-mx6 = "${libdir}/libOpenVG*${SOLIBS}"
301FILES_libopenvg-mx6-dev = "${includedir}/VG ${libdir}/libOpenVG*${SOLIBSDEV} ${libdir}/pkgconfig/vg.pc"
302FILES_libopenvg-mx6-dbg = "${libdir}/.debug/libOpenVG*${SOLIBS}"
303
304FILES_libvdk-mx6 = "${libdir}/libVDK${SOLIBS}"
305FILES_libvdk-mx6-dev = "${includedir}/*vdk*.h ${libdir}/libVDK${SOLIBSDEV}"
306FILES_libvdk-mx6-dbg = "${libdir}/.debug/libVDK${SOLIBS}"
307
308FILES_libvivante-mx6 = "${libdir}/libVIVANTE${SOLIBS}"
309FILES_libvivante-mx6-dev = "${libdir}/libVIVANTE${SOLIBSDEV}"
310FILES_libvivante-mx6-dbg = "${libdir}/.debug/libVIVANTE${SOLIBS}"
311
312FILES_libvivante-dri-mx6 = "${libdir}/dri/vivante_dri.so"
313RDEPENDS_libvivante-dri-mx6 = "libdrm"
314
315FILES_libvivante-dfb-mx6 = "${libdir}/directfb-*/gfxdrivers/libdirectfb_gal.so"
316
317INSANE_SKIP_libwayland-viv-mx6 += "dev-so"
318FILES_libwayland-viv-mx6 = "${libdir}/libwayland-viv${REALSOLIBS} ${libdir}/libwayland-viv${SOLIBS}"
319FILES_libwayland-viv-mx6-dev = "${includedir}/wayland-viv ${libdir})/libwayland-viv${SOLIBSDEV} ${libdir}/pkgconfig/wayland-viv.pc"
320FILES_libwayland-viv-mx6-dbg = "${libdir}/.debug/libwayland-viv${SOLIBS}"
321
322INSANE_SKIP_libgc-wayland-protocol-mx6 += "dev-so"
323FILES_libgc-wayland-protocol-mx6 = "${libdir}/libgc_wayland_protocol${REALSOLIBS} ${libdir}/libgc_wayland_protocol${SOLIBS}"
324FILES_libgc-wayland-protocol-mx6-dev = "${libdir}/libgc_wayland_protocol${SOLIBSDEV} ${libdir}/pkgconfig/gc_wayland_protocol.pc"
325FILES_libgc-wayland-protocol-mx6-dbg = "${libdir}/libgc_wayland_protocol${SOLIBS}"
326
327FILES_libwayland-egl-mx6-dev = "${libdir}/pkgconfig/wayland-egl.pc"
328
329FILES_libvivante-dfb-mx6 += "${sysconfdir}/directfbrc"
330
331INSANE_SKIP_imx-gpu-viv-g2d += "dev-so"
332FILES_imx-gpu-viv-g2d = "${libdir}/libg2d* "
333FILES_imx-gpu-viv-g2d-dev = "${includedir}/g2d.h"
334FILES_imx-gpu-viv-g2d-dbg = "${libdir}/.debug/libg2d${SOLIBS}"
335
336FILES_imx-gpu-viv-tools = "${bindir}/gmem_info"
337FILES_imx-gpu-viv-tools-dbg = "${bindir}/gmem_info"
338
339FILES_imx-gpu-viv-tools-apitrace = "${bindir} ${libdir}"
340FILES_imx-gpu-viv-tools-apitrace-dbg = "${libdir}/*/*/.debug"
341
342FILES_imx-gpu-viv-demos = "/opt"
343FILES_imx-gpu-viv-demos-dbg = "/opt/viv_samples/*/*/.debug"
344INSANE_SKIP_imx-gpu-viv-demos += "rpaths"
345
346COMPATIBLE_MACHINE = "(mx6)"