GCNANO-USERLAND-STM32MP: 6.4.9

Signed-off-by: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
Change-Id: I6992cb04d73cd519098e2576233e4ca64536b4c0
This commit is contained in:
Romuald JEANNE
2022-09-28 13:51:40 +02:00
committed by bernard PUEL
parent 772e22bca4
commit ca501bd7db
3 changed files with 101 additions and 79 deletions

View File

@ -24,4 +24,4 @@ LAYERSERIES_COMPAT_stm-st-stm32mp = "kirkstone"
LAYERDEPENDS_stm-st-stm32mp = "core openembedded-layer meta-python"
# OpenSTLinux compatibility version
ST_OSTL_COMPATIBILITY_VERSION_stm-st-stm32mp = "4.0"
ST_OSTL_COMPATIBILITY_VERSION_stm-st-stm32mp = "4.0 4.1"

View File

@ -6,12 +6,12 @@ LIC_FILES_CHKSUM = "file://${GCNANO_TAR_FILENAME}/LICENSE;md5=dd36864f287701862a
DEPENDS += " libdrm wayland "
SRC_URI = "git://github.com/STMicroelectronics/gcnano-binaries;protocol=https;branch=gcnano-${GCNANO_VERSION}-binaries"
SRCREV = "a20611434ef048d3d0c04f55b6cd7d75a2156d43"
SRCREV = "787d3311e1bae40805fe2091be653eaadf059611"
PV = "${GCNANO_VERSION}+${GCNANO_DATE}"
GCNANO_VERSION = "6.4.7"
GCNANO_DATE = "20220524"
GCNANO_VERSION = "6.4.9"
GCNANO_DATE = "20221020"
S = "${WORKDIR}/git"
B = "${S}/${GCNANO_TAR_FILENAME}"

View File

@ -40,7 +40,7 @@ GCNANO_USERLAND_OUTPUT_LIBDIR ??= "${libdir}"
GCNANO_USERLAND_LDCONF ?= "gcnano.conf"
# Configure the pkgconfig settings
PKGCONFIG_DV ??= "21.1.1"
PKGCONFIG_DV ??= "22.0.3"
PKGCONFIG_PREFIX ??= "${exec_prefix}"
do_compile:append() {
@ -68,8 +68,9 @@ gcnano_install_lib() {
gcnano_pkgdir=$5
gcnano_pkgdir_install=$6
# Install libraries
# Install libraries & headers
install -m 0755 -d ${gcnano_libdir_install}
install -m 0755 -d ${gcnano_incdir_install}
# Install libraries
install -m 0555 ${gcnano_libdir}/libGAL.so ${gcnano_libdir_install}/
@ -82,8 +83,7 @@ gcnano_install_lib() {
case ${lib} in
"egl")
# Install libraries
find ${gcnano_libdir}/* -type f -name libEGL.so* -exec install -m 0555 '{}' ${gcnano_libdir_install}/ \;
find ${gcnano_libdir}/* -type l -name libEGL.so* -exec cp -d '{}' ${gcnano_libdir_install}/ \;
find ${gcnano_libdir}/* -type f -name libEGL.so.* -exec install -m 0555 '{}' ${gcnano_libdir_install}/ \;
# Install includes
install -m 0755 -d ${gcnano_incdir_install}/EGL
install -m 0644 ${gcnano_incdir}/EGL/* ${gcnano_incdir_install}/EGL
@ -93,23 +93,18 @@ gcnano_install_lib() {
;;
"gbm")
# Install libraries
find ${gcnano_libdir}/* -type f -name libgbm.so* -exec install -m 0555 '{}' ${gcnano_libdir_install}/ \;
find ${gcnano_libdir}/* -type l -name libgbm.so* -exec cp -d '{}' ${gcnano_libdir_install}/ \;
find ${gcnano_libdir}/* -type f -name libgbm.so.* -exec install -m 0555 '{}' ${gcnano_libdir_install}/ \;
install -m 0755 ${gcnano_libdir}/libgbm_viv.so ${gcnano_libdir_install}/
# Install includes
install -m 0755 -d ${gcnano_incdir_install}
if [ -e "${gcnano_incdir}/gbm/gbm.h" ]; then
install -m 0644 ${gcnano_incdir}/gbm/gbm.h ${gcnano_incdir_install}/
else
install -m 0644 ${gcnano_incdir}/gbm.h ${gcnano_incdir_install}/
fi
install -m 0644 ${gcnano_incdir}/gbm.h ${gcnano_incdir_install}/
# Install pkgconfig
install -m 0755 -d ${gcnano_pkgdir_install}
install -m 644 ${gcnano_pkgdir}/gbm.pc ${gcnano_pkgdir_install}/
;;
"glesv1")
# Install libraries
install -m 0555 ${gcnano_libdir}/libGLESv1_CM.so ${gcnano_libdir_install}/
find ${gcnano_libdir}/* -type f -name libGLESv1_CM.so.* -exec install -m 0555 '{}' ${gcnano_libdir_install}/ \;
# Install includes
install -m 0755 -d ${gcnano_incdir_install}/GLES
install -m 0644 ${gcnano_incdir}/GLES/* ${gcnano_incdir_install}/GLES
@ -120,19 +115,22 @@ gcnano_install_lib() {
"glesv2")
# Install libraries
install -m 0555 ${gcnano_libdir}/libGLSLC.so ${gcnano_libdir_install}/
find ${gcnano_libdir}/* -type f -name libGLESv2.so* -exec install -m 0555 '{}' ${gcnano_libdir_install}/ \;
find ${gcnano_libdir}/* -type l -name libGLESv2.so* -exec cp -d '{}' ${gcnano_libdir_install}/ \;
find ${gcnano_libdir}/* -type f -name libGLESv2.so.* -exec install -m 0555 '{}' ${gcnano_libdir_install}/ \;
# Install includes
install -m 0755 -d ${gcnano_incdir_install}/GLES2
install -m 0644 ${gcnano_incdir}/GLES2/* ${gcnano_incdir_install}/GLES2
# Hack for weston & kmscube compilation
# Weston and kmscube use GLES3 header but the decision to use gles2 or gles3
# are made a runtime
install -m 0755 -d ${gcnano_incdir_install}/GLES3
install -m 0644 ${gcnano_incdir}/GLES3/* ${gcnano_incdir_install}/GLES3
# Install pkgconfig
install -m 0755 -d ${gcnano_pkgdir_install}
install -m 644 ${gcnano_pkgdir}/glesv2.pc ${gcnano_pkgdir_install}/
;;
"vg")
# Install libraries
find ${gcnano_libdir}/* -type f -name libOpenVG*.so* -exec install -m 0555 '{}' ${gcnano_libdir_install}/ \;
find ${gcnano_libdir}/* -type l -name libOpenVG*.so* -exec cp -d '{}' ${gcnano_libdir_install}/ \;
find ${gcnano_libdir}/* -type f -name libOpenVG*.so.* -exec install -m 0555 '{}' ${gcnano_libdir_install}/ \;
# Install includes
install -m 0755 -d ${gcnano_incdir_install}/VG
install -m 0644 ${gcnano_incdir}/VG/* ${gcnano_incdir_install}/VG
@ -144,6 +142,45 @@ gcnano_install_lib() {
done
}
# Install utility for gcano-userland:
# gcnano_install_symlinks <LIBDIR> <LIBDIR_INSTALL>
#
# Iterate other installed libraries and create appropriate symlinks if they
# don't exist as symlink or real library at that location.
# For well-formed library with ABI suffix, create a SONAME-suffixed symlink
# and dev-.so-only symlink.
# For .so-only installed library, only create dev-.so-only symlink.
gcnano_install_symlinks() {
# Init for lib dir install
gcnano_libdir=$1
gcnano_lib_symlink_dir_install=$2
bbnote "Create symlinks to shared libs in ${gcnano_lib_symlink_dir_install} folder (mandatory for SDK)"
# Init relative path for symlinks
relative_path=$(realpath -m --relative-to=${gcnano_lib_symlink_dir_install} ${gcnano_libdir})
# Move to gcnano_lib_symlink_dir_install for symlinks
cd "${gcnano_lib_symlink_dir_install}"
for sharelib in $(find ${gcnano_libdir}/ -type f -name "*.so*"); do
# Get full libname
sharelib_name=$(basename ${sharelib})
# Get base libname
dev_lib_name=$(echo ${sharelib_name} | awk -F'.so' '{print $1}').so
# Get SONAME
soname_lib_name=$(objdump -x ${sharelib} 2>/dev/null | grep SONAME | awk -F' ' '{print $NF}')
# Create symlink
for link_name in ${soname_lib_name} ${dev_lib_name}; do
if [ -e "${link_name}" ]; then
bbnote "Already existing share lib: ${link_name}. No symlink created in ${gcnano_lib_symlink_dir_install}."
elif [ ! -e "${relative_path}/${sharelib_name}" ]; then
bbnote "Not able to find share lib: ${relative_path}/${sharelib_name}. No symlink created in ${gcnano_lib_symlink_dir_install}."
else
ln -sf ${relative_path}/${sharelib_name} ${link_name}
fi
done
done
cd "${PWD}"
}
do_install() {
# Update pkgconfig files info
for pkg_file in $(find ${B}/pkgconfig/* -type f -name *.pc); do
@ -155,27 +192,11 @@ do_install() {
"${B}/${GCNANO_FLAVOUR}/include" "${D}${includedir}" \
"${B}/pkgconfig" "${D}${libdir}/pkgconfig"
# Manage creation of additional symlinks to solve missing libs issue on SDK side
# Manage creation of additional development symlinks to solve missing libs issue on SDK side
# when GCNANO_USERLAND_OUTPUT_LIBDIR differs from libdir
gcnano_install_symlinks "${D}${GCNANO_USERLAND_OUTPUT_LIBDIR}" "${D}${libdir}"
if [ "${GCNANO_USERLAND_OUTPUT_LIBDIR}" != "${libdir}" ]; then
bbnote "Create symlinks to shared libs in ${libdir} folder (mandatory for SDK)"
# Init relative path for symlinks
relative_path=$(realpath -m --relative-to=${D}/${libdir} ${D}${GCNANO_USERLAND_OUTPUT_LIBDIR})
# Move to libdir for symlinks
cwd=${PWD}
cd "${D}${libdir}"
for sharelib in $(find ${D}${GCNANO_USERLAND_OUTPUT_LIBDIR}/* -type f -name "*.so*"); do
# Get SONAME
link_name=$(objdump -x ${sharelib} 2>/dev/null | grep SONAME | awk -F' ' '{print $NF}')
sharelib_name=$(basename ${sharelib})
# Create symlink
if [ -e "${relative_path}/${sharelib_name}" ]; then
ln -sf ${relative_path}/${sharelib_name} ${link_name}
else
bbnote "Not able to find share lib: ${relative_path}/${sharelib_name}. No symlink created in ${libdir}."
fi
done
cd "${PWD}"
gcnano_install_symlinks "${D}${GCNANO_USERLAND_OUTPUT_LIBDIR}" "${D}${GCNANO_USERLAND_OUTPUT_LIBDIR}"
fi
if [ -s "${B}/${GCNANO_USERLAND_LDCONF}" ]; then
@ -184,78 +205,77 @@ do_install() {
fi
}
# Manage install for gcnano-userland libs into specific folder for sysroot as well
gcnano_sysroot() {
if [ "${GCNANO_USERLAND_OUTPUT_LIBDIR}" != "${libdir}" ]; then
# Cleanup targeted folder from unexpected symlinks
rm -f $(find ${SYSROOT_DESTDIR}${libdir}/* -type l -name "*.so*")
install -d ${SYSROOT_DESTDIR}${libdir}
cp -aR ${D}${GCNANO_USERLAND_OUTPUT_LIBDIR}/* ${SYSROOT_DESTDIR}${libdir}/
fi
}
SYSROOT_PREPROCESS_FUNCS =+ "gcnano_sysroot"
SYSROOT_DIRS:append = " ${GCNANO_USERLAND_OUTPUT_LIBDIR}"
# For the packages that make up the OpenGL interfaces, inject variables so that
# they don't get Debian-renamed (which would remove the -gcnano suffix), and
# RPROVIDEs/RCONFLICTs on the generic libgl name.
python __anonymous() {
pkgconfig = (d.getVar('GCNANO_PACKAGECONFIG') or "").split()
for p in (("gbm", "libgbm", "libgbm"),
for p in (("gbm", "libgbm",),
("egl", "libegl", "libegl1"),
("glesv1", "libgles1", "libglesv1-cm1"),
("glesv2", "libgles2", "libglesv2-2"),
("vg", "libopenvg", "libopenvg")):
("vg", "libopenvg")):
if not p[0] in pkgconfig:
continue
fullp = p[1] + "-gcnano"
pkgs = " ".join(p[1:])
d.setVar("DEBIAN_NOAUTONAME_" + fullp, "1")
d.appendVar("RREPLACES:" + fullp, pkgs)
d.appendVar("RPROVIDES:" + fullp, pkgs)
d.appendVar("RCONFLICTS:" + fullp, pkgs)
if d.getVar("GCNANO_USERLAND_OUTPUT_LIBDIR") != d.getVar("libdir"):
d.appendVar("RDEPENDS:" + fullp, " gcnano-ldconf")
pkgs = d.getVar('PACKAGES').split()
fullp = p[1] + "-gcnano"
if fullp in pkgs:
rpkgs = " ".join(p[1:])
d.setVar("DEBIAN_NOAUTONAME_" + fullp, "1")
d.appendVar("RREPLACES:" + fullp, rpkgs)
d.appendVar("RPROVIDES:" + fullp, rpkgs)
d.appendVar("RCONFLICTS:" + fullp, rpkgs)
if d.getVar("GCNANO_USERLAND_OUTPUT_LIBDIR") != d.getVar("libdir"):
d.appendVar("RDEPENDS:" + fullp, " gcnano-ldconf")
# For -dev, the first element is both the Debian and original name
fullp += "-dev"
pkgs = p[1] + "-dev"
d.setVar("DEBIAN_NOAUTONAME_" + fullp, "1")
d.appendVar("RREPLACES:" + fullp, pkgs)
d.appendVar("RPROVIDES:" + fullp, pkgs)
d.appendVar("RCONFLICTS:" + fullp, pkgs)
if fullp not in pkgs:
rpkgs = p[1] + "-dev"
d.setVar("DEBIAN_NOAUTONAME_" + fullp, "1")
d.appendVar("RREPLACES:" + fullp, rpkgs)
d.appendVar("RPROVIDES:" + fullp, rpkgs)
d.appendVar("RCONFLICTS:" + fullp, rpkgs)
}
# EGL, GLESv1, GLESv2 and VG run-time packages embed lib*.so to allow
# GPU stack to run properly
# NOTE: it's mandatory to libEGL.so, libGLESv2.so and libOpenVG.so availabale on filesystem
# because gcnano userland library try to make a dlopen on this library (with specific .so extension)
FILES:${PN} = ""
FILES:gcnano-ldconf = "${sysconfdir}/"
FILES:libgal-gcnano = "${GCNANO_USERLAND_OUTPUT_LIBDIR}/libGAL.so"
FILES:libgal-gcnano += "${GCNANO_USERLAND_OUTPUT_LIBDIR}/libVSC.so"
FILES:libegl-gcnano = "${GCNANO_USERLAND_OUTPUT_LIBDIR}/libEGL.so*"
FILES:libgbm-gcnano = "${GCNANO_USERLAND_OUTPUT_LIBDIR}/libgbm.so*"
FILES:libegl-gcnano = "${@oe.utils.ifelse(d.getVar('GCNANO_USERLAND_OUTPUT_LIBDIR') != d.getVar('libdir'), '${GCNANO_USERLAND_OUTPUT_LIBDIR}/libEGL.so*','${GCNANO_USERLAND_OUTPUT_LIBDIR}/libEGL.so.*')}"
FILES:libgbm-gcnano = "${@oe.utils.ifelse(d.getVar('GCNANO_USERLAND_OUTPUT_LIBDIR') != d.getVar('libdir'), '${GCNANO_USERLAND_OUTPUT_LIBDIR}/libgbm.so*','${GCNANO_USERLAND_OUTPUT_LIBDIR}/libgbm.so.*')}"
FILES:libgbm-gcnano += "${GCNANO_USERLAND_OUTPUT_LIBDIR}/libgbm_viv.so"
FILES:libgles1-gcnano = "${GCNANO_USERLAND_OUTPUT_LIBDIR}/libGLESv1*.so"
FILES:libgles2-gcnano = "${GCNANO_USERLAND_OUTPUT_LIBDIR}/libGLESv2.so"
FILES:libgles1-gcnano = "${@oe.utils.ifelse(d.getVar('GCNANO_USERLAND_OUTPUT_LIBDIR') != d.getVar('libdir'), '${GCNANO_USERLAND_OUTPUT_LIBDIR}/libGLESv1_CM.so*','${GCNANO_USERLAND_OUTPUT_LIBDIR}/libGLESv1_CM.so.*')}"
FILES:libgles2-gcnano = "${@oe.utils.ifelse(d.getVar('GCNANO_USERLAND_OUTPUT_LIBDIR') != d.getVar('libdir'), '${GCNANO_USERLAND_OUTPUT_LIBDIR}/libGLESv2.so*','${GCNANO_USERLAND_OUTPUT_LIBDIR}/libGLESv2.so.*')}"
FILES:libgles2-gcnano += "${GCNANO_USERLAND_OUTPUT_LIBDIR}/libGLSLC.so"
FILES:libopenvg-gcnano = "${GCNANO_USERLAND_OUTPUT_LIBDIR}/libOpenVG*.so*"
FILES:libopenvg-gcnano = "${@oe.utils.ifelse(d.getVar('GCNANO_USERLAND_OUTPUT_LIBDIR') != d.getVar('libdir'), '${GCNANO_USERLAND_OUTPUT_LIBDIR}/libOpenVG*.so*','${GCNANO_USERLAND_OUTPUT_LIBDIR}/libOpenVG*.so.*')}"
FILES:${PN}-dev = ""
FILES:libgal-gcnano-dev = ""
FILES:libegl-gcnano-dev = "${includedir}/EGL ${includedir}/KHR ${libdir}/pkgconfig/egl.pc"
FILES:libgbm-gcnano-dev = "${includedir}/gbm.h ${libdir}/pkgconfig/gbm.pc"
FILES:libgles1-gcnano-dev = "${includedir}/GLES ${libdir}/pkgconfig/glesv1*.pc"
FILES:libgles2-gcnano-dev = "${includedir}/GLES2 ${libdir}/pkgconfig/glesv2.pc"
FILES:libgles2-gcnano-dev = "${includedir}/GLES2 ${includedir}/GLES3 ${libdir}/pkgconfig/glesv2.pc"
FILES:libopenvg-gcnano-dev = "${includedir}/VG ${libdir}/pkgconfig/vg.pc"
# Append additional symlinks to *-dev packages for delivered shared libs
# when GCNANO_USERLAND_OUTPUT_LIBDIR differs from libdir
FILES:libgal-gcnano-dev += "${@bb.utils.contains('GCNANO_USERLAND_OUTPUT_LIBDIR', '${libdir}', '', '${libdir}/libGAL.so', d)}"
FILES:libgal-gcnano-dev += "${@bb.utils.contains('GCNANO_USERLAND_OUTPUT_LIBDIR', '${libdir}', '', '${libdir}/libVSC.so', d)}"
FILES:libegl-gcnano-dev += "${@bb.utils.contains('GCNANO_USERLAND_OUTPUT_LIBDIR', '${libdir}', '', '${libdir}/libEGL.so*', d)}"
FILES:libgbm-gcnano-dev += "${@bb.utils.contains('GCNANO_USERLAND_OUTPUT_LIBDIR', '${libdir}', '', '${libdir}/libgbm.so*', d)}"
FILES:libgbm-gcnano-dev += "${@bb.utils.contains('GCNANO_USERLAND_OUTPUT_LIBDIR', '${libdir}', '', '${libdir}/libgbm_viv.so', d)}"
FILES:libgles1-gcnano-dev += "${@bb.utils.contains('GCNANO_USERLAND_OUTPUT_LIBDIR', '${libdir}', '', '${libdir}/libGLESv1*.so', d)}"
FILES:libgles2-gcnano-dev += "${@bb.utils.contains('GCNANO_USERLAND_OUTPUT_LIBDIR', '${libdir}', '', '${libdir}/libGLESv2.so', d)}"
FILES:libgles2-gcnano-dev += "${@bb.utils.contains('GCNANO_USERLAND_OUTPUT_LIBDIR', '${libdir}', '', '${libdir}/libGLSLC.so', d)}"
FILES:libopenvg-gcnano-dev += "${@bb.utils.contains('GCNANO_USERLAND_OUTPUT_LIBDIR', '${libdir}', '', '${libdir}/libOpenVG*.so*', d)}"
FILES:libgal-gcnano-dev += "${libdir}/libGAL.so"
FILES:libgal-gcnano-dev += "${libdir}/libVSC.so"
FILES:libegl-gcnano-dev += "${@oe.utils.ifelse(d.getVar('GCNANO_USERLAND_OUTPUT_LIBDIR') != d.getVar('libdir'), '${libdir}/libEGL.so*','${libdir}/libEGL.so')}"
FILES:libgbm-gcnano-dev += "${@oe.utils.ifelse(d.getVar('GCNANO_USERLAND_OUTPUT_LIBDIR') != d.getVar('libdir'), '${libdir}/libgbm.so*','${libdir}/libgbm.so')}"
FILES:libgbm-gcnano-dev += "${libdir}/libgbm_viv.so"
FILES:libgles1-gcnano-dev += "${@oe.utils.ifelse(d.getVar('GCNANO_USERLAND_OUTPUT_LIBDIR') != d.getVar('libdir'), '${libdir}/libGLESv1*.so*','${libdir}/libGLESv1*.so')}"
FILES:libgles2-gcnano-dev += "${@oe.utils.ifelse(d.getVar('GCNANO_USERLAND_OUTPUT_LIBDIR') != d.getVar('libdir'), '${libdir}/libGLESv2.so*','${libdir}/libGLESv2.so')}"
FILES:libgles2-gcnano-dev += "${libdir}/libGLSLC.so"
FILES:libopenvg-gcnano-dev += "${@oe.utils.ifelse(d.getVar('GCNANO_USERLAND_OUTPUT_LIBDIR') != d.getVar('libdir'), '${libdir}/libOpenVG*.so*','${libdir}/libOpenVG*.so')}"
# Set gcnano-userland package with runtime dependencies on all packages
RDEPENDS:${PN} += "\
@ -279,6 +299,8 @@ INSANE_SKIP:libgles2-gcnano += "ldflags"
INSANE_SKIP:libopenvg-gcnano += "ldflags"
# Avoid QA Issue: non -dev/-dbg/nativesdk- package contains symlink .so
INSANE_SKIP:libgles1-gcnano += "dev-so"
INSANE_SKIP:libgles2-gcnano += "dev-so"
INSANE_SKIP:libegl-gcnano += "dev-so"
INSANE_SKIP:libgbm-gcnano += "dev-so"
INSANE_SKIP:libopenvg-gcnano += "dev-so"