Move clients to subdirectory
diff --git a/.gitignore b/.gitignore
index 94abb94..e926353 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,4 +14,4 @@
 config.log
 config.status
 configure
-Makefile
+config.mk
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..afee0c3
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,52 @@
+include config.mk
+
+subdirs = clients
+libs = libwayland-server.so libwayland.so
+compositors = wayland-system-compositor
+
+all : $(libs) $(compositors) subdirs
+
+libwayland-server.so :				\
+	wayland.o				\
+	event-loop.o				\
+	connection.o				\
+	wayland-util.o				\
+	wayland-hash.o				\
+	wayland-protocol.o
+
+libwayland.so :					\
+	wayland-client.o			\
+	connection.o				\
+	wayland-util.o				\
+	wayland-hash.o				\
+	wayland-protocol.o
+
+$(libs) : CFLAGS += -fPIC $(FFI_CFLAGS)
+$(libs) : LDLIBS += $(FFI_LIBS)
+$(libs) :
+	gcc -shared $^ $(LDLIBS)  -o $@
+
+wayland-system-compositor :			\
+	wayland-system-compositor.o		\
+	evdev.o					\
+	cairo-util.o				\
+	wayland-util.o
+
+wayland-system-compositor : CFLAGS += $(EGL_COMPOSITOR_CFLAGS)
+wayland-system-compositor : LDLIBS += ./libwayland-server.so $(EGL_COMPOSITOR_LIBS) -rdynamic -lrt -lEGL
+
+subdirs-all subdirs-clean :
+	for f in $(subdirs); do $(MAKE) -C $$f $(@:subdirs-%=%); done
+
+install : $(libs) $(compositors)
+	install -d $(libdir) $(libdir)/pkgconfig ${udev_rules_dir}
+	install $(libs) $(libdir)
+	install wayland-server.pc wayland.pc $(libdir)/pkgconfig
+	install wayland-util.h wayland-client.h $(includedir)
+	install 70-wayland.rules ${udev_rules_dir}
+
+clean : subdirs-clean
+	rm -f $(compositors) *.o *.so
+
+config.mk : config.mk.in
+	./config.status
diff --git a/Makefile.in b/Makefile.in
deleted file mode 100644
index 72b5e6a..0000000
--- a/Makefile.in
+++ /dev/null
@@ -1,73 +0,0 @@
-CFLAGS = @GCC_CFLAGS@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-udev_rules_dir = @sysconfdir@/udev/rules.d
-
-libs = libwayland-server.so libwayland.so
-egl_clients = gears
-cairo_clients = flower screenshot terminal image view
-compositors = wayland-system-compositor
-clients = $(egl_clients) $(cairo_clients)
-
-all : $(libs) $(compositors) $(clients)
-
-libwayland-server.so :				\
-	wayland.o				\
-	event-loop.o				\
-	connection.o				\
-	wayland-util.o				\
-	wayland-hash.o				\
-	wayland-protocol.o
-
-libwayland.so :					\
-	wayland-client.o			\
-	connection.o				\
-	wayland-util.o				\
-	wayland-hash.o				\
-	wayland-protocol.o
-
-$(libs) : CFLAGS += -fPIC @FFI_CFLAGS@
-$(libs) : LDLIBS += @FFI_LIBS@
-$(libs) :
-	gcc -shared $^ $(LDLIBS)  -o $@
-
-wayland-system-compositor :			\
-	wayland-system-compositor.o		\
-	evdev.o					\
-	cairo-util.o				\
-	wayland-util.o
-
-wayland-system-compositor : CFLAGS += @EGL_COMPOSITOR_CFLAGS@
-wayland-system-compositor : LDLIBS += ./libwayland-server.so @EGL_COMPOSITOR_LIBS@ -rdynamic -lrt -lEGL
-
-flower : flower.o wayland-glib.o
-gears : gears.o window.o wayland-glib.o cairo-util.o
-screenshot : screenshot.o wayland-glib.o
-terminal : terminal.o window.o wayland-glib.o cairo-util.o
-image : image.o window.o wayland-glib.o cairo-util.o
-view : view.o window.o wayland-glib.o cairo-util.o
-
-terminal : LDLIBS += -lutil
-image : CFLAGS += @GDK_PIXBUF_CFLAGS@
-image : LDLIBS += @GDK_PIXBUF_LIBS@
-view : CFLAGS += @POPPLER_CFLAGS@
-view : LDLIBS += @POPPLER_LIBS@
-
-$(egl_clients) : CFLAGS += @EGL_CLIENT_CFLAGS@
-$(egl_clients) : LDLIBS += -L. -lwayland @EGL_CLIENT_LIBS@ -lrt -lEGL
-$(cairo_clients) : CFLAGS += @CAIRO_CLIENT_CFLAGS@
-$(cairo_clients) : LDLIBS += ./libwayland.so @CAIRO_CLIENT_LIBS@ -lrt
-
-install : $(libs) $(compositors)
-	install -d @libdir@ @libdir@/pkgconfig ${udev_rules_dir}
-	install $(libs) @libdir@
-	install wayland-server.pc wayland.pc @libdir@/pkgconfig
-	install wayland-util.h wayland-client.h @includedir@
-	install 70-wayland.rules ${udev_rules_dir}
-
-clean :
-	rm -f $(clients) $(compositors) *.o *.so
-
-Makefile : Makefile.in
-	./config.status
diff --git a/clients/Makefile b/clients/Makefile
new file mode 100644
index 0000000..4771439
--- /dev/null
+++ b/clients/Makefile
@@ -0,0 +1,27 @@
+include ../config.mk
+
+egl_clients = gears
+cairo_clients = flower screenshot terminal image view
+
+all : $(egl_clients) $(cairo_clients)
+
+clean :
+	rm -f $(egl_clients) $(cairo_clients) *.o
+
+flower : flower.o wayland-glib.o
+gears : gears.o window.o wayland-glib.o cairo-util.o
+screenshot : screenshot.o wayland-glib.o
+terminal : terminal.o window.o wayland-glib.o cairo-util.o
+image : image.o window.o wayland-glib.o cairo-util.o
+view : view.o window.o wayland-glib.o cairo-util.o
+
+terminal : LDLIBS += -lutil
+image : CFLAGS += $(GDK_PIXBUF_CFLAGS)
+image : LDLIBS += $(GDK_PIXBUF_LIBS)
+view : CFLAGS += $(POPPLER_CFLAGS)
+view : LDLIBS += $(POPPLER_LIBS)
+
+$(egl_clients) : CFLAGS += $(EGL_CLIENT_CFLAGS)
+$(egl_clients) : LDLIBS += -L.. -lwayland $(EGL_CLIENT_LIBS) -lrt
+$(cairo_clients) : CFLAGS += $(CAIRO_CLIENT_CFLAGS)
+$(cairo_clients) : LDLIBS += -L..  -lwayland $(CAIRO_CLIENT_LIBS) -lrt
diff --git a/flower.c b/clients/flower.c
similarity index 100%
rename from flower.c
rename to clients/flower.c
diff --git a/gears.c b/clients/gears.c
similarity index 100%
rename from gears.c
rename to clients/gears.c
diff --git a/image.c b/clients/image.c
similarity index 100%
rename from image.c
rename to clients/image.c
diff --git a/screenshot.c b/clients/screenshot.c
similarity index 100%
rename from screenshot.c
rename to clients/screenshot.c
diff --git a/terminal.c b/clients/terminal.c
similarity index 100%
rename from terminal.c
rename to clients/terminal.c
diff --git a/view.c b/clients/view.c
similarity index 100%
rename from view.c
rename to clients/view.c
diff --git a/config.mk.in b/config.mk.in
new file mode 100644
index 0000000..c633655
--- /dev/null
+++ b/config.mk.in
@@ -0,0 +1,25 @@
+CFLAGS = @GCC_CFLAGS@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+udev_rules_dir = @sysconfdir@/udev/rules.d
+libdir = @libdir@
+includedir = @includedir@
+
+EGL_COMPOSITOR_CFLAGS = @EGL_COMPOSITOR_CFLAGS@
+EGL_COMPOSITOR_LIBS = @EGL_COMPOSITOR_LIBS@
+
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LIBS = @FFI_LIBS@
+
+EGL_CLIENT_CFLAGS = @EGL_CLIENT_CFLAGS@
+EGL_CLIENT_LIBS = @EGL_CLIENT_LIBS@
+
+CAIRO_CLIENT_CFLAGS = @CAIRO_CLIENT_CFLAGS@
+CAIRO_CLIENT_LIBS = @CAIRO_CLIENT_LIBS@
+
+GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@
+GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@
+
+POPPLER_CFLAGS = @POPPLER_CFLAGS@
+POPPLER_LIBS = @POPPLER_LIBS@
diff --git a/configure.ac b/configure.ac
index f7e4663..bf3c669 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5,8 +5,8 @@
 PKG_CHECK_MODULES(FFI, [libffi])
 
 PKG_CHECK_MODULES(EGL_COMPOSITOR,
-		  [gl libpng cairo gdk-pixbuf-2.0 libudev >= 136 libdrm >= 2.4.17])
-PKG_CHECK_MODULES(EGL_CLIENT, [gl cairo glib-2.0 libudev])
+		  [egl gl libpng cairo gdk-pixbuf-2.0 libudev >= 136 libdrm >= 2.4.17])
+PKG_CHECK_MODULES(EGL_CLIENT, [egl gl cairo glib-2.0 libudev])
 PKG_CHECK_MODULES(CAIRO_CLIENT, [cairo-drm glib-2.0])
 PKG_CHECK_MODULES(GDK_PIXBUF, [gdk-pixbuf-2.0])
 PKG_CHECK_MODULES(POPPLER, [poppler-glib gdk-2.0])
@@ -16,5 +16,5 @@
 fi
 AC_SUBST(GCC_CFLAGS)
 
-AC_CONFIG_FILES([Makefile wayland-server.pc wayland.pc])
+AC_CONFIG_FILES([config.mk wayland-server.pc wayland.pc])
 AC_OUTPUT