summaryrefslogtreecommitdiff
path: root/t/vala-libs-vpath.sh
diff options
context:
space:
mode:
authorReuben Thomas <rrt@sc3d.org>2020-11-07 18:44:56 -0800
committerKarl Berry <karl@freefriends.org>2020-11-07 18:44:56 -0800
commit782ac4008559afe5adceac5dcd7d8614dc5689af (patch)
treebf7007fb64647910a4853b7ceb5e28941f848945 /t/vala-libs-vpath.sh
parent285c285c5b79b65d8fab86ca6d15bd8d8bccacbc (diff)
downloadautomake-782ac4008559afe5adceac5dcd7d8614dc5689af.tar.gz
vala: improve support, especially builddir vs. srcdir.
This change fixes https://bugs.gnu.org/13002. * NEWS: mention these changes. * bin/automake.in: generated C files go in builddir, not srcdir. Distribute the header files generated from VAPI files. * t/vala-libs-distcheck.sh: new test for `make distcheck' of a Vala library. * t/vala-libs-vpath.sh: new test for a VPATH build of a Vala library. * t/vala-libs.sh: add local VAPIs used as external --package to test. * t/vala-recursive-setup.sh: we need to make maintainer-clean at one point to remove stamp files to avoid confusing a VPATH build performed after a non-VPATH build. * t/vala-non-recursive-setup.sh: likewise. * t/vala-parallel.sh: some test paths need changing to take into account that generated C files now go in builddir. * t/vala-per-target-flags.sh: likewise. * t/vala-recursive-setup.sh: likewise. * t/vala-vpath.sh: likewise.
Diffstat (limited to 't/vala-libs-vpath.sh')
-rw-r--r--t/vala-libs-vpath.sh106
1 files changed, 106 insertions, 0 deletions
diff --git a/t/vala-libs-vpath.sh b/t/vala-libs-vpath.sh
new file mode 100644
index 000000000..73fbffda2
--- /dev/null
+++ b/t/vala-libs-vpath.sh
@@ -0,0 +1,106 @@
+#! /bin/sh
+# Copyright (C) 2012-2020 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 <http://www.gnu.org/licenses/>.
+
+# 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([valalibs],[0.1])
+
+AC_CONFIG_MACRO_DIR([m4])
+
+AM_INIT_AUTOMAKE
+AM_PROG_AR
+LT_INIT
+
+AC_PROG_CC
+
+AM_PROG_VALAC([0.7.3])
+PKG_CHECK_MODULES([GOBJECT], [gobject-2.0 >= 2.4])
+
+AC_CONFIG_FILES([Makefile src/Makefile])
+AC_OUTPUT
+END
+
+
+cat > Makefile.am << 'END'
+SUBDIRS=src
+END
+
+mkdir src
+
+cat > src/Makefile.am << 'END'
+AUTOMAKE_OPTIONS = subdir-objects
+lib_LTLIBRARIES = libservice.la
+libservice_la_SOURCES = service.vala cservice.c cservice.h
+libservice_la_CPPFLAGS = -DOKOKIMDEFINED=1
+libservice_la_VALAFLAGS = --vapidir=$(srcdir) --pkg cservice --library service
+AM_CFLAGS = $(GOBJECT_CFLAGS)
+END
+
+libtoolize
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+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
+
+cat > src/service.vala << 'END'
+namespace CService {
+public class Generator : Object {
+ public Generator () {
+ stdout.printf ("construct generator");
+ }
+ public void init () {
+ stdout.printf ("init generator");
+ }
+}
+}
+END
+
+mkdir build
+cd build
+../configure
+
+$MAKE
+pwd
+test -f src/libservice_la_vala.stamp
+test -f src/libservice.la
+
+: