meta-st-stm32mp/recipes-graphics/gcnano-userland/gcnano-userland-binary.inc

194 lines
7.7 KiB
PHP

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}"
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.4.1-binaries"
SRCREV = "eaff2c61bcc3936f8193a52ffe965bdcc6457a57"
PV = "6.4.1"
GCNANO_USERLAND_FB_TARBALL_DATE = "20200402"
S = "${WORKDIR}/git"
# 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
#
create_link() {
prefix=$1
library_link=$2
library_src_relative_path_to_dst=$3
library_dst=$4
LINK=`readlink $prefix/$library_dst/$library_src_relative_path_to_dst/$library_link`
if [ -L $prefix/$library_dst/$library_src_relative_path_to_dst/$LINK ];
then
# point on a link, need to get the path of link
SUBLINK=$(readlink $prefix/$library_dst/$library_src_relative_path_to_dst/$LINK)
ln -sf $library_src_relative_path_to_dst/$SUBLINK $prefix/$library_dst/$library_link
else
ln -sf $library_src_relative_path_to_dst/$LINK $prefix/$library_dst/$library_link
fi
}
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}/
if [ -e ${D}/${GCNANO_USERLAND_OUTPUT_LIBDIR}/gbm_viv.so ];
then
ln -sf ../..${GCNANO_USERLAND_OUTPUT_LIBDIR}/gbm_viv.so ${D}${libdir}/gbm_viv.so
fi
if [ -e ${D}/${GCNANO_USERLAND_OUTPUT_LIBDIR}/libgbm_viv.so ];
then
ln -sf ../..${GCNANO_USERLAND_OUTPUT_LIBDIR}/libgbm_viv.so ${D}${libdir}/libgbm_viv.so
fi
for link in `find ${D}/${GCNANO_USERLAND_OUTPUT_LIBDIR} -type l`;
do
library_link=`basename $link`
create_link ${D} $library_link ../..${GCNANO_USERLAND_OUTPUT_LIBDIR} ${libdir}
done
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
# 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*
fi
if test -L ${D}${libdir}/libwayland-egl.so ;
then
rm ${D}${libdir}/libwayland-egl.so*
fi
if test -f ${D}${libdir}/pkgconfig/wayland-egl.pc ;
then
rm ${D}${libdir}/pkgconfig/wayland-egl.pc
fi
chown -R root.root ${D}/${GCNANO_USERLAND_OUTPUT_LIBDIR} ${D}${libdir}/
}
# 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} += "${GCNANO_USERLAND_OUTPUT_LIBDIR}/libgbm_viv.so ${GCNANO_USERLAND_OUTPUT_LIBDIR}/libgbm_viv.*.${GCNANO_TYPE}.so"
FILES_${PN} += "${libdir}/lib*.so ${libdir}/lib*${SOLIBS} ${libdir}/gbm*"
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"