Use AM_V_GEN more a more quiet build
[gnome.gobject-introspection] / tests / scanner / Makefile.am
index a08e0f1..483e541 100644 (file)
+include $(top_srcdir)/common.mk
+include $(top_srcdir)/Makefile.introspection
+
 # We need to build a shared library, which can be dlopened
 # it does not work with noinst_LTLIBRARIES
-testlib_LTLIBRARIES = libfoo.la libutility.la
+testlib_LTLIBRARIES = \
+       libannotation.la \
+       libdrawable.la \
+       libfoo.la \
+       libutility.la \
+       libgtkfrob.la
 testlibdir = $(prefix)/unused
 install-testlibLTLIBRARIES: # prevent it from being installed
 
-libfoo_la_SOURCES = $(srcdir)/foo.c $(srcdir)/foo-object.h
-libfoo_la_CFLAGS = $(GOBJECT_CFLAGS)
-libfoo_la_LDFLAGS = -module -avoid-version
-libfoo_la_LIBADD = $(GOBJECT_LIBS)
+AM_CPPFLAGS = -I$(top_srcdir)/girepository
+AM_CFLAGS = $(GIO_CFLAGS) $(GOBJECT_CFLAGS) $(GTHREAD_CFLAGS)
+AM_LDFLAGS = -avoid-version
+LIBS = $(GOBJECT_LIBS) $(GTHREAD_LIBS)
 
+libannotation_la_SOURCES = $(srcdir)/annotation.c $(srcdir)/annotation.h
+libdrawable_la_SOURCES = $(srcdir)/drawable.c $(srcdir)/drawable.h
+libfoo_la_SOURCES = $(srcdir)/foo.c $(srcdir)/foo.h
 libutility_la_SOURCES = $(srcdir)/utility.c $(srcdir)/utility.h
-libutility_la_CFLAGS = $(GOBJECT_CFLAGS)
-libutility_la_LDFLAGS = -module -avoid-version
-libutility_la_LIBADD = $(GOBJECT_LIBS)
-
-CLEANFILES = utility.gir Foo.gir
-EXTRA_DIST = utility-expected.gir Foo-expected.gir
-
-SCANNER = $(top_srcdir)/tools/g-ir-scanner
-SCANNER_LIBS = $(top_srcdir)/giscanner/*.py $(top_builddir)/giscanner/libgiscanner.la
-
-utility.gir: libutility.la utility.h $(SCANNER) $(SCANNER_LIBS)
-       $(CHECK_DEBUG) $(SCANNER) -v \
-       --include=$(top_srcdir)/gir/gobject-2.0.gir \
-       --library=libutility.la \
-       --namespace=utility \
-       --pkg gobject-2.0 \
-       $(libutility_la_SOURCES) \
-       --output $@
-
-Foo.gir: libfoo.la foo-object.h $(SCANNER) $(SCANNER_LIBS)
-       $(CHECK_DEBUG) $(SCANNER) -v \
-       --include=$(top_srcdir)/gir/gobject-2.0.gir \
-       --include=$(top_builddir)/tests/scanner/utility.gir \
-       --library=libfoo.la \
-       --namespace=Foo \
-       --pkg gobject-2.0 \
-       $(libfoo_la_SOURCES) \
-        --output $@
-
-check-%.gir: %.gir
-       @diff -u -U 10 $(srcdir)/$*-expected.gir $*.gir && echo "* $*.gir"
+libgtkfrob_la_SOURCES = $(srcdir)/gtkfrob.c $(srcdir)/gtkfrob.h
+
+if OS_WIN32
+AM_LDFLAGS += -no-undefined
+endif
+
+# .gir --[scanner]-> .typelib --[generate]-> .tgir
+GIRS =
+TYPELIBS = $(GIRS:.gir=.typelib)
+CHECKGIRS = $(GIRS:.gir=.gir.check)
+EXPECTEDGIRS = $(GIRS:.gir=-expected.gir)
+TGIRS = $(GIRS:.gir=.tgir)
+CHECKTGIRS = $(GIRS:.gir=.tgir.check)
+EXPECTEDTGIRS = $(GIRS:.gir=-expected.tgir)
+INTROSPECTION_GIRS = $(GIRS)
+CLEANFILES = $(TYPELIBS) $(GIRS)
+BUILT_SOURCES = $(TYPELIBS) $(GIRS) $(TGIRS)
+EXTRA_DIST = $(EXPECTEDGIRS) $(EXPECTEDTGIRS)
+
+annotation-1.0.gir: utility-1.0.gir libannotation.la
+annotation_1_0_gir_PACKAGES = gobject-2.0
+annotation_1_0_gir_LIBS = libannotation.la
+annotation_1_0_gir_INCLUDES = GObject-2.0 utility-1.0
+annotation_1_0_gir_FILES = $(libannotation_la_SOURCES)
+GIRS += annotation-1.0.gir
+
+drawable-1.0.gir: utility-1.0.gir libdrawable.la
+drawable_1_0_gir_PACKAGES = gobject-2.0
+drawable_1_0_gir_LIBS = libdrawable.la
+drawable_1_0_gir_INCLUDES = GObject-2.0 utility-1.0
+drawable_1_0_gir_FILES = $(libdrawable_la_SOURCES)
+GIRS += drawable-1.0.gir
+
+foo-1.0.gir: utility-1.0.gir libfoo.la
+foo_1_0_gir_PACKAGES = gobject-2.0
+foo_1_0_gir_LIBS = libfoo.la
+foo_1_0_gir_INCLUDES = GObject-2.0 Gio-2.0 utility-1.0
+foo_1_0_gir_FILES = $(srcdir)/foo.h $(srcdir)/foo.c
+foo_1_0_gir_SCANNERFLAGS = --c-include="foo.h"
+GIRS += foo-1.0.gir
+
+utility-1.0.gir: libutility.la
+utility_1_0_gir_PACKAGES = gobject-2.0
+utility_1_0_gir_LIBS = libutility.la
+utility_1_0_gir_INCLUDES = GObject-2.0
+utility_1_0_gir_FILES = $(libutility_la_SOURCES)
+GIRS += utility-1.0.gir
+
+# This one tests different --namespace and --strip-prefix
+GtkFrob-1.0.gir: libgtkfrob.la
+GtkFrob_1_0_gir_PACKAGES = gobject-2.0
+GtkFrob_1_0_gir_LIBS = libgtkfrob.la
+GtkFrob_1_0_gir_INCLUDES = GObject-2.0
+GtkFrob_1_0_gir_FILES = $(libgtkfrob_la_SOURCES)
+GtkFrob_1_0_gir_SCANNERFLAGS = --strip-prefix=Gtk
+GIRS += GtkFrob-1.0.gir
+
+noinst_PROGRAMS = barapp
+
+barapp_SOURCES = $(srcdir)/barapp.c $(srcdir)/barapp.h
+barapp_LDADD = $(top_builddir)/girepository/libgirepository-1.0.la
+barapp_LDFLAGS = -export-dynamic
+
+BarApp-1.0.gir: barapp
+BarApp_1_0_gir_PACKAGES = gobject-2.0
+BarApp_1_0_gir_PROGRAM = ./barapp
+BarApp_1_0_gir_INCLUDES = GObject-2.0
+BarApp_1_0_gir_FILES = $(barapp_SOURCES)
+BarApp_1_0_gir_SCANNERFLAGS = --strip-prefix=Bar
+GIRS += BarApp-1.0.gir
 
 pre-check:
        @if test "$(top_builddir)" != "$(top_srcdir)"; then \
-          cp $(top_srcdir)/giscanner/*.py $(top_builddir)/giscanner; \
+          cp -f $(top_srcdir)/giscanner/*.py $(top_builddir)/giscanner; \
        fi
-       @echo "Running scanner checks..."
 
-check-local: pre-check check-utility.gir check-Foo.gir
-       @echo "======================="
-       @echo "All parser tests passed"
-       @echo "======================="
+post-check:
+       @echo "========================"
+       @echo "All scanner tests passed"
+       @echo "========================"
        @if test "$(top_builddir)" != "$(top_srcdir)"; then \
           rm -f $(top_builddir)/giscanner/*.py*; \
        fi
 
-.PHONY: utility.gir Foo.gir
+%.gir.check: %.gir
+       @diff -u -U 10 $(srcdir)/$*-expected.gir $*.gir && echo "  TEST  $*.gir"
+
+# stop %.typelib rule from building %-expected.tgir (via %-expected.typelib)
+%-expected.typelib:
+       @true
+
+%.tgir: %.typelib $(top_builddir)/tools/g-ir-generate$(EXEEXT) Makefile
+       $(AM_V_GEN) $(top_builddir)/tools/g-ir-generate --includedir=. --includedir=$(top_builddir)/gir $< -o $@
+
+%.tgir.check: %.tgir
+       @diff -u -U 10 $(srcdir)/$*-expected.tgir $*.tgir; \
+       if test "$$?" = "0"; then \
+           echo "  TEST  $*.tgir"; \
+           rm -f $*.tgir; \
+       else \
+           exit 1; \
+       fi
+
+distclean-local:
+       @if test "$(top_builddir)" != "$(top_srcdir)"; then \
+           rm -f $(top_builddir)/tests/scanner/*.tgir; \
+       fi
+
+check-local: pre-check
+check-local: $(CHECKGIRS) $(CHECKTGIRS) $(TYPELIBS)
+
+check-local: post-check