1#! /bin/sh 2# Copyright (C) 2012-2021 Free Software Foundation, Inc. 3# 4# This program is free software; you can redistribute it and/or modify 5# it under the terms of the GNU General Public License as published by 6# the Free Software Foundation; either version 2, or (at your option) 7# any later version. 8# 9# This program is distributed in the hope that it will be useful, 10# but WITHOUT ANY WARRANTY; without even the implied warranty of 11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12# GNU General Public License for more details. 13# 14# You should have received a copy of the GNU General Public License 15# along with this program. If not, see <https://www.gnu.org/licenses/>. 16 17# Building libraries (libtool and static) from Vala sources. 18# And use of vapi files to call C code from Vala. 19 20required="valac cc pkg-config libtoolize GNUmake" 21. test-init.sh 22 23cat >> configure.ac << 'END' 24AC_PROG_CC 25AM_PROG_AR 26AC_PROG_RANLIB 27AC_PROG_LIBTOOL 28AM_PROG_VALAC([0.7.3]) 29PKG_CHECK_MODULES([GOBJECT], [gobject-2.0 >= 2.4]) 30AC_OUTPUT 31END 32 33cat > Makefile.am << 'END' 34AUTOMAKE_OPTIONS = subdir-objects 35lib_LIBRARIES = libservice.a 36lib_LTLIBRARIES = src/libzardoz.la 37libservice_a_SOURCES = service.vala cservice.c cservice.h 38libservice_a_CPPFLAGS = -DOKOKIMDEFINED=1 39libservice_a_VALAFLAGS = --vapidir=$(srcdir) --pkg cservice --library service 40AM_CFLAGS = $(GOBJECT_CFLAGS) 41src_libzardoz_la_LIBADD = $(GOBJECT_LIBS) 42src_libzardoz_la_SOURCES = src/zardoz-foo.vala src/zardoz-bar.vala 43src/zardoz-bar.vala: src/zardoz-foo.vala 44 sed 's/Foo/Bar/g' $< >$@ 45END 46 47libtoolize 48$ACLOCAL 49$AUTOCONF 50$AUTOMAKE -a 51 52./configure 53 54cat > cservice.c << 'END' 55#include "cservice.h" 56int c_service_mu_call (void) 57{ 58 return OKOKIMDEFINED; 59} 60END 61 62cat > cservice.h << 'END' 63int c_service_mu (void); 64END 65 66cat > cservice.vapi <<'END' 67namespace CService { 68 public class Mu { 69 [CCode (cheader_filename = "cservice.h", cname = "c_service_mu_call")] 70 public int call (); 71 } 72} 73END 74 75cat > service.vala << 'END' 76namespace CService { 77public class Generator : Object { 78 public Generator () { 79 stdout.printf ("construct generator"); 80 } 81 public void init () { 82 stdout.printf ("init generator"); 83 } 84} 85} 86END 87 88mkdir -p src 89cat > src/zardoz-foo.vala << 'END' 90using GLib; 91public class Foo { 92 public static void zap () { 93 stdout.printf ("FooFooFoo!\n"); 94 } 95} 96END 97 98$MAKE 99test -f libservice.a 100test -f src/libzardoz.la 101$FGREP "construct generator" service.c 102$FGREP "FooFooFoo" src/zardoz-foo.c 103$FGREP "BarBarBar" src/zardoz-bar.c 104test -f libservice_a_vala.stamp 105test -f src_libzardoz_la_vala.stamp 106 107$MAKE distcheck 108 109: 110