#! /bin/sh # Copyright (C) 2012-2023 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program 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 General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Building libraries (libtool and static) from Vala sources. # And use of vapi files to call C code from Vala. required="valac cc pkg-config libtoolize GNUmake" am_create_testdir=empty . test-init.sh cat >> configure.ac << 'END' AC_INIT([atest],[0.1]) AC_CONFIG_SRCDIR([data/atest.pc.in]) AC_SUBST([API_VERSION],[0]) AM_INIT_AUTOMAKE AM_MAINTAINER_MODE([enable]) AM_PROG_AR LT_INIT AC_PROG_CC AC_PROG_INSTALL PKG_PROG_PKG_CONFIG([0.22]) AM_PROG_VALAC([0.32]) PKG_CHECK_MODULES(ATEST, [gio-2.0]) AC_CONFIG_FILES([ Makefile src/Makefile src/atest-$API_VERSION.deps:src/atest.deps.in data/Makefile data/atest-$API_VERSION.pc:data/atest.pc.in ],[], [API_VERSION='$API_VERSION']) AC_OUTPUT END cat > Makefile.am << 'END' SUBDIRS=data src END mkdir data cat > data/atest.pc.in << 'END' prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ datarootdir=@datarootdir@ datadir=@datadir@ includedir=@includedir@ Name: atest-@API_VERSION@ Description: atest library Version: @VERSION@ Requires: glib-2.0 gobject-2.0 Libs: -L${libdir} -latest-@API_VERSION@ Cflags: -I${includedir}/atest-@API_VERSION@ END cat > data/Makefile.am << 'END' # pkg-config data # Note that the template file is called atest.pc.in, but generates a # versioned .pc file using some magic in AC_CONFIG_FILES. pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = atest-$(API_VERSION).pc DISTCLEANFILES = $(pkgconfig_DATA) EXTRA_DIST = atest.pc.in END mkdir src cat > src/atest.deps.in << 'END' glib-2.0 END cat > src/atest.vala << 'END' using GLib; namespace Atest { public class A { public bool foo() { return false; } } } END cat > src/Makefile.am << 'END' lib_LTLIBRARIES = libatest-@API_VERSION@.la libatest_@API_VERSION@_la_SOURCES = \ atest.vala \ cservice.c \ cservice.h \ $(NULL) libatest_@API_VERSION@_la_CPPFLAGS = \ -DOKOKIMDEFINED=1 \ $(NULL) libatest_@API_VERSION@_la_CFLAGS = \ $(ATEST_CFLAGS) \ $(WARN_CFLAGS) \ $(NULL) libatest_@API_VERSION@_la_LIBADD = \ $(ATEST_LIBS) \ $(NULL) libatest_@API_VERSION@_la_LDFLAGS = \ $(WARN_LDFLAGS) \ $(NULL) libatest_@API_VERSION@_la_VALAFLAGS = \ --vapidir=$(VAPIDIR) \ --vapidir=$(srcdir) \ --pkg cservice \ --thread \ --target-glib=2.44 \ --pkg glib-2.0 \ -H atest.h \ --library atest-@API_VERSION@ \ $(NULL) header_DATA=atest.h headerdir=$(includedir)/atest-@API_VERSION@/atest atest-@API_VERSION@.deps: cp atest.deps atest-@API_VERSION@.deps vapi_DATA=atest-@API_VERSION@.vapi atest-@API_VERSION@.deps vapidir=$(VAPIDIR) CLEANFILES = atest-@API_VERSION@.deps END cat > src/cservice.c << 'END' #include "cservice.h" int c_service_mu_call (void) { return OKOKIMDEFINED; } END cat > src/cservice.h << 'END' int c_service_mu (void); END cat > src/cservice.vapi <<'END' namespace CService { public class Mu { [CCode (cheader_filename = "cservice.h", cname = "c_service_mu_call")] public int call (); } } END libtoolize $ACLOCAL $AUTOCONF $AUTOMAKE -a ./configure $MAKE test -f src/libatest_0_la_vala.stamp test -f src/libatest-0.la $MAKE distcheck :