1# Rules for generating marshal files using glib-genmarshal
2#
3# Define:
4# 	glib_marshal_list = marshal list file
5# 	glib_marshal_prefix = prefix for marshal functions
6#
7# before including Makefile.am.marshal. You will also need to have
8# the following targets already defined:
9#
10# 	CLEANFILES
11#	DISTCLEANFILES
12#	BUILT_SOURCES
13#	EXTRA_DIST
14#
15# Author: Emmanuele Bassi <ebassi@linux.intel.com>
16
17# Basic sanity checks
18$(if $(GLIB_GENMARSHAL),,$(error Need to define GLIB_GENMARSHAL))
19
20$(if $(or $(glib_marshal_list), \
21          $(glib_marshal_prefix)),, \
22    $(error Need to define glib_marshal_list and glib_marshal_prefix))
23
24marshal_h = $(glib_marshal_list:.list=.h)
25marshal_c = $(glib_marshal_list:.list=.c)
26marshal_list = $(addprefix $(srcdir)/, $(glib_marshal_list))
27
28CLEANFILES += stamp-marshal
29DISTCLEANFILES += $(marshal_h) $(marshal_c)
30BUILT_SOURCES += $(marshal_h) $(marshal_c)
31EXTRA_DIST += $(marshal_list)
32
33stamp-marshal: $(marshal_list)
34	$(AM_V_GEN)$(GLIB_GENMARSHAL) \
35		--prefix=$(glib_marshal_prefix) \
36		--header \
37	$(marshal_list) > xgen-mh \
38	&& (cmp -s xgen-mh $(marshal_h) || cp -f xgen-mh $(marshal_h)) \
39	&& rm -f xgen-mh \
40	&& echo timestamp > $(@F)
41
42$(marshal_h): stamp-marshal
43	@true
44
45$(marshal_c): $(marshal_h)
46	$(AM_V_GEN)(echo "#include \"$(marshal_h)\"" ; \
47	$(GLIB_GENMARSHAL) \
48		--prefix=$(glib_marshal_prefix) \
49		--body \
50	$(marshal_list)) > xgen-mc \
51	&& cp xgen-mc $(marshal_c) \
52	&& rm -f xgen-mc
53