#                                                              -*-mode: perl-*-

$description = "Test GNU make's auto-reinvocation feature.";

$details = "\
If the makefile or one it includes can be rebuilt then it is, and make
is reinvoked.  We create a rule to rebuild the makefile from a temp
file, then touch the temp file to make it newer than the makefile.";

$makefile2 = &get_tmpfile;
$makefile_orig = &get_tmpfile;

open(MAKEFILE,"> $makefile");

print MAKEFILE <<EOM;

all: ; \@echo 'running rules.'

$makefile $makefile2: $makefile_orig
	\@echo 'rebuilding \$\@.'
	\@echo >> \$\@

include $makefile2

EOM

close(MAKEFILE);

&touch($makefile2);

# Sleep 2 seconds for DOS/Windows FAT volumes which have 2-second
# granularity of file times.
sleep(2);

&touch("$makefile_orig");

&run_make_with_options($makefile, "", &get_logfile, 0);

# Create the answer to what should be produced by this Makefile

$answer = "rebuilding $makefile2.\nrebuilding $makefile.\nrunning rules.\n";

&compare_output($answer,&get_logfile(1))
  && unlink "$makefile_orig";

# In this test we create an included file that's out-of-date, but then
# the rule doesn't update it.  Make shouldn't re-exec.

$makefile3 = &get_tmpfile;

open(MAKEFILE, "> $makefile3");
print MAKEFILE <<'EOM';
SHELL = /bin/sh

all: ; @echo hello

a : b ; echo >> $@

b : c ; [ -f $@ ] || echo >> $@

c: ; echo >> $@

include $(F)
EOM

close(MAKEFILE);

&touch('a','b');
sleep(2);
&touch('c');

# First try with the file that's not updated "once removed" from the
# file we're including.

&run_make_with_options($makefile3, "F=a", &get_logfile, 0);

$answer = "[ -f b ] || echo >> b\nhello\n";
&compare_output($answer,&get_logfile(1));

# Now try with the file we're not updating being the actual file we're
# including: this and the previous one test different parts of the code.

&run_make_with_options($makefile3, "F=b", &get_logfile, 0);

$answer = "[ -f b ] || echo >> b\nhello\n";
&compare_output($answer,&get_logfile(1));

unlink('a','b','c');

# This tells the test driver that the perl test script executed properly.
1;
