|
|
|
m4_define([weston_major_version], [1])
|
|
|
|
m4_define([weston_minor_version], [3])
|
|
|
|
m4_define([weston_micro_version], [90])
|
|
|
|
m4_define([weston_version],
|
|
|
|
[weston_major_version.weston_minor_version.weston_micro_version])
|
|
|
|
|
|
|
|
AC_PREREQ([2.64])
|
|
|
|
AC_INIT([weston],
|
|
|
|
[weston_version],
|
|
|
|
[https://bugs.freedesktop.org/enter_bug.cgi?product=Wayland&component=weston&version=weston_version],
|
|
|
|
[weston],
|
|
|
|
[http://wayland.freedesktop.org/])
|
|
|
|
|
|
|
|
AC_SUBST([WESTON_VERSION_MAJOR], [weston_major_version])
|
|
|
|
AC_SUBST([WESTON_VERSION_MINOR], [weston_minor_version])
|
|
|
|
AC_SUBST([WESTON_VERSION_MICRO], [weston_micro_version])
|
|
|
|
AC_SUBST([WESTON_VERSION], [weston_version])
|
|
|
|
|
|
|
|
AC_CONFIG_HEADERS([config.h])
|
|
|
|
|
|
|
|
AC_USE_SYSTEM_EXTENSIONS
|
|
|
|
AC_SYS_LARGEFILE
|
|
|
|
|
|
|
|
AM_INIT_AUTOMAKE([1.11 parallel-tests foreign no-dist-gzip dist-xz color-tests])
|
|
|
|
|
|
|
|
AM_SILENT_RULES([yes])
|
|
|
|
|
|
|
|
# Check for programs
|
|
|
|
AC_PROG_CC
|
|
|
|
AC_PROG_SED
|
|
|
|
|
|
|
|
# Initialize libtool
|
|
|
|
LT_PREREQ([2.2])
|
|
|
|
LT_INIT([disable-static])
|
|
|
|
|
|
|
|
AC_ARG_VAR([WESTON_NATIVE_BACKEND],
|
|
|
|
[Set the native backend to use, if Weston is not running under Wayland nor X11. @<:@default=drm-backend.so@:>@])
|
|
|
|
AC_ARG_VAR([WESTON_SHELL_CLIENT],
|
|
|
|
[Set the default desktop shell client to load if none is specified in weston.ini. @<:@default=weston-desktop-shell@:>@])
|
|
|
|
|
|
|
|
PKG_PROG_PKG_CONFIG()
|
|
|
|
|
|
|
|
AC_CHECK_FUNC([dlopen], [],
|
|
|
|
AC_CHECK_LIB([dl], [dlopen], DLOPEN_LIBS="-ldl"))
|
|
|
|
AC_SUBST(DLOPEN_LIBS)
|
|
|
|
|
|
|
|
AC_CHECK_DECL(SFD_CLOEXEC,[],
|
|
|
|
[AC_MSG_ERROR("SFD_CLOEXEC is needed to compile weston")],
|
|
|
|
[[#include <sys/signalfd.h>]])
|
|
|
|
AC_CHECK_DECL(TFD_CLOEXEC,[],
|
|
|
|
[AC_MSG_ERROR("TFD_CLOEXEC is needed to compile weston")],
|
|
|
|
[[#include <sys/timerfd.h>]])
|
|
|
|
AC_CHECK_DECL(CLOCK_MONOTONIC,[],
|
|
|
|
[AC_MSG_ERROR("CLOCK_MONOTONIC is needed to compile weston")],
|
|
|
|
[[#include <time.h>]])
|
|
|
|
AC_CHECK_HEADERS([execinfo.h])
|
|
|
|
|
|
|
|
AC_CHECK_FUNCS([mkostemp strchrnul initgroups posix_fallocate])
|
|
|
|
|
|
|
|
COMPOSITOR_MODULES="wayland-server >= 1.3.90 pixman-1"
|
|
|
|
|
|
|
|
AC_ARG_ENABLE(egl, [ --disable-egl],,
|
|
|
|
enable_egl=yes)
|
|
|
|
AM_CONDITIONAL(ENABLE_EGL, test x$enable_egl = xyes)
|
|
|
|
if test x$enable_egl = xyes; then
|
|
|
|
AC_DEFINE([ENABLE_EGL], [1], [Build Weston with EGL support])
|
|
|
|
PKG_CHECK_MODULES(EGL, [egl >= 7.10 glesv2])
|
|
|
|
fi
|
|
|
|
|
|
|
|
AC_ARG_ENABLE(xkbcommon,
|
|
|
|
AS_HELP_STRING([--disable-xkbcommon], [Disable libxkbcommon
|
|
|
|
support: This is only useful in environments
|
|
|
|
where you do not have a hardware keyboard. If
|
|
|
|
libxkbcommon support is disabled clients will not
|
|
|
|
be sent a keymap and and must know how to
|
|
|
|
interpret the keycode sent for any key event.]),,
|
|
|
|
enable_xkbcommon=yes)
|
|
|
|
if test x$enable_xkbcommon = xyes; then
|
|
|
|
AC_DEFINE(ENABLE_XKBCOMMON, [1], [Build Weston with libxkbcommon support])
|
|
|
|
COMPOSITOR_MODULES="$COMPOSITOR_MODULES xkbcommon >= 0.3.0"
|
|
|
|
fi
|
|
|
|
|
|
|
|
AC_ARG_ENABLE(setuid-install, [ --enable-setuid-install],,
|
|
|
|
enable_setuid_install=yes)
|
|
|
|
AM_CONDITIONAL(ENABLE_SETUID_INSTALL, test x$enable_setuid_install = xyes)
|
|
|
|
|
|
|
|
|
|
|
|
AC_ARG_ENABLE(xwayland, [ --enable-xwayland],,
|
|
|
|
enable_xwayland=yes)
|
|
|
|
AC_ARG_ENABLE(xwayland-test, [ --enable-xwayland-test],,
|
|
|
|
enable_xwayland_test=yes)
|
|
|
|
AM_CONDITIONAL(ENABLE_XWAYLAND, test x$enable_xwayland = xyes)
|
|
|
|
AM_CONDITIONAL(ENABLE_XWAYLAND_TEST, test x$enable_xwayland = xyes -a x$enable_xwayland_test = xyes)
|
|
|
|
if test x$enable_xwayland = xyes; then
|
|
|
|
PKG_CHECK_MODULES([XWAYLAND], xcb xcb-xfixes xcb-composite xcursor cairo-xcb)
|
|
|
|
AC_DEFINE([BUILD_XWAYLAND], [1], [Build the X server launcher])
|
|
|
|
|
|
|
|
AC_ARG_WITH(xserver-path, AS_HELP_STRING([--with-xserver-path=PATH],
|
|
|
|
[Path to X server]), [XSERVER_PATH="$withval"],
|
|
|
|
[XSERVER_PATH="$bindir/Xorg"])
|
|
|
|
AC_SUBST([XSERVER_PATH])
|
|
|
|
if test x$enable_xwayland_test = xyes; then
|
|
|
|
PKG_CHECK_MODULES([XWAYLAND_TEST], xcb xcb-dri2 libdrm)
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
PKG_CHECK_MODULES(LIBDRM, [libdrm],
|
|
|
|
[AC_DEFINE(HAVE_LIBDRM, 1, [Define if libdrm is available]) have_libdrm=yes], have_libdrm=no)
|
|
|
|
|
|
|
|
AC_ARG_ENABLE(x11-compositor, [ --enable-x11-compositor],,
|
|
|
|
enable_x11_compositor=yes)
|
|
|
|
AM_CONDITIONAL(ENABLE_X11_COMPOSITOR, test x$enable_x11_compositor = xyes)
|
|
|
|
if test x$enable_x11_compositor = xyes; then
|
|
|
|
PKG_CHECK_MODULES([XCB], xcb)
|
|
|
|
xcb_save_LIBS=$LIBS
|
|
|
|
xcb_save_CFLAGS=$CFLAGS
|
|
|
|
CFLAGS=$XCB_CFLAGS
|
|
|
|
LIBS=$XCB_LIBS
|
|
|
|
AC_CHECK_FUNCS([xcb_poll_for_queued_event])
|
|
|
|
LIBS=$xcb_save_LIBS
|
|
|
|
CFLAGS=$xcb_save_CFLAGS
|
|
|
|
|
|
|
|
X11_COMPOSITOR_MODULES="x11 x11-xcb xcb-shm"
|
|
|
|
|
|
|
|
PKG_CHECK_MODULES(X11_COMPOSITOR_XKB, [xcb-xkb],
|
|
|
|
[have_xcb_xkb="yes"], [have_xcb_xkb="no"])
|
|
|
|
if test "x$have_xcb_xkb" = xyes; then
|
|
|
|
# Most versions of XCB have totally broken XKB bindings, where the
|
|
|
|
# events don't work. Make sure we can actually use them.
|
|
|
|
xcb_xkb_save_CFLAGS=$CFLAGS
|
|
|
|
CFLAGS=$X11_COMPOSITOR_XKB_CFLAGS
|
|
|
|
AC_CHECK_MEMBER([struct xcb_xkb_state_notify_event_t.xkbType],
|
|
|
|
[], [have_xcb_xkb=no], [[#include <xcb/xkb.h>]])
|
|
|
|
CFLAGS=$xcb_xkb_save_CFLAGS
|
|
|
|
fi
|
|
|
|
if test "x$have_xcb_xkb" = xyes; then
|
|
|
|
X11_COMPOSITOR_MODULES="$X11_COMPOSITOR_MODULES xcb-xkb"
|
|
|
|
AC_DEFINE([HAVE_XCB_XKB], [1], [libxcb supports XKB protocol])
|
|
|
|
fi
|
|
|
|
|
|
|
|
PKG_CHECK_MODULES(X11_COMPOSITOR, [$X11_COMPOSITOR_MODULES])
|
|
|
|
AC_DEFINE([BUILD_X11_COMPOSITOR], [1], [Build the X11 compositor])
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
AC_ARG_ENABLE(drm-compositor, [ --enable-drm-compositor],,
|
|
|
|
enable_drm_compositor=yes)
|
|
|
|
AM_CONDITIONAL(ENABLE_DRM_COMPOSITOR, test x$enable_drm_compositor = xyes)
|
|
|
|
if test x$enable_drm_compositor = xyes; then
|
|
|
|
AC_DEFINE([BUILD_DRM_COMPOSITOR], [1], [Build the DRM compositor])
|
|
|
|
PKG_CHECK_MODULES(DRM_COMPOSITOR, [libudev >= 136 libdrm >= 2.4.30 gbm mtdev >= 1.1.0])
|
|
|
|
fi
|
|
|
|
|
|
|
|
PKG_CHECK_MODULES(COMPOSITOR, [$COMPOSITOR_MODULES])
|
|
|
|
|
|
|
|
AC_ARG_ENABLE(wayland-compositor, [ --enable-wayland-compositor],,
|
|
|
|
enable_wayland_compositor=yes)
|
|
|
|
AM_CONDITIONAL(ENABLE_WAYLAND_COMPOSITOR,
|
|
|
|
test x$enable_wayland_compositor = xyes -a x$enable_egl = xyes)
|
|
|
|
if test x$enable_wayland_compositor = xyes -a x$enable_egl = xyes; then
|
|
|
|
AC_DEFINE([BUILD_WAYLAND_COMPOSITOR], [1],
|
|
|
|
[Build the Wayland (nested) compositor])
|
|
|
|
PKG_CHECK_MODULES(WAYLAND_COMPOSITOR, [wayland-client wayland-egl wayland-cursor])
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
AC_ARG_ENABLE(headless-compositor, [ --enable-headless-compositor],,
|
|
|
|
enable_headless_compositor=yes)
|
|
|
|
AM_CONDITIONAL(ENABLE_HEADLESS_COMPOSITOR,
|
|
|
|
test x$enable_headless_compositor = xyes)
|
|
|
|
|
|
|
|
|
rpi: a backend for Raspberry Pi
Add a new backend for the Raspberry Pi.
This backend uses the DispmanX API to initialise the display, and create
an EGLSurface, so that GLESv2 rendering is shown on the "framebuffer".
No X server is involved. All compositing happens through GLESv2.
The created EGLSurface is specifically configured as buffer content
preserving, otherwise Weston wouuld show only the latest damage and
everything else was black. This may be sub-optimal, since we are not
alternating between two buffers, like the DRM backend is, and content
preserving may imply a fullscreen copy on each frame.
Page flips are not properly hooked up yet. The display update will
block, and we use a timer to call weston_output_finish_frame(), just
like the x11 backend does.
This backend handles the VT and tty just like the DRM backend does.
While VT switching works in theory, the display output seems to be
frozen while switched away from Weston. You can still switch back.
Seats and connectors cannot be explicitly specified, and multiple seats
are not expected.
Udev is used to find the input devices. Input devices are opened
directly, weston-launch is not supported at this time. You may need to
confirm that your pi user has access to input device nodes.
The Raspberry Pi backend is built by default. It can be build-tested
without the Raspberry Pi headers and libraries, because we provide stubs
in rpi-bcm-stubs.h, but such resulting binary is non-functional. If
using stubs, the backend is built but not installed.
VT and tty handling, and udev related code are pretty much copied from
the DRM backend, hence the copyrights. The rpi-bcm-stubs.h code is
copied from the headers on Raspberry Pi, including their copyright
notice, and modified.
Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
12 years ago
|
|
|
AC_ARG_ENABLE(rpi-compositor,
|
|
|
|
AS_HELP_STRING([--disable-rpi-compositor],
|
|
|
|
[do not build the Raspberry Pi backend]),,
|
|
|
|
enable_rpi_compositor=yes)
|
|
|
|
AM_CONDITIONAL(ENABLE_RPI_COMPOSITOR, test "x$enable_rpi_compositor" = "xyes")
|
rpi: a backend for Raspberry Pi
Add a new backend for the Raspberry Pi.
This backend uses the DispmanX API to initialise the display, and create
an EGLSurface, so that GLESv2 rendering is shown on the "framebuffer".
No X server is involved. All compositing happens through GLESv2.
The created EGLSurface is specifically configured as buffer content
preserving, otherwise Weston wouuld show only the latest damage and
everything else was black. This may be sub-optimal, since we are not
alternating between two buffers, like the DRM backend is, and content
preserving may imply a fullscreen copy on each frame.
Page flips are not properly hooked up yet. The display update will
block, and we use a timer to call weston_output_finish_frame(), just
like the x11 backend does.
This backend handles the VT and tty just like the DRM backend does.
While VT switching works in theory, the display output seems to be
frozen while switched away from Weston. You can still switch back.
Seats and connectors cannot be explicitly specified, and multiple seats
are not expected.
Udev is used to find the input devices. Input devices are opened
directly, weston-launch is not supported at this time. You may need to
confirm that your pi user has access to input device nodes.
The Raspberry Pi backend is built by default. It can be build-tested
without the Raspberry Pi headers and libraries, because we provide stubs
in rpi-bcm-stubs.h, but such resulting binary is non-functional. If
using stubs, the backend is built but not installed.
VT and tty handling, and udev related code are pretty much copied from
the DRM backend, hence the copyrights. The rpi-bcm-stubs.h code is
copied from the headers on Raspberry Pi, including their copyright
notice, and modified.
Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
12 years ago
|
|
|
have_bcm_host="no"
|
|
|
|
if test "x$enable_rpi_compositor" = "xyes"; then
|
rpi: a backend for Raspberry Pi
Add a new backend for the Raspberry Pi.
This backend uses the DispmanX API to initialise the display, and create
an EGLSurface, so that GLESv2 rendering is shown on the "framebuffer".
No X server is involved. All compositing happens through GLESv2.
The created EGLSurface is specifically configured as buffer content
preserving, otherwise Weston wouuld show only the latest damage and
everything else was black. This may be sub-optimal, since we are not
alternating between two buffers, like the DRM backend is, and content
preserving may imply a fullscreen copy on each frame.
Page flips are not properly hooked up yet. The display update will
block, and we use a timer to call weston_output_finish_frame(), just
like the x11 backend does.
This backend handles the VT and tty just like the DRM backend does.
While VT switching works in theory, the display output seems to be
frozen while switched away from Weston. You can still switch back.
Seats and connectors cannot be explicitly specified, and multiple seats
are not expected.
Udev is used to find the input devices. Input devices are opened
directly, weston-launch is not supported at this time. You may need to
confirm that your pi user has access to input device nodes.
The Raspberry Pi backend is built by default. It can be build-tested
without the Raspberry Pi headers and libraries, because we provide stubs
in rpi-bcm-stubs.h, but such resulting binary is non-functional. If
using stubs, the backend is built but not installed.
VT and tty handling, and udev related code are pretty much copied from
the DRM backend, hence the copyrights. The rpi-bcm-stubs.h code is
copied from the headers on Raspberry Pi, including their copyright
notice, and modified.
Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
12 years ago
|
|
|
AC_DEFINE([BUILD_RPI_COMPOSITOR], [1], [Build the compositor for Raspberry Pi])
|
|
|
|
PKG_CHECK_MODULES(RPI_COMPOSITOR, [libudev >= 136 mtdev >= 1.1.0])
|
|
|
|
PKG_CHECK_MODULES(RPI_BCM_HOST, [bcm_host],
|
|
|
|
[have_bcm_host="yes"
|
|
|
|
AC_DEFINE([HAVE_BCM_HOST], [1], [have Raspberry Pi BCM headers])],
|
|
|
|
[AC_MSG_WARN([Raspberry Pi BCM host libraries not found, will use stubs instead.])])
|
|
|
|
fi
|
|
|
|
AM_CONDITIONAL(INSTALL_RPI_COMPOSITOR, test "x$have_bcm_host" = "xyes")
|
|
|
|
|
|
|
|
|
|
|
|
AC_ARG_ENABLE([fbdev-compositor], [ --enable-fbdev-compositor],,
|
|
|
|
enable_fbdev_compositor=yes)
|
|
|
|
AM_CONDITIONAL([ENABLE_FBDEV_COMPOSITOR],
|
|
|
|
[test x$enable_fbdev_compositor = xyes])
|
|
|
|
AS_IF([test x$enable_fbdev_compositor = xyes], [
|
|
|
|
AC_DEFINE([BUILD_FBDEV_COMPOSITOR], [1], [Build the fbdev compositor])
|
|
|
|
PKG_CHECK_MODULES([FBDEV_COMPOSITOR], [libudev >= 136 mtdev >= 1.1.0])
|
|
|
|
])
|
|
|
|
|
|
|
|
AC_ARG_ENABLE([rdp-compositor], [ --enable-rdp-compositor],,
|
|
|
|
enable_rdp_compositor=no)
|
|
|
|
AM_CONDITIONAL([ENABLE_RDP_COMPOSITOR],
|
|
|
|
[test x$enable_rdp_compositor = xyes])
|
|
|
|
if test x$enable_rdp_compositor = xyes; then
|
|
|
|
AC_DEFINE([BUILD_RDP_COMPOSITOR], [1], [Build the RDP compositor])
|
|
|
|
PKG_CHECK_MODULES(RDP_COMPOSITOR, [freerdp >= 1.1.0])
|
|
|
|
fi
|
|
|
|
|
|
|
|
AC_ARG_WITH(cairo,
|
|
|
|
AS_HELP_STRING([--with-cairo=@<:@image|gl|glesv2@:>@]
|
|
|
|
[Which Cairo renderer to use for the clients]),
|
|
|
|
[],[with_cairo="image"])
|
|
|
|
|
|
|
|
if test "x$with_cairo" = "ximage"; then
|
|
|
|
cairo_modules="cairo"
|
|
|
|
else
|
|
|
|
if test "x$with_cairo" = "xgl"; then
|
|
|
|
cairo_modules="cairo-gl"
|
|
|
|
else
|
|
|
|
if test "x$with_cairo" = "xglesv2"; then
|
|
|
|
cairo_modules="cairo-glesv2"
|
|
|
|
else
|
|
|
|
AC_ERROR([Unknown cairo renderer requested])
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Included for legacy compat
|
|
|
|
AC_ARG_WITH(cairo-glesv2,
|
|
|
|
AS_HELP_STRING([--with-cairo-glesv2],
|
|
|
|
[Use GLESv2 cairo]))
|
|
|
|
if test "x$with_cairo_glesv2" = "xyes"; then
|
|
|
|
cairo_modules="cairo-glesv2"
|
|
|
|
with_cairo="glesv2"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if test "x$cairo_modules" = "xcairo-glesv2"; then
|
|
|
|
AC_DEFINE([USE_CAIRO_GLESV2], [1], [Use the GLESv2 GL cairo backend])
|
|
|
|
fi
|
|
|
|
|
|
|
|
PKG_CHECK_MODULES(PIXMAN, [pixman-1])
|
|
|
|
PKG_CHECK_MODULES(PNG, [libpng])
|
|
|
|
PKG_CHECK_MODULES(WEBP, [libwebp], [have_webp=yes], [have_webp=no])
|
|
|
|
AS_IF([test "x$have_webp" = "xyes"],
|
|
|
|
[AC_DEFINE([HAVE_WEBP], [1], [Have webp])])
|
|
|
|
|
|
|
|
AC_ARG_ENABLE(vaapi-recorder, [ --enable-vaapi-recorder],,
|
|
|
|
enable_vaapi_recorder=auto)
|
|
|
|
if test x$enable_vaapi_recorder != xno; then
|
|
|
|
PKG_CHECK_MODULES(LIBVA, [libva >= 0.34.0 libva-drm >= 0.34.0],
|
|
|
|
[have_libva=yes], [have_libva=no])
|
|
|
|
if test "x$have_libva" = "xno" -a "x$enable_vaapi_recorder" = "xyes"; then
|
|
|
|
AC_MSG_ERROR([vaapi-recorder explicitly enabled, but libva couldn't be found])
|
|
|
|
fi
|
|
|
|
AS_IF([test "x$have_libva" = "xyes"],
|
|
|
|
[AC_DEFINE([BUILD_VAAPI_RECORDER], [1], [Build the vaapi recorder])])
|
|
|
|
fi
|
|
|
|
AM_CONDITIONAL(ENABLE_VAAPI_RECORDER, test "x$have_libva" = xyes)
|
|
|
|
|
|
|
|
|
|
|
|
AC_CHECK_LIB([jpeg], [jpeg_CreateDecompress], have_jpeglib=yes)
|
|
|
|
if test x$have_jpeglib = xyes; then
|
|
|
|
JPEG_LIBS="-ljpeg"
|
|
|
|
else
|
|
|
|
AC_ERROR([libjpeg not found])
|
|
|
|
fi
|
|
|
|
AC_SUBST(JPEG_LIBS)
|
|
|
|
|
|
|
|
PKG_CHECK_MODULES(CAIRO, [cairo])
|
|
|
|
|
|
|
|
PKG_CHECK_MODULES(TEST_CLIENT, [wayland-client])
|
|
|
|
|
|
|
|
AC_ARG_ENABLE(simple-clients,
|
|
|
|
AS_HELP_STRING([--disable-simple-clients],
|
|
|
|
[do not build the simple wl_shm clients]),,
|
|
|
|
enable_simple_clients=yes)
|
|
|
|
AM_CONDITIONAL(BUILD_SIMPLE_CLIENTS, test "x$enable_simple_clients" = "xyes")
|
|
|
|
if test x$enable_simple_clients = xyes; then
|
|
|
|
PKG_CHECK_MODULES(SIMPLE_CLIENT, [wayland-client])
|
|
|
|
fi
|
|
|
|
|
|
|
|
AC_ARG_ENABLE(simple-egl-clients,
|
|
|
|
AS_HELP_STRING([--disable-simple-egl-clients],
|
|
|
|
[do not build the simple EGL clients]),,
|
|
|
|
enable_simple_egl_clients="$enable_egl")
|
|
|
|
AM_CONDITIONAL(BUILD_SIMPLE_EGL_CLIENTS, test "x$enable_simple_egl_clients" = "xyes")
|
|
|
|
if test x$enable_simple_egl_clients = xyes; then
|
|
|
|
PKG_CHECK_MODULES(SIMPLE_EGL_CLIENT,
|
|
|
|
[egl >= 7.10 glesv2 wayland-client wayland-egl wayland-cursor])
|
|
|
|
fi
|
|
|
|
|
|
|
|
AC_ARG_ENABLE(clients, [ --enable-clients],, enable_clients=yes)
|
|
|
|
AM_CONDITIONAL(BUILD_CLIENTS, test x$enable_clients = xyes)
|
|
|
|
if test x$enable_clients = xyes; then
|
|
|
|
AC_DEFINE([BUILD_CLIENTS], [1], [Build the Wayland clients])
|
|
|
|
|
|
|
|
PKG_CHECK_MODULES(CLIENT, [wayland-client cairo >= 1.10.0 xkbcommon wayland-cursor])
|
|
|
|
PKG_CHECK_MODULES(SERVER, [wayland-server])
|
|
|
|
PKG_CHECK_MODULES(WESTON_INFO, [wayland-client])
|
|
|
|
|
|
|
|
PKG_CHECK_MODULES(POPPLER, [poppler-glib glib-2.0 gobject-2.0 gio-2.0 ],
|
|
|
|
[have_poppler=yes], [have_poppler=no])
|
|
|
|
|
|
|
|
# Only check for cairo-egl if a GL or GLES renderer requested
|
|
|
|
AS_IF([test "x$cairo_modules" = "xcairo-gl" -o "x$cairo_modules" = "xcairo-glesv2"], [
|
|
|
|
PKG_CHECK_MODULES(CAIRO_EGL, [wayland-egl egl >= 7.10 cairo-egl >= 1.11.3 $cairo_modules],
|
|
|
|
[have_cairo_egl=yes], [have_cairo_egl=no])
|
|
|
|
AS_IF([test "x$have_cairo_egl" = "xyes"],
|
|
|
|
[AC_DEFINE([HAVE_CAIRO_EGL], [1], [Have cairo-egl])],
|
|
|
|
[AC_ERROR([cairo-egl not used because $CAIRO_EGL_PKG_ERRORS])])],
|
|
|
|
[have_cairo_egl=no])
|
|
|
|
|
|
|
|
PKG_CHECK_MODULES(PANGO, [pangocairo], [have_pango=yes], [have_pango=no])
|
|
|
|
fi
|
|
|
|
|
|
|
|
AC_ARG_ENABLE(resize-optimization,
|
|
|
|
AS_HELP_STRING([--disable-resize-optimization],
|
|
|
|
[disable resize optimization allocating a big buffer in toytoolkit]),,
|
|
|
|
enable_resize_optimization=yes)
|
|
|
|
AS_IF([test "x$enable_resize_optimization" = "xyes"],
|
|
|
|
[AC_DEFINE([USE_RESIZE_POOL], [1], [Use resize memory pool as a performance optimization])])
|
|
|
|
|
|
|
|
PKG_CHECK_MODULES(SYSTEMD_LOGIN, [libsystemd-login],
|
|
|
|
[have_systemd_login=yes], [have_systemd_login=no])
|
|
|
|
AS_IF([test "x$have_systemd_login" = "xyes"],
|
|
|
|
[AC_DEFINE([HAVE_SYSTEMD_LOGIN], [1], [Have systemd-login])])
|
|
|
|
AM_CONDITIONAL(HAVE_SYSTEMD_LOGIN, test "x$have_systemd_login" = "xyes")
|
|
|
|
|
|
|
|
PKG_CHECK_MODULES(SYSTEMD_LOGIN_209, [libsystemd-login >= 209],
|
|
|
|
[have_systemd_login_209=yes], [have_systemd_login_209=no])
|
|
|
|
AS_IF([test "x$have_systemd_login_209" = "xyes"],
|
|
|
|
[AC_DEFINE([HAVE_SYSTEMD_LOGIN_209], [1], [Have systemd-login >= 209])])
|
|
|
|
|
|
|
|
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
|
|
|
|
AC_CHECK_LIB([pam], [pam_open_session], [have_pam=yes], [have_pam=no])
|
|
|
|
if test x$have_pam == xno; then
|
|
|
|
AC_ERROR([weston-launch requires pam])
|
|
|
|
fi
|
|
|
|
PAM_LIBS=-lpam
|
|
|
|
AC_SUBST(PAM_LIBS)
|
|
|
|
fi
|
|
|
|
|
|
|
|
if test x$enable_egl = xyes; then
|
|
|
|
PKG_CHECK_MODULES(GLU, [glu], [have_glu=yes], [have_glu=no])
|
|
|
|
fi
|
|
|
|
AM_CONDITIONAL(HAVE_GLU, test "x$have_glu" = "xyes")
|
|
|
|
|
|
|
|
|
|
|
|
AM_CONDITIONAL(HAVE_POPPLER, test "x$have_poppler" = "xyes")
|
|
|
|
|
|
|
|
AM_CONDITIONAL(HAVE_PANGO, test "x$have_pango" = "xyes")
|
|
|
|
|
|
|
|
AM_CONDITIONAL(HAVE_CAIRO_GLESV2,
|
|
|
|
[test "x$have_cairo_egl" = "xyes" -a "x$cairo_modules" = "xcairo-glesv2" -a "x$enable_egl" = "xyes"])
|
|
|
|
|
|
|
|
AM_CONDITIONAL(BUILD_FULL_GL_CLIENTS,
|
|
|
|
test x$cairo_modules = "xcairo-gl" -a "x$have_cairo_egl" = "xyes" -a "x$enable_egl" = "xyes")
|
|
|
|
|
clients: add subsurfaces demo
Add a demo program with:
- a main surface (green)
- a Cairo-image sub-surface (red)
- a raw GLESv2 widget (triangle)
Sub-surface input region is set empty to avoid problems in toytoolkit.
If Cairo links to libGL, then we will end up with also libGLESv2 linked
to subsurfaces program, and both libs getting really used, which leads
to disaster.
Do not build subsurfaces demo, if Cairo links to libGL and cairo-egl is
usable.
The GL rendering loop is not tied to the toytoolkit or the widget, but
runs directly from its own frame callback. Therefore it runs
independent of the rest of the application. This also relies on one of
two things:
- eglSwapInterval(0) is implemented, and therefore eglSwapBuffers never
blocks indefinitely, or
- toytoolkit has a workaround, that guarantees that eglSwapBuffers will
return soon, when we force a repaint on resize.
Otherwise the demo will deadlock.
The code is separated into three sections:
1. The library component, using only EGL, GLESv2, and libwayland-client
APIs, and not aware of any toolkit details of the parent application.
This runs independently until the parent application tells otherwise.
2. The glue code: a toytoolkit application widget, who has its own
rendering machinery.
3. The application written in toytoolkit.
This patch also adds new toytoolkit interfaces:
- widget_get_wl_surface()
- widget_get_last_time()
- widget_input_region_add()
Toytoolkit applications have not had a possibility to change the input
region. The frame widget (decorations) set the input region on its own
when used, otherwise the default input region of everything has been
used. If a window does not have a frame widget, it can now use
widget_input_region_add() to set a custom input region.
These are not window methods, because a widget may lie on a different
wl_surface (sub-surface) than the window.
Changes in v3:
- replace set_commit_mode with set_sync and set_desync
Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
12 years ago
|
|
|
AM_CONDITIONAL(BUILD_SUBSURFACES_CLIENT,
|
|
|
|
[test '(' "x$have_cairo_egl" != "xyes" -o "x$cairo_modules" = "xcairo-glesv2" ')' -a "x$enable_simple_egl_clients" = "xyes"])
|
|
|
|
|
|
|
|
AM_CONDITIONAL(ENABLE_DESKTOP_SHELL, true)
|
|
|
|
|
|
|
|
AC_ARG_ENABLE(tablet-shell,
|
|
|
|
AS_HELP_STRING([--disable-tablet-shell],
|
|
|
|
[do not build tablet-shell server plugin and client]),,
|
|
|
|
enable_tablet_shell=yes)
|
|
|
|
AM_CONDITIONAL(ENABLE_TABLET_SHELL,
|
|
|
|
test "x$enable_tablet_shell" = "xyes")
|
|
|
|
|
|
|
|
# CMS modules
|
|
|
|
AC_ARG_ENABLE(colord,
|
|
|
|
AS_HELP_STRING([--disable-colord],
|
|
|
|
[do not build colord CMS support]),,
|
|
|
|
enable_colord=auto)
|
|
|
|
if test "x$enable_colord" != "xno"; then
|
|
|
|
PKG_CHECK_MODULES(COLORD,
|
|
|
|
colord >= 0.1.27,
|
|
|
|
have_colord=yes,
|
|
|
|
have_colord=no)
|
|
|
|
if test "x$have_colord" = "xno" -a "x$enable_colord" = "xyes"; then
|
|
|
|
AC_MSG_ERROR([colord support explicitly requested, but colord couldn't be found])
|
|
|
|
fi
|
|
|
|
if test "x$have_colord" = "xyes"; then
|
|
|
|
enable_colord=yes
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
AM_CONDITIONAL(ENABLE_COLORD, test "x$enable_colord" = "xyes")
|
|
|
|
|
|
|
|
# dbus support
|
|
|
|
AC_ARG_ENABLE(dbus,
|
|
|
|
AS_HELP_STRING([--disable-dbus],
|
|
|
|
[do not build with dbus support]),,
|
|
|
|
enable_dbus=auto)
|
|
|
|
if test "x$enable_dbus" != "xno"; then
|
|
|
|
PKG_CHECK_MODULES(DBUS,
|
|
|
|
dbus-1 >= 1.6,
|
|
|
|
have_dbus=yes,
|
|
|
|
have_dbus=no)
|
|
|
|
if test "x$have_dbus" = "xno" -a "x$enable_dbus" = "xyes"; then
|
|
|
|
AC_MSG_ERROR([dbus support explicitly requested, but libdbus couldn't be found])
|
|
|
|
fi
|
|
|
|
if test "x$have_dbus" = "xyes"; then
|
|
|
|
enable_dbus=yes
|
|
|
|
AC_DEFINE([HAVE_DBUS], [1], [Build with dbus support])
|
|
|
|
else
|
|
|
|
enable_dbus=no
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
AM_CONDITIONAL(ENABLE_DBUS, test "x$enable_dbus" = "xyes")
|
|
|
|
|
|
|
|
AC_ARG_ENABLE(wcap-tools, [ --disable-wcap-tools],, enable_wcap_tools=yes)
|
|
|
|
AM_CONDITIONAL(BUILD_WCAP_TOOLS, test x$enable_wcap_tools = xyes)
|
|
|
|
if test x$enable_wcap_tools = xyes; then
|
|
|
|
AC_DEFINE([BUILD_WCAP_TOOLS], [1], [Build the wcap tools])
|
|
|
|
PKG_CHECK_MODULES(WCAP, [cairo])
|
|
|
|
WCAP_LIBS="$WCAP_LIBS -lm"
|
|
|
|
fi
|
|
|
|
|
|
|
|
AC_CHECK_PROG(RSVG_CONVERT, rsvg-convert, rsvg-convert)
|
|
|
|
AM_CONDITIONAL(HAVE_RSVG_CONVERT, test -n "$RSVG_CONVERT")
|
|
|
|
|
|
|
|
PKG_CHECK_MODULES(SETBACKLIGHT, [libudev libdrm], enable_setbacklight=yes, enable_setbacklight=no)
|
|
|
|
AM_CONDITIONAL(BUILD_SETBACKLIGHT, test "x$enable_setbacklight" = "xyes")
|
|
|
|
|
|
|
|
if test "x$GCC" = "xyes"; then
|
|
|
|
GCC_CFLAGS="-Wall -Wextra -Wno-unused-parameter \
|
|
|
|
-Wno-missing-field-initializers -g -fvisibility=hidden \
|
|
|
|
-Wstrict-prototypes -Wmissing-prototypes"
|
|
|
|
fi
|
|
|
|
AC_SUBST(GCC_CFLAGS)
|
|
|
|
|
|
|
|
AC_ARG_ENABLE(libunwind,
|
|
|
|
AS_HELP_STRING([--disable-libunwind],
|
|
|
|
[Disable libunwind usage for backtraces]),,
|
|
|
|
enable_libunwind=auto)
|
|
|
|
AM_CONDITIONAL(HAVE_LIBUNWIND, [test "x$enable_libunwind" = xyes])
|
|
|
|
if test "x$enable_libunwind" != "xno"; then
|
|
|
|
PKG_CHECK_MODULES(LIBUNWIND,
|
|
|
|
libunwind,
|
|
|
|
have_libunwind=yes,
|
|
|
|
have_libunwind=no)
|
|
|
|
if test "x$have_libunwind" = "xno" -a "x$enable_libunwind" = "xyes"; then
|
|
|
|
AC_MSG_ERROR([libunwind support explicitly requested, but libunwind couldn't be found])
|
|
|
|
fi
|
|
|
|
if test "x$have_libunwind" = "xyes"; then
|
|
|
|
enable_libunwind=yes
|
|
|
|
AC_DEFINE(HAVE_LIBUNWIND, 1, [Have libunwind support])
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
if test "x$WESTON_NATIVE_BACKEND" = "x"; then
|
|
|
|
WESTON_NATIVE_BACKEND="drm-backend.so"
|
|
|
|
fi
|
|
|
|
AC_MSG_NOTICE([Weston's native backend: $WESTON_NATIVE_BACKEND])
|
|
|
|
AC_DEFINE_UNQUOTED([WESTON_NATIVE_BACKEND], ["$WESTON_NATIVE_BACKEND"],
|
|
|
|
[The default backend to load, if not wayland nor x11.])
|
|
|
|
|
|
|
|
if test "x$WESTON_SHELL_CLIENT" = "x"; then
|
|
|
|
WESTON_SHELL_CLIENT="weston-desktop-shell"
|
|
|
|
fi
|
|
|
|
AC_MSG_NOTICE([Weston's default desktop shell client: $WESTON_SHELL_CLIENT])
|
|
|
|
AC_DEFINE_UNQUOTED([WESTON_SHELL_CLIENT], ["$WESTON_SHELL_CLIENT"],
|
|
|
|
[The default desktop shell client to load.])
|
|
|
|
|
|
|
|
AC_ARG_ENABLE(demo-clients,
|
|
|
|
AS_HELP_STRING([--enable-demo-clients],
|
|
|
|
[install demo clients built with weston]),,
|
|
|
|
enable_demo_clients=no)
|
|
|
|
AM_CONDITIONAL(ENABLE_DEMO_CLIENTS, [test "x$enable_demo_clients" = "xyes"])
|
|
|
|
|
|
|
|
PKG_CHECK_MODULES(LCMS, lcms2,
|
|
|
|
[have_lcms=yes], [have_lcms=no])
|
|
|
|
if test "x$have_lcms" = xyes; then
|
|
|
|
AC_DEFINE(HAVE_LCMS, 1, [Have lcms support])
|
|
|
|
fi
|
|
|
|
AM_CONDITIONAL(HAVE_LCMS, [test "x$have_lcms" = xyes])
|
|
|
|
|
|
|
|
AC_PATH_PROG([wayland_scanner], [wayland-scanner])
|
|
|
|
if test x$wayland_scanner = x; then
|
|
|
|
AC_MSG_ERROR([wayland-scanner is needed to compile weston])
|
|
|
|
fi
|
|
|
|
|
|
|
|
PKG_CHECK_MODULES(WAYLAND_SCANNER, wayland-scanner)
|
|
|
|
AC_PATH_PROG(XMLLINT, xmllint)
|
|
|
|
AC_ARG_WITH([dtddir],
|
|
|
|
AS_HELP_STRING([--with-dtddir],
|
|
|
|
[Directory containing the Wayland
|
|
|
|
protocol DTD @<:@default=from pkgconfig@:>@]),
|
|
|
|
[dtddir="$withval"],
|
|
|
|
[dtddir=$($PKG_CONFIG --variable=pkgdatadir wayland-scanner)])
|
|
|
|
AC_SUBST([dtddir])
|
|
|
|
AM_CONDITIONAL([HAVE_XMLLINT], [test "x$XMLLINT" != "x" -a "x$dtddir" != "x"])
|
|
|
|
|
|
|
|
AC_CONFIG_FILES([Makefile
|
|
|
|
shared/Makefile
|
Rename wayland-compositor to weston
This rename addresses a few problems around the split between core
Wayland and the wayland-demos repository.
1) Initially, we had one big repository with protocol code, sample
compositor and sample clients. We split that repository to make it
possible to implement the protocol without pulling in the sample/demo
code. At this point, the compositor is more than just a "demo" and
wayland-demos doesn't send the right message. The sample compositor
is a useful, self-contained project in it's own right, and we want to
move away from the "demos" label.
2) Another problem is that the wayland-demos compositor is often
called "the wayland compsitor", but it's really just one possible
compositor. Existing X11 compositors are expected to add Wayland
support and then gradually phase out/modularize the X11 support, for
example. Conversely, it's hard to talk about the wayland-demos
compositor specifically as opposed to, eg, the wayland protocol or a
wayland compositor in general.
We are also renaming the repo to weston, and the compositor
subdirectory to src/, to emphasize that the main "output" is the
compositor.
13 years ago
|
|
|
src/Makefile
|
|
|
|
src/xwayland/Makefile
|
|
|
|
src/version.h
|
|
|
|
src/weston.pc
|
|
|
|
clients/Makefile
|
|
|
|
wcap/Makefile
|
|
|
|
data/Makefile
|
tests: add matrix-test
Add a new directory tests/ for unit test applications. This directory
will be built only if --enable-tests is given to ./configure.
Add matrix-test application. It excercises especially the
weston_matrix_invert() and weston_matrix_inverse_transform() functions.
It has one test for correctness and precision, and other tests for
measuring the speed of various matrix operations.
For the record, the correctness test prints:
a random matrix:
1.112418e-02 2.628150e+00 8.205844e+02 -1.147526e-04
4.943677e-04 -1.117819e-04 -9.158849e-06 3.678122e-02
7.915063e-03 -3.093254e-04 -4.376583e+02 3.424706e-02
-2.504038e+02 2.481788e+03 -7.545445e+01 1.752909e-03
The matrix multiplied by its inverse, error:
0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00
0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
-0.000000e+00 -0.000000e+00 0.000000e+00 -0.000000e+00
0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
max abs error: 0, original determinant 11595.2
Running a test loop for 10 seconds...
test fail, det: -0.00464805, error sup: inf
test fail, det: -0.0424053, error sup: 1.30787e-06
test fail, det: 5.15191, error sup: 1.15956e-06
tests: 6791767 ok, 1 not invertible but ok, 3 failed.
Total: 6791771 iterations.
These results are expected with the current precision thresholds in
src/matrix.c and tests/matrix-test.c. The random number generator is
seeded with a constant, so the random numbers should be the same on
every run. Machine speed and scheduling affect how many iterations are
run.
Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
13 years ago
|
|
|
protocol/Makefile
|
|
|
|
man/Makefile
|
tests: add matrix-test
Add a new directory tests/ for unit test applications. This directory
will be built only if --enable-tests is given to ./configure.
Add matrix-test application. It excercises especially the
weston_matrix_invert() and weston_matrix_inverse_transform() functions.
It has one test for correctness and precision, and other tests for
measuring the speed of various matrix operations.
For the record, the correctness test prints:
a random matrix:
1.112418e-02 2.628150e+00 8.205844e+02 -1.147526e-04
4.943677e-04 -1.117819e-04 -9.158849e-06 3.678122e-02
7.915063e-03 -3.093254e-04 -4.376583e+02 3.424706e-02
-2.504038e+02 2.481788e+03 -7.545445e+01 1.752909e-03
The matrix multiplied by its inverse, error:
0.000000e+00 -0.000000e+00 -0.000000e+00 -0.000000e+00
0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
-0.000000e+00 -0.000000e+00 0.000000e+00 -0.000000e+00
0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
max abs error: 0, original determinant 11595.2
Running a test loop for 10 seconds...
test fail, det: -0.00464805, error sup: inf
test fail, det: -0.0424053, error sup: 1.30787e-06
test fail, det: 5.15191, error sup: 1.15956e-06
tests: 6791767 ok, 1 not invertible but ok, 3 failed.
Total: 6791771 iterations.
These results are expected with the current precision thresholds in
src/matrix.c and tests/matrix-test.c. The random number generator is
seeded with a constant, so the random numbers should be the same on
every run. Machine speed and scheduling affect how many iterations are
run.
Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
13 years ago
|
|
|
tests/Makefile])
|
|
|
|
AC_OUTPUT
|
|
|
|
|
|
|
|
AC_MSG_RESULT([
|
|
|
|
Native Backend ${WESTON_NATIVE_BACKEND}
|
|
|
|
setuid Install ${enable_setuid_install}
|
|
|
|
|
|
|
|
Cairo Renderer ${with_cairo}
|
|
|
|
EGL ${enable_egl}
|
|
|
|
libxkbcommon ${enable_xkbcommon}
|
|
|
|
xcb_xkb ${have_xcb_xkb}
|
|
|
|
XWayland ${enable_xwayland}
|
|
|
|
dbus ${enable_dbus}
|
|
|
|
|
|
|
|
Build wcap utility ${enable_wcap_tools}
|
|
|
|
Build Tablet Shell ${enable_tablet_shell}
|
|
|
|
|
|
|
|
weston-launch utility ${enable_weston_launch}
|
|
|
|
systemd-login support ${have_systemd_login}
|
|
|
|
|
|
|
|
DRM Compositor ${enable_drm_compositor}
|
|
|
|
X11 Compositor ${enable_x11_compositor}
|
|
|
|
Wayland Compositor ${enable_wayland_compositor}
|
|
|
|
Headless Compositor ${enable_headless_compositor}
|
|
|
|
RPI Compositor ${enable_rpi_compositor}
|
|
|
|
FBDEV Compositor ${enable_fbdev_compositor}
|
|
|
|
RDP Compositor ${enable_rdp_compositor}
|
|
|
|
|
|
|
|
Raspberry Pi BCM headers ${have_bcm_host}
|
|
|
|
|
|
|
|
Build Clients ${enable_clients}
|
|
|
|
Build EGL Clients ${have_cairo_egl}
|
|
|
|
Build Simple Clients ${enable_simple_clients}
|
|
|
|
Build Simple EGL Clients ${enable_simple_egl_clients}
|
|
|
|
|
|
|
|
Install Demo Clients ${enable_demo_clients}
|
|
|
|
|
|
|
|
Colord Support ${have_colord}
|
|
|
|
GLU Support ${have_glu}
|
|
|
|
LCMS2 Support ${have_lcms}
|
|
|
|
libwebp Support ${have_webp}
|
|
|
|
libunwind Support ${have_libunwind}
|
|
|
|
VA H.264 encoding Support ${have_libva}
|
|
|
|
])
|