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# Test and that vapi files are correctly handled by Vala support. 18 19required='pkg-config valac cc GNUmake' 20. test-init.sh 21 22cat >> configure.ac <<'END' 23AC_PROG_CC 24AM_PROG_VALAC([0.7.3]) 25PKG_CHECK_MODULES([GOBJECT], [gobject-2.0 >= 2.4]) 26AC_OUTPUT 27END 28 29cat > Makefile.am <<'END' 30bin_PROGRAMS = zardoz 31AM_CFLAGS = $(GOBJECT_CFLAGS) 32LDADD = $(GOBJECT_LIBS) 33zardoz_SOURCES = zardoz.vala foo.vapi foo.h 34END 35 36cat > zardoz.vala <<'END' 37using GLib; 38public class Zardoz { 39 public static void main () { 40 stdout.printf (BARBAR); 41 } 42} 43END 44 45# Use printf, not echo, to avoid '\n' being considered and escape 46# sequence and printed as a newline in 'foo.h'. 47printf '%s\n' '#define BARBAR "Zardoz!\n"' > foo.h 48 49cat > foo.vapi <<'END' 50[CCode (cprefix="", lower_case_cprefix="", cheader_filename="foo.h")] 51public const string BARBAR; 52END 53 54if ! cross_compiling; then 55 unindent >> Makefile.am <<'END' 56 check-local: test2 57 .PHONY: test1 test2 58 test1: 59 ./zardoz 60 ./zardoz | grep 'Zardoz!' 61 test2: 62 ./zardoz 63 ./zardoz | grep 'Quux!' 64END 65fi 66 67$ACLOCAL 68$AUTOMAKE -a 69$AUTOCONF 70 71./configure --enable-dependency-tracking 72 73$MAKE 74ls -l # For debugging. 75cat zardoz.c # Likewise. 76grep 'BARBAR' zardoz.c 77cross_compiling || $MAKE test1 || exit 1 78 79# Simple check on remake rules. 80$sleep 81# Use printf, not echo, to avoid '\n' being considered and escape 82# sequence and printed as a newline in 'foo.h'. 83printf '%s\n' '#define BAZBAZ "Quux!\n"' > foo.h 84sed 's/BARBAR/BAZBAZ/' zardoz.vala > t && mv -f t zardoz.vala || exit 99 85$MAKE && exit 1 86sed 's/BARBAR/BAZBAZ/' foo.vapi > t && mv -f t foo.vapi || exit 99 87$MAKE 88cat zardoz.c # For debugging. 89grep 'BAZBAZ' zardoz.c 90cross_compiling || $MAKE test2 || exit 1 91 92# Check the distribution. 93$MAKE distcheck 94 95: 96