package/weston-imx: split weston-imx off from weston

Stock weston has been migrated to meson, now the only buildsystem
starting with version 8, but the IMX fork is still stuck With the
older version 6, which only has the autotools buildsystem.

As a consequence, either we make weston a hybrid package that calls
to the appropriate package macro infra, or we split the IMX fork off
to its own package.

meson and autotools have two different ways to express passing options,
so we can't factorise the code paths to support both buildsystems:
we'd need to duplicate those depending on the variant used.

So, it's much more sensible to spin he IMX variant away. Besides, that
will make it easier to drop it, should it eventually gets merged
upstream (or the fork just dies off).

We ensure that the two variants, vanilla and IMX, can't get selected at
the same time, by making weston-imx depend on !weston, and hiding it
behind IMX conditionals.

Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
[yann.morin.1998@free.fr:
  - drop !BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL dependency from stock weston
  - make weston-imx depends on !weston
  - rework commit log
]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
This commit is contained in:
James Hilliard 2020-02-02 00:16:44 -07:00 committed by Yann E. MORIN
parent 307fd6f517
commit 4c58c0ace1
6 changed files with 262 additions and 18 deletions

View File

@ -342,6 +342,7 @@ comment "QT libraries and helper libraries"
endif
source "package/tekui/Config.in"
source "package/weston/Config.in"
source "package/weston-imx/Config.in"
source "package/x11r7/Config.in"
comment "X applications"

View File

@ -0,0 +1,115 @@
comment "weston-imx needs udev and a toolchain w/ locale, threads, dynamic library, headers >= 3.0"
depends on !BR2_PACKAGE_HAS_UDEV || !BR2_TOOLCHAIN_HAS_THREADS || \
!BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 || BR2_STATIC_LIBS || \
!BR2_ENABLE_LOCALE
depends on BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL
depends on !BR2_PACKAGE_WESTON
comment "weston-imx needs imx-gpu-viv with wyalnd output"
depends on (BR2_arm && BR2_ARM_EABIHF) || BR2_aarch64 # imx-gpu-viv
depends on !BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL
depends on !BR2_PACKAGE_WESTON
config BR2_PACKAGE_WESTON_IMX
bool "weston-imx"
depends on !BR2_STATIC_LIBS # wayland
depends on BR2_TOOLCHAIN_HAS_THREADS # wayland
depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
depends on BR2_ENABLE_LOCALE # libinput
depends on BR2_PACKAGE_HAS_UDEV
depends on BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL
depends on !BR2_PACKAGE_WESTON
select BR2_PACKAGE_WAYLAND
select BR2_PACKAGE_WAYLAND_PROTOCOLS
select BR2_PACKAGE_LIBXKBCOMMON
select BR2_PACKAGE_CAIRO
select BR2_PACKAGE_CAIRO_PNG
select BR2_PACKAGE_LIBPNG
select BR2_PACKAGE_JPEG
select BR2_PACKAGE_LIBINPUT
select BR2_PACKAGE_LIBDRM
# Runtime dependency
select BR2_PACKAGE_XKEYBOARD_CONFIG
# Make sure at least one compositor is selected.
select BR2_PACKAGE_WESTON_IMX_FBDEV if !BR2_PACKAGE_WESTON_IMX_HAS_COMPOSITOR
help
Weston is the reference implementation of a Wayland
compositor, and a useful compositor in its own right.
Weston has various backends that lets it run on Linux kernel
modesetting and evdev input as well as under X11.
http://wayland.freedesktop.org/
if BR2_PACKAGE_WESTON_IMX
# Helper to make sure at least one compositor is selected.
config BR2_PACKAGE_WESTON_IMX_HAS_COMPOSITOR
bool
config BR2_PACKAGE_WESTON_IMX_DRM
bool "DRM compositor"
depends on BR2_PACKAGE_MESA3D_OPENGL_EGL
select BR2_PACKAGE_WESTON_IMX_HAS_COMPOSITOR
# Uses libgbm from mesa3d
comment "DRM compositor needs an OpenGL EGL backend provided by mesa3d"
depends on !BR2_PACKAGE_MESA3D_OPENGL_EGL
config BR2_PACKAGE_WESTON_IMX_FBDEV
bool "fbdev compositor"
# FreeRDP needs threads and !static, already the case for weston
config BR2_PACKAGE_WESTON_IMX_RDP
bool "RDP compositor"
depends on BR2_USE_MMU # freerdp, libglib2
depends on BR2_TOOLCHAIN_HAS_SYNC_4
depends on BR2_USE_WCHAR # freerdp
depends on BR2_INSTALL_LIBSTDCPP # freerdp
select BR2_PACKAGE_FREERDP
select BR2_PACKAGE_WESTON_IMX_HAS_COMPOSITOR
help
This enables the RDP backend, which allows accessing weston
through the network with any RDP-compliant client.
Please note that one must pass those options to weston for RDP
to be functional:
--rdp-tls-cert=/path/to/server.crt
--rdp-tls-key=/path/to/server.key
By default, Buildroot installs such files in
/etc/freerdp/server/ so you may want to change them in a
post-build script or a rootfs overlay.
comment "RDP compositor needs a toolchain w/ wchar, C++"
depends on BR2_USE_MMU
depends on BR2_TOOLCHAIN_HAS_SYNC_4
depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP
config BR2_PACKAGE_WESTON_IMX_X11
bool "X11 compositor"
depends on BR2_PACKAGE_XORG7
select BR2_PACKAGE_LIBXCB
select BR2_PACKAGE_XLIB_LIBX11
select BR2_PACKAGE_WESTON_IMX_HAS_COMPOSITOR
comment "X11 compositor needs X.org enabled"
depends on !BR2_PACKAGE_XORG7
config BR2_PACKAGE_WESTON_IMX_XWAYLAND
bool "XWayland support"
depends on BR2_PACKAGE_XORG7
depends on BR2_PACKAGE_LIBEPOXY
select BR2_PACKAGE_CAIRO
select BR2_PACKAGE_LIBXCB
select BR2_PACKAGE_XLIB_LIBX11
select BR2_PACKAGE_XLIB_LIBXCURSOR
comment "XWayland support needs libepoxy and X.org enabled"
depends on !BR2_PACKAGE_XORG7 || !BR2_PACKAGE_LIBEPOXY
config BR2_PACKAGE_WESTON_IMX_DEMO_CLIENTS
bool "demo clients"
help
This enables the installation of Weston's demo clients.
endif

View File

@ -0,0 +1,2 @@
# locally computed
sha256 f39f7a24a01b023aa204ad47977a6476c17a307769f29d408621a05b5cbbcfc7 weston-imx-rel_imx_4.9.51_8mq_ga.tar.gz

View File

@ -0,0 +1,144 @@
################################################################################
#
# weston-imx
#
################################################################################
WESTON_IMX_VERSION = rel_imx_4.9.51_8mq_ga
WESTON_IMX_SITE = https://source.codeaurora.org/external/imx/weston-imx
WESTON_IMX_SITE_METHOD = git
WESTON_IMX_AUTORECONF = YES
WESTON_IMX_LICENSE = MIT
WESTON_IMX_LICENSE_FILES = COPYING
WESTON_IMX_DEPENDENCIES = host-pkgconf wayland wayland-protocols \
libxkbcommon pixman libpng jpeg udev cairo libinput libdrm \
$(if $(BR2_PACKAGE_WEBP),webp)
WESTON_IMX_CONF_OPTS = \
--with-dtddir=$(STAGING_DIR)/usr/share/wayland \
--disable-headless-compositor \
--disable-colord \
--disable-devdocs \
--disable-setuid-install
WESTON_IMX_MAKE_OPTS = \
WAYLAND_PROTOCOLS_DATADIR=$(STAGING_DIR)/usr/share/wayland-protocols
# Uses VIDIOC_EXPBUF, only available from 3.8+
ifeq ($(BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8),)
WESTON_IMX_CONF_OPTS += --disable-simple-dmabuf-v4l-client
endif
ifeq ($(BR2_PACKAGE_DBUS),y)
WESTON_IMX_CONF_OPTS += --enable-dbus
WESTON_IMX_DEPENDENCIES += dbus
else
WESTON_IMX_CONF_OPTS += --disable-dbus
endif
# weston-launch must be u+s root in order to work properly
ifeq ($(BR2_PACKAGE_LINUX_PAM),y)
define WESTON_IMX_PERMISSIONS
/usr/bin/weston-launch f 4755 0 0 - - - - -
endef
define WESTON_IMX_USERS
- - weston-launch -1 - - - - Weston launcher group
endef
WESTON_IMX_CONF_OPTS += --enable-weston-launch
WESTON_IMX_DEPENDENCIES += linux-pam
else
WESTON_IMX_CONF_OPTS += --disable-weston-launch
endif
ifeq ($(BR2_PACKAGE_IMX_GPU_G2D),y)
WESTON_IMX_DEPENDENCIES += imx-gpu-g2d
# --enable-imxg2d actually disables it, so no CONF_OPTS
else
WESTON_IMX_CONF_OPTS += --disable-imxg2d
endif
ifeq ($(BR2_PACKAGE_HAS_LIBEGL_WAYLAND)$(BR2_PACKAGE_HAS_LIBGLES),yy)
WESTON_IMX_CONF_OPTS += --enable-egl
WESTON_IMX_DEPENDENCIES += libegl libgles
else
WESTON_IMX_CONF_OPTS += \
--disable-egl \
--disable-simple-dmabuf-drm-client \
--disable-simple-egl-clients
endif
ifeq ($(BR2_PACKAGE_WESTON_IMX_RDP),y)
WESTON_IMX_DEPENDENCIES += freerdp
WESTON_IMX_CONF_OPTS += --enable-rdp-compositor
else
WESTON_IMX_CONF_OPTS += --disable-rdp-compositor
endif
ifeq ($(BR2_PACKAGE_WESTON_IMX_FBDEV),y)
WESTON_IMX_CONF_OPTS += \
--enable-fbdev-compositor \
WESTON_IMX_NATIVE_BACKEND=fbdev-backend.so
else
WESTON_IMX_CONF_OPTS += --disable-fbdev-compositor
endif
ifeq ($(BR2_PACKAGE_WESTON_IMX_DRM),y)
WESTON_IMX_CONF_OPTS += \
--enable-drm-compositor \
WESTON_IMX_NATIVE_BACKEND=drm-backend.so
else
WESTON_IMX_CONF_OPTS += --disable-drm-compositor
endif
ifeq ($(BR2_PACKAGE_WESTON_IMX_X11),y)
WESTON_IMX_CONF_OPTS += \
--enable-x11-compositor \
WESTON_IMX_NATIVE_BACKEND=x11-backend.so
WESTON_IMX_DEPENDENCIES += libxcb xlib_libX11
else
WESTON_IMX_CONF_OPTS += --disable-x11-compositor
endif
ifeq ($(BR2_PACKAGE_WESTON_IMX_XWAYLAND),y)
WESTON_IMX_CONF_OPTS += --enable-xwayland
WESTON_IMX_DEPENDENCIES += cairo libepoxy libxcb xlib_libX11 xlib_libXcursor
else
WESTON_IMX_CONF_OPTS += --disable-xwayland
endif
ifeq ($(BR2_PACKAGE_LIBVA),y)
WESTON_IMX_CONF_OPTS += --enable-vaapi-recorder
WESTON_IMX_DEPENDENCIES += libva
else
WESTON_IMX_CONF_OPTS += --disable-vaapi-recorder
endif
ifeq ($(BR2_PACKAGE_LCMS2),y)
WESTON_IMX_CONF_OPTS += --enable-lcms
WESTON_IMX_DEPENDENCIES += lcms2
else
WESTON_IMX_CONF_OPTS += --disable-lcms
endif
ifeq ($(BR2_PACKAGE_SYSTEMD),y)
WESTON_IMX_CONF_OPTS += --enable-systemd-login --enable-systemd-notify
WESTON_IMX_DEPENDENCIES += systemd
else
WESTON_IMX_CONF_OPTS += --disable-systemd-login --disable-systemd-notify
endif
ifeq ($(BR2_PACKAGE_LIBXML2),y)
WESTON_IMX_CONF_OPTS += --enable-junit-xml
WESTON_IMX_DEPENDENCIES += libxml2
else
WESTON_IMX_CONF_OPTS += --disable-junit-xml
endif
ifeq ($(BR2_PACKAGE_WESTON_IMX_DEMO_CLIENTS),y)
WESTON_IMX_CONF_OPTS += --enable-demo-clients-install
else
WESTON_IMX_CONF_OPTS += --disable-demo-clients-install
endif
$(eval $(autotools-package))

View File

@ -3,5 +3,3 @@ md5 e7b10710ef1eac82258f97bfd41fe534 weston-6.0.1.tar.xz
sha1 3b39e454b3dc8dc32598790cfcc65728b448378b weston-6.0.1.tar.xz
sha256 bf2f6d5aae2e11cabb6bd69a76bcf9edb084f8c3e14ca769bea7234a513155b4 weston-6.0.1.tar.xz
sha512 3da04ff9b884480ce0824950347185e55584e3938021fe62014423d3d51577eafdda8de650a5de6eb37a842130c9cb14c7a952a560f6be93ff973164363af3d9 weston-6.0.1.tar.xz
# locally computed
sha256 0f0de7b7b1f65870139c95dde7abc19ed305631ae7c5d37c386db40cde108632 weston-rel_imx_4.9.51_8mq_ga.tar.gz

View File

@ -4,16 +4,9 @@
#
################################################################################
ifeq ($(BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL),y)
WESTON_VERSION = rel_imx_4.9.51_8mq_ga
WESTON_SITE = https://source.codeaurora.org/external/imx/weston-imx
WESTON_SITE_METHOD = git
WESTON_AUTORECONF = YES
else
WESTON_VERSION = 6.0.1
WESTON_SITE = http://wayland.freedesktop.org/releases
WESTON_SOURCE = weston-$(WESTON_VERSION).tar.xz
endif
WESTON_LICENSE = MIT
WESTON_LICENSE_FILES = COPYING
@ -58,15 +51,6 @@ else
WESTON_CONF_OPTS += --disable-weston-launch
endif
ifeq ($(BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL),y)
ifeq ($(BR2_PACKAGE_IMX_GPU_G2D),y)
WESTON_DEPENDENCIES += imx-gpu-g2d
# --enable-imxg2d actually disables it, so no CONF_OPTS
else
WESTON_CONF_OPTS += --disable-imxg2d
endif
endif
ifeq ($(BR2_PACKAGE_HAS_LIBEGL_WAYLAND)$(BR2_PACKAGE_HAS_LIBGLES),yy)
WESTON_CONF_OPTS += --enable-egl
WESTON_DEPENDENCIES += libegl libgles