diff options
author | Reuben Thomas <rrt@sc3d.org> | 2020-11-07 18:44:56 -0800 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-11-07 18:44:56 -0800 |
commit | 782ac4008559afe5adceac5dcd7d8614dc5689af (patch) | |
tree | bf7007fb64647910a4853b7ceb5e28941f848945 /t/vala-libs-vpath.sh | |
parent | 285c285c5b79b65d8fab86ca6d15bd8d8bccacbc (diff) | |
download | automake-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.sh | 106 |
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 + +: |