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