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