package/weston-imx: split weston-imx off from weston
authorJames Hilliard <james.hilliard1@gmail.com>
Sun, 2 Feb 2020 07:16:44 +0000 (00:16 -0700)
committerYann E. MORIN <yann.morin.1998@free.fr>
Sun, 2 Feb 2020 09:37:05 +0000 (10:37 +0100)
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>
package/Config.in
package/weston-imx/Config.in [new file with mode: 0644]
package/weston-imx/weston-imx.hash [new file with mode: 0644]
package/weston-imx/weston-imx.mk [new file with mode: 0644]
package/weston/weston.hash
package/weston/weston.mk

index c8f23c2712066c9496525ab3c149f756298b5c85..d1b31d63fbce41c0b16f486a91c8952701dff029 100644 (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"
diff --git a/package/weston-imx/Config.in b/package/weston-imx/Config.in
new file mode 100644 (file)
index 0000000..712341b
--- /dev/null
@@ -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
diff --git a/package/weston-imx/weston-imx.hash b/package/weston-imx/weston-imx.hash
new file mode 100644 (file)
index 0000000..759a9b6
--- /dev/null
@@ -0,0 +1,2 @@
+# locally computed
+sha256 f39f7a24a01b023aa204ad47977a6476c17a307769f29d408621a05b5cbbcfc7  weston-imx-rel_imx_4.9.51_8mq_ga.tar.gz
diff --git a/package/weston-imx/weston-imx.mk b/package/weston-imx/weston-imx.mk
new file mode 100644 (file)
index 0000000..e803fa3
--- /dev/null
@@ -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))
index a2dddf7a5bf5988576c946f69b964f753d6d6e2d..c9b2d4b1cef1cb3e7ee7077cfaf331abb6c718e5 100644 (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
index ee3d3be87e978b7e45fa6b2f896d321860fc7982..154ae38b83cf105664a90c9c540b2673a33dce53 100644 (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