weston/configure.ac
Pekka Paalanen 4520d5cafb 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>
2012-01-27 10:44:22 +02:00

179 lines
5.8 KiB
Plaintext

AC_PREREQ([2.64])
AC_INIT([wayland-demos],
[0.1],
[https://bugs.freedesktop.org/enter_bug.cgi?product=wayland],
[wayland-demos],
[http://wayland.freedesktop.org/])
AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE([1.11 foreign dist-bzip2])
AM_SILENT_RULES([yes])
# Check for programs
AC_PROG_CC
# Initialize libtool
LT_PREREQ([2.2])
LT_INIT([disable-static])
PKG_PROG_PKG_CONFIG()
AC_CHECK_FUNC([dlopen], [],
AC_CHECK_LIB([dl], [dlopen], DLOPEN_LIBS="-ldl"))
AC_SUBST(DLOPEN_LIBS)
PKG_CHECK_MODULES(COMPOSITOR,
[wayland-server egl >= 7.10 glesv2 pixman-1 libpng])
AC_CHECK_PROG(RSVG_CONVERT, rsvg-convert, rsvg-convert)
AM_CONDITIONAL(HAVE_RSVG_CONVERT, test -n "$RSVG_CONVERT")
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(xserver-launcher, [ --enable-xserver-launcher],,
enable_xserver_launcher=yes)
AM_CONDITIONAL(ENABLE_XSERVER_LAUNCHER, test x$enable_xserver_launcher == xyes)
if test x$enable_xserver_launcher == xyes; then
PKG_CHECK_MODULES([XSERVER_LAUNCHER], xcb xcb-xfixes)
AC_DEFINE([BUILD_XSERVER_LAUNCHER], [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])
fi
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
AC_DEFINE([BUILD_X11_COMPOSITOR], [1], [Build the X11 compositor])
PKG_CHECK_MODULES(X11_COMPOSITOR, [x11 x11-xcb])
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.23 gbm])
fi
AC_ARG_ENABLE(openwfd-compositor, [ --enable-openwfd-compositor],,
enable_openwfd_compositor=no)
AM_CONDITIONAL(ENABLE_OPENWFD_COMPOSITOR, test x$enable_openwfd_compositor == xyes)
if test x$enable_openwfd_compositor == xyes; then
AC_DEFINE([BUILD_OPENWFD_COMPOSITOR], [1], [Build the OpenWF compositor])
PKG_CHECK_MODULES(OPENWFD_COMPOSITOR, [openwfd gbm])
fi
AC_ARG_ENABLE(wayland-compositor, [ --enable-wayland-compositor],,
enable_wayland_compositor=yes)
AM_CONDITIONAL(ENABLE_WAYLAND_COMPOSITOR,
test x$enable_wayland_compositor == xyes)
if test x$enable_wayland_compositor == xyes; then
AC_DEFINE([BUILD_WAYLAND_COMPOSITOR], [1],
[Build the Wayland (nested) compositor])
PKG_CHECK_MODULES(WAYLAND_COMPOSITOR, [wayland-client wayland-egl])
fi
AC_ARG_WITH(cairo-glesv2, AS_HELP_STRING([--with-cairo-gles2],
[Use GLESv2 cairo instead of full GL]),
[cairo_modules="cairo-glesv2"],
[cairo_modules="cairo-gl"])
AM_CONDITIONAL(BUILD_FULL_GL_CLIENTS,
test x$cairo_modules == "xcairo-gl")
if test x$cairo_modules == xcairo-glesv2; then
AC_DEFINE([USE_CAIRO_GLESV2], [1], [Use the GLESv2 GL cairo backend])
fi
AC_ARG_ENABLE(simple-clients, [ --enable-simple-clients],, enable_simple_clients=yes)
AM_CONDITIONAL(BUILD_SIMPLE_CLIENTS, test x$enable_simple_clients == xyes)
if test x$enable_simple_clients == xyes; then
AC_DEFINE([BUILD_SIMPLE_CLIENTS], [1], [Build the Wayland simple clients])
PKG_CHECK_MODULES(SIMPLE_CLIENT,
[egl >= 7.10 glesv2 wayland-client wayland-egl])
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 wayland-egl egl >= 7.10 cairo >= 1.10.0 gdk-pixbuf-2.0 glib-2.0 gobject-2.0 gio-2.0 xkbcommon])
PKG_CHECK_MODULES(POPPLER, [poppler-glib],
[have_poppler=yes], [have_poppler=no])
PKG_CHECK_MODULES(CAIRO_EGL, [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_MSG_WARN([Cairo-EGL not found - clients will use cairo image])])
AC_CHECK_LIB([jpeg], [jpeg_CreateDecompress], have_jpeglib=yes)
if test x$have_jpeglib == xyes; then
CLIENT_LIBS="$CLIENT_LIBS -ljpeg"
else
AC_ERROR([libjpeg not found])
fi
fi
AM_CONDITIONAL(HAVE_POPPLER, test "x$have_poppler" = "xyes")
AM_CONDITIONAL(ENABLE_DESKTOP_SHELL, true)
AC_ARG_ENABLE(tablet-shell, [ --enable-tablet-shell],,
enable_tablet_shell=yes)
AM_CONDITIONAL(ENABLE_TABLET_SHELL,
test x$enable_tablet_shell == xyes)
AC_ARG_ENABLE(tests, [ --enable-tests],,enable_tests=yes)
AM_CONDITIONAL(BUILD_TESTS, test x$enable_tests == xyes)
if test "x$GCC" = "xyes"; then
GCC_CFLAGS="-Wall -g -Wstrict-prototypes -Wmissing-prototypes -fvisibility=hidden"
fi
AC_SUBST(GCC_CFLAGS)
WAYLAND_SCANNER_RULES(['$(top_srcdir)/protocol'])
AC_CONFIG_FILES([Makefile
shared/Makefile
src/Makefile
clients/Makefile
data/Makefile
protocol/Makefile
tests/Makefile])
AC_OUTPUT
if test "x$enable_setuid_install" == xyes; then
AC_MSG_WARN([
*** You've enabled the setuid install hook. Weston is still a
*** pre-alpha project and may have bugs and issues that make a
*** setuid install unsafe. Proceed at your own risk.
])
fi