1#! /bin/sh
2# Copyright (C) 2001-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# Make sure depcomp does not needlessly update headers and objects
18# for yacc rules.  This test still fails with FreeBSD make (but passes
19# with NetBSD make).
20
21required='cc yacc'
22. test-init.sh
23
24cat >> configure.ac << 'END'
25AC_PROG_CC
26AC_PROG_YACC
27AC_OUTPUT
28END
29
30cat > Makefile.am << 'END'
31bin_PROGRAMS = foo
32AM_YFLAGS = -d
33foo_SOURCES = foo.y main.c
34BUILT_SOURCES = foo.h
35.PHONY: test-time-unchanged test-time-changed
36test-time-unchanged:
37	is_newest foo.y foo.h main.$(OBJEXT)
38test-time-changed:
39	is_newest main.$(OBJEXT) foo.y foo.h
40END
41
42cat > foo.y << 'END'
43%{
44int yylex () { return 0; }
45void yyerror (const char *s) {}
46%}
47%token TOKEN
48%%
49foobar : 'f' 'o' 'o' 'b' 'a' 'r' {};
50END
51
52
53cat > main.c << 'END'
54#include "foo.h"
55int main(void)
56{
57  return yyparse ();
58}
59END
60
61$ACLOCAL
62$AUTOCONF
63$AUTOMAKE -a
64
65# Try to enable dependency tracking if possible, even if that means
66# using slow dependency extractors.
67./configure --enable-dependency-tracking
68$MAKE
69ls -l # For debugging.
70
71$sleep
72touch foo.y
73$MAKE
74$MAKE test-time-unchanged
75$sleep
76sed 's/TOKEN/TEKON/g' foo.y > t
77mv -f t foo.y
78$MAKE
79$MAKE test-time-changed
80
81:
82