Add GPU userland libraries
Signed-off-by: Christophe Priouzeau <christophe.priouzeau@st.com>
This commit is contained in:
parent
8421ad5825
commit
a2f806d40b
|
|
@ -0,0 +1,13 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Create link for gcnano-userland
|
||||||
|
Wants=systemd-udevd.service systemd-udev-trigger.service
|
||||||
|
After=systemd-remount-fs.service systemd-udevd.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStartPre=-/bin/ln -sf /usr/lib/libEGL.so /usr/lib/libEGL.so.1
|
||||||
|
ExecStart=-/bin/ln -sf /usr/lib/libGLESv2.so /usr/lib/libGLESv2.so.2
|
||||||
|
ExecStartPost=/bin/systemctl disable gcnano-userland-make-link.service
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=basic.target
|
||||||
|
|
@ -0,0 +1,182 @@
|
||||||
|
DESCRIPTION = "STMicrolectronics port of the EGL, GLESv1_CM and GLES_v2 libraries from Vivante for the gcnano 3D core."
|
||||||
|
LICENSE = "Proprietary"
|
||||||
|
LIC_FILES_CHKSUM = "file://${TAR_FILENAME}/LICENSE;md5=dd36864f287701862a189a69fc50f1d8"
|
||||||
|
|
||||||
|
PACKAGE_ARCH = "${MACHINE_ARCH}"
|
||||||
|
|
||||||
|
DEPENDS += " gcnano-driver-stm32mp "
|
||||||
|
|
||||||
|
PROVIDES += "gcnano-userland virtual/libgles1 virtual/libgles2 virtual/egl virtual/libvg virtual/libgbm"
|
||||||
|
|
||||||
|
TAR_FILENAME = "gcnano-userland-${BACKEND}-${PV}-${GCNANO_USERLAND_FB_TARBALL_DATE}"
|
||||||
|
|
||||||
|
SRC_URI = "git://github.com/STMicroelectronics/gcnano-binaries;protocol=https;branch=gcnano-6.2.4_p3-binaries"
|
||||||
|
SRCREV = "271f87d816a957bf196f6328c34110cab1224d4d"
|
||||||
|
|
||||||
|
# service to create link at first boot
|
||||||
|
SRC_URI += "file://gcnano-userland-make-link.service"
|
||||||
|
|
||||||
|
PV = "6.2.4.p3"
|
||||||
|
|
||||||
|
S = "${WORKDIR}/git"
|
||||||
|
|
||||||
|
inherit systemd
|
||||||
|
SYSTEMD_PACKAGES += " gcnano-userland-multi-binary-stm32mp "
|
||||||
|
SYSTEMD_SERVICE_${PN} = "gcnano-userland-make-link.service"
|
||||||
|
SYSTEMD_AUTO_ENABLE_${PN} = "enable"
|
||||||
|
|
||||||
|
# Variable for using vendor directory instead of usr
|
||||||
|
GCNANO_USERLAND_USE_VENDOR_DIR ?= "1"
|
||||||
|
GCNANO_USERLAND_VENDOR_DIR ?= "/vendor"
|
||||||
|
GCNANO_USERLAND_OUTPUT_LIBDIR = "${@'${GCNANO_USERLAND_VENDOR_DIR}/lib' if d.getVar('GCNANO_USERLAND_USE_VENDOR_DIR') == '1' else '${libdir}'}"
|
||||||
|
|
||||||
|
# Action stubbed
|
||||||
|
do_configure[noexec] = "1"
|
||||||
|
do_compile[noexec] = "1"
|
||||||
|
|
||||||
|
#------------------------------------------
|
||||||
|
# Overwrite of do_unpack to untar the tarball
|
||||||
|
do_unpack[depends] += "xz-native:do_populate_sysroot"
|
||||||
|
gcnano_userland_binaries_unpack() {
|
||||||
|
cd ${S}
|
||||||
|
sh ${TAR_FILENAME}.bin --auto-accept
|
||||||
|
}
|
||||||
|
|
||||||
|
python do_unpack() {
|
||||||
|
eula = d.getVar('ACCEPT_EULA_'+d.getVar('MACHINE'))
|
||||||
|
eula_file = d.getVar('EULA_FILE_ST')
|
||||||
|
machine = d.getVar('MACHINE')
|
||||||
|
pkg = d.getVar('PN')
|
||||||
|
if eula == None:
|
||||||
|
bb.fatal("To use '%s' you need to accept the STMicroelectronics EULA at '%s'. "
|
||||||
|
"Please read it and in case you accept it, write: "
|
||||||
|
"ACCEPT_EULA_%s = \"1\" in your local.conf." % (pkg, eula_file, machine))
|
||||||
|
elif eula == '0':
|
||||||
|
bb.fatal("To use '%s' you need to accept the STMicroelectronics EULA." % pkg)
|
||||||
|
else:
|
||||||
|
bb.note("STMicroelectronics EULA has been accepted for '%s'" % pkg)
|
||||||
|
|
||||||
|
try:
|
||||||
|
externalsrc = d.getVar('EXTERNALSRC')
|
||||||
|
if not externalsrc:
|
||||||
|
bb.build.exec_func('base_do_unpack', d)
|
||||||
|
bb.build.exec_func('gcnano_userland_binaries_unpack', d)
|
||||||
|
except:
|
||||||
|
raise
|
||||||
|
}
|
||||||
|
do_unpack[vardepsexclude] += "EULA_FILE_ST"
|
||||||
|
|
||||||
|
#------------------------------------------
|
||||||
|
# clean
|
||||||
|
#
|
||||||
|
clean_release_file() {
|
||||||
|
rm -f ${D}/vendor/lib/*.multi.release.so
|
||||||
|
rm -f ${D}${libdir}/*.multi.release.so
|
||||||
|
}
|
||||||
|
clean_debug_file() {
|
||||||
|
rm -f ${D}/vendor/lib/*.multi.debug.so
|
||||||
|
rm -f ${D}${libdir}/*.multi.debug.so
|
||||||
|
}
|
||||||
|
|
||||||
|
#------------------------------------------
|
||||||
|
# Do install
|
||||||
|
#
|
||||||
|
do_install() {
|
||||||
|
if [ ${GCNANO_USERLAND_USE_VENDOR_DIR} -eq 1 ];
|
||||||
|
then
|
||||||
|
install -m 755 -d ${D}/${GCNANO_USERLAND_OUTPUT_LIBDIR}/ ${D}${libdir}
|
||||||
|
cp -R ${S}/${TAR_FILENAME}/usr ${D}/
|
||||||
|
mv ${D}${libdir}/*.so* ${D}/${GCNANO_USERLAND_OUTPUT_LIBDIR}/
|
||||||
|
|
||||||
|
cd ${D}${libdir}/
|
||||||
|
ln -sf ${GCNANO_USERLAND_OUTPUT_LIBDIR}/gbm_viv.so ${D}${libdir}/gbm_viv.so
|
||||||
|
ln -sf ${GCNANO_USERLAND_OUTPUT_LIBDIR}/libEGL.so ${D}${libdir}/libEGL.so
|
||||||
|
ln -sf ${GCNANO_USERLAND_OUTPUT_LIBDIR}/libGAL.so ${D}${libdir}/libGAL.so
|
||||||
|
ln -sf ${GCNANO_USERLAND_OUTPUT_LIBDIR}/libgbm.so ${D}${libdir}/libgbm.so
|
||||||
|
ln -sf ${GCNANO_USERLAND_OUTPUT_LIBDIR}/libgbm.so.1 ${D}${libdir}/libgbm.so.1
|
||||||
|
ln -sf ${GCNANO_USERLAND_OUTPUT_LIBDIR}/libGLESv1_CM.so ${D}${libdir}/libGLESv1_CM.so
|
||||||
|
ln -sf ${GCNANO_USERLAND_OUTPUT_LIBDIR}/libGLESv2.so ${D}${libdir}/libGLESv2.so
|
||||||
|
ln -sf ${GCNANO_USERLAND_OUTPUT_LIBDIR}/libGLSLC.so ${D}${libdir}/libGLSLC.so
|
||||||
|
ln -sf ${GCNANO_USERLAND_OUTPUT_LIBDIR}/libOpenVG.so ${D}${libdir}/libOpenVG.so
|
||||||
|
ln -sf ${GCNANO_USERLAND_OUTPUT_LIBDIR}/libVSC.so ${D}${libdir}/libVSC.so
|
||||||
|
|
||||||
|
LINK=`readlink ${D}${GCNANO_USERLAND_OUTPUT_LIBDIR}/libEGL.so`
|
||||||
|
ln -sf ${GCNANO_USERLAND_OUTPUT_LIBDIR}/$LINK ${D}${libdir}/libEGL.so.1
|
||||||
|
LINK=`readlink ${D}${GCNANO_USERLAND_OUTPUT_LIBDIR}/libGLESv2.so`
|
||||||
|
ln -sf ${GCNANO_USERLAND_OUTPUT_LIBDIR}/$LINK ${D}${libdir}/libGLESv2.so.2
|
||||||
|
|
||||||
|
# remove remove libwayland-egl which are now provided by wayland
|
||||||
|
if test -f ${D}${GCNANO_USERLAND_OUTPUT_LIBDIR}/libwayland-egl.so ;
|
||||||
|
then
|
||||||
|
rm ${D}${GCNANO_USERLAND_OUTPUT_LIBDIR}/libwayland-egl.so*
|
||||||
|
rm ${D}${libdir}/pkgconfig/wayland-egl.pc
|
||||||
|
fi
|
||||||
|
chown -R root.root ${D}/${GCNANO_USERLAND_OUTPUT_LIBDIR} ${D}${libdir}/
|
||||||
|
else
|
||||||
|
install -m 755 -d ${D}/usr/
|
||||||
|
cp -aR ${S}/${TAR_FILENAME}/usr ${D}/
|
||||||
|
fi
|
||||||
|
|
||||||
|
install -d ${D}${systemd_unitdir}/system
|
||||||
|
install -m 0644 ${WORKDIR}/gcnano-userland-make-link.service ${D}${systemd_unitdir}/system
|
||||||
|
}
|
||||||
|
|
||||||
|
# Cannot split or strip last added firmwares
|
||||||
|
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
|
||||||
|
INHIBIT_PACKAGE_STRIP = "1"
|
||||||
|
INHIBIT_SYSROOT_STRIP = "1"
|
||||||
|
|
||||||
|
# Avoid QA Issue: No GNU_HASH in the elf binary
|
||||||
|
INSANE_SKIP_${PN} += "ldflags"
|
||||||
|
|
||||||
|
# Avoid QA Issue: non -dev/-dbg/nativesdk- package contains symlink .so
|
||||||
|
INSANE_SKIP_${PN} += "dev-so"
|
||||||
|
# Avoid QA Issue: file-rdeps
|
||||||
|
INSANE_SKIP_${PN} += "file-rdeps"
|
||||||
|
# Avoid QA Issue: debug-deps
|
||||||
|
INSANE_SKIP_${PN} += "debug-deps"
|
||||||
|
|
||||||
|
INSANE_SKIP_${PN}-dev += "dev-elf dev-so ldflags file-rdeps"
|
||||||
|
|
||||||
|
# Monolitic configuration
|
||||||
|
RPROVIDES_${PN} = "libegl libegl1 libgles1 libglesv1-cm1 libgles2 libglesv2-2 libvg libgbm gbm_viv"
|
||||||
|
RREPLACES_${PN} = "libegl libegl1 libgles1 libglesv1-cm1 libgles2 libglesv2-2 libvg libgbm gbm_viv"
|
||||||
|
RCONFLICTS_${PN} = "libegl libegl1 libgles1 libglesv1-cm1 libgles2 libglesv2-2 libvg libgbm gbm_viv"
|
||||||
|
|
||||||
|
PACKAGES = "${PN} ${PN}-dev "
|
||||||
|
|
||||||
|
SUMMARY_${PN} = "${SUMMARY}"
|
||||||
|
FILES_${PN} = "${GCNANO_USERLAND_OUTPUT_LIBDIR}/libEGL.so* ${GCNANO_USERLAND_OUTPUT_LIBDIR}/libEGL.*.${GCNANO_TYPE}.so"
|
||||||
|
FILES_${PN} += "${GCNANO_USERLAND_OUTPUT_LIBDIR}/libGLESv1_CM.so ${GCNANO_USERLAND_OUTPUT_LIBDIR}/libGLESv1_CM.*.${GCNANO_TYPE}.so"
|
||||||
|
FILES_${PN} += "${GCNANO_USERLAND_OUTPUT_LIBDIR}/libGLESv2.so* ${GCNANO_USERLAND_OUTPUT_LIBDIR}/libGLESv2.*.${GCNANO_TYPE}.so"
|
||||||
|
FILES_${PN} += "${GCNANO_USERLAND_OUTPUT_LIBDIR}/libOpenVG.so ${GCNANO_USERLAND_OUTPUT_LIBDIR}/libOpenVG.*.${GCNANO_TYPE}.so"
|
||||||
|
FILES_${PN} += "${GCNANO_USERLAND_OUTPUT_LIBDIR}/libGAL.so ${GCNANO_USERLAND_OUTPUT_LIBDIR}/libGAL.*.${GCNANO_TYPE}.so"
|
||||||
|
FILES_${PN} += "${GCNANO_USERLAND_OUTPUT_LIBDIR}/libVSC.so ${GCNANO_USERLAND_OUTPUT_LIBDIR}/libVSC.*.${GCNANO_TYPE}.so"
|
||||||
|
FILES_${PN} += "${GCNANO_USERLAND_OUTPUT_LIBDIR}/libGLSLC.so ${GCNANO_USERLAND_OUTPUT_LIBDIR}/libGLSLC.*.${GCNANO_TYPE}.so"
|
||||||
|
FILES_${PN} += "${GCNANO_USERLAND_OUTPUT_LIBDIR}/libgbm.so* ${GCNANO_USERLAND_OUTPUT_LIBDIR}/libgbm.*.${GCNANO_TYPE}.so*"
|
||||||
|
FILES_${PN} += "${GCNANO_USERLAND_OUTPUT_LIBDIR}/libwayland-viv*.so*"
|
||||||
|
FILES_${PN} += "${GCNANO_USERLAND_OUTPUT_LIBDIR}/gbm_viv.so ${GCNANO_USERLAND_OUTPUT_LIBDIR}/gbm_viv.*.${GCNANO_TYPE}.so"
|
||||||
|
FILES_${PN} += "${libdir}/"
|
||||||
|
FILES_${PN} += "${systemd_unitdir}/system"
|
||||||
|
|
||||||
|
SUMMARY_${PN}-dev = "${SUMMARY_${PN}} - Development files"
|
||||||
|
FILES_${PN}-dev = "${includedir} ${libdir}/pkgconfig/ ${libdir}/"
|
||||||
|
|
||||||
|
gcnano_sysroot() {
|
||||||
|
if [ ${GCNANO_USERLAND_USE_VENDOR_DIR} -eq 1 ];
|
||||||
|
then
|
||||||
|
# put all lthe library for on a same directory
|
||||||
|
# clean usr and ${GCNANO_USERLAND_OUTPUT_LIBDIR}
|
||||||
|
rm -rf ${SYSROOT_DESTDIR}/${libdir} ${SYSROOT_DESTDIR}/${GCNANO_USERLAND_OUTPUT_LIBDIR}
|
||||||
|
#copy from tarball
|
||||||
|
cp -aR ${S}/${TAR_FILENAME}/usr ${SYSROOT_DESTDIR}/
|
||||||
|
if test -f ${SYSROOT_DESTDIR}/${libdir}/libwayland-egl.so ;
|
||||||
|
then
|
||||||
|
rm ${SYSROOT_DESTDIR}${libdir}/libwayland-egl.so*
|
||||||
|
rm ${SYSROOT_DESTDIR}${libdir}/pkgconfig/wayland-egl.pc
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
SYSROOT_PREPROCESS_FUNCS =+ "gcnano_sysroot"
|
||||||
|
#SYSROOT_DIRS_append =+ " ${GCNANO_USERLAND_OUTPUT_LIBDIR} "
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
# Recipe for installing gcnano-userland binaries (gbm backend)
|
||||||
|
SUMMARY = "[DEBUG] Vivante libraries OpenGL ES, OpenVG and EGL (multi backend)"
|
||||||
|
LICENSE = "Proprietary"
|
||||||
|
|
||||||
|
BACKEND = "multi"
|
||||||
|
|
||||||
|
DEPENDS += " libdrm wayland "
|
||||||
|
|
||||||
|
GCNANO_TYPE = "debug"
|
||||||
|
|
||||||
|
GCNANO_USERLAND_FB_TARBALL_DATE = "20181210"
|
||||||
|
|
||||||
|
do_install_append() {
|
||||||
|
clean_release_file
|
||||||
|
}
|
||||||
|
|
||||||
|
include gcnano-userland-binary.inc
|
||||||
|
|
||||||
|
PROVIDES_remove = "gcnano-userland"
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
# Recipe for installing gcnano-userland binaries (gbm backend)
|
||||||
|
SUMMARY = "Vivante libraries OpenGL ES, OpenVG and EGL (multi backend)"
|
||||||
|
LICENSE = "Proprietary"
|
||||||
|
|
||||||
|
BACKEND = "multi"
|
||||||
|
|
||||||
|
DEPENDS += " libdrm wayland "
|
||||||
|
|
||||||
|
GCNANO_TYPE = "release"
|
||||||
|
|
||||||
|
GCNANO_USERLAND_FB_TARBALL_DATE = "20181210"
|
||||||
|
|
||||||
|
do_install_append() {
|
||||||
|
clean_debug_file
|
||||||
|
}
|
||||||
|
|
||||||
|
include gcnano-userland-binary.inc
|
||||||
Loading…
Reference in New Issue