diff options
Diffstat (limited to 't/vala-mix.sh')
-rw-r--r-- | t/vala-mix.sh | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/t/vala-mix.sh b/t/vala-mix.sh new file mode 100644 index 000000000..384efa9ac --- /dev/null +++ b/t/vala-mix.sh @@ -0,0 +1,125 @@ +#! /bin/sh +# Copyright (C) 2012-2017 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 <https://www.gnu.org/licenses/>. + +# Vala sources and C sources in the same program. Functional test. + +required='valac cc pkg-config GNUmake' +. test-init.sh + +cat >> configure.ac <<'END' +AC_PROG_CC +AM_PROG_VALAC([0.7.3]) +PKG_CHECK_MODULES([GOBJECT], [gobject-2.0 >= 2.4]) +AC_OUTPUT +END + +cat > Makefile.am <<'END' +bin_PROGRAMS = zardoz mu baz +AM_CFLAGS = $(GOBJECT_CFLAGS) +LDADD = $(GOBJECT_LIBS) +zardoz_SOURCES = foo.vala bar.c +mu_SOURCES = 1.vala 2.c +mu_VALAFLAGS = --main=run +mu_CFLAGS = -DHAVE_MU $(AM_CFLAGS) +baz_SOURCES = baz.c +END + +if ! cross_compiling; then + unindent >> Makefile.am <<'END' + check-local: + ./zardoz + ./mu + ./zardoz | grep "foo is alive" + ./mu | grep "Howdy, World!" +END +fi + +cat > foo.vala <<'END' +int main () +{ + stdout.printf ("foo is alive\n"); + return 0; +} +END + +echo 'extern int i = 0;' > bar.c + +cat > 1.vala <<'END' +int run () +{ + stdout.printf ("Howdy, World!\n"); + return 0; +} +END + +cat > 2.c <<'END' +#ifdef HAVE_MU +int all_is_ok = 1; +#else +#error "HAVE_MU no defined" +chocke me +#endif +END + +# For automake bug#11229. +cat > baz.c <<'END' +int main (void) +{ + return 0; +} +END + +$ACLOCAL +$AUTOMAKE -a +$AUTOCONF + +./configure + +$MAKE all +ls -l # For debugging. +$MAKE check + +have_generated_files () +{ + test -f mu_vala.stamp + test -f zardoz_vala.stamp + test -f foo.c + test -f 1.c +} + +# Our vala-related rules must create stamp files and intermediate +# C files. +have_generated_files + +# Remake rules are not uselessly triggered. +$MAKE -q +$MAKE -n | $FGREP vala.stamp && exit 1 + +# Check the distribution. +$MAKE distcheck + +# Stamp files and intermediate C files should *not* be removed +# by "make clean". +$MAKE clean +have_generated_files + +# But stamp files should be removed by "maintainer-clean" (the +# behaviour w.r.t. intermediate C files is still unclear, and +# better left undefined for the moment). +$MAKE maintainer-clean +ls *vala*.stamp | grep . && exit 1 + +: |