#! /bin/sh
# Copyright (C) 2011-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 .
# Test remake rules when a new AC_SUBST'd variable is added, and C header
# files are involved.
# This test overlaps with others, and is not strictly necessary per se,
# but it exercises a real use case (from gnulib, see:
#
# for more info).
required=cc
. test-init.sh
cat >> configure.ac <<'END'
AC_PROG_CC
MY_MACROS
AC_OUTPUT
END
cat > Makefile.am <<'END'
ACLOCAL_AMFLAGS = -I m4
noinst_PROGRAMS = foo
foo_SOURCES = foo.c
BUILT_SOURCES = foo.h
edit_h = sed -e 's|[@]foovar@|@foovar@|g'
foo.h: foo.in.h
$(edit_h) < $(srcdir)/foo.in.h > $@-t
cat $@-t;: For debugging.
mv -f $@-t $@
EXTRA_DIST = foo.in.h
MOSTLYCLEANFILES = foo.h foo.h-t
END
mkdir m4
cat > m4/foo.m4 <<'END'
AC_DEFUN([MY_MACROS], [
FOO_MACRO
dnl: ZAP_MACRO
])
END
cat > m4/bar.m4 <<'END'
AC_DEFUN([FOO_MACRO], [
foovar=42; AC_SUBST([foovar])
dnl: barvar=47; AC_SUBST([barvar])
])
END
cat > foo.in.h <<'END'
#define foo @foovar@
END
cat > foo.c <<'END'
#include "foo.h"
int main (void) { return 0; }
typedef int checkfoo[1 - 2 * (foo != 42)];
END
$ACLOCAL -I m4
$AUTOCONF
$AUTOMAKE
./configure
$MAKE
: AC_SUBST @barvar@ and add it to foo.h.
$sleep
sed -e 's/^dnl:/ /' m4/bar.m4 > t
mv -f t m4/bar.m4
cat m4/bar.m4
cat >> foo.in.h <<'END'
#define bar @barvar@
END
cat >> foo.c <<'END'
typedef int checkbar[1 - 2 * (bar != 47)];
END
cat >> Makefile.am <<'END'
edit_h += -e 's|[@]barvar@|@barvar@|g'
END
using_gmake || $MAKE Makefile
$MAKE
: AC_SUBST @zapvar@ and add it to foo.h.
# Do it in a slightly different way from how it was done for @barvar@.
$sleep
cat >> Makefile.am <<'END'
edit_h += -e 's|[@]zapvar@|$(zapvar)|g'
END
cat >> foo.c <<'END'
typedef int checkzap[1 - 2 * (zap != 163)];
END
sed -e 's/^dnl://' m4/foo.m4 > t
mv -f t m4/foo.m4
cat m4/foo.m4
cat >> foo.in.h <<'END'
#define zap @zapvar@
END
cat >> m4/bar.m4 <<'END'
AC_DEFUN([ZAP_MACRO], [zapvar=163; AC_SUBST([zapvar])])
END
using_gmake || $MAKE Makefile
$MAKE
$MAKE distcheck
: