* Scanner

The scanner was renamed to "wayland-scanner" and is now an installed
program. When configure detects cross-compilation it will look for
wayland-scanner in $PATH instead of compiling it. The environment
variable $WAYLAND_SCANNER may be supplied at configure time if
wayland-scanner is not installed in $PATH.

Scanner output will be directed to the source directory when
$top_builddir != $top_srcdir.

* Sample clients & compositor

The sample clients & compositor can now be disabled via the configure
options --disable-compositor and --disable-clients. These options
default to "auto", i.e. they will be built if all of the prerequisites
are satisfied.

* General

Updated .gitignore for the case where $top_builddir != $top_srcdir.

All C files now properly include "config.h".

Pkg-config files are installed in "$(libdir)/pkgconfig".

Signed-off-by: Michael Steinert <[email protected]>
---
 .gitignore                      |   15 +++-
 Makefile.am                     |    3 +-
 clients/Makefile.am             |   89 +++++++++++++++-------
 clients/cairo-util.c            |    4 +
 clients/dnd.c                   |    4 +
 clients/flower.c                |    4 +
 clients/gears.c                 |    4 +
 clients/image.c                 |    4 +
 clients/screenshot.c            |    4 +
 clients/smoke.c                 |    4 +
 clients/terminal.c              |    4 +
 clients/view.c                  |    4 +
 clients/wayland-glib.c          |    4 +
 clients/window.c                |    4 +-
 compositor/Makefile.am          |   17 +++--
 compositor/compositor-drm.c     |    4 +
 compositor/compositor-wayland.c |    2 +-
 compositor/compositor-x11.c     |    2 +-
 compositor/compositor.c         |    4 +
 compositor/drm.c                |    4 +
 compositor/screenshooter.c      |    4 +
 compositor/shm.c                |    4 +
 configure.ac                    |  155 +++++++++++++++++++++++++++-----------
 m4/wayland.m4                   |   15 ++++
 wayland/Makefile.am             |   52 ++++++++-----
 wayland/connection.c            |    4 +
 wayland/event-loop.c            |   21 +++++-
 wayland/scanner.c               |    4 +
 wayland/scanner.mk              |   12 ++--
 wayland/wayland-client.c        |    4 +
 wayland/wayland-hash.c          |    4 +
 wayland/wayland-server.c        |    4 +
 wayland/wayland-util.c          |    4 +
 33 files changed, 353 insertions(+), 118 deletions(-)
 create mode 100644 m4/wayland.m4

diff --git a/.gitignore b/.gitignore
index 7c5bfe5..6f47900 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
+*.a
 *.deps
 *.jpg
 *.la
@@ -7,22 +8,26 @@
 *.so
 *.swp
 *~
+*-client-protocol.h
+*-protocol.c
+*-server-protocol.h
 .libs
 /aclocal.m4
 /autom4te.cache
 /config.guess
-/config.h
+config.h
 /config.h.in
-/config.log
+config.log
 /config.mk
-/config.status
+config.status
 /config.sub
 /configure
 /depcomp
 /install-sh
-/libtool
+libtool
 /ltmain.sh
 /missing
-/stamp-h1
+stamp-h1
 Makefile
 Makefile.in
+wayland-scanner
diff --git a/Makefile.am b/Makefile.am
index 03d15db..67ba936 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,3 +1,4 @@
-SUBDIRS = wayland compositor clients data
+SUBDIRS = wayland data $(WAYLAND_COMPOSITOR) $(WAYLAND_CLIENTS)
+DIST_SUBDIRS = compositor clients
 
 ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
diff --git a/clients/Makefile.am b/clients/Makefile.am
index 56b6a2b..8faf198 100644
--- a/clients/Makefile.am
+++ b/clients/Makefile.am
@@ -1,42 +1,73 @@
-noinst_PROGRAMS = gears flower screenshot terminal image view dnd smoke
+noinst_PROGRAMS = dnd flower gears image screenshot smoke terminal view
 noinst_LTLIBRARIES = libtoytoolkit.la
 
-INCLUDES =                                     \
-       -I$(top_srcdir)/wayland                 \
-       -I$(top_builddir)/wayland                       \
-       $(CLIENT_CFLAGS) $(POPPLER_CFLAGS)
+AM_CPPFLAGS =                                          \
+       -DDATADIR='"$(datadir)"'                        \
+       $(CLIENT_CFLAGS)
 
-LDADD = libtoytoolkit.la                               \
+LDADD =                                                        \
+       libtoytoolkit.la                                \
        $(top_builddir)/wayland/libwayland-client.la    \
        $(CLIENT_LIBS) -lrt -lm
 
-AM_CFLAGS = $(GCC_CFLAGS)
-AM_CPPFLAGS = -DDATADIR='"$(datadir)"'
+# dnd: drag 'n' drop demo
+dnd_SOURCES =                                          \
+       dnd.c
 
-libtoytoolkit_la_SOURCES =                     \
-       window.c                                \
-       window.h                                \
-       wayland-glib.c                          \
-       wayland-glib.h                          \
-       cairo-util.c                            \
-       cairo-util.h
+# flower: display a rotating flower
+flower_SOURCES =                                       \
+       flower.c
+
+# gears: similar to the X11 glxgears demo
+gears_SOURCES =                                                \
+       gears.c
 
-flower_SOURCES = flower.c
-smoke_SOURCES = smoke.c
-gears_SOURCES = gears.c
-screenshot_SOURCES = screenshot.c screenshooter-protocol.c
-terminal_SOURCES = terminal.c
-image_SOURCES = image.c
-view_SOURCES = view.c
-dnd_SOURCES = dnd.c
-
-BUILT_SOURCES =                                        \
-       screenshooter-client-protocol.h         \
+# image: display image
+image_SOURCES =                                                \
+       image.c
+
+# screeshot: create a screenshot image
+screenshot_SOURCES =                                   \
+       screenshot.c                                    \
        screenshooter-protocol.c
 
+# smoke:
+smoke_SOURCES =                                                \
+       smoke.c
+
+# terminal: a simple terminal emulator
+terminal_LDADD = -lutil
+
+terminal_SOURCES =                                     \
+       terminal.c
+
+# view: display PDF files (requires a URI)
+view_CPPFLAGS =                                                \
+       $(POPPLER_CFLAGS)
+
+view_LDADD = $(POPPLER_LIBS)
+
+view_SOURCES =                                         \
+       view.c
+
+# libtoytoolkit: support library
+libtoytoolkit_la_SOURCES =                             \
+       window.c                                        \
+       window.h                                        \
+       wayland-glib.c                                  \
+       wayland-glib.h                                  \
+       cairo-util.c                                    \
+       cairo-util.h
+
+if CROSS_COMPILING
+else
+$(BUILT_SOURCES): $(top_srcdir)/wayland/wayland-scanner
+endif
+
+BUILT_SOURCES =                                                \
+       $(srcdir)/screenshooter-client-protocol.h       \
+       $(srcdir)/screenshooter-protocol.c
+
 CLEANFILES = $(BUILT_SOURCES)
 
 include $(top_srcdir)/wayland/scanner.mk
-
-terminal_LDADD = $(LDADD) -lutil
-view_LDADD = $(LDADD) $(POPPLER_LIBS)
diff --git a/clients/cairo-util.c b/clients/cairo-util.c
index 3aef0af..5377054 100644
--- a/clients/cairo-util.c
+++ b/clients/cairo-util.c
@@ -20,6 +20,10 @@
  * OF THIS SOFTWARE.
  */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
diff --git a/clients/dnd.c b/clients/dnd.c
index e6dd091..988a32a 100644
--- a/clients/dnd.c
+++ b/clients/dnd.c
@@ -20,6 +20,10 @@
  * OF THIS SOFTWARE.
  */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/clients/flower.c b/clients/flower.c
index b919cf5..3ce585e 100644
--- a/clients/flower.c
+++ b/clients/flower.c
@@ -20,6 +20,10 @@
  * OF THIS SOFTWARE.
  */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/clients/gears.c b/clients/gears.c
index 7d3c310..d8d8e83 100644
--- a/clients/gears.c
+++ b/clients/gears.c
@@ -20,6 +20,10 @@
  * OF THIS SOFTWARE.
  */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/clients/image.c b/clients/image.c
index bb563ed..6c193df 100644
--- a/clients/image.c
+++ b/clients/image.c
@@ -21,6 +21,10 @@
  * OF THIS SOFTWARE.
  */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/clients/screenshot.c b/clients/screenshot.c
index 8f44460..0e501ac 100644
--- a/clients/screenshot.c
+++ b/clients/screenshot.c
@@ -20,6 +20,10 @@
  * OF THIS SOFTWARE.
  */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #include <stdint.h>
 #include <stdlib.h>
 #include <stdio.h>
diff --git a/clients/smoke.c b/clients/smoke.c
index 43226ad..078a374 100644
--- a/clients/smoke.c
+++ b/clients/smoke.c
@@ -20,6 +20,10 @@
  * OF THIS SOFTWARE.
  */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/clients/terminal.c b/clients/terminal.c
index 2f12f8a..3eef1f7 100644
--- a/clients/terminal.c
+++ b/clients/terminal.c
@@ -20,6 +20,10 @@
  * OF THIS SOFTWARE.
  */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/clients/view.c b/clients/view.c
index 67149fb..499199d 100644
--- a/clients/view.c
+++ b/clients/view.c
@@ -21,6 +21,10 @@
  * OF THIS SOFTWARE.
  */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/clients/wayland-glib.c b/clients/wayland-glib.c
index fa7a9f5..95c8e5a 100644
--- a/clients/wayland-glib.c
+++ b/clients/wayland-glib.c
@@ -20,6 +20,10 @@
  * OF THIS SOFTWARE.
  */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #include <stdint.h>
 #include <glib/giochannel.h>
 #include "wayland-client.h"
diff --git a/clients/window.c b/clients/window.c
index d03ef4b..e07ebd4 100644
--- a/clients/window.c
+++ b/clients/window.c
@@ -20,7 +20,9 @@
  * OF THIS SOFTWARE.
  */
 
-#include "../config.h"
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
 
 #include <stdint.h>
 #include <stdio.h>
diff --git a/compositor/Makefile.am b/compositor/Makefile.am
index 0b28cad..f20b8b0 100644
--- a/compositor/Makefile.am
+++ b/compositor/Makefile.am
@@ -1,13 +1,11 @@
 noinst_PROGRAMS = compositor
 
-INCLUDES =                                     \
+compositor_CPPFLAGS =                          \
+       -DDATADIR='"$(datadir)"'                \
        -I$(top_srcdir)/wayland                 \
        -I$(top_builddir)/wayland               \
        $(COMPOSITOR_CFLAGS)
 
-AM_CFLAGS = $(GCC_CFLAGS)
-AM_CPPFLAGS = -DDATADIR='"$(datadir)"'
-
 compositor_LDADD =                                     \
        $(top_builddir)/wayland/libwayland-server.la    \
        $(top_builddir)/wayland/libwayland-client.la    \
@@ -30,9 +28,14 @@ udevrulesddir = $(sysconfdir)/udev/rules.d
 dist_udevrulesd_DATA =                         \
        70-wayland.rules
 
-BUILT_SOURCES =                                        \
-       screenshooter-server-protocol.h         \
-       screenshooter-protocol.c
+if CROSS_COMPILING
+else
+$(BUILT_SOURCES): $(top_srcdir)/wayland/wayland-scanner
+endif
+
+BUILT_SOURCES =                                                \
+       $(srcdir)/screenshooter-server-protocol.h       \
+       $(srcdir)/screenshooter-protocol.c
 
 CLEANFILES = $(BUILT_SOURCES)
 
diff --git a/compositor/compositor-drm.c b/compositor/compositor-drm.c
index 1d04c06..61b9316 100644
--- a/compositor/compositor-drm.c
+++ b/compositor/compositor-drm.c
@@ -16,6 +16,10 @@
  * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
diff --git a/compositor/compositor-wayland.c b/compositor/compositor-wayland.c
index fa630bc..df625d9 100644
--- a/compositor/compositor-wayland.c
+++ b/compositor/compositor-wayland.c
@@ -17,7 +17,7 @@
  */
 
 #ifdef HAVE_CONFIG_H
-#include <config.h>
+#include "config.h"
 #endif
 
 #include <stddef.h>
diff --git a/compositor/compositor-x11.c b/compositor/compositor-x11.c
index 3aa2475..bf1f2d6 100644
--- a/compositor/compositor-x11.c
+++ b/compositor/compositor-x11.c
@@ -17,7 +17,7 @@
  */
 
 #ifdef HAVE_CONFIG_H
-#include <config.h>
+#include "config.h"
 #endif
 
 #include <stddef.h>
diff --git a/compositor/compositor.c b/compositor/compositor.c
index 025b022..23ec0a2 100644
--- a/compositor/compositor.c
+++ b/compositor/compositor.c
@@ -16,6 +16,10 @@
  * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #define _GNU_SOURCE
 
 #include <stdio.h>
diff --git a/compositor/drm.c b/compositor/drm.c
index 59a72f2..5c6bf4e 100644
--- a/compositor/drm.c
+++ b/compositor/drm.c
@@ -16,6 +16,10 @@
  * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
diff --git a/compositor/screenshooter.c b/compositor/screenshooter.c
index c1716ec..c8363ca 100644
--- a/compositor/screenshooter.c
+++ b/compositor/screenshooter.c
@@ -16,6 +16,10 @@
  * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #include <stdlib.h>
 #include <GLES2/gl2.h>
 #include <gdk-pixbuf/gdk-pixbuf.h>
diff --git a/compositor/shm.c b/compositor/shm.c
index 023cde0..4d9bb9c 100644
--- a/compositor/shm.c
+++ b/compositor/shm.c
@@ -16,6 +16,10 @@
  * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
diff --git a/configure.ac b/configure.ac
index 5568218..ca456f7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,62 +1,127 @@
+# Initialize autoconf & automake
 AC_PREREQ([2.64])
-AC_INIT([wayland],
-        [0.1],
-        [https://bugs.freedesktop.org/enter_bug.cgi?product=wayland],
-        [wayland],
-        [http://wayland.freedesktop.org/])
-
-AC_CONFIG_HEADERS([config.h])
+AC_INIT([Wayland], [0.1],
+       [https://bugs.freedesktop.org/enter_bug.cgi?product=wayland],
+       [wayland], [http://wayland.freedesktop.org/])
 AC_CONFIG_MACRO_DIR([m4])
-
 AM_INIT_AUTOMAKE([1.11 foreign dist-bzip2])
-
 AM_SILENT_RULES([yes])
+AC_CONFIG_SRCDIR([wayland/wayland-client.h])
 
 # Check for programs
 AC_PROG_CC
+PKG_PROG_PKG_CONFIG
 
 # Initialize libtool
 LT_PREREQ([2.2])
 LT_INIT
 
-PKG_PROG_PKG_CONFIG()
-PKG_CHECK_MODULES(FFI, [libffi])
+# Enable gcc options
+WAYLAND_GCC_OPTIONS([-Wall -g -Wstrict-prototypes -Wmissing-prototypes 
-fvisibility=hidden])
 
-PKG_CHECK_MODULES(COMPOSITOR,
-                 [egl glesv2 gdk-pixbuf-2.0 libudev >= 136 libdrm >= 2.4.17] 
xcb-dri2 xcb-xfixes)
-PKG_CHECK_MODULES(CLIENT, [egl gl cairo gdk-pixbuf-2.0 glib-2.0 gobject-2.0 
xkbcommon libdrm])
-PKG_CHECK_MODULES(POPPLER, [poppler-glib gdk-2.0])
-PKG_CHECK_MODULES(CAIRO_GL, [cairo-gl],
-                 [have_cairo_gl=yes], [have_cairo_gl=no])
-AS_IF([test "x$have_cairo_gl" = "xyes"],
-      [AC_DEFINE([HAVE_CAIRO_GL], [1], [Have cairo-gl])])
+# Check Wayland prerequisites
+PKG_CHECK_MODULES([FFI], [libffi])
 
-if test $CC = gcc; then
-       GCC_CFLAGS="-Wall -g -Wstrict-prototypes -Wmissing-prototypes 
-fvisibility=hidden"
-fi
-AC_SUBST(GCC_CFLAGS)
-
-EXPAT_LIB=""
-AC_ARG_WITH(expat, [  --with-expat=<dir>      Use expat from here],
-                  [ expat=$withval
-                    CPPFLAGS="$CPPFLAGS -I$withval/include"
-                    LDFLAGS="$LDFLAGS -L$withval/lib" ] )
-AC_CHECK_HEADERS(expat.h, [AC_DEFINE(HAVE_EXPAT_H)], 
-                [AC_MSG_ERROR([Can't find expat.h. Please install expat.])])
-AC_CHECK_LIB(expat, XML_ParserCreate, [EXPAT_LIBS="-lexpat"],
-            [AC_MSG_ERROR([Can't find expat library. Please install expat.])])
-AC_SUBST(EXPAT_LIBS)
-
-# workaround a bug in xcb-dri2 generated by xcb-proto 1.6
-AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [],
-            [AC_DEFINE([XCB_DRI2_CONNECT_DEVICE_NAME_BROKEN], [1],
+# signalfd & timerfd: Linux 2.6.22 [8 July 2007]
+AC_CHECK_HEADERS([sys/signalfd.h sys/timerfd.h])
+
+# Compositor option
+AC_ARG_ENABLE([compositor],
+       [AC_HELP_STRING([--enable-compositor],
+               [enable the test compositor @<:@default=auto@:>@])],,
+       [enableval=auto])
+AC_CACHE_CHECK([if the test compositor is enabled],
+       [wayland_cv_enable_compositor],
+       [wayland_cv_enable_compositor="$enableval"])
+if test "x$wayland_cv_enable_compositor" != "xno"; then
+       WAYLAND_COMPOSITOR=compositor
+       PKG_CHECK_MODULES([COMPOSITOR],
+               [egl glesv2 gdk-pixbuf-2.0 libudev >= 136 libdrm >= 2.4.17 
xcb-dri2 xcb-xfixes],
+               [],
+               [WAYLAND_COMPOSITOR=
+               wayland_cv_enable_compositor=no])
+       # workaround a bug in xcb-dri2 generated by xcb-proto 1.6
+       AC_CHECK_LIB([xcb-dri2], [xcb_dri2_connect_alignment_pad], [],
+               [AC_DEFINE([XCB_DRI2_CONNECT_DEVICE_NAME_BROKEN], [1],
                        [Define to 1 if xcb_dri2_connect_device_name is 
broken])])
+fi
+AC_SUBST([WAYLAND_COMPOSITOR])
+
+# Clients option
+AC_ARG_ENABLE([clients],
+       [AC_HELP_STRING([--enable-clients],
+               [enable the test clients @<:@default=auto@:>@])],,
+       [enableval=auto])
+AC_CACHE_CHECK([if the test clients are enabled],
+       [wayland_cv_enable_clients],
+       [wayland_cv_enable_clients="$enableval"])
+if test "x$wayland_cv_enable_clients" != "xno"; then
+       WAYLAND_CLIENTS=clients
+       PKG_CHECK_MODULES([CLIENT],
+               [egl gl cairo gdk-pixbuf-2.0 glib-2.0 gobject-2.0 xkbcommon 
libdrm],
+               [],
+               [WAYLAND_CLIENTS=
+               wayland_cv_enable_clients=no])
+       PKG_CHECK_MODULES([POPPLER], [poppler-glib gdk-2.0],
+               [],
+               [WAYLAND_CLIENTS=
+               wayland_cv_enable_clients=no])
+       PKG_CHECK_MODULES([CAIRO_GL], [cairo-gl],
+               [AC_DEFINE([HAVE_CAIRO_GL], [1],
+                       [Define to 1 if cairo-gl is available])],
+               [:])
+fi
+AC_SUBST([WAYLAND_CLIENTS])
 
-AC_CONFIG_FILES([wayland/wayland-server.pc
-                wayland/wayland-client.pc
-                Makefile
-                wayland/Makefile
-                compositor/Makefile
-                clients/Makefile
-                data/Makefile])
+# Configure the Wayland scanner
+AM_CONDITIONAL([CROSS_COMPILING], [test "x$cross_compiling" = "xyes"])
+if test "x$cross_compiling" = "xyes"; then
+       AC_ARG_VAR([WAYLAND_SCANNER],
+               [Set the full path to the Wayland scanner when cross-compiling])
+       AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner])
+       if test "x$WAYLAND_SCANNER" = "x"; then
+               AC_MSG_WARN([A native version of wayland-scanner is required 
when cross-compiling])
+               wayland_scanner=wayland-scanner
+       else
+               wayland_scanner=$WAYLAND_SCANNER
+       fi
+else
+       AC_ARG_WITH([expat],
+               [AC_HELP_STRING([--with-expat=PREFIX],
+                       [Use Expat from PREFIX/include and PREFIX/lib])],
+               [if test "x$withval" = "xyes"; then
+                       AC_MSG_WARN(['--with-expat' requires an argument.])
+               else
+                       if test -d "$withval"; then
+                               CPPFLAGS="$CPPFLAGS -I$withval/include"
+                               LDFLAGS="$LDFLAGS -L$withval/lib"
+                       else
+                               AC_MSG_WARN(['--with-expat': $withval is not a 
directory])
+                       fi
+               fi])
+       AC_CHECK_HEADERS([expat.h], [],
+               [AC_MSG_ERROR([Unable to find Expat header file; See 
http://expat.sourceforge.net/])])
+       AC_CHECK_LIB([expat], [XML_ParserCreate], [],
+               [AC_MSG_ERROR([Unable to find Expat library; See 
http://expat.sourceforge.net/])])
+       wayland_scanner='$(top_builddir)/wayland/wayland-scanner'
+fi
+AC_SUBST([wayland_scanner])
+
+# Output files
+AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_FILES([
+       clients/Makefile
+       compositor/Makefile
+       data/Makefile
+       Makefile
+       wayland/Makefile
+       wayland/wayland-server.pc
+       wayland/wayland-client.pc])
 AC_OUTPUT
+AC_MSG_RESULT([
+$PACKAGE_NAME build options
+       Host: $host
+       Version: $VERSION
+       Compositor: $wayland_cv_enable_compositor
+       Clients: $wayland_cv_enable_clients
+])
diff --git a/m4/wayland.m4 b/m4/wayland.m4
new file mode 100644
index 0000000..87d1413
--- /dev/null
+++ b/m4/wayland.m4
@@ -0,0 +1,15 @@
+#serial 1
+
+# WAYLAND_GCC_OPTIONS(options)
+# ----------------------------
+# Enable compiler options for gcc.
+AC_DEFUN([WAYLAND_GCC_OPTIONS],
+[if test "x$GCC" = "xyes"; then
+    for option in "$1"; do
+        case " $CFLAGS " in
+        *[[\ \ ]]$option[[\ \  ]]*) ;;
+        *) CFLAGS="$CFLAGS $option" ;;
+        esac
+    done
+fi
+])dnl
diff --git a/wayland/Makefile.am b/wayland/Makefile.am
index 6e48eb8..4f9ccae 100644
--- a/wayland/Makefile.am
+++ b/wayland/Makefile.am
@@ -1,48 +1,58 @@
-lib_LTLIBRARIES = libwayland-server.la libwayland-client.la
+lib_LTLIBRARIES = libwayland-client.la libwayland-server.la
 noinst_LTLIBRARIES = libwayland-util.la
 
 include_HEADERS =                              \
-       wayland-util.h                          \
-       wayland-server-protocol.h               \
-       wayland-server.h                        \
+       wayland-client.h                        \
        wayland-client-protocol.h               \
-       wayland-client.h
+       wayland-server.h                        \
+       wayland-server-protocol.h               \
+       wayland-util.h
 
+libwayland_util_la_CPPFLAGS = $(FFI_CFLAGS)
 libwayland_util_la_SOURCES =                   \
        connection.c                            \
        connection.h                            \
+       wayland-hash.c                          \
        wayland-util.c                          \
-       wayland-util.h                          \
-       wayland-hash.c
+       wayland-util.h
 
+libwayland_server_la_CPPFLAGS = $(FFI_CFLAGS)
 libwayland_server_la_LIBADD = $(FFI_LIBS) libwayland-util.la
 libwayland_server_la_SOURCES =                 \
+       event-loop.c                            \
        wayland-protocol.c                      \
        wayland-server.c                        \
-       event-loop.c
+       wayland-server-protocol.h
 
+libwayland_client_la_CPPFLAGS = $(FFI_CFLAGS)
 libwayland_client_la_LIBADD = $(FFI_LIBS) libwayland-util.la
 libwayland_client_la_SOURCES =                 \
-       wayland-protocol.c                      \
-       wayland-client.c
-
-INCLUDES = $(FFI_CFLAGS)
-AM_CFLAGS = $(GCC_CFLAGS)
+       wayland-client.c                        \
+       wayland-client-protocol.h               \
+       wayland-protocol.c
 
-include $(top_srcdir)/wayland/scanner.mk
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA =                               \
+       wayland-client.pc                       \
+       wayland-server.pc
 
-noinst_PROGRAMS = scanner
+if CROSS_COMPILING
+else
+bin_PROGRAMS = wayland-scanner
 
-scanner_SOURCES =                              \
+wayland_scanner_SOURCES =                      \
        scanner.c
 
-scanner_LDADD = $(EXPAT_LIBS) libwayland-util.la
+wayland_scanner_LDADD = libwayland-util.la
 
-$(BUILT_SOURCES) : scanner
+$(BUILT_SOURCES): wayland-scanner
+endif
 
 BUILT_SOURCES =                                        \
-       wayland-server-protocol.h               \
-       wayland-client-protocol.h               \
-       wayland-protocol.c
+       $(srcdir)/wayland-protocol.c            \
+       $(srcdir)/wayland-client-protocol.h     \
+       $(srcdir)/wayland-server-protocol.h
 
 CLEANFILES = $(BUILT_SOURCES)
+
+include scanner.mk
diff --git a/wayland/connection.c b/wayland/connection.c
index dadf2c3..3d577a5 100644
--- a/wayland/connection.c
+++ b/wayland/connection.c
@@ -20,6 +20,10 @@
  * OF THIS SOFTWARE.
  */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #include <stdlib.h>
 #include <stdint.h>
 #include <string.h>
diff --git a/wayland/event-loop.c b/wayland/event-loop.c
index bf2a9aa..39dae23 100644
--- a/wayland/event-loop.c
+++ b/wayland/event-loop.c
@@ -20,6 +20,10 @@
  * OF THIS SOFTWARE.
  */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #include <stddef.h>
 #include <stdio.h>
 #include <errno.h>
@@ -29,8 +33,12 @@
 #include <sys/socket.h>
 #include <sys/un.h>
 #include <sys/epoll.h>
+#ifdef HAVE_SYS_SIGNALFD_H
 #include <sys/signalfd.h>
+#endif /* HAVE_SYS_SIGNALFD_H */
+#ifdef HAVE_SYS_TIMERFD_H
 #include <sys/timerfd.h>
+#endif /* HAVE_SYS_TIMERFD_H */
 #include <unistd.h>
 #include <assert.h>
 #include "wayland-server.h"
@@ -190,6 +198,7 @@ wl_event_loop_add_timer(struct wl_event_loop *loop,
                        wl_event_loop_timer_func_t func,
                        void *data)
 {
+#ifdef HAVE_SYS_TIMERFD_H
        struct wl_event_source_timer *source;
        struct epoll_event ep;
 
@@ -220,11 +229,15 @@ wl_event_loop_add_timer(struct wl_event_loop *loop,
        }
 
        return &source->base;
+#else /* HAVE_SYS_TIMERFD_H */
+       return NULL;
+#endif /* HAVE_SYS_TIMERFD_H */
 }
 
 WL_EXPORT int
 wl_event_source_timer_update(struct wl_event_source *source, int ms_delay)
 {
+#ifdef HAVE_SYS_TIMERFD_H
        struct wl_event_source_timer *timer_source =
                (struct wl_event_source_timer *) source;
        struct itimerspec its;
@@ -237,7 +250,7 @@ wl_event_source_timer_update(struct wl_event_source 
*source, int ms_delay)
                fprintf(stderr, "could not set timerfd\n: %m");
                return -1;
        }
-
+#endif /* HAVE_SYS_TIMERFD_H */
        return 0;
 }
 
@@ -253,6 +266,7 @@ static void
 wl_event_source_signal_dispatch(struct wl_event_source *source,
                               struct epoll_event *ep)
 {
+#ifdef HAVE_SYS_SIGNALFD_H
        struct wl_event_source_signal *signal_source =
                (struct wl_event_source_signal *) source;
        struct signalfd_siginfo signal_info;
@@ -260,6 +274,7 @@ wl_event_source_signal_dispatch(struct wl_event_source 
*source,
        read(signal_source->fd, &signal_info, sizeof signal_info);
 
        signal_source->func(signal_source->signal_number, signal_source->data);
+#endif /* HAVE_SYS_SIGNALFD_H */
 }
 
 static int
@@ -287,6 +302,7 @@ wl_event_loop_add_signal(struct wl_event_loop *loop,
                        wl_event_loop_signal_func_t func,
                        void *data)
 {
+#ifdef HAVE_SYS_SIGNALFD_H
        struct wl_event_source_signal *source;
        struct epoll_event ep;
        sigset_t mask;
@@ -321,6 +337,9 @@ wl_event_loop_add_signal(struct wl_event_loop *loop,
        }
 
        return &source->base;
+#else /* HAVE_SYS_SIGNALFD_H */
+       return NULL;
+#endif /* HAVE_SYS_SIGNALFD_H */
 }
 
 struct wl_event_source_idle {
diff --git a/wayland/scanner.c b/wayland/scanner.c
index 9d099fb..106d9dd 100644
--- a/wayland/scanner.c
+++ b/wayland/scanner.c
@@ -16,6 +16,10 @@
  * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #include <stdio.h>
 #include <string.h>
 #include <errno.h>
diff --git a/wayland/scanner.mk b/wayland/scanner.mk
index efdb42b..729ffd2 100644
--- a/wayland/scanner.mk
+++ b/wayland/scanner.mk
@@ -1,8 +1,8 @@
-%-protocol.c : $(top_srcdir)/protocol/%.xml
-       $(AM_V_GEN)$(top_builddir)/wayland/scanner code < $< > $@
+$(srcdir)/%-protocol.c: $(top_srcdir)/protocol/%.xml
+       $(AM_V_GEN)$(wayland_scanner) code < $< > $@
 
-%-server-protocol.h : $(top_srcdir)/protocol/%.xml
-       $(AM_V_GEN)$(top_builddir)/wayland/scanner server-header < $< > $@
+$(srcdir)/%-server-protocol.h: $(top_srcdir)/protocol/%.xml
+       $(AM_V_GEN)$(wayland_scanner) server-header < $< > $@
 
-%-client-protocol.h : $(top_srcdir)/protocol/%.xml
-       $(AM_V_GEN)$(top_builddir)/wayland/scanner client-header < $< > $@
+$(srcdir)/%-client-protocol.h: $(top_srcdir)/protocol/%.xml
+       $(AM_V_GEN)$(wayland_scanner) client-header < $< > $@
diff --git a/wayland/wayland-client.c b/wayland/wayland-client.c
index 0259017..806f59f 100644
--- a/wayland/wayland-client.c
+++ b/wayland/wayland-client.c
@@ -20,6 +20,10 @@
  * OF THIS SOFTWARE.
  */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #include <stdlib.h>
 #include <stdint.h>
 #include <stddef.h>
diff --git a/wayland/wayland-hash.c b/wayland/wayland-hash.c
index b299a33..3c35b30 100644
--- a/wayland/wayland-hash.c
+++ b/wayland/wayland-hash.c
@@ -32,6 +32,10 @@
  *    Keith Packard <[email protected]>
  */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #include <stdlib.h>
 
 #include "wayland-util.h"
diff --git a/wayland/wayland-server.c b/wayland/wayland-server.c
index 57599fa..41bccb3 100644
--- a/wayland/wayland-server.c
+++ b/wayland/wayland-server.c
@@ -20,6 +20,10 @@
  * OF THIS SOFTWARE.
  */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #include <stdlib.h>
 #include <stdint.h>
 #include <stddef.h>
diff --git a/wayland/wayland-util.c b/wayland/wayland-util.c
index a287cce..fbce075 100644
--- a/wayland/wayland-util.c
+++ b/wayland/wayland-util.c
@@ -20,6 +20,10 @@
  * OF THIS SOFTWARE.
  */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #include <stdlib.h>
 #include <stdint.h>
 #include <string.h>
-- 
1.7.3.2

_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to