diff options
author | Takamitsu Honda <takamitsu.honda.pv@renesas.com> | 2017-01-27 11:47:06 +0900 |
---|---|---|
committer | Takamitsu Honda <takamitsu.honda.pv@renesas.com> | 2017-01-27 11:47:06 +0900 |
commit | 3613b2780a6b5d5d70ea6802be5060a8214cbdb5 (patch) | |
tree | fab60ccb7b38da7e8558a2879885f06e5b0662d2 /meta-rcar-gen3/recipes-graphics |
First commit.Renesas-Yocto-v2.16.0
Renesas BSP v3.5.1 (kernel v4.9 stable)
[Environment]
poky: yocto-2.1.2 (cca8dd15c8096626052f6d8d25ff1e9a606104a3)
meta-openembedded: 55c8a76da5dc099a7bc3838495c672140cedb78e
meta-linaro: 2f51d38048599d9878f149d6d15539fb97603f8f
[Information]
- U-boot: Changed load address from H'49000000 to H'50000000
- XDG_RUNTIME_DIR has been changed from "/run/user/root" to "/run/user/0"
- Change location of include directory, which stores common user header
files, to $(INCSHARED)
- In BSP Only, core-image-weston is not supported even though
local-wayland.conf is provided.
- Please set Salvator-x SW7 Pin-1. In after Yocto BSP v2.12.0, it is
 necessary to enable BKUP_TRG signal for Suspend to RAM.
- The dtb filename was changed in R-Car H3. Only
"Image-r8a7795-es1-salvator-x.dtb" is supported in this version.
Please use "Image-r8a7795-es1-salvator-x.dtb" It supports R-Car H3
WS1.0 and WS1.1.
- Please update your local.conf and bblayers.conf corresponding to Yocto
v2.16.0 package. You can refer to meta-rcargen3/docs/sample/conf/ for
updated contents.
- You have to re-compile out-of-recipe software like user application by
v2.16.0 SDK toolchains.
- In some boards, the resuming from System Suspend to RAM may cause
unstable operation or failed to resume.
Signed-off-by: Takamitsu Honda <takamitsu.honda.pv@renesas.com>
Diffstat (limited to 'meta-rcar-gen3/recipes-graphics')
41 files changed, 1521 insertions, 0 deletions
diff --git a/meta-rcar-gen3/recipes-graphics/cogl/cogl-1.0_1.%.bbappend b/meta-rcar-gen3/recipes-graphics/cogl/cogl-1.0_1.%.bbappend new file mode 100644 index 0000000..f06b451 --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/cogl/cogl-1.0_1.%.bbappend @@ -0,0 +1,4 @@ +require include/gles-control.inc +DEPENDS_append = " \ + ${@'gles-user-module libgbm' if '${USE_GLES_WAYLAND}' == '1' else ''} \ +" diff --git a/meta-rcar-gen3/recipes-graphics/drm/libdrm/fix_O_CLOEXEC_undeclared.patch b/meta-rcar-gen3/recipes-graphics/drm/libdrm/fix_O_CLOEXEC_undeclared.patch new file mode 100644 index 0000000..286e548 --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/drm/libdrm/fix_O_CLOEXEC_undeclared.patch @@ -0,0 +1,24 @@ +drmdevice.c: define _GNU_SOURCE + +Include config.h to fix this build error with uclibc: + +libdrm-2.4.66/tests/drmdevice.c: In function 'main': +libdrm-2.4.66/tests/drmdevice.c:96:60: error: +'O_CLOEXEC' undeclared (first use in this function) +fd = open(devices[i]->nodes[j],O_RDONLY | O_CLOEXEC, 0); + +Upstream-Status: Pending + +Signed-off-by: Maxin B. John <maxin.john@intel.com> +--- +diff -Naur libdrm-2.4.66-orig/tests/drmdevice.c libdrm-2.4.66/tests/drmdevice.c +--- libdrm-2.4.66-orig/tests/drmdevice.c 2016-02-23 11:34:02.054904502 +0200 ++++ libdrm-2.4.66/tests/drmdevice.c 2016-02-23 11:35:34.371750383 +0200 +@@ -21,6 +21,7 @@ + * + */ + ++#include <config.h> + #include <stdio.h> + #include <stdlib.h> + #include <sys/stat.h> diff --git a/meta-rcar-gen3/recipes-graphics/drm/libdrm/installtests.patch b/meta-rcar-gen3/recipes-graphics/drm/libdrm/installtests.patch new file mode 100644 index 0000000..30e0a61 --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/drm/libdrm/installtests.patch @@ -0,0 +1,15 @@ +tests: also install tests app + +Upstream-Status: Inappropriate [configuration] + +Signed-off-by: Yu Ke <ke.yu@intel.com> + +Index: libdrm-2.4.66/tests/Makefile.am +=================================================================== +--- libdrm-2.4.66.orig/tests/Makefile.am ++++ libdrm-2.4.66/tests/Makefile.am +@@ -73,3 +73,4 @@ TESTS += \ + endif + + check_PROGRAMS += $(TESTS) ++bin_PROGRAMS = $(check_PROGRAMS) diff --git a/meta-rcar-gen3/recipes-graphics/drm/libdrm_2.4.68.bb b/meta-rcar-gen3/recipes-graphics/drm/libdrm_2.4.68.bb new file mode 100644 index 0000000..758f801 --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/drm/libdrm_2.4.68.bb @@ -0,0 +1,45 @@ +SUMMARY = "Userspace interface to the kernel DRM services" +DESCRIPTION = "The runtime library for accessing the kernel DRM services. DRM \ +stands for \"Direct Rendering Manager\", which is the kernel portion of the \ +\"Direct Rendering Infrastructure\" (DRI). DRI is required for many hardware \ +accelerated OpenGL drivers." +HOMEPAGE = "http://dri.freedesktop.org" +SECTION = "x11/base" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://xf86drm.c;beginline=9;endline=32;md5=c8a3b961af7667c530816761e949dc71" +PROVIDES = "drm" +DEPENDS = "libpthread-stubs udev libpciaccess" + +SRC_URI = "http://dri.freedesktop.org/libdrm/${BP}.tar.bz2 \ + file://installtests.patch \ + file://fix_O_CLOEXEC_undeclared.patch \ + " + +SRC_URI[md5sum] = "bcc96848d969cecf28223f668eeff354" +SRC_URI[sha256sum] = "5b4bd9a5922929bc716411cb74061fbf31b06ba36feb89bc1358a91a8d0ca9df" + +inherit autotools pkgconfig + +EXTRA_OECONF += "--disable-cairo-tests \ + --enable-omap-experimental-api \ + --enable-install-test-programs \ + --disable-manpages \ + --disable-valgrind \ + " + +ALLOW_EMPTY_${PN}-drivers = "1" +PACKAGES =+ "${PN}-tests ${PN}-drivers ${PN}-radeon ${PN}-nouveau ${PN}-omap \ + ${PN}-intel ${PN}-exynos ${PN}-kms ${PN}-freedreno ${PN}-amdgpu" + +RRECOMMENDS_${PN}-drivers = "${PN}-radeon ${PN}-nouveau ${PN}-omap ${PN}-intel \ + ${PN}-exynos ${PN}-freedreno ${PN}-amdgpu" + +FILES_${PN}-tests = "${bindir}/*" +FILES_${PN}-radeon = "${libdir}/libdrm_radeon.so.*" +FILES_${PN}-nouveau = "${libdir}/libdrm_nouveau.so.*" +FILES_${PN}-omap = "${libdir}/libdrm_omap.so.*" +FILES_${PN}-intel = "${libdir}/libdrm_intel.so.*" +FILES_${PN}-exynos = "${libdir}/libdrm_exynos.so.*" +FILES_${PN}-kms = "${libdir}/libkms*.so.*" +FILES_${PN}-freedreno = "${libdir}/libdrm_freedreno.so.*" +FILES_${PN}-amdgpu = "${libdir}/libdrm_amdgpu.so.*" diff --git a/meta-rcar-gen3/recipes-graphics/gles-module/gles-user-module.bb b/meta-rcar-gen3/recipes-graphics/gles-module/gles-user-module.bb new file mode 100644 index 0000000..939c61b --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/gles-module/gles-user-module.bb @@ -0,0 +1,126 @@ +require include/gles-control.inc + +DESCRIPTION = "PowerVR GPU user module" +LICENSE = "CLOSED" + +PN = "gles-user-module" +PR = "r0" + +COMPATIBLE_MACHINE = "(r8a7795|r8a7796)" +PACKAGE_ARCH = "${MACHINE_ARCH}" + +S = "${WORKDIR}/rogue" +GLES = "gsx" + +SRC_URI_r8a7795 = "file://r8a7795_linux_gsx_binaries_gles3.tar.bz2" +SRC_URI_r8a7796 = "file://r8a7796_linux_gsx_binaries_gles3.tar.bz2" +SRC_URI_append = " \ + file://change-shell.patch \ + file://0001-EGL-eglext.h-Include-eglmesaext.h-to-avoid-compile-error.patch \ + file://rc.pvr.service \ +" + +inherit update-rc.d systemd + +INITSCRIPT_NAME = "rc.pvr" +INITSCRIPT_PARAMS = "start 7 5 2 . stop 62 0 1 6 ." +SYSTEMD_SERVICE_${PN} = "rc.pvr.service" + +do_populate_lic[noexec] = "1" +do_compile[noexec] = "1" + +do_install() { + # Install configuration files + install -d ${D}/${sysconfdir}/init.d + install -m 644 ${S}/${sysconfdir}/powervr.ini ${D}/${sysconfdir} + install -m 755 ${S}/${sysconfdir}/init.d/rc.pvr ${D}/${sysconfdir}/init.d/ + install -d ${D}/${sysconfdir}/udev/rules.d + install -m 644 ${S}/${sysconfdir}/udev/rules.d/72-pvr-seat.rules ${D}/${sysconfdir}/udev/rules.d/ + + # Install header files + install -d ${D}/${includedir}/EGL + install -m 644 ${S}/${includedir}/EGL/*.h ${D}/${includedir}/EGL/ + install -d ${D}/${includedir}/GLES2 + install -m 644 ${S}/${includedir}/GLES2/*.h ${D}/${includedir}/GLES2/ + install -d ${D}/${includedir}/GLES3 + install -m 644 ${S}/${includedir}/GLES3/*.h ${D}/${includedir}/GLES3/ + install -d ${D}/${includedir}/KHR + install -m 644 ${S}/${includedir}/KHR/khrplatform.h ${D}/${includedir}/KHR/khrplatform.h + + # Install pre-builded binaries + install -d ${D}/${libdir} + install -m 755 ${S}/${libdir}/*.so ${D}/${libdir}/ + install -d ${D}/${exec_prefix}/local/bin + install -m 755 ${S}/${exec_prefix}/local/bin/dlcsrv_REL ${D}/${exec_prefix}/local/bin/dlcsrv_REL + install -d ${D}/lib/firmware + install -m 644 ${S}/lib/firmware/rgx.fw ${D}/lib/firmware/ + + # Install pkgconfig + install -d ${D}/${libdir}/pkgconfig + install -m 644 ${S}/${libdir}/pkgconfig/*.pc ${D}/${libdir}/pkgconfig/ + + # Create symbolic link + cd ${D}/${libdir} + ln -s libEGL.so libEGL.so.1 + ln -s libGLESv2.so libGLESv2.so.2 + + if [ "${USE_GLES_WAYLAND}" = "1" ]; then + # Set the "WindowSystem" parameter for wayland + if [ "${GLES}" = "gsx" ]; then + sed -i -e "s/WindowSystem=libpvrDRM_WSEGL.so/WindowSystem=libpvrWAYLAND_WSEGL.so/g" \ + ${D}/${sysconfdir}/powervr.ini + fi + fi + + # Install systemd service + if [ ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)} ]; then + install -d ${D}/${systemd_system_unitdir}/ + install -m 644 ${WORKDIR}/rc.pvr.service ${D}/${systemd_system_unitdir}/ + fi +} + +PACKAGES = "\ + ${PN} \ + ${PN}-dev \ +" + +FILES_${PN} = " \ + ${sysconfdir}/* \ + ${libdir}/* \ + /lib/firmware/rgx.fw \ + /usr/local/bin/* \ +" + +FILES_${PN}-dev = " \ + ${includedir}/* \ + ${libdir}/pkgconfig/* \ +" + +PROVIDES = "virtual/libgles2 virtual/egl" +RPROVIDES_${PN} += " \ + ${GLES}-user-module \ + libgles2-mesa \ + libgles2-mesa-dev \ + libgles2 \ + libgles2-dev \ + libegl \ + libegl1 \ +" + +RDEPENDS_${PN} = " \ + kernel-module-gles \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'libgbm wayland-kms', '', d)} \ +" + +INSANE_SKIP_${PN} = "ldflags build-deps file-rdeps" +INSANE_SKIP_${PN}-dev = "ldflags build-deps file-rdeps" +INSANE_SKIP_${PN} += "arch" +INSANE_SKIP_${PN}-dev += "arch" +INSANE_SKIP_${PN}-dbg = "arch" + +# Skip debug strip of do_populate_sysroot() +INHIBIT_SYSROOT_STRIP = "1" + +# Skip debug split and strip of do_package() +INHIBIT_PACKAGE_DEBUG_SPLIT = "1" +INHIBIT_PACKAGE_STRIP = "1" diff --git a/meta-rcar-gen3/recipes-graphics/gles-module/gles-user-module/0001-EGL-eglext.h-Include-eglmesaext.h-to-avoid-compile-error.patch b/meta-rcar-gen3/recipes-graphics/gles-module/gles-user-module/0001-EGL-eglext.h-Include-eglmesaext.h-to-avoid-compile-error.patch new file mode 100644 index 0000000..b8fde11 --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/gles-module/gles-user-module/0001-EGL-eglext.h-Include-eglmesaext.h-to-avoid-compile-error.patch @@ -0,0 +1,25 @@ +From b1e6a6ea447e01af0a31dfba44510aea23f2ffa8 Mon Sep 17 00:00:00 2001 +From: Tomohiro Komagata <tomohiro.komagata.aj@renesas.com> +Date: Thu, 17 Nov 2016 14:41:05 +0900 +Subject: [PATCH] EGL: eglext.h: Include eglmesaext.h to avoid compile error + +--- + usr/include/EGL/eglext.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/usr/include/EGL/eglext.h b/usr/include/EGL/eglext.h +index de119f6..243da4a 100644 +--- a/usr/include/EGL/eglext.h ++++ b/usr/include/EGL/eglext.h +@@ -645,6 +645,8 @@ EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeNV (void); + #endif /* KHRONOS_SUPPORT_INT64 */ + #endif /* EGL_NV_system_time */ + ++#include <EGL/eglmesaext.h> ++ + #ifdef __cplusplus + } + #endif +-- +1.9.1 + diff --git a/meta-rcar-gen3/recipes-graphics/gles-module/gles-user-module/change-shell.patch b/meta-rcar-gen3/recipes-graphics/gles-module/gles-user-module/change-shell.patch new file mode 100644 index 0000000..1dd22f4 --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/gles-module/gles-user-module/change-shell.patch @@ -0,0 +1,8 @@ +--- a/etc/init.d/rc.pvr 2014-08-01 09:56:47.528824893 +0900 ++++ b/etc/init.d/rc.pvr 2014-08-01 09:56:55.744827677 +0900 +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#!/bin/sh + ############################################################################ ### + #@Copyright Copyright (c) Imagination Technologies Ltd. All Rights Reserved + #@License Strictly Confidential. diff --git a/meta-rcar-gen3/recipes-graphics/gles-module/gles-user-module/rc.pvr.service b/meta-rcar-gen3/recipes-graphics/gles-module/gles-user-module/rc.pvr.service new file mode 100644 index 0000000..fa7ad7b --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/gles-module/gles-user-module/rc.pvr.service @@ -0,0 +1,11 @@ +[Unit] +Description=PowerVR consumer services + +[Service] +ExecStart=/etc/init.d/rc.pvr start +ExecStop=/etc/init.d/rc.pvr stop +Type=oneshot +RemainAfterExit=yes + +[Install] +WantedBy=multi-user.target diff --git a/meta-rcar-gen3/recipes-graphics/images/core-image-renesas-base.inc b/meta-rcar-gen3/recipes-graphics/images/core-image-renesas-base.inc new file mode 100644 index 0000000..c1081ce --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/images/core-image-renesas-base.inc @@ -0,0 +1,67 @@ +require include/iccom-control.inc + +# Basic packages +IMAGE_INSTALL_append = " \ + bash \ + v4l-utils \ + i2c-tools \ +" + +# Support secure environment +IMAGE_INSTALL_append = " \ + optee-linuxdriver \ + optee-linuxdriver-armtz \ + optee-client \ +" + +# Add overrides for selection 32 bit or 64 bit target +OVERRIDES .= ":${TARGET_SYS}" + +# Qos user packages only supports 64bit. +QOS_USER_PKGS = "" +QOS_USER_PKGS_aarch64-poky-linux = " \ + qosif-user-module \ + qosif-tp-user-module \ +" + +# Installation for QoS packages +IMAGE_INSTALL_append = " \ + kernel-module-qos \ + ${QOS_USER_PKGS} \ +" + +# Renesas Basic packages for 32bit +BASIC_32BIT_PKGS = " \ + lib32-coreutils \ + lib32-libstdc++ \ + lib32-optee-client \ +" + +# Installation for 32bit packages +IMAGE_INSTALL_append = " \ + ${@base_conditional("USE_32BIT_PKGS", "1", "${BASIC_32BIT_PKGS}", "", d)} \ +" + +# Kernel modules of ICCOM +ICCOM_KERNEL_PKGS = " \ + kernel-module-iccom-mfis \ + kernel-module-iccom-hwspinlock-sample \ +" + +# User modules of ICCOM only supports 64bit +ICCOM_USER_PKGS = "" +ICCOM_USER_PKGS_aarch64-poky-linux = " \ + iccom-user-module \ + iccom-tp-user-module \ +" + +# ICCOM Packages +ICCOM_PKGS = " \ + ${ICCOM_KERNEL_PKGS} \ + ${ICCOM_USER_PKGS} \ +" + +# Installation for ICCOM Packages +IMAGE_INSTALL_append = " \ + ${@base_conditional("USE_ICCOM", "1", " ${ICCOM_PKGS}", "", d)} \ +" diff --git a/meta-rcar-gen3/recipes-graphics/images/core-image-renesas-mmp-base.inc b/meta-rcar-gen3/recipes-graphics/images/core-image-renesas-mmp-base.inc new file mode 100644 index 0000000..7c85d04 --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/images/core-image-renesas-mmp-base.inc @@ -0,0 +1,96 @@ +require include/multimedia-control.inc +require include/cms-control.inc +require include/adsp-control.inc +require include/dtv-dvd-control.inc +require include/avb-control.inc +require include/omx-control.inc + +# Common Multi Media Packages (MMP) +MULTIMEDIA_PKGS = " \ + packagegroup-multimedia-kernel-modules \ + packagegroup-multimedia-libs \ +" + +# MMP test Packages +MULTIMEDIA_TP_PKGS = " \ + vspmif-tp-user-module \ +" + +# OMX MMP Packages +OMX_MULTIMEDIA_PKGS = " \ + omx-user-module \ +" + +# CMS MMP Packages +CMS_MULTIMEDIA_PKGS = " \ + cms-user-module \ +" + +# Kernel modules of DTV +DTV_KERNEL_PKGS = " \ + kernel-module-scu-src \ + kernel-module-ssp \ + kernel-module-tddmac \ + kernel-module-tsif \ +" + +# DTV Packages +DTV_PKGS = " \ + ${DTV_KERNEL_PKGS} \ + dtv-user-module \ +" + +# DVD Packages +DVD_PKGS = " \ + dvd-user-module \ +" + +# ADSP Packages +ADSP_PKGS = " \ + kernel-module-xtensa-hifi \ + adsp-if-module \ + adsp-fw-module \ +" + +# Kernel modules of AVB +AVB_KERNEL_PKGS = " \ + kernel-module-avb-streaming \ + kernel-module-avb-mch \ + kernel-module-avb-mse \ +" + +# AVB Packages +AVB_PKGS = " \ + ${AVB_KERNEL_PKGS} \ + avbtool \ + linuxptp \ + open-avb-mrpd \ + open-avb-gptp \ + open-avb-maap \ + avb-demoapps-avblauncher \ + avb-demoapps-mrpdummy \ + avb-demoapps-simple \ +" + +# Renesas MMP 32bit packages +MMP_32BIT_PKGS = " \ + ${@base_conditional("USE_MULTIMEDIA", "1", "lib32-packagegroup-multimedia-libs lib32-omx-user-module", "", d)} \ + ${@base_conditional("USE_MULTIMEDIA_TP", "1", "lib32-vspmif-tp-user-module", "", d)} \ + ${@base_conditional("USE_CMS", "1", "lib32-cms-user-module", "", d)} \ + ${@base_conditional("USE_DTV", "1", "lib32-dtv-user-module", "", d)} \ + ${@base_conditional("USE_DVD", "1", "lib32-dvd-user-module", "", d)} \ + ${@base_conditional("USE_ADSP", "1", "lib32-adsp-if-module", "", d)} \ +" + +# Install pkg selection +IMAGE_INSTALL_append = " \ + ${@base_conditional("USE_MULTIMEDIA", "1", " ${MULTIMEDIA_PKGS}", "", d)} \ + ${@base_conditional("USE_MULTIMEDIA_TP", "1", " ${MULTIMEDIA_TP_PKGS}", "", d)} \ + ${@base_conditional("USE_OMX_USER_MODULE", "1", " ${OMX_MULTIMEDIA_PKGS}", "", d)} \ + ${@base_conditional("USE_CMS", "1", " ${CMS_MULTIMEDIA_PKGS}", "", d)} \ + ${@base_conditional("USE_DTV", "1", " ${DTV_PKGS}", "", d)} \ + ${@base_conditional("USE_DVD", "1", " ${DVD_PKGS}", "", d)} \ + ${@base_conditional("USE_ADSP", "1", " ${ADSP_PKGS}", "", d)} \ + ${@base_conditional("USE_AVB", "1", " ${AVB_PKGS}", "", d)} \ + ${@base_conditional("USE_32BIT_MMP", "1", " ${MMP_32BIT_PKGS}", "", d)} \ +" diff --git a/meta-rcar-gen3/recipes-graphics/images/core-image-weston-sdk.bb b/meta-rcar-gen3/recipes-graphics/images/core-image-weston-sdk.bb new file mode 100644 index 0000000..fd4e6a0 --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/images/core-image-weston-sdk.bb @@ -0,0 +1,15 @@ +require recipes-graphics/images/core-image-weston.bb +require core-image-renesas-base.inc +require core-image-weston.inc + +DESCRIPTION = "Image with weston support that includes everything within \ +core-image-weston plus meta-toolchain, development headers and libraries to \ +form a standalone SDK." + +IMAGE_FEATURES += " \ + dev-pkgs tools-sdk \ + tools-debug debug-tweaks \ + ssh-server-openssh \ +" + +IMAGE_INSTALL_append = " kernel-devsrc ltp" diff --git a/meta-rcar-gen3/recipes-graphics/images/core-image-weston.bbappend b/meta-rcar-gen3/recipes-graphics/images/core-image-weston.bbappend new file mode 100644 index 0000000..e30bc2e --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/images/core-image-weston.bbappend @@ -0,0 +1,2 @@ +require core-image-renesas-base.inc +require core-image-weston.inc diff --git a/meta-rcar-gen3/recipes-graphics/images/core-image-weston.inc b/meta-rcar-gen3/recipes-graphics/images/core-image-weston.inc new file mode 100644 index 0000000..28e28d4 --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/images/core-image-weston.inc @@ -0,0 +1,42 @@ +require include/gles-control.inc +require core-image-renesas-mmp-base.inc + +# Wayland basic packages +WAYLAND_BASE_PKGS = " \ + weston-bin \ + alsa-utils \ + alsa-tools \ + libdrm-tests \ + libdrm-kms \ +" + +# GFX for Wayland packages +WAYLAND_GLES_PKGS = "libgbm-dev" + +# GFX driver and library packages +GLES_PKGS = " \ + kernel-module-gles \ + gles-user-module \ +" + +# Gstreamer Packages +GSTREAMER_PKGS = "packagegroup-gstreamer1.0-plugins" + +# 32bit packages for wayland env +WAYLAND_32BIT_PKGS = " \ + lib32-weston \ + lib32-libdrm \ + lib32-libdrm-kms \ + ${@base_conditional("USE_GLES", "1", "lib32-gles-user-module", "", d)} \ +" + +# Install packages for Wayland Env +# default: Basic packages, Gstreamer packages +# optional: GFX packages +IMAGE_INSTALL_append = " \ + ${WAYLAND_BASE_PKGS} \ + ${GSTREAMER_PKGS} \ + ${@base_conditional("USE_GLES", "1", "${GLES_PKGS}", "", d)} \ + ${@base_conditional("USE_GLES_WAYLAND", "1", "${WAYLAND_GLES_PKGS}", "", d)} \ + ${@base_conditional("USE_32BIT_WAYLAND", "1", "${WAYLAND_32BIT_PKGS}", "", d)} \ +" diff --git a/meta-rcar-gen3/recipes-graphics/mesa/mesa-dummy.inc b/meta-rcar-gen3/recipes-graphics/mesa/mesa-dummy.inc new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/mesa/mesa-dummy.inc diff --git a/meta-rcar-gen3/recipes-graphics/mesa/mesa-wayland.inc b/meta-rcar-gen3/recipes-graphics/mesa/mesa-wayland.inc new file mode 100644 index 0000000..660cde3 --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/mesa/mesa-wayland.inc @@ -0,0 +1,36 @@ +# FIXME: can not override PACKAGECONFIG. +PACKAGECONFIG[gles] = "--enable-gles1 --disable-gles2" +PACKAGECONFIG[egl] = "--enable-egl --with-egl-platforms=wayland" + +# Disable the gbm modules of mesa +PACKAGECONFIG_remove = "gbm" + +# Remove the gbm and egl packages. These are provided in other recipes. +PACKAGES_remove = " \ + libgbm-dev libgbm \ + libegl-mesa-dev libegl-mesa \ + libegl-dev libegl \ + libgles2-mesa libgles2-mesa-dev \ +" +INSTALLED_HEADER = "src/egl/wayland/wayland-egl/wayland-egl-priv.h" + +do_install_append() { + # Remove libegl-mesa modules and headers + rm -f ${D}/${libdir}/libEGL.la + rm -f ${D}/${libdir}/libEGL.so* + rm -f ${D}/${libdir}/pkgconfig/egl.pc + rm -rf ${D}/${includedir}/EGL + rm -rf ${D}/${includedir}/KHR + + # For Qt environment + install -Dm 644 ${S}/include/EGL/eglmesaext.h ${D}/${includedir}/EGL/eglmesaext.h + + # install required header for wayland + install -d ${D}/usr/include + install -m 644 ${S}/${INSTALLED_HEADER} ${D}/usr/include/ +} + +FILES_libwayland-egl-dev += " \ + /usr/include \ + /usr/include/*.h \ +" diff --git a/meta-rcar-gen3/recipes-graphics/mesa/mesa_11.%.bbappend b/meta-rcar-gen3/recipes-graphics/mesa/mesa_11.%.bbappend new file mode 100644 index 0000000..e1b7ad2 --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/mesa/mesa_11.%.bbappend @@ -0,0 +1,10 @@ +require include/gles-control.inc + +def map_libs(d): + if base_conditional('USE_GLES_WAYLAND', "1", "1", "0", d) == "1": + return "wayland" + + return "dummy" + +MESATARGET := "${@map_libs(d)}" +include mesa-${MESATARGET}.inc diff --git a/meta-rcar-gen3/recipes-graphics/wayland/libgbm.bb b/meta-rcar-gen3/recipes-graphics/wayland/libgbm.bb new file mode 100644 index 0000000..64b0681 --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/wayland/libgbm.bb @@ -0,0 +1,35 @@ +SUMMARY = "gbm library" +LICENSE = "MIT" +SECTION = "libs" + +LIC_FILES_CHKSUM = " \ + file://gbm.c;beginline=4;endline=22;md5=5cdaac262c876e98e47771f11c7036b5" + +SRCREV = "bc04aefc9d5322f8b2dc1ecb15d0713bbab684b8" +SRC_URI = "git://github.com/renesas-rcar/libgbm;branch=rcar-gen3" + +S = "${WORKDIR}/git" + +COMPATIBLE_MACHINE = "(r8a7795|r8a7796)" +DEPENDS = "wayland-kms" + +inherit autotools pkgconfig + +PACKAGES = " \ + ${PN} \ + ${PN}-dev \ + ${PN}-dbg \ + ${PN}-staticdev \ +" + +FILES_${PN} = " \ + ${libdir}/libgbm.so.* \ + ${libdir}/gbm/libgbm_kms.so.* \ + ${libdir}/gbm/*.so \ + ${libdir}/*.so \ +" +FILES_${PN}-dev += "${libdir}/gbm/*.la" +FILES_${PN}-dbg += "${libdir}/gbm/.debug/*" +FILES_${PN}-staticdev += "${libdir}/gbm/*.a" + +INSANE_SKIP_${PN} += "dev-so" diff --git a/meta-rcar-gen3/recipes-graphics/wayland/libinput/touchpad-serial-synaptics-need-to-fake-new-touches-on-TRIPLETAP.patch b/meta-rcar-gen3/recipes-graphics/wayland/libinput/touchpad-serial-synaptics-need-to-fake-new-touches-on-TRIPLETAP.patch new file mode 100644 index 0000000..b52b496 --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/wayland/libinput/touchpad-serial-synaptics-need-to-fake-new-touches-on-TRIPLETAP.patch @@ -0,0 +1,72 @@ +This is a workaround upstream suggests for use with kernel 4.1. + +Upstream-Status: Inappropriate [temporary work-around] +Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> + + + +From: Peter Hutterer <peter.hutterer@who-t.net> +Date: Mon Aug 3 18:23:12 PDT 2015 +Subject: [PATCH v3 libinput] touchpad: serial synaptics need to fake new touches on TRIPLETAP + +On the 4.1 kernels synaptics pretends to have 3 slots (the serial fw only does +2). This was added to avoid cursor jumps but has since been reverted for 4.2 +(kernel commit dbf3c37086, 4.1.3 is still buggy). In some cases a TRIPLETAP +may be triggered without slot 2 ever activating. + +While there are still those kernels out there, work around this bug by opening +a new touch point where none exists if the fake finger count exceeds the slot +count. + +Reported-by: Jan Alexander Steffens <jan.steffens at gmail.com> +Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net> +Tested-by: Jan Alexander Steffens <jan.steffens at gmail.com> +Reviewed-by: Hans de Goede <hdegoede at redhat.com> +--- +Changes to v2: +- split out the handling instead of having a tmp state variable, see Hans' + comments from v2 + +Mainly sending this to the list again so I have a link to point people to. +If you're on 4.1.x add this patch to your distribution package. + + src/evdev-mt-touchpad.c | 22 ++++++++++++++++------ + 1 file changed, 16 insertions(+), 6 deletions(-) + +diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c +index a683d9a..5ef03d5 100644 +--- a/src/evdev-mt-touchpad.c ++++ b/src/evdev-mt-touchpad.c +@@ -369,13 +369,23 @@ tp_restore_synaptics_touches(struct tp_dispatch *tp, + for (i = 0; i < tp->num_slots; i++) { + struct tp_touch *t = tp_get_touch(tp, i); + +- if (t->state != TOUCH_END) ++ switch(t->state) { ++ case TOUCH_HOVERING: ++ case TOUCH_BEGIN: ++ case TOUCH_UPDATE: + continue; +- +- /* new touch, move it through begin to update immediately */ +- tp_new_touch(tp, t, time); +- tp_begin_touch(tp, t, time); +- t->state = TOUCH_UPDATE; ++ case TOUCH_NONE: ++ /* new touch, move it through to begin immediately */ ++ tp_new_touch(tp, t, time); ++ tp_begin_touch(tp, t, time); ++ break; ++ case TOUCH_END: ++ /* touch just ended ,we need need to restore it to update */ ++ tp_new_touch(tp, t, time); ++ tp_begin_touch(tp, t, time); ++ t->state = TOUCH_UPDATE; ++ break; ++ } + } + } + +-- +2.4.3 + diff --git a/meta-rcar-gen3/recipes-graphics/wayland/libinput_1.4.1.bb b/meta-rcar-gen3/recipes-graphics/wayland/libinput_1.4.1.bb new file mode 100644 index 0000000..c3905f3 --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/wayland/libinput_1.4.1.bb @@ -0,0 +1,23 @@ +SUMMARY = "Library to handle input devices in Wayland compositors" +HOMEPAGE = "http://www.freedesktop.org/wiki/Software/libinput/" +SECTION = "libs" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=2184aef38ff137ed33ce9a63b9d1eb8f" + +DEPENDS = "libevdev udev mtdev" + +SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BP}.tar.xz \ + file://touchpad-serial-synaptics-need-to-fake-new-touches-on-TRIPLETAP.patch \ +" +SRC_URI[md5sum] = "2e7ba577ed74d8d1baeb07dbd4fb912a" +SRC_URI[sha256sum] = "26e7b3ab499358caba499705680ea7e5851af2bd37dc32f2be64181610d6392a" + +inherit autotools pkgconfig + +PACKAGECONFIG ??= "" +PACKAGECONFIG[libunwind] = "--with-libunwind,--without-libunwind,libunwind" +PACKAGECONFIG[libwacom] = "--enable-libwacom,--disable-libwacom,libwacom" +PACKAGECONFIG[gui] = "--enable-event-gui,--disable-event-gui,cairo gtk+3" + +FILES_${PN} += "${libdir}/udev/" diff --git a/meta-rcar-gen3/recipes-graphics/wayland/wayland-kms_1.6.0.bb b/meta-rcar-gen3/recipes-graphics/wayland/wayland-kms_1.6.0.bb new file mode 100644 index 0000000..23ffcca --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/wayland/wayland-kms_1.6.0.bb @@ -0,0 +1,25 @@ +SUMMARY = "KMS library for Wayland" +LICENSE = "MIT" + +LIC_FILES_CHKSUM = " \ + file://wayland-kms.c;beginline=6;endline=24;md5=5cdaac262c876e98e47771f11c7036b5" + +PV_append = "+git${SRCREV}" + +SRCREV = "a1539fe24125d581c53a18e1e6b6d4958f672a77" +SRC_URI = "git://github.com/renesas-rcar/wayland-kms.git;branch=rcar-gen3" + +COMPATIBLE_MACHINE = "(r8a7795|r8a7796)" +S = "${WORKDIR}/git" +DEPENDS = "libdrm wayland gles-user-module" + +inherit autotools pkgconfig + +FILES_${PN} = "${libdir}/libwayland-kms.so.*" +FILES_${PN}-dev = " \ + ${libdir}/libwayland-kms.la \ + ${libdir}/libwayland-kms.so \ + ${libdir}/pkgconfig/* \ + ${includedir}/* \ +" +FILES_${PN}-staticdev += "${libdir}/libwayland-kms.a" diff --git a/meta-rcar-gen3/recipes-graphics/wayland/wayland-protocols_1.7.bb b/meta-rcar-gen3/recipes-graphics/wayland/wayland-protocols_1.7.bb new file mode 100644 index 0000000..1d2f0db --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/wayland/wayland-protocols_1.7.bb @@ -0,0 +1,20 @@ +SUMMARY = "Collection of additional Wayland protocols" +DESCRIPTION = "Wayland protocols that add functionality not \ +available in the Wayland core protocol. Such protocols either add \ +completely new functionality, or extend the functionality of some other \ +protocol either in Wayland core, or some other protocol in \ +wayland-protocols." +HOMEPAGE = "http://wayland.freedesktop.org" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=c7b12b6702da38ca028ace54aae3d484 \ + file://stable/presentation-time/presentation-time.xml;endline=26;md5=4646cd7d9edc9fa55db941f2d3a7dc53" + +SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \ + " +SRC_URI[md5sum] = "9acfc9556f7cfedc44d97af60da66a5f" +SRC_URI[sha256sum] = "635f2a937d318f1fecb97b54074ca211486e38af943868dd0fa82ea38d091c1f" + +inherit allarch autotools pkgconfig + +PACKAGES = "${PN}" +FILES_${PN} += "${datadir}/pkgconfig/wayland-protocols.pc" diff --git a/meta-rcar-gen3/recipes-graphics/wayland/wayland-protocols_1.7.bbappend b/meta-rcar-gen3/recipes-graphics/wayland/wayland-protocols_1.7.bbappend new file mode 100644 index 0000000..561dfd9 --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/wayland/wayland-protocols_1.7.bbappend @@ -0,0 +1,10 @@ +# In YP2.1.2, /sysroot/usr/share/pkgconfig is not included in PKG_CONFIG_PATH. +# An Installation directory is moved to /usr/lib from /usr/share +# In latest master branch, this problem was fixed by e0bcf333. +do_install_append () { + install -d ${D}/${libdir}/pkgconfig + install -m 0644 ${D}/${datadir}/pkgconfig/wayland-protocols.pc ${D}/${libdir}/pkgconfig/ + rm -rf ${D}/${datadir}/pkgconfig +} + +FILES_${PN} += "${libdir}/pkgconfig/wayland-protocols.pc" diff --git a/meta-rcar-gen3/recipes-graphics/wayland/wayland/0001-scanner-Use-unit32_t-instead-of-uint.patch b/meta-rcar-gen3/recipes-graphics/wayland/wayland/0001-scanner-Use-unit32_t-instead-of-uint.patch new file mode 100644 index 0000000..dece95c --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/wayland/wayland/0001-scanner-Use-unit32_t-instead-of-uint.patch @@ -0,0 +1,30 @@ +From 5516d32e694badca35b6c71b02a3f08f650308bf Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Fri, 15 Jul 2016 16:23:48 -0700 +Subject: [PATCH] scanner: Use unit32_t instead of uint + +uint32_t is C99 defined stdint type + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> +Upstream-Status: Submitted +--- + src/scanner.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/scanner.c b/src/scanner.c +index 5f06e8e..10a4023 100644 +--- a/src/scanner.c ++++ b/src/scanner.c +@@ -808,7 +808,7 @@ find_enumeration(struct protocol *protocol, + struct interface *i; + struct enumeration *e; + char *enum_name; +- uint idx = 0, j; ++ uint32_t idx = 0, j; + + for (j = 0; j + 1 < strlen(enum_attribute); j++) { + if (enum_attribute[j] == '.') { +-- +2.1.4 + diff --git a/meta-rcar-gen3/recipes-graphics/wayland/wayland_1.11.0.bb b/meta-rcar-gen3/recipes-graphics/wayland/wayland_1.11.0.bb new file mode 100644 index 0000000..3413406 --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/wayland/wayland_1.11.0.bb @@ -0,0 +1,43 @@ +SUMMARY = "Wayland, a protocol between a compositor and clients" +DESCRIPTION = "Wayland is a protocol for a compositor to talk to its clients \ +as well as a C library implementation of that protocol. The compositor can be \ +a standalone display server running on Linux kernel modesetting and evdev \ +input devices, an X application, or a wayland client itself. The clients can \ +be traditional applications, X servers (rootless or fullscreen) or other \ +display servers." +HOMEPAGE = "http://wayland.freedesktop.org" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=b31d8f53b6aaf2b4985d7dd7810a70d1 \ + file://src/wayland-server.c;endline=24;md5=b8e046164a766bb1ede8ba38e9dcd7ce" + +SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \ + file://0001-scanner-Use-unit32_t-instead-of-uint.patch \ + " +SRC_URI[md5sum] = "fccf680be066e234729d5b69e0bd0fa9" +SRC_URI[sha256sum] = "9540925f7928becfdf5e3b84c70757f6589bf1ceef09bea78784d8e4772c0db0" + +EXTRA_OECONF_class-native = "--disable-documentation --disable-libraries" + +inherit autotools pkgconfig + +BBCLASSEXTEND = "native nativesdk" + +DEPENDS = "expat libxml2 libffi wayland-native" + +EXTRA_OECONF = "--disable-documentation --with-host-scanner" + +# Wayland installs a M4 macro for other projects to use, which uses the target +# pkg-config to find files. Replace pkg-config with pkg-config-native. +do_install_append_class-native() { + sed -e 's,PKG_CHECK_MODULES(.*),,g' \ + -e 's,$PKG_CONFIG,pkg-config-native,g' \ + -i ${D}/${datadir}/aclocal/wayland-scanner.m4 +} + +sysroot_stage_all_append_class-target () { + rm ${SYSROOT_DESTDIR}/${datadir}/aclocal/wayland-scanner.m4 + cp ${STAGING_DATADIR_NATIVE}/aclocal/wayland-scanner.m4 ${SYSROOT_DESTDIR}/${datadir}/aclocal/ +} + +FILES_${PN} = "${libdir}/*${SOLIBS}" +FILES_${PN}-dev += "${bindir} ${datadir}/wayland" diff --git a/meta-rcar-gen3/recipes-graphics/wayland/weston-init.bbappend b/meta-rcar-gen3/recipes-graphics/wayland/weston-init.bbappend new file mode 100644 index 0000000..07dab05 --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/wayland/weston-init.bbappend @@ -0,0 +1,30 @@ +require include/gles-control.inc +require include/multimedia-control.inc + +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" +SRC_URI = " \ + file://init \ + file://weston.service \ + file://weston-start \ +" + +do_install_append() { + # Install weston-start script + install -Dm755 ${WORKDIR}/weston-start ${D}${bindir}/weston-start + sed -i 's,@DATADIR@,${datadir},g' ${D}${bindir}/weston-start + sed -i 's,@LOCALSTATEDIR@,${localstatedir},g' ${D}${bindir}/weston-start + + if [ "X${USE_GLES}" = "X1" ]; then + sed -e "/RequiresMountsFor=\/run/a Wants=rc.pvr.service" \ + -e "/RequiresMountsFor=\/run/a After=rc.pvr.service" \ + -e "s/\$OPTARGS/--idle-time=0 \$OPTARGS/" \ + -i ${D}/${systemd_system_unitdir}/weston.service + fi + + if [ "X${USE_MULTIMEDIA}" = "X1" ]; then + if [ "X${USE_V4L2_RENDERER}" = "X1" ]; then + sed -e "s/\$OPTARGS/--use-v4l2 \$OPTARGS/" \ + -i ${D}/${systemd_system_unitdir}/weston.service + fi + fi +} diff --git a/meta-rcar-gen3/recipes-graphics/wayland/weston-init/init b/meta-rcar-gen3/recipes-graphics/wayland/weston-init/init new file mode 100644 index 0000000..d3e87c6 --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/wayland/weston-init/init @@ -0,0 +1,53 @@ +#!/bin/sh +# +### BEGIN INIT INFO +# Provides: weston +# Required-Start: $local_fs $remote_fs +# Required-Stop: $local_fs $remote_fs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +### END INIT INFO + +if test -e /etc/default/weston ; then + . /etc/default/weston +fi + +killproc() { + pid=`/bin/pidof $1` + [ "$pid" != "" ] && kill $pid +} + +read CMDLINE < /proc/cmdline +for x in $CMDLINE; do + case $x in + weston=false) + echo "Weston disabled" + exit 0; + ;; + esac +done + +case "$1" in + start) + . /etc/profile + + weston-start -- $OPTARGS + ;; + + stop) + echo "Stopping Weston" + killproc weston + ;; + + restart) + $0 stop + sleep 1 + $0 start + ;; + + *) + echo "usage: $0 { start | stop | restart }" + ;; +esac + +exit 0 diff --git a/meta-rcar-gen3/recipes-graphics/wayland/weston-init/weston-start b/meta-rcar-gen3/recipes-graphics/wayland/weston-init/weston-start new file mode 100755 index 0000000..4657513 --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/wayland/weston-init/weston-start @@ -0,0 +1,74 @@ +#!/bin/sh +# Copyright (C) 2016 O.S. Systems Software LTDA. +# Copyright (C) 2016 Freescale Semiconductor + +export PATH="/sbin:/usr/sbin:/bin:/usr/bin" + +usage() { + cat <<EOF + $0 <openvt arguments> -- <weston options> +EOF +} + +## Module support +modules_dir=@DATADIR@/weston-start + +# Add weston extra argument +add_weston_argument() { + weston_args="$weston_args $1" +} + +# Add openvt extra argument +add_openvt_argument() { + openvt_args="$openvt_args $1" +} + +if test $# -lt 2; then + usage + exit 1 +fi + +if [ -n "$WAYLAND_DISPLAY" ]; then + echo "ERROR: A Wayland compositor is already running, nested Weston instance is not supported yet." + exit 1 +fi +if [ -n "$DISPLAY" ]; then + launcher="weston" +else + launcher="weston-launch -u root --" +fi + +openvt_args="-s" +while [ -n "$1" ]; do + if [ "$1" = "--" ]; then + shift + break + fi + openvt_args="$openvt_args $1" + shift +done + +weston_args=$* + +# Load and run modules +if [ -d "$modules_dir" ]; then + for m in "$modules_dir"/*; do + # Skip backup files + if [ "`echo $m | sed -e 's/\~$//'`" != "$m" ]; then + continue + fi + + # process module + . $m + done +fi + +if test -z "$XDG_RUNTIME_DIR"; then + export XDG_RUNTIME_DIR=/run/user/`id -u` + if ! test -d "$XDG_RUNTIME_DIR"; then + mkdir --parents $XDG_RUNTIME_DIR + chmod 0700 $XDG_RUNTIME_DIR + fi +fi + +exec openvt $openvt_args -- $launcher $weston_args --log=@LOCALSTATEDIR@/log/weston.log diff --git a/meta-rcar-gen3/recipes-graphics/wayland/weston-init/weston.service b/meta-rcar-gen3/recipes-graphics/wayland/weston-init/weston.service new file mode 100644 index 0000000..295ffd7 --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/wayland/weston-init/weston.service @@ -0,0 +1,11 @@ +[Unit] +Description=Weston Wayland compositor +After=dbus.service rc.pvr.service + +[Service] +ExecStart=/usr/bin/weston-launch -u root -- $OPTARGS +ExecStop=/usr/bin/killall -s KILL weston +Type=simple + +[Install] +WantedBy=multi-user.target diff --git a/meta-rcar-gen3/recipes-graphics/wayland/weston.inc b/meta-rcar-gen3/recipes-graphics/wayland/weston.inc new file mode 100644 index 0000000..68fd83e --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/wayland/weston.inc @@ -0,0 +1,36 @@ +require include/gles-control.inc +require include/multimedia-control.inc + +PACKAGECONFIG_remove_virtclass-multilib-lib32 = "launch" +DEPENDS_append = " \ + ${@base_conditional('USE_GLES', '1', ' libgbm', '', d)}" + +RDEPENDS_${PN}_append = " \ + ${@base_conditional('USE_GLES', '1', ' libgbm', '', d)} \ + ${@base_conditional('USE_MULTIMEDIA', '1', ' media-ctl', '', d)} \ +" +RDEPENDS_${PN}-examples_append = " \ + ${@base_conditional('USE_GLES', '1', ' libgbm', '', d)}" + +EXTRA_OECONF_append = " \ + ${@base_conditional('USE_GLES', '1', '', \ + ' WESTON_NATIVE_BACKEND="fbdev-backend.so"', d)}" + +PACKAGES_prepend = "${PN}-bin " + +FILES_${PN}-bin = " \ + ${bindir}/weston \ + ${bindir}/weston-terminal \ + ${bindir}/weston-info \ + ${bindir}/weston-launch \ + ${bindir}/wcap-decode \ +" + +FILES_${PN} = " \ + ${libdir}/weston \ + ${datadir} \ + ${libexecdir} \ +" + +USERADD_PACKAGES = "${PN}-bin" +GROUPADD_PARAM_${PN}-bin = "--system weston-launch" diff --git a/meta-rcar-gen3/recipes-graphics/wayland/weston/0001-configure.ac-Fix-wayland-protocols-path.patch b/meta-rcar-gen3/recipes-graphics/wayland/weston/0001-configure.ac-Fix-wayland-protocols-path.patch new file mode 100644 index 0000000..00118d7 --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/wayland/weston/0001-configure.ac-Fix-wayland-protocols-path.patch @@ -0,0 +1,34 @@ +From 1cfc1434a5d385a74de593ec7601674dba39e2fe Mon Sep 17 00:00:00 2001 +From: Jussi Kukkonen <jussi.kukkonen@intel.com> +Date: Wed, 11 May 2016 16:16:30 +0300 +Subject: [PATCH] configure.ac: Fix wayland-protocols path + +The wayland-protocols directory is used during build: Fix the path +to point to sysroot specified in recipe. + +Normally PKG_CONFIG_SYSROOT_DIR could be used in configure.ac but that +breaks multilib weston as it would point to multilib sysroot when the +(allarch) wayland-protocols is actually in the machine sysroot. + +Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> +Upstream-Status: Inappropriate [embedded specific] +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index bc7c329..15a05d3 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -187,7 +187,7 @@ PKG_CHECK_MODULES(LIBINPUT_BACKEND, [libinput >= 0.8.0]) + PKG_CHECK_MODULES(COMPOSITOR, [$COMPOSITOR_MODULES]) + + PKG_CHECK_MODULES(WAYLAND_PROTOCOLS, [wayland-protocols >= 1.2], +- [ac_wayland_protocols_pkgdatadir=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`]) ++ [ac_wayland_protocols_pkgdatadir=${WAYLAND_PROTOCOLS_SYSROOT_DIR}`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`]) + AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, $ac_wayland_protocols_pkgdatadir) + + AC_ARG_ENABLE(wayland-compositor, [ --enable-wayland-compositor],, +-- +2.1.4 + diff --git a/meta-rcar-gen3/recipes-graphics/wayland/weston/0001-make-error-portable.patch b/meta-rcar-gen3/recipes-graphics/wayland/weston/0001-make-error-portable.patch new file mode 100644 index 0000000..148848d --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/wayland/weston/0001-make-error-portable.patch @@ -0,0 +1,80 @@ +From c22e90365d89346258394833cbcad03ff32b2e27 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Fri, 29 May 2015 20:56:00 -0700 +Subject: [PATCH weston] make error() portable + +error() is not posix but gnu extension so may not be available on all +kind of systemsi e.g. musl. + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- +Upstream-Status: Submitted + + configure.ac | 2 ++ + src/weston-error.h | 20 ++++++++++++++++++++ + src/weston-launch.c | 2 +- + 3 files changed, 23 insertions(+), 1 deletion(-) + create mode 100644 src/weston-error.h + +diff --git a/configure.ac b/configure.ac +index 263fc22..f52cd62 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -57,6 +57,8 @@ AC_CHECK_DECL(CLOCK_MONOTONIC,[], + [[#include <time.h>]]) + AC_CHECK_HEADERS([execinfo.h]) + ++AC_CHECK_HEADERS([error.h]) ++ + AC_CHECK_FUNCS([mkostemp strchrnul initgroups posix_fallocate]) + + COMPOSITOR_MODULES="wayland-server >= 1.7.93 pixman-1 >= 0.25.2" +diff --git a/src/weston-error.h b/src/weston-error.h +new file mode 100644 +index 0000000..2089d02 +--- /dev/null ++++ b/src/weston-error.h +@@ -0,0 +1,20 @@ ++#ifndef _WESTON_ERROR_H ++#define _WESTON_ERROR_H ++ ++#if defined(HAVE_ERROR_H) ++#include <error.h> ++#else ++#include <err.h> ++#include <string.h> ++#define _weston_error(S, E, F, ...) do { \ ++ if (E) \ ++ err(S, F ": %s", ##__VA_ARGS__, strerror(E)); \ ++ else \ ++ err(S, F, ##__VA_ARGS__); \ ++} while(0) ++ ++#define error _weston_error ++#endif ++ ++#endif ++ +diff --git a/src/weston-launch.c b/src/weston-launch.c +index 10c66de..3e6d30a 100644 +--- a/src/weston-launch.c ++++ b/src/weston-launch.c +@@ -30,7 +30,6 @@ + #include <poll.h> + #include <errno.h> + +-#include <error.h> + #include <getopt.h> + + #include <sys/types.h> +@@ -56,6 +55,7 @@ + #endif + + #include "weston-launch.h" ++#include "weston-error.h" + + #define DRM_MAJOR 226 + +-- +2.1.4 + diff --git a/meta-rcar-gen3/recipes-graphics/wayland/weston/0001-shared-include-stdint.h-for-int32_t.patch b/meta-rcar-gen3/recipes-graphics/wayland/weston/0001-shared-include-stdint.h-for-int32_t.patch new file mode 100644 index 0000000..91ef727 --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/wayland/weston/0001-shared-include-stdint.h-for-int32_t.patch @@ -0,0 +1,28 @@ +From ba02b8abe4e2afac2bfbf2559972d5059d75a041 Mon Sep 17 00:00:00 2001 +From: Jussi Kukkonen <jussi.kukkonen@intel.com> +Date: Sat, 16 Jul 2016 22:50:19 +0300 +Subject: [PATCH weston] shared: include stdint.h for int32_t + +This fixes build on musl. + +Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> +Upstream-Status: Submitted +--- + shared/xalloc.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/shared/xalloc.h b/shared/xalloc.h +index 85fccb4..484de2d 100644 +--- a/shared/xalloc.h ++++ b/shared/xalloc.h +@@ -30,6 +30,7 @@ + extern "C" { + #endif + ++#include <stdint.h> + #include <stdlib.h> + #include <string.h> + +-- +2.1.4 + diff --git a/meta-rcar-gen3/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch b/meta-rcar-gen3/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch new file mode 100644 index 0000000..5542036 --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch @@ -0,0 +1,173 @@ +From d02226b3d5872b184c1d50c7f4706ac9467ffb81 Mon Sep 17 00:00:00 2001 +From: Tom Hochstein <tom.hochstein@nxp.com> +Date: Fri, 15 Jul 2016 11:00:15 +0300 +Subject: [PATCH] weston-launch: Provide a default version that doesn't require + PAM + +weston-launch requires PAM for starting weston as a non-root user. + +Since starting weston as root is a valid use case by itself, if +PAM is not available, provide a default version of weston-launch +without non-root-user support. + +Upstream-Status: Pending + +Signed-off-by: Tom Hochstein <tom.hochstein@nxp.com> +--- + configure.ac | 9 +++++++-- + src/weston-launch.c | 20 ++++++++++++++++++++ + 2 files changed, 27 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 32fdde7..240966f 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -416,13 +416,17 @@ AC_ARG_ENABLE(resize-optimization, + AS_IF([test "x$enable_resize_optimization" = "xyes"], + [AC_DEFINE([USE_RESIZE_POOL], [1], [Use resize memory pool as a performance optimization])]) + ++AC_ARG_WITH(pam, ++ AS_HELP_STRING([--with-pam], [Use PAM]), ++ [use_pam=$withval], [use_pam=yes]) + AC_ARG_ENABLE(weston-launch, [ --enable-weston-launch],, enable_weston_launch=yes) + AM_CONDITIONAL(BUILD_WESTON_LAUNCH, test x$enable_weston_launch == xyes) +-if test x$enable_weston_launch == xyes; then ++if test x$enable_weston_launch = xyes -a x$use_pam = xyes; then + WESTON_SEARCH_LIBS([PAM], [pam], [pam_open_session], [have_pam=yes], [have_pam=no]) + if test x$have_pam == xno; then +- AC_ERROR([weston-launch requires pam]) ++ AC_ERROR([PAM support is explicitly requested, but libpam couldn't be found]) + fi ++ AC_DEFINE([HAVE_PAM], [1], [Define if PAM is available]) + fi + + AM_CONDITIONAL(HAVE_PANGO, test "x$have_pango" = "xyes") +@@ -673,6 +677,7 @@ AC_MSG_RESULT([ + Enable developer documentation ${enable_devdocs} + + weston-launch utility ${enable_weston_launch} ++ PAM support ${use_pam} + systemd-login support ${have_systemd_login} + systemd notify support ${enable_systemd_notify} + +diff --git a/src/weston-launch.c b/src/weston-launch.c +index b8b2ba0..a865061 100644 +--- a/src/weston-launch.c ++++ b/src/weston-launch.c +@@ -51,7 +51,9 @@ + + #include <pwd.h> + #include <grp.h> ++#ifdef HAVE_PAM + #include <security/pam_appl.h> ++#endif + + #ifdef HAVE_SYSTEMD_LOGIN + #include <systemd/sd-login.h> +@@ -93,8 +95,10 @@ drmSetMaster(int drm_fd) + #endif + + struct weston_launch { ++#ifdef HAVE_PAM + struct pam_conv pc; + pam_handle_t *ph; ++#endif + int tty; + int ttynr; + int sock[2]; +@@ -181,6 +185,7 @@ weston_launch_allowed(struct weston_launch *wl) + return false; + } + ++#ifdef HAVE_PAM + static int + pam_conversation_fn(int msg_count, + const struct pam_message **messages, +@@ -221,6 +226,7 @@ setup_pam(struct weston_launch *wl) + + return 0; + } ++#endif + + static int + setup_launcher_socket(struct weston_launch *wl) +@@ -414,6 +420,7 @@ quit(struct weston_launch *wl, int status) + close(wl->signalfd); + close(wl->sock[0]); + ++#ifdef HAVE_PAM + if (wl->new_user) { + err = pam_close_session(wl->ph, 0); + if (err) +@@ -421,6 +428,7 @@ quit(struct weston_launch *wl, int status) + err, pam_strerror(wl->ph, err)); + pam_end(wl->ph, err); + } ++#endif + + if (ioctl(wl->tty, KDSKBMUTE, 0) && + ioctl(wl->tty, KDSKBMODE, wl->kb_mode)) +@@ -600,6 +608,7 @@ setup_session(struct weston_launch *wl) + setenv("HOME", wl->pw->pw_dir, 1); + setenv("SHELL", wl->pw->pw_shell, 1); + ++#ifdef HAVE_PAM + env = pam_getenvlist(wl->ph); + if (env) { + for (i = 0; env[i]; ++i) { +@@ -608,6 +617,7 @@ setup_session(struct weston_launch *wl) + } + free(env); + } ++#endif + } + + static void +@@ -665,7 +675,9 @@ static void + help(const char *name) + { + fprintf(stderr, "Usage: %s [args...] [-- [weston args..]]\n", name); ++#ifdef HAVE_PAM + fprintf(stderr, " -u, --user Start session as specified username\n"); ++#endif + fprintf(stderr, " -t, --tty Start session on alternative tty\n"); + fprintf(stderr, " -v, --verbose Be verbose\n"); + fprintf(stderr, " -h, --help Display this help message\n"); +@@ -678,7 +690,9 @@ main(int argc, char *argv[]) + int i, c; + char *tty = NULL; + struct option opts[] = { ++#ifdef HAVE_PAM + { "user", required_argument, NULL, 'u' }, ++#endif + { "tty", required_argument, NULL, 't' }, + { "verbose", no_argument, NULL, 'v' }, + { "help", no_argument, NULL, 'h' }, +@@ -690,9 +704,13 @@ main(int argc, char *argv[]) + while ((c = getopt_long(argc, argv, "u:t::vh", opts, &i)) != -1) { + switch (c) { + case 'u': ++#ifdef HAVE_PAM + wl.new_user = optarg; + if (getuid() != 0) + error(1, 0, "Permission denied. -u allowed for root only"); ++#else ++ error(1, 0, "-u is unsupported in this weston-launch build"); ++#endif + break; + case 't': + tty = optarg; +@@ -730,8 +748,10 @@ main(int argc, char *argv[]) + if (setup_tty(&wl, tty) < 0) + exit(EXIT_FAILURE); + ++#ifdef HAVE_PAM + if (wl.new_user && setup_pam(&wl) < 0) + exit(EXIT_FAILURE); ++#endif + + if (setup_launcher_socket(&wl) < 0) + exit(EXIT_FAILURE); +-- +2.1.4 + diff --git a/meta-rcar-gen3/recipes-graphics/wayland/weston/make-weston-launch-exit-for-unrecognized-option.patch b/meta-rcar-gen3/recipes-graphics/wayland/weston/make-weston-launch-exit-for-unrecognized-option.patch new file mode 100644 index 0000000..0c408a4 --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/wayland/weston/make-weston-launch-exit-for-unrecognized-option.patch @@ -0,0 +1,33 @@ +From e8b615250f700f7854b423aaaf0a0aeea92c05a9 Mon Sep 17 00:00:00 2001 +From: Tom Hochstein <tom.hochstein@nxp.com> +Date: Sat, 7 May 2016 08:51:58 -0300 +Subject: [PATCH] weston-launch: Handle invalid command line options +Organization: O.S. Systems Software LTDA. + +Exit the program if an unrecognized command line option is found. + +Upstream-Status: Submitted + +Signed-off-by: Tom Hochstein <tom.hochstein@nxp.com> +Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> +--- + + src/weston-launch.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/weston-launch.c b/src/weston-launch.c +index b8dfb17..9987d8e 100644 +--- a/src/weston-launch.c ++++ b/src/weston-launch.c +@@ -703,6 +703,8 @@ main(int argc, char *argv[]) + case 'h': + help("weston-launch"); + exit(EXIT_FAILURE); ++ default: ++ exit(EXIT_FAILURE); + } + } + +-- +2.8.2 + diff --git a/meta-rcar-gen3/recipes-graphics/wayland/weston/weston.desktop b/meta-rcar-gen3/recipes-graphics/wayland/weston/weston.desktop new file mode 100644 index 0000000..1086ae8 --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/wayland/weston/weston.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Application +Name=Weston +Comment=Wayland Compostitor +Exec=weston +Icon=weston +Terminal=false +Categories=Utility; diff --git a/meta-rcar-gen3/recipes-graphics/wayland/weston/weston.ini b/meta-rcar-gen3/recipes-graphics/wayland/weston/weston.ini new file mode 100644 index 0000000..f31c290 --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/wayland/weston/weston.ini @@ -0,0 +1,2 @@ +[core] +repaint-window=34 diff --git a/meta-rcar-gen3/recipes-graphics/wayland/weston/weston.png b/meta-rcar-gen3/recipes-graphics/wayland/weston/weston.png Binary files differnew file mode 100644 index 0000000..ea8b7e0 --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/wayland/weston/weston.png diff --git a/meta-rcar-gen3/recipes-graphics/wayland/weston/weston_v4l2.ini b/meta-rcar-gen3/recipes-graphics/wayland/weston/weston_v4l2.ini new file mode 100644 index 0000000..8e2e70f --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/wayland/weston/weston_v4l2.ini @@ -0,0 +1,6 @@ +[core] +repaint-window=34 + +[v4l2-renderer] +device=/dev/media1 +device-module=vsp2 diff --git a/meta-rcar-gen3/recipes-graphics/wayland/weston/xwayland.weston-start b/meta-rcar-gen3/recipes-graphics/wayland/weston/xwayland.weston-start new file mode 100644 index 0000000..b483c97 --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/wayland/weston/xwayland.weston-start @@ -0,0 +1,7 @@ +#!/bin/sh + +if type Xwayland >/dev/null 2>/dev/null; then + mkdir -p /tmp/.X11-unix + + add_weston_argument "--modules=xwayland.so" +fi diff --git a/meta-rcar-gen3/recipes-graphics/wayland/weston_1.11.0.bb b/meta-rcar-gen3/recipes-graphics/wayland/weston_1.11.0.bb new file mode 100644 index 0000000..3ad309d --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/wayland/weston_1.11.0.bb @@ -0,0 +1,117 @@ +SUMMARY = "Weston, a Wayland compositor" +DESCRIPTION = "Weston is the reference implementation of a Wayland compositor" +HOMEPAGE = "http://wayland.freedesktop.org" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=d79ee9e66bb0f95d3386a7acae780b70 \ + file://src/compositor.c;endline=23;md5=1d535fed266cf39f6d8c0647f52ac331" + +SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \ + file://weston.png \ + file://weston.desktop \ + file://0001-make-error-portable.patch \ + file://0001-configure.ac-Fix-wayland-protocols-path.patch \ + file://0001-shared-include-stdint.h-for-int32_t.patch \ + file://xwayland.weston-start \ + file://make-weston-launch-exit-for-unrecognized-option.patch \ + file://0001-weston-launch-Provide-a-default-version-that-doesn-t.patch \ +" +SRC_URI[md5sum] = "bc6f90a2039163804aecfa663b69c4c2" +SRC_URI[sha256sum] = "05e086e9f186a06843b9f7a5e1abf19347b1a6e4be26d7e74927abc17b6b7125" + +inherit autotools pkgconfig useradd distro_features_check +# depends on virtual/egl +REQUIRED_DISTRO_FEATURES = "opengl" + +DEPENDS = "libxkbcommon gdk-pixbuf pixman cairo glib-2.0 jpeg" +DEPENDS += "wayland wayland-protocols libinput virtual/egl pango wayland-native" + +EXTRA_OECONF = "--enable-setuid-install \ + --disable-rpi-compositor \ + --disable-rdp-compositor \ + WAYLAND_PROTOCOLS_SYSROOT_DIR=${STAGING_DIR}/${MACHINE} \ + " +EXTRA_OECONF[vardepsexclude] = "MACHINE" + +EXTRA_OECONF_append_qemux86 = "\ + WESTON_NATIVE_BACKEND=fbdev-backend.so \ + " +EXTRA_OECONF_append_qemux86-64 = "\ + WESTON_NATIVE_BACKEND=fbdev-backend.so \ + " +PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'kms fbdev wayland egl', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'x11 wayland', 'xwayland', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \ + clients launch" +# +# Compositor choices +# +# Weston on KMS +PACKAGECONFIG[kms] = "--enable-drm-compositor,--disable-drm-compositor,drm udev virtual/mesa mtdev" +# Weston on Wayland (nested Weston) +PACKAGECONFIG[wayland] = "--enable-wayland-compositor,--disable-wayland-compositor,virtual/mesa" +# Weston on X11 +PACKAGECONFIG[x11] = "--enable-x11-compositor,--disable-x11-compositor,virtual/libx11 libxcb libxcb libxcursor cairo" +# Headless Weston +PACKAGECONFIG[headless] = "--enable-headless-compositor,--disable-headless-compositor" +# Weston on framebuffer +PACKAGECONFIG[fbdev] = "--enable-fbdev-compositor,--disable-fbdev-compositor,udev mtdev" +# weston-launch +PACKAGECONFIG[launch] = "--enable-weston-launch,--disable-weston-launch,drm" +# VA-API desktop recorder +PACKAGECONFIG[vaapi] = "--enable-vaapi-recorder,--disable-vaapi-recorder,libva" +# Weston with EGL support +PACKAGECONFIG[egl] = "--enable-egl --enable-simple-egl-clients,--disable-egl --disable-simple-egl-clients,virtual/egl" +# Weston with cairo glesv2 support +PACKAGECONFIG[cairo-glesv2] = "--with-cairo-glesv2,--with-cairo=image,cairo" +# Weston with lcms support +PACKAGECONFIG[lcms] = "--enable-lcms,--disable-lcms,lcms" +# Weston with webp support +PACKAGECONFIG[webp] = "--with-webp,--without-webp,libwebp" +# Weston with unwinding support +PACKAGECONFIG[libunwind] = "--enable-libunwind,--disable-libunwind,libunwind" +# Weston with systemd-login support +PACKAGECONFIG[systemd] = "--enable-systemd-login,--disable-systemd-login,systemd dbus" +# Weston with Xwayland support (requires X11 and Wayland) +PACKAGECONFIG[xwayland] = "--enable-xwayland,--disable-xwayland" +# colord CMS support +PACKAGECONFIG[colord] = "--enable-colord,--disable-colord,colord" +# Clients support +PACKAGECONFIG[clients] = "--enable-clients --enable-simple-clients --enable-demo-clients-install,--disable-clients --disable-simple-clients" +# Weston with PAM support +PACKAGECONFIG[pam] = "--with-pam,--without-pam,libpam" + +do_install_append() { + # Weston doesn't need the .la files to load modules, so wipe them + rm -f ${D}/${libdir}/weston/*.la + + # If X11, ship a desktop file to launch it + if [ "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}" = "x11" ]; then + install -d ${D}${datadir}/applications + install ${WORKDIR}/weston.desktop ${D}${datadir}/applications + + install -d ${D}${datadir}/icons/hicolor/48x48/apps + install ${WORKDIR}/weston.png ${D}${datadir}/icons/hicolor/48x48/apps + fi + + if [ "${@bb.utils.contains('PACKAGECONFIG', 'xwayland', 'yes', 'no', d)}" = "yes" ]; then + install -Dm 644 ${WORKDIR}/xwayland.weston-start ${D}${datadir}/weston-start/xwayland + fi +} + +PACKAGE_BEFORE_PN += "${@bb.utils.contains('PACKAGECONFIG', 'xwayland', '${PN}-xwayland', '', d)}" +PACKAGES += "${PN}-examples" + +FILES_${PN} = "${bindir}/weston ${bindir}/weston-terminal ${bindir}/weston-info ${bindir}/weston-launch ${bindir}/wcap-decode ${libexecdir} ${libdir}/${BPN}/*.so ${datadir}" +FILES_${PN}-examples = "${bindir}/*" + +FILES_${PN}-xwayland = "${libdir}/${BPN}/xwayland.so" +RDEPENDS_${PN}-xwayland += "xserver-xorg-xwayland" + +RDEPENDS_${PN} += "xkeyboard-config" +RRECOMMENDS_${PN} = "liberation-fonts" +RRECOMMENDS_${PN}-dev += "wayland-protocols" + +USERADD_PACKAGES = "${PN}" +GROUPADD_PARAM_${PN} = "--system weston-launch" diff --git a/meta-rcar-gen3/recipes-graphics/wayland/weston_1.11.0.bbappend b/meta-rcar-gen3/recipes-graphics/wayland/weston_1.11.0.bbappend new file mode 100644 index 0000000..48e49dc --- /dev/null +++ b/meta-rcar-gen3/recipes-graphics/wayland/weston_1.11.0.bbappend @@ -0,0 +1,44 @@ +require weston.inc + +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" + +BRANCH = "rcar-gen3/1.11.0/gl-fallback" + +SRCREV = "ef4fdad7fc6549493c244b6e657ec00565408497" + +SRC_URI = " \ + git://github.com/renesas-rcar/weston.git;branch=${BRANCH} \ + file://weston.png \ + file://weston.desktop \ + file://0001-make-error-portable.patch \ + file://0001-configure.ac-Fix-wayland-protocols-path.patch \ + file://0001-shared-include-stdint.h-for-int32_t.patch \ + file://xwayland.weston-start \ + file://make-weston-launch-exit-for-unrecognized-option.patch \ + file://0001-weston-launch-Provide-a-default-version-that-doesn-t.patch \ + file://weston.ini \ + file://weston_v4l2.ini \ +" + +S = "${WORKDIR}/git" + +PACKAGECONFIG_append = " \ + ${@base_conditional('USE_MULTIMEDIA', '1', ' v4l2', '', d)} \ +" +PACKAGECONFIG[v4l2] = " --enable-v4l2, --disable-v4l2,,kernel-module-vsp2driver" + +do_install_append() { + if [ "X${USE_MULTIMEDIA}" = "X1" ]; then + # install weston.ini as sample settings of v4l2-renderer + install -d ${D}/${sysconfdir}/xdg/weston + install -m 644 ${WORKDIR}/weston_v4l2.ini ${D}/${sysconfdir}/xdg/weston/weston.ini + else + # install weston.ini as sample settings of gl-renderer + install -d ${D}/${sysconfdir}/xdg/weston + install -m 644 ${WORKDIR}/weston.ini ${D}/${sysconfdir}/xdg/weston/ + fi +} + +FILES_${PN}_append = " \ + ${sysconfdir}/xdg/weston/weston.ini \ +" |