Split GRAB_MOTION and GRAB_MOVE handling
[profile/ivi/wayland.git] / Makefile
index f53e855..bf53de2 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,71 +1,79 @@
-CFLAGS = -Wall -g -Wstrict-prototypes -Wmissing-prototypes -fvisibility=hidden
+include config.mk
 
-PKG_CONFIG_PATH ?= $(HOME)/install/lib/pkgconfig
+subdirs = clients spec data
+libs = libwayland-server.so libwayland-client.so
 
-EAGLE_CFLAGS = $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) pkg-config --cflags eagle)
-EAGLE_LDLIBS = $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) pkg-config --libs eagle)
+all : $(libs) compositor subdirs-all scanner
 
-clients = flower pointer background window
-compositors = egl-compositor.so glx-compositor.so
+headers =                                      \
+       wayland-util.h                          \
+       wayland-server-protocol.h               \
+       wayland-server.h                        \
+       wayland-client-protocol.h               \
+       wayland-client.h \
 
-all : wayland libwayland.so $(compositors) $(clients)
-
-wayland_objs =                                 \
-       wayland.o                               \
+libwayland-server.so :                         \
+       wayland-protocol.o                      \
+       wayland-server.o                        \
        event-loop.o                            \
        connection.o                            \
-       hash.o                                  \
-       input.o
-
-wayland : CFLAGS += $(shell pkg-config --cflags libffi)
-wayland : LDLIBS += $(shell pkg-config --libs libffi) -ldl -rdynamic
-
-wayland : $(wayland_objs)
-       gcc -o $@ $(LDLIBS) $(wayland_objs)
-
-libwayland_objs = wayland-client.o connection.o
+       wayland-util.o                          \
+       wayland-hash.o
 
-libwayland.so : $(libwayland_objs)
-
-$(compositors) $(clients) : CFLAGS += $(shell pkg-config --cflags libdrm)
-
-egl_compositor_objs = egl-compositor.o cairo-util.o
-egl-compositor.so : CFLAGS += $(EAGLE_CFLAGS) $(shell pkg-config --cflags libpng cairo gdk-pixbuf-2.0)
-egl-compositor.so : LDLIBS += $(EAGLE_LDLIBS) $(shell pkg-config --libs libpng cairo gdk-pixbuf-2.0) -rdynamic
+libwayland-client.so :                         \
+       wayland-protocol.o                      \
+       wayland-client.o                        \
+       connection.o                            \
+       wayland-util.o                          \
+       wayland-hash.o
 
-egl-compositor.so : $(egl_compositor_objs)
+wayland-server.o : wayland-server-protocol.h
+wayland-client.o : wayland-client-protocol.h
 
-glx_compositor_objs = glx-compositor.o
-glx-compositor.so : LDLIBS += -lGL
+wayland-protocol.c : protocol.xml scanner
+       ./scanner code < $< > $@
 
-glx-compositor.so : $(glx_compositor_objs)
+wayland-server-protocol.h : protocol.xml scanner
+       ./scanner server-header < $< > $@
 
+wayland-client-protocol.h : protocol.xml scanner
+       ./scanner client-header < $< > $@
 
-libwayland.so $(compositors) :
-       gcc -o $@ $^ $(LDLIBS) -shared 
+$(libs) : CFLAGS += -fPIC $(FFI_CFLAGS)
+$(libs) : LDLIBS += $(FFI_LIBS)
+$(libs) :
+       gcc -shared $^ $(LDLIBS)  -o $@
 
-flower_objs = flower.o wayland-glib.o
-pointer_objs = pointer.o wayland-glib.o cairo-util.o
-background_objs = background.o wayland-glib.o
-window_objs = window.o gears.o wayland-glib.o cairo-util.o
+compositor :                                   \
+       compositor.o                            \
+       compositor-drm.o                        \
+       compositor-x11.o                        \
+       screenshooter.o                         \
+       drm.o
 
-$(clients) : CFLAGS += $(shell pkg-config --cflags cairo glib-2.0)
-$(clients) : LDLIBS += $(shell pkg-config --libs cairo glib-2.0) -lrt
+compositor : CFLAGS += $(COMPOSITOR_CFLAGS)
+compositor : LDLIBS += ./libwayland-server.so $(COMPOSITOR_LIBS) -rdynamic -lrt -lEGL -lm
 
-background : CFLAGS += $(shell pkg-config --cflags gdk-pixbuf-2.0)
-background : LDLIBS += $(shell pkg-config --libs gdk-pixbuf-2.0)
+scanner :                                      \
+       scanner.o                               \
+       wayland-util.o
 
-window : CFLAGS += $(EAGLE_CFLAGS)
-window : LDLIBS += $(EAGLE_LDLIBS)
+scanner : LDLIBS += $(EXPAT_LIBS)
 
-define client_template
-$(1): $$($(1)_objs) libwayland.so
-endef
+subdirs-all subdirs-clean subdirs-install:
+       for f in $(subdirs); do $(MAKE) -C $$f $(@:subdirs-%=%); done
 
-$(foreach c,$(clients),$(eval $(call client_template,$(c))))
+install : $(libs) compositor subdirs-install
+       install -d $(libdir) $(libdir)/pkgconfig ${udev_rules_dir}
+       install $(libs) $(libdir)
+       install wayland-server.pc wayland-client.pc $(libdir)/pkgconfig
+       install $(headers) $(includedir)
+       install 70-wayland.rules ${udev_rules_dir}
 
-$(clients) :
-       gcc -o $@ -L. -lwayland $(LDLIBS) $^
+clean : subdirs-clean
+       rm -f compositor scanner *.o *.so
+       rm -f wayland-protocol.c \
+               wayland-server-protocol.h wayland-client-protocol.h
 
-clean :
-       rm -f $(clients) wayland *.o *.so
+config.mk : config.mk.in
+       ./config.status