From 5242549a687d05474e8f913e74dfc54af8c34801 Mon Sep 17 00:00:00 2001 From: Gergely Polonkai Date: Tue, 12 Dec 2017 15:48:45 +0100 Subject: [PATCH] WIP: Completely remove Vala as a dependency --- configure.ac | 17 ++++- src/Makefile.am | 145 ++++++++++++++++++------------------- src/matrix-event-types.c | 1 - src/namespace-info.vala.in | 26 ------- vala-globals.mk | 17 ----- 5 files changed, 84 insertions(+), 122 deletions(-) delete mode 100644 src/namespace-info.vala.in delete mode 100644 vala-globals.mk diff --git a/configure.ac b/configure.ac index 461c4e9..20f39dc 100644 --- a/configure.ac +++ b/configure.ac @@ -105,9 +105,6 @@ GTK_DOC_CHECK([1.25], [--flavour no-tmpl]) AM_CONDITIONAL([ENABLE_GTK_DOC], false) ]) -# Check for vala -VALAC_CHECK - # Check for GIO PKG_CHECK_MODULES([GIO], [gio-2.0 >= $GIO_REQUIRED]) @@ -118,7 +115,20 @@ PKG_CHECK_MODULES([SOUP], [libsoup-2.4 >= $SOUP_REQUIRED]) PKG_CHECK_MODULES([JSON], [json-glib-1.0 >= $JSON_REQUIRED]) # Check for GObject Introspection +m4_ifdef([GOBJECT_INTROSPECTION_CHECK], [ GOBJECT_INTROSPECTION_CHECK([1.32.0]) +],[ +AM_CONDITIONAL([HAVE_INTROSPECTION], false) +]) + +m4_ifdef([VALA_PROG_VAPIGEN], [ +VALAC_CHECK([0.38], [0.38]) + +VALA_PROG_VAPIGEN([0.38]) +AM_CONDITIONAL([HAVE_VAPIGEN], true) +],[ +AM_CONDITIONAL([HAVE_VAPIGEN], false) +]) debug=no AC_ARG_ENABLE(debug, @@ -167,7 +177,6 @@ AC_CONFIG_FILES([ src/Makefile src/matrix-version.h src/matrix-glib-0.0.pc - src/namespace-info.vala docs/reference/matrix-glib-sdk/Makefile ]) AC_OUTPUT diff --git a/src/Makefile.am b/src/Makefile.am index 2a30b6d..fd556a0 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,24 +1,13 @@ -include $(top_srcdir)/vala-globals.mk - AM_CPPFLAGS = -DG_LOG_DOMAIN=\"Matrix-GLib\" -D__MATRIX_GLIB_SDK_COMPILATION # Empty variables for elements to be added later CLEANFILES = BUILT_SOURCES = EXTRA_DIST = -AM_VALAFLAGS = - -# Name of the public header file -PUBLIC_HEADER = matrix-glib.h # Libraries to create lib_LTLIBRARIES = libmatrix-glib-0.0.la -# Vala source files -libmatrix_glib_0_0_la_VALA_SOURCES = \ - namespace-info.vala \ - $(NULL) - AM_CPPFLAGS += \ -include $(CONFIG_HEADER) \ -I$(top_srcdir) \ @@ -28,60 +17,21 @@ AM_CPPFLAGS += \ $(GOBJECT_CFLAGS) \ $(SOUP_CFLAGS) \ $(JSON_CFLAGS) \ - $(VALA_CFLAGS) \ $(NULL) -AM_VALAFLAGS += \ - --library=Matrix-$(MATRIX_GLIB_API_VERSION) \ - $(VALA_PKG_LIST) \ - --vapi=Matrix-$(MATRIX_GLIB_API_VERSION).vapi \ - -H $(PUBLIC_HEADER) \ - -C \ - --use-header \ - --gir=Matrix-$(MATRIX_GLIB_API_VERSION).gir \ - --vapidir=$(top_srcdir)/vapi \ - $(NULL) - -vala-stamp: $(libmatrix_glib_0_0_la_VALA_SOURCES) - @rm -f vala-temp - @touch vala-temp - $(AM_V_GEN) $(VALAC) $(AM_VALAFLAGS) $^ - @mv -f vala-temp $@ - -CLEANFILES += \ - $(PUBLIC_HEADER) \ - $(libmatrix_glib_0_0_la_VALA_SOURCES:.vala=.c) \ - $(NULL) - -$(libmatrix_glib_0_0_la_VALA_SOURCES:.vala=.c): vala-stamp - @if test -f $@; then :; else \ - trap 'rm -rf vala-lock vala-stamp' 1 2 13 15; \ - if mkdir vala-lock 2> /dev/null; then \ - rm -f vala-stamp; \ - $(MAKE) $(AM_MAKEFLAGS) vala-stamp; \ - rmdir vala-lock; \ - else \ - while test -d vala-lock; do sleep 1; done; \ - test -f vala-stamp; exit $$?; \ - fi \ - fi - # Binaries to create bin_PROGRAMS = test-api-client test-client -INST_H_SRC_FILES = \ - matrix-types.h \ - matrix-compacts.h \ - matrix-api.h \ - matrix-http-api.h \ - matrix-client.h \ - matrix-http-client.h \ +EVENT_H_FILES = \ matrix-event-base.h \ matrix-event-call-base.h \ matrix-event-call-answer.h \ matrix-event-call-hangup.h \ matrix-event-call-invite.h \ matrix-event-call-candidates.h \ + $(NULL) + +MESSAGE_H_FILES = \ matrix-message-base.h \ matrix-message-text.h \ matrix-message-location.h \ @@ -112,6 +62,17 @@ INST_H_SRC_FILES = \ matrix-event-room-third-party-invite.h \ matrix-event-typing.h \ matrix-event-receipt.h \ + $(NULL) + +INST_H_SRC_FILES = \ + matrix-types.h \ + matrix-compacts.h \ + matrix-api.h \ + matrix-http-api.h \ + matrix-client.h \ + matrix-http-client.h \ + $(EVENT_H_FILES) \ + $(MESSAGE_H_FILES) \ utils.h \ matrix-profile.h \ matrix-room.h \ @@ -130,7 +91,6 @@ matrix_enum_headers = \ libmatrix_glib_0_0_la_SOURCES = \ $(INST_H_BUILT_FILES) \ matrix-marshalers.c \ - $(libmatrix_glib_0_0_la_VALA_SOURCES:.vala=.c) \ matrix-event-types.c \ matrix-version.c \ matrix-api.c \ @@ -199,15 +159,6 @@ libmatrix_glib_0_0_la_LIBADD = \ libmatrix_glib_0_0_la_LDFLAGS = \ -version-info "$(LT_CURRENT)":"$(LT_REVISION)":"$(LT_AGE)" -$(PUBLIC_HEADER): vala-stamp - -Matrix-0.0.vapi: libmatrix-glib-$(MATRIX_GLIB_API_VERSION).la -vapidir = $(datadir)/vala/vapi -dist_vapi_DATA = \ - Matrix-$(MATRIX_GLIB_API_VERSION).vapi \ - Matrix-$(MATRIX_GLIB_API_VERSION).deps \ - $(NULL) - BUILT_SOURCES += \ matrix-enumtypes.c \ matrix-enumtypes.h \ @@ -272,30 +223,76 @@ matrix-marshalers.c: matrix-marshalers.h CLEANFILES += stamp-matrix-marshalers -limtatrix_glib_dlname = \ +libmatrix_glib_dlname = \ `$(SED) -nE "s/^dlname='([A-Za-z0-9.+-]+)'/\1/p" libmatrix-glib-0.0.la`¬ -INTROSPECTION_GIRS = Matrix-$(MATRIX_GLIB_API_VERSION).gir -INTROSPECTION_COMPILER_ARGS = --includedir=. $(libmatrix_glib_dlname) -Matrix-0.0.gir: libmatrix-glib-$(MATRIX_GLIB_API_VERSION).la -Matrix-0.0.typelib: $(INTROSPECTION_GIRS) - $(INTROSPECTION_COMPILER) $(INTROSPECTION_COMPILER_ARGS) $< -o $@ +if HAVE_INTROSPECTION + +include $(INTROSPECTION_MAKEFILE) + +INTROSPECTION_GIRS = \ + Matrix-$(MATRIX_GLIB_API_VERSION).gir \ + MatrixEvent-$(MATRIX_GLIB_API_VERSION).gir \ + MatrixMessage-$(MATRIX_GLIB_API_VERSION).gir \ + $(NULL) + +Matrix-$(MATRIX_GLIB_API_VERSION).gir: libmatrix-glib-0.0.la +Matrix_0_0_gir_FILES = $(INST_H_SRC_FILE) $(INST_H_BUILT_FILES) $(filter %.c,$(libmatrix_glib_0_0_la_SOURCES)) +Matrix_0_0_gir_LIBS = libmatrix-glib-0.0.la +Matrix_0_0_gir_SCANNERFLAGS = --identifier-prefix=Matrix --symbol-prefix=matrix --warn-all +Matrix_0_0_gir_INCLUDES = GLib-2.0 GObject-2.0 +Matrix_0_0_gir_CFLAGS = -D_MATRIX_GLIB_SDK_COMPILATION -I$(top_srcdir) -I$(srcdir) -I$(builddir) $(AM_CPPFLAGS) +Matrix_0_0_gir_EXPORT_PACKAGES = matrix-glib +MatrixEvent-$(MATRIX_GLIB_API_VERSION).gir: libmatrix-glib-0.0.la +MatrixEvent_0_0_gir_FILES = $(EVENT_H_FILES) $(libmatrix_glib_0_0_la_SOURCES) +MatrixEvent_0_0_gir_LIBS = libmatrix-glib-0.0.la +MatrixEvent_0_0_gir_SCANNERFLAGS = --identifier-prefix=MatrixEvent --symbol-prefix=matrix_event --warn-all +MatrixEvent_0_0_gir_INCLUDES = GLib-2.0 GObject-2.0 +MatrixEvent_0_0_gir_CFLAGS = -D_MATRIX_GLIB_SDK_COMPILATION -I$(top_srcdir) -I$(srcdir) -I$(builddir) $(AM_CPPFLAGS) +MatrixEvent_0_0_gir_EXPORT_PACKAGES = matrix-event-glib +MatrixMessage-$(MATRIX_GLIB_API_VERSION).gir: libmatrix-glib-0.0.la +MatrixMessage_0_0_gir_FILES = $(filter matrix-message-%.h,$(Matrix_0_0_gir_FILES)) +MatrixMessage_0_0_gir_LIBS = libmatrix-glib-0.0.la +MatrixMessage_0_0_gir_SCANNERFLAGS = --identifier-prefix=MatrixMessage --symbol-prefix=matrix_message --warn-all +MatrixMessage_0_0_gir_INCLUDES = GLib-2.0 GObject-2.0 +MatrixMessage_0_0_gir_CFLAGS = -D_MATRIX_GLIB_SDK_COMPILATION -I$(top_srcdir) -I$(srcdir) -I$(builddir) $(AM_CPPFLAGS) +MatrixMessage_0_0_gir_EXPORT_PACKAGES = matrix-message-glib girdir = $(INTROSPECTION_GIRDIR) gir_DATA = $(INTROSPECTION_GIRS) + typelibdir = $(INTROSPECTION_TYPELIBDIR) typelib_DATA = Matrix-$(MATRIX_GLIB_API_VERSION).typelib -CLEANFILES += $(gir_DATA) $(typelibs_DATA) - - headerdir = $(includedir)/matrix-glib-$(MATRIX_GLIB_API_VERSION) header_DATA = \ - $(PUBLIC_HEADER) \ $(INST_H_SRC_FILES) \ $(INST_H_BUILT_FILES) \ $(NULL) +CLEANFILES += $(gir_DATA) $(typelibs_DATA) + +if HAVE_VAPIGEN + +include $(VAPIGEN_MAKEFILE) + +VAPIGEN_VAPIS = Matrix-$(MATRIX_GLIB_API_VERSION).vapi + +Matrix_0_0_vapi_DEPS = \ + json-glib-1.0 \ + gio-2.0 \ + libsoup-2.4 \ + $(NULL) +Matrix_0_0_vapi_GIRS = $(INTROSPECTION_GIRS) +Matrix_0_0_vapi_FILES = $(INTROSPECTION_GIRS) + +vapidir = $(datadir)/vala/vapi +vapi_DATA = $(VAPIGEN_VAPIS) + +endif + +endif + pkgconfig_in = matrix-glib-$(MATRIX_GLIB_API_VERSION).pc.in pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = $(pkgconfig_in:.in=) diff --git a/src/matrix-event-types.c b/src/matrix-event-types.c index d0adaf8..cbe4b24 100644 --- a/src/matrix-event-types.c +++ b/src/matrix-event-types.c @@ -16,7 +16,6 @@ * . */ -#include "matrix-glib.h" #include "matrix-marshalers.h" #include "matrix-event-tag.h" #include "matrix-event-presence.h" diff --git a/src/namespace-info.vala.in b/src/namespace-info.vala.in deleted file mode 100644 index f90d8b5..0000000 --- a/src/namespace-info.vala.in +++ /dev/null @@ -1,26 +0,0 @@ -/* - * This file is part of matrix-glib-sdk - * - * matrix-glib-sdk is free software: you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation, either - * version 3 of the License, or (at your option) any later version. - * - * matrix-glib-sdk is distributed in the hope that it will be - * useful, but WITHOUT ANY WARRANTY; without even the implied - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * See the GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with matrix-glib-sdk. If not, see - * . - */ - -[CCode (gir_namespace = "Matrix", gir_version = "@MATRIX_GLIB_API_VERSION@")] -namespace Matrix { - [CCode (gir_namespace = "Event", gir_version = "@MATRIX_GLIB_API_VERSION@")] - namespace Event {} - - [CCode (gir_namespace = "Message", gir_version = "@MATRIX_GLIB_API_VERSION@")] - namespace Message {} -} diff --git a/vala-globals.mk b/vala-globals.mk deleted file mode 100644 index cdfc1a9..0000000 --- a/vala-globals.mk +++ /dev/null @@ -1,17 +0,0 @@ -VALA_PKG_LIST = \ - --pkg=gio-2.0 \ - --pkg=json-glib-1.0 \ - --pkg=libsoup-2.4 \ - --pkg=c-api \ - --pkg=config \ - $(NULL) - -VALADOC_FLAGS = \ - --driver $(VALAC_VERSION) \ - --force \ - --package-name=Matrix-$(MATRIX_GLIB_API_VERSION) \ - --package-version=$(PACKAGE_VERSION) \ - -b $(top_srcdir)/src \ - $(VALA_PKG_LIST) \ - --vapidir=$(top_srcdir)/vapi \ - $(NULL)