From 2fa8b2eed50915c31715b60b8cfa59131c3f5a0a Mon Sep 17 00:00:00 2001
From: Armin Luntzer <armin.luntzer@univie.ac.at>
Date: Wed, 24 Jun 2020 12:54:11 +0200
Subject: [PATCH] add VAPI generation

---
 Makefile.am               |  2 +-
 configure.ac              |  9 +++++++++
 introspection/Makefile.am | 32 ++++++++++++++++++++++++++++++++
 src/Makefile.am           | 30 ------------------------------
 vapi/Makefile.am          | 21 +++++++++++++++++++++
 vapi/libgtknodes.deps     |  3 +++
 6 files changed, 66 insertions(+), 31 deletions(-)
 create mode 100644 introspection/Makefile.am
 create mode 100644 vapi/Makefile.am
 create mode 100644 vapi/libgtknodes.deps

diff --git a/Makefile.am b/Makefile.am
index 7f50493..ac9c1df 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = src glade
+SUBDIRS = src introspection vapi glade
 EXTRA_DIST = autogen.sh
 ACLOCAL_AMFLAGS = -Im4
 DISTCHECK_CONFIGURE_FLAGS = --enable-introspection
diff --git a/configure.ac b/configure.ac
index 24911cd..e9180db 100644
--- a/configure.ac
+++ b/configure.ac
@@ -12,6 +12,13 @@ LT_INIT([dlopen])
 
 GOBJECT_INTROSPECTION_CHECK([1.40.0])
 
+m4_ifdef([VAPIGEN_CHECK], [
+VAPIGEN_CHECK([0.48])
+],[
+AM_CONDITIONAL([ENABLE_VAPIGEN], false)
+])
+
+
 m4_ifdef([GTK_DOC_CHECK], [
 GTK_DOC_CHECK([1.31],[--flavour no-tmpl])
 ],[
@@ -38,6 +45,8 @@ AC_CONFIG_FILES([gtknodes.pc])
 
 AC_OUTPUT([Makefile])
 AC_OUTPUT([src/Makefile])
+AC_OUTPUT([introspection/Makefile])
+AC_OUTPUT([vapi/Makefile])
 AC_OUTPUT([examples/Makefile])
 AC_OUTPUT([glade/Makefile])
 AC_OUTPUT([docs/reference/gtknodes/Makefile])
diff --git a/introspection/Makefile.am b/introspection/Makefile.am
new file mode 100644
index 0000000..c41e81a
--- /dev/null
+++ b/introspection/Makefile.am
@@ -0,0 +1,32 @@
+
+INTROSPECTION_GIRS =
+INTROSPECTION_SCANNER_ARGS = --add-include-path=$(top_srcdir)/src --warn-all
+INTROSPECTION_COMPILER_ARGS = --includedir=$(top_srcdir)/src
+
+if HAVE_INTROSPECTION
+include $(INTROSPECTION_MAKEFILE)
+introspection_sources = $(top_srcdir)/src/gtknodesocket.c \
+			$(top_srcdir)/src/gtknodesocket.h \
+			$(top_srcdir)/src/gtknode.c \
+			$(top_srcdir)/src/gtknode.h \
+			$(top_srcdir)/src/gtknodeview.c \
+			$(top_srcdir)/src/gtknodeview.h
+
+GtkNodes-0.1.gir: $(INTROSPECTION_SCANNER) $(top_srcdir)/src/libgtknodes-0.1.la Makefile
+
+GtkNodes_0_1_gir_NAMESPACE = GtkNodes
+GtkNodes_0_1_gir_INCLUDES = GObject-2.0 Gtk-3.0
+GtkNodes_0_1_gir_CFLAGS = $(INCLUDES) -I$(top_srcdir)/src
+GtkNodes_0_1_gir_LIBS = $(top_srcdir)/src/libgtknodes-0.1.la
+GtkNodes_0_1_gir_FILES = $(introspection_sources)
+INTROSPECTION_GIRS += GtkNodes-0.1.gir
+
+girdir = $(datadir)/gir-1.0
+gir_DATA = $(INTROSPECTION_GIRS)
+
+typelibdir = $(libdir)/girepository-1.0
+typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
+
+CLEANFILES = $(gir_DATA) $(typelib_DATA)
+
+endif
diff --git a/src/Makefile.am b/src/Makefile.am
index c60946e..4b8b056 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -24,34 +24,4 @@ pkginclude_HEADERS = gtknodesocket.h \
 CLEANFILES= $(BUILT_SOURCES)
 
 
--include $(INTROSPECTION_MAKEFILE)
 
-INTROSPECTION_GIRS =
-INTROSPECTION_SCANNER_ARGS = --add-include-path=$(srcdir) --warn-all
-INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir)
-
-if HAVE_INTROSPECTION
-introspection_sources = gtknodesocket.c \
-			gtknodesocket.h \
-			gtknode.c \
-			gtknode.h \
-			gtknodeview.c \
-			gtknodeview.h
-
-GtkNodes-0.1.gir: $(INTROSPECTION_SCANNER) libgtknodes-0.1.la Makefile
-
-GtkNodes_0_1_gir_NAMESPACE = GtkNodes
-GtkNodes_0_1_gir_INCLUDES = GObject-2.0 Gtk-3.0
-GtkNodes_0_1_gir_CFLAGS = $(INCLUDES)
-GtkNodes_0_1_gir_LIBS = libgtknodes-0.1.la
-GtkNodes_0_1_gir_FILES = $(introspection_sources)
-INTROSPECTION_GIRS += GtkNodes-0.1.gir
-
-girdir = $(datadir)/gir-1.0
-gir_DATA = $(INTROSPECTION_GIRS)
-
-typelibdir = $(libdir)/girepository-1.0
-typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
-
-CLEANFILES += $(gir_DATA) $(typelib_DATA)
-endif
diff --git a/vapi/Makefile.am b/vapi/Makefile.am
new file mode 100644
index 0000000..8f9abfa
--- /dev/null
+++ b/vapi/Makefile.am
@@ -0,0 +1,21 @@
+VAPIGEN_VAPIS = libgtknodes.vapi
+
+if ENABLE_VAPIGEN
+
+include $(VAPIGEN_MAKEFILE)
+
+libgtknodes.vapi: $(top_builddir)/introspection/GtkNodes-0.1.gir libgtknodes.deps
+
+libgtknodes_vapi_METADATADIRS = $(srcdir)
+libgtknodes_vapi_FILES = $(top_builddir)/introspection/GtkNodes-0.1.gir
+libgtknodes_vapi_VAPIDIRS = $(builddir)
+libgtknodes_vapi_DEPS = glib-2.0 gio-2.0 gtk+-3.0
+
+vapidir = $(datadir)/vala/vapi
+vapi_DATA = $(VAPIGEN_VAPIS) $(VAPIGEN_VAPIS:.vapi=.deps)
+
+endif
+
+CLEANFILES = $(VAPIGEN_VAPIS)
+EXTRA_DIST = \
+	libgtknodes.deps
diff --git a/vapi/libgtknodes.deps b/vapi/libgtknodes.deps
new file mode 100644
index 0000000..8260883
--- /dev/null
+++ b/vapi/libgtknodes.deps
@@ -0,0 +1,3 @@
+glib-2.0
+gio-2.0
+gtk+-3.0
-- 
GitLab