efdcdb6799822a57987a72fafdeda01f0c7d5419
[gnome.gobject-introspection] / gir / Makefile.am
1 include $(top_srcdir)/common.mk
2
3 EXPECTEDGIRS =
4 BUILT_GIRSOURCES = 
5 CLEANFILES =
6 EXTRA_DIST = 
7
8 BASE_GIRSOURCES =               \
9         cairo-1.0.gir           \
10         fontconfig-2.0.gir      \
11         freetype2-2.0.gir       \
12         GL-1.0.gir              \
13         libxml2-2.0.gir         \
14         xft-2.0.gir             \
15         xlib-2.0.gir            \
16         xfixes-4.0.gir
17 EXTRA_DIST += $(BASE_GIRSOURCES)
18
19 # glib
20 GLIB_INCLUDEDIR=`pkg-config --variable=includedir glib-2.0`/glib-2.0
21 GLIB_LIBDIR=`pkg-config --variable=libdir glib-2.0`
22
23 if OS_WIN32
24 GLIB_LIBRARY=libglib-2.0-0
25 else
26 GLIB_LIBRARY=glib-2.0
27 endif
28
29 GLib-2.0.gir: $(SCANNER_BIN) $(SCANNER_LIBS) Makefile glib-2.0.c
30         $(SCANNER) \
31             --namespace GLib --nsversion=2.0 \
32             --noclosure \
33             --output $@ \
34             --strip-prefix=g \
35             --libtool="$(LIBTOOL)" \
36             --c-include="glib.h" \
37             --library=$(GLIB_LIBRARY) \
38             --pkg glib-2.0 \
39             $(CPPFLAGS) \
40             -I$(GLIB_INCLUDEDIR) \
41             -I$(GLIB_LIBDIR)/glib-2.0/include \
42             -DGETTEXT_PACKAGE=Dummy \
43             -D__G_I18N_LIB_H__ \
44             $(GLIB_LIBDIR)/glib-2.0/include/glibconfig.h \
45             $(srcdir)/glib-2.0.c \
46             -DGLIB_COMPILATION \
47             $(GLIB_INCLUDEDIR)/glib/*.h
48         $(SCANNER) $(SCANNER_ARGS) \
49             --xpath-assertions=$(srcdir)/GLib-2.0.xpath GLib-2.0.gir
50 BUILT_GIRSOURCES += GLib-2.0.gir
51 EXTRA_DIST += glib-2.0.c GLib-2.0.xpath
52
53 # gobject
54 GOBJECT_INCLUDEDIR=`pkg-config --variable=includedir gobject-2.0`/glib-2.0
55 GOBJECT_LIBDIR=`pkg-config --variable=libdir gobject-2.0`
56
57 if OS_WIN32
58 GOBJECT_LIBRARY=libgobject-2.0-0
59 else
60 GOBJECT_LIBRARY=gobject-2.0
61 endif
62
63 GObject-2.0.gir: GLib-2.0.gir $(SCANNER_BIN) $(SCANNER_LIBS) Makefile
64         $(SCANNER) \
65             --namespace GObject --nsversion=2.0 \
66             --noclosure \
67             --output $@ \
68             --strip-prefix=g \
69             --libtool="$(LIBTOOL)" \
70             --c-include="glib-object.h" \
71             --include=GLib-2.0 \
72             --library=$(GOBJECT_LIBRARY) \
73             -I$(GOBJECT_INCLUDEDIR) \
74             -I$(GOBJECT_LIBDIR)/glib-2.0/include \
75             -DGOBJECT_COMPILATION \
76             --pkg gobject-2.0 \
77             $(srcdir)/gobject-2.0.c \
78             $(GLIB_INCLUDEDIR)/gobject/*.h
79         $(SCANNER) $(SCANNER_ARGS) \
80             --xpath-assertions=$(srcdir)/GObject-2.0.xpath GObject-2.0.gir
81 BUILT_GIRSOURCES += GObject-2.0.gir
82 EXTRA_DIST += gobject-2.0.c GObject-2.0.xpath
83
84 # gmodule
85 GMODULE_INCLUDEDIR=`pkg-config --variable=includedir gmodule-2.0`/glib-2.0
86 GMODULE_LIBDIR=`pkg-config --variable=libdir gmodule-2.0`
87
88 if OS_WIN32
89 GMODULE_LIBRARY=libgmodule-2.0-0
90 else
91 GMODULE_LIBRARY=gmodule-2.0
92 endif
93
94 GModule-2.0.gir: GLib-2.0.gir $(SCANNER_BIN) $(SCANNER_LIBS)
95         $(SCANNER) \
96             --namespace GModule --nsversion=2.0 \
97             --add-include-path=. \
98             --noclosure \
99             --output $@ \
100             --strip-prefix=g \
101             --libtool="$(LIBTOOL)" \
102             --c-include="gmodule.h" \
103             --include=GLib-2.0 \
104             --library=$(GMODULE_LIBRARY) \
105             -I$(GMODULE_INCLUDEDIR) \
106             -I$(GMODULE_LIBDIR)/glib-2.0/include \
107             --pkg gmodule-2.0 \
108             $(GLIB_INCLUDEDIR)/gmodule.h
109 BUILT_GIRSOURCES += GModule-2.0.gir
110
111 # gio
112 GIO_INCLUDEDIR=`pkg-config --variable=includedir gio-2.0`/glib-2.0
113 GIO_LIBDIR=`pkg-config --variable=libdir gio-2.0`
114
115 if OS_WIN32
116 GIO_LIBRARY=libgio-2.0-0
117 else
118 GIO_LIBRARY=gio-2.0
119 endif
120
121 if HAVE_GIO_UNIX
122 GIO_UNIX_HDRS=`pkg-config --variable=includedir gio-unix-2.0`/gio-unix-2.0/gio/*.h
123 else
124 GIO_UNIX_HDRS=
125 endif
126
127 Gio-2.0.gir: GObject-2.0.gir $(SCANNER_BIN) $(SCANNER_LIBS) Makefile $(srcdir)/gio-2.0.c
128         $(SCANNER) \
129             --namespace Gio --nsversion=2.0 \
130             --add-include-path=. \
131             --noclosure \
132             --output $@ \
133             --strip-prefix=g \
134                 --libtool="$(LIBTOOL)" \
135                 --c-include="gio/gio.h" \
136                 --include=GObject-2.0 \
137             --library=$(GIO_LIBRARY) \
138             -I$(GIO_INCLUDEDIR) \
139             -I$(GIO_LIBDIR)/glib-2.0/include \
140             -DGIO_COMPILATION \
141         --pkg gio-2.0 \
142             $(srcdir)/gio-2.0.c \
143             $(GLIB_INCLUDEDIR)/gio/*.h \
144             $(GIO_UNIX_HDRS)
145 BUILT_GIRSOURCES += Gio-2.0.gir
146 EXTRA_DIST += gio-2.0.c
147
148 # girepository
149 GIREPOSITORY_FILES = \
150         $(top_srcdir)/girepository/girepository.c \
151         $(top_srcdir)/girepository/girepository.h
152
153 GIRepository-2.0.gir: GObject-2.0.gir $(SCANNER_BIN) $(SCANNER_LIBS) $(GIREPOSITORY_FILES)
154         $(SCANNER) \
155             --namespace GIRepository --nsversion=2.0 \
156             --noclosure \
157             --output $@ \
158             --strip-prefix=g \
159                 --libtool="$(LIBTOOL)" \
160                 --c-include="girepository.h" \
161                 --include=GObject-2.0 \
162             --library=girepository-1.0 \
163             -I$(srcdir)/girepository \
164                 --pkg gobject-2.0 \
165                 --pkg-export gobject-introspection-1.0 \
166             $(GIREPOSITORY_FILES)
167 BUILT_GIRSOURCES += GIRepository-2.0.gir
168
169 LT_CURRENT = 1
170 LT_REVISION = 0
171 LT_AGE = 0
172 LT_VERSION = $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)
173 TYPELIB_VERSION = $(LT_CURRENT).0
174
175 lib_LTLIBRARIES = libgirepository-everything-1.0.la
176
177 libgirepository_everything_1_0_la_SOURCES = $(srcdir)/everything.c $(srcdir)/everything.h
178 libgirepository_everything_1_0_la_CFLAGS = $(GOBJECT_CFLAGS)
179 libgirepository_everything_1_0_la_LDFLAGS = -version-info $(LT_VERSION)
180 libgirepository_everything_1_0_la_LIBADD = $(GOBJECT_LIBS)
181
182 if OS_WIN32
183 libgirepository_everything_1_0_la_LDFLAGS += -no-undefined
184 endif
185
186 Everything-$(TYPELIB_VERSION).gir: GObject-2.0.gir libgirepository-everything-1.0.la everything.c everything.h $(SCANNER_BIN) $(SCANNER_LIBS) Makefile
187         $(SCANNER) \
188         --include=GObject-2.0 \
189         --libtool="$(LIBTOOL)" \
190         --library=girepository-everything-1.0 \
191         --namespace=Everything --nsversion=$(TYPELIB_VERSION) \
192         --pkg gobject-2.0 \
193         $(srcdir)/everything.h $(srcdir)/everything.c \
194         --output $@
195 BUILT_GIRSOURCES += Everything-$(TYPELIB_VERSION).gir
196 EXPECTEDGIRS += Everything-$(TYPELIB_VERSION)-expected.gir
197
198 # Generic rules
199 CLEANFILES += $(BUILT_GIRSOURCES)
200
201 GIRSOURCES =                    \
202         $(BASE_GIRSOURCES)      \
203         $(BUILT_GIRSOURCES)
204
205 girdir = $(GIR_DIR)
206 dist_gir_DATA = $(GIRSOURCES)
207
208 %.typelib: %.gir $(top_builddir)/tools/g-ir-compiler$(EXEEXT)
209         $(top_builddir)/tools/g-ir-compiler$(EXEEXT) --includedir=. $(G_IR_COMPILER_OPTS) $< -o $@
210
211 typelibsdir = $(libdir)/girepository-1.0
212 typelibs_DATA = $(GIRSOURCES:.gir=.typelib)
213
214 CLEANFILES += $(typelibs_DATA)
215
216 %.gir.check: %.gir
217         @diff -u -U 10 $(srcdir)/$*-expected.gir $*.gir && echo "  TEST  $*.gir"
218
219 CHECKGIRS = $(EXPECTEDGIRS:-expected.gir=.gir.check)
220 check-local: $(CHECKGIRS)
221
222 # Check that typelib -> gir -> typelib transformation is lossless.
223 # Comparing gir files is relatively fragile (whitespace, attribute default
224 # values, etc.) but the typelibs should identical as long as the gir files are
225 # semantically equivalent.
226
227 %.test.gir: %.typelib $(top_builddir)/tools/g-ir-generate$(EXEEXT)
228         $(DEBUG) $(top_builddir)/tools/g-ir-generate$(EXEEXT) --includedir=. $< -o $@
229
230 testlib-%: %.test.gir $(top_builddir)/tools/g-ir-generate$(EXEEXT)
231         $(DEBUG) $(top_builddir)/tools/g-ir-compiler$(EXEEXT) --includedir=. $(G_IR_COMPILER_OPTS) $< -o $*.test.typelib
232         cmp $*.typelib $*.test.typelib && rm $*.test.typelib
233
234 testgir-%: %.test.gir
235         diff -u $*.gir $< && rm $<
236
237 CLEANFILES += $(typelibs_DATA:%.typelib=%.test.gir)
238 CLEANFILES += $(typelibs_DATA:%.typelib=%.test.typelib)
239
240 #check-local: $(typelibs_DATA:%.typelib=testlib-%)
241 check-gir: $(typelibs_DATA:%.typelib=testgir-%)
242
243 EXTRA_DIST += $(EXPECTEDGIRS)