#! -*-perl-*-

$description = "Test the behaviour of the .SECONDARY target.";

$details = "\
Test the behavior of the .SECONDARY special target.
Create a makefile where a file would not normally be considered
intermediate, then specify it as .SECONDARY.  Build and note that it's
not automatically deleted.  Delete the file.  Rebuild to ensure that
it's not created if it doesn't exist but doesn't need to be built.
Change the original and ensure that the secondary file and the ultimate
target are both rebuilt, and that the secondary file is not deleted.

Try this with implicit rules and explicit rules: both should work.\n";

open(MAKEFILE,"> $makefile");

print MAKEFILE <<'EOF';

.SECONDARY: foo.e

# Implicit rule test
%.d : %.e ; cp $< $@
%.e : %.f ; cp $< $@

foo.d: foo.e

# Explicit rule test
foo.c: foo.e ; cp $< $@
EOF

close(MAKEFILE);

# TEST #1

&touch('foo.f');

&run_make_with_options($makefile,'foo.d',&get_logfile);
$answer = "cp foo.f foo.e\ncp foo.e foo.d\n";
&compare_output($answer, &get_logfile(1));

# TEST #2

unlink('foo.e');

&run_make_with_options($makefile,'foo.d',&get_logfile);
$answer = "$make_name: `foo.d' is up to date.\n";
&compare_output($answer, &get_logfile(1));

# TEST #3

sleep($wtime);
&touch('foo.f');

&run_make_with_options($makefile,'foo.d',&get_logfile);
$answer = "cp foo.f foo.e\ncp foo.e foo.d\n";
&compare_output($answer, &get_logfile(1));

# TEST #4

&run_make_with_options($makefile,'foo.c',&get_logfile);
$answer = "cp foo.e foo.c\n";
&compare_output($answer, &get_logfile(1));

# TEST #5

unlink('foo.e');

&run_make_with_options($makefile,'foo.c',&get_logfile);
$answer = "$make_name: `foo.c' is up to date.\n";
&compare_output($answer, &get_logfile(1));

# TEST #6

sleep($wtime);
&touch('foo.f');

&run_make_with_options($makefile,'foo.c',&get_logfile);
$answer = "cp foo.f foo.e\ncp foo.e foo.c\n";
&compare_output($answer, &get_logfile(1));

unlink('foo.f', 'foo.e', 'foo.d', 'foo.c');

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