weston/clients/Makefile.am
Kristian Høgsberg 1cc5ac34b5 clients: Nested compositor example
A wayland compositor doesn't provide a mechanism for buffer sharing between
clients.  Under X, one client can render to a Pixmap and another can use it
as a source in a subsequent drawing operations.  Wayland doesn't have a
mechanims to share Pixmaps or textures between clients like that, but it's
possible for one client to act as a nested compositor to another client.

This less work than it sounds, since the nested compositor won't have to
provide input devices or even any kind of shell extension.  The nested
compositor and its client can be very tightly coupled and have very specific
expectations of what the other process should provide.

In this example, nested.c is a toytoolkit application that uses cairo-gl
for rendering and forks and execs nested-client.c.  As it execs the client,
it passes it one end of a socketpair that will be the clients connection
to the nested compositor.  The nested compositor doesn't even create a
listening socket.

The client is a minimal GLES2 application, which just renders a spinning
triangle in its frame callback.
2013-06-04 02:47:12 -04:00

249 lines
5.7 KiB
Makefile

bin_PROGRAMS = \
weston-info \
$(terminal)
noinst_PROGRAMS = \
$(clients_programs) \
$(pango_programs) \
$(poppler_programs) \
$(simple_clients_programs) \
$(simple_egl_clients_programs)
libexec_PROGRAMS = \
$(desktop_shell) \
$(tablet_shell) \
$(screenshooter) \
$(screensaver) \
$(keyboard) \
weston-simple-im
AM_CFLAGS = $(GCC_CFLAGS)
AM_CPPFLAGS = \
-DDATADIR='"$(datadir)"' \
-DBINDIR='"$(bindir)"' \
$(CLIENT_CFLAGS) $(CAIRO_EGL_CFLAGS)
if BUILD_SIMPLE_CLIENTS
simple_clients_programs = \
simple-shm \
simple-touch
simple_shm_SOURCES = simple-shm.c \
../shared/os-compatibility.c \
../shared/os-compatibility.h
simple_shm_CPPFLAGS = $(SIMPLE_CLIENT_CFLAGS)
simple_shm_LDADD = $(SIMPLE_CLIENT_LIBS)
simple_touch_SOURCES = simple-touch.c \
../shared/os-compatibility.c \
../shared/os-compatibility.h
simple_touch_CPPFLAGS = $(SIMPLE_CLIENT_CFLAGS)
simple_touch_LDADD = $(SIMPLE_CLIENT_LIBS)
endif
if BUILD_SIMPLE_EGL_CLIENTS
simple_egl_clients_programs = \
simple-egl
simple_egl_SOURCES = simple-egl.c
simple_egl_CPPFLAGS = $(SIMPLE_EGL_CLIENT_CFLAGS)
simple_egl_LDADD = $(SIMPLE_EGL_CLIENT_LIBS) -lm
endif
if BUILD_CLIENTS
terminal = weston-terminal
clients_programs = \
flower \
image \
cliptest \
dnd \
smoke \
resizor \
nested \
nested-client \
eventdemo \
clickdot \
transformed \
fullscreen \
calibrator \
$(subsurfaces) \
$(full_gl_client_programs)
desktop_shell = weston-desktop-shell
if ENABLE_TABLET_SHELL
tablet_shell = weston-tablet-shell
endif
screenshooter = weston-screenshooter
noinst_LTLIBRARIES = libtoytoolkit.la
libtoytoolkit_la_SOURCES = \
window.c \
window.h \
text-cursor-position-protocol.c \
text-cursor-position-client-protocol.h \
subsurface-protocol.c \
subsurface-client-protocol.h \
workspaces-protocol.c \
workspaces-client-protocol.h
libtoytoolkit_la_LIBADD = \
$(CLIENT_LIBS) \
$(CAIRO_EGL_LIBS) \
../shared/libshared-cairo.la -lrt -lm
flower_SOURCES = flower.c
flower_LDADD = libtoytoolkit.la
weston_screenshooter_SOURCES = \
screenshot.c \
screenshooter-protocol.c \
screenshooter-client-protocol.h
weston_screenshooter_LDADD = libtoytoolkit.la
weston_terminal_SOURCES = terminal.c
weston_terminal_LDADD = libtoytoolkit.la -lutil
image_SOURCES = image.c
image_LDADD = libtoytoolkit.la
cliptest_SOURCES = cliptest.c
cliptest_CPPFLAGS = $(AM_CPPFLAGS) $(PIXMAN_CFLAGS)
cliptest_LDADD = libtoytoolkit.la $(PIXMAN_LIBS)
dnd_SOURCES = dnd.c
dnd_LDADD = libtoytoolkit.la
smoke_SOURCES = smoke.c
smoke_LDADD = libtoytoolkit.la
resizor_SOURCES = resizor.c
resizor_LDADD = libtoytoolkit.la
nested_SOURCES = nested.c
nested_LDADD = libtoytoolkit.la
nested_client_SOURCES = nested-client.c
nested_client_LDADD = $(SIMPLE_EGL_CLIENT_LIBS) -lm
eventdemo_SOURCES = eventdemo.c
eventdemo_LDADD = libtoytoolkit.la
clickdot_SOURCES = clickdot.c
clickdot_LDADD = libtoytoolkit.la
transformed_SOURCES = transformed.c
transformed_LDADD = libtoytoolkit.la
fullscreen_SOURCES = fullscreen.c
fullscreen_LDADD = libtoytoolkit.la
calibrator_SOURCES = calibrator.c ../shared/matrix.c ../shared/matrix.h
calibrator_LDADD = libtoytoolkit.la
if BUILD_SUBSURFACES_CLIENT
subsurfaces = subsurfaces
subsurfaces_SOURCES = subsurfaces.c
subsurfaces_CPPFLAGS = $(AM_CPPFLAGS) $(SIMPLE_EGL_CLIENT_CFLAGS)
subsurfaces_LDADD = libtoytoolkit.la $(SIMPLE_EGL_CLIENT_LIBS) -lm
endif
if HAVE_PANGO
pango_programs = editor
editor_SOURCES = \
editor.c \
text-protocol.c \
text-client-protocol.h
editor_LDADD = libtoytoolkit.la $(PANGO_LIBS)
editor_CPPFLAGS = $(AM_CPPFLAGS) $(PANGO_CFLAGS)
endif
keyboard = weston-keyboard
weston_keyboard_SOURCES = \
keyboard.c \
desktop-shell-client-protocol.h \
desktop-shell-protocol.c \
input-method-protocol.c \
input-method-client-protocol.h
weston_keyboard_LDADD = libtoytoolkit.la
weston_simple_im_SOURCES = \
weston-simple-im.c \
input-method-protocol.c \
input-method-client-protocol.h
weston_simple_im_LDADD = $(CLIENT_LIBS)
weston_info_SOURCES = \
weston-info.c \
../shared/os-compatibility.c \
../shared/os-compatibility.h
weston_info_LDADD = $(WESTON_INFO_LIBS)
weston_desktop_shell_SOURCES = \
desktop-shell.c \
desktop-shell-client-protocol.h \
desktop-shell-protocol.c
weston_desktop_shell_LDADD = libtoytoolkit.la
weston_tablet_shell_SOURCES = \
tablet-shell.c \
tablet-shell-client-protocol.h \
tablet-shell-protocol.c
weston_tablet_shell_LDADD = libtoytoolkit.la
BUILT_SOURCES = \
screenshooter-client-protocol.h \
screenshooter-protocol.c \
text-cursor-position-client-protocol.h \
text-cursor-position-protocol.c \
text-protocol.c \
text-client-protocol.h \
input-method-protocol.c \
input-method-client-protocol.h \
desktop-shell-client-protocol.h \
desktop-shell-protocol.c \
tablet-shell-client-protocol.h \
tablet-shell-protocol.c \
subsurface-client-protocol.h \
subsurface-protocol.c \
workspaces-client-protocol.h \
workspaces-protocol.c
CLEANFILES = $(BUILT_SOURCES)
endif
if BUILD_FULL_GL_CLIENTS
full_gl_client_programs = gears
gears_SOURCES = gears.c
gears_LDADD = libtoytoolkit.la
if HAVE_GLU
screensaver = weston-screensaver
weston_screensaver_SOURCES = \
wscreensaver.c \
wscreensaver.h \
desktop-shell-client-protocol.h \
desktop-shell-protocol.c \
wscreensaver-glue.c \
wscreensaver-glue.h \
glmatrix.c \
matrix3.xpm
weston_screensaver_LDADD = libtoytoolkit.la $(GLU_LIBS)
weston_screensaver_CFLAGS = $(GLU_CFLAGS)
endif
endif
@wayland_scanner_rules@
if HAVE_POPPLER
poppler_programs = view
view_SOURCES = view.c
view_LDADD = libtoytoolkit.la $(POPPLER_LIBS)
view_CPPFLAGS = $(AM_CPPFLAGS) $(POPPLER_CFLAGS)
endif