#                                                                    -*-perl-*-

$description = "Test make -W (what if) option.\n";

# Basic build

run_make_test('
a.x: b.x
a.x b.x: ; echo >> $@
',
              '', "echo >> b.x\necho >> a.x");

# Run it again: nothing should happen

run_make_test(undef, '', "#MAKE#: 'a.x' is up to date.");

# Now run it with -W b.x: should rebuild a.x

run_make_test(undef, '-W b.x', 'echo >> a.x');

# Put the timestamp for a.x into the future; it should still be remade.
# There are clock skew errors printed here but they will be cleared by
# the comparison code.
utouch(1000, 'a.x');
run_make_test(undef, '', "#MAKE#: 'a.x' is up to date.");
run_make_test(undef, '-W b.x', 'echo >> a.x');

# Clean up

rmfiles('a.x', 'b.x');

# Test -W with the re-exec feature: we don't want to re-exec forever
# Savannah bug # 7566

# First set it up with a normal build

run_make_test('
all: baz.x ; @:
include foo.x
foo.x: bar.x
	@echo "\$$(info restarts=\$$(MAKE_RESTARTS))" > $@
	@echo "touch $@"
bar.x: ; echo >> $@
baz.x: bar.x ; @echo "touch $@"
',
              '', 'echo >> bar.x
touch foo.x
restarts=1
touch baz.x');

# Now run with -W bar.x

# Tweak foo.x's timestamp so the update will change it.
# There are clock skew errors printed here but they will be cleared by
# the comparison code.
&utouch(1000, 'foo.x');

run_make_test(undef, '-W bar.x', "restarts=\ntouch foo.x\nrestarts=1\ntouch baz.x");

rmfiles('foo.x', 'bar.x');

# Test -W on vpath-found files: it should take effect.
# Savannah bug # 15341

mkdir('x-dir', 0777);
utouch(-20, 'x-dir/x');
touch('y');

run_make_test('
y: x ; @echo cp $< $@
',
              '-W x-dir/x VPATH=x-dir',
              'cp x-dir/x y');

# Make sure ./ stripping doesn't interfere with the match.

run_make_test('
y: x ; @echo cp $< $@
',
              '-W ./x-dir/x VPATH=x-dir',
              'cp x-dir/x y');

run_make_test(undef,
              '-W x-dir/x VPATH=./x-dir',
              'cp ./x-dir/x y');

unlink(qw(y x-dir/x));
rmdir('x-dir');

1;

### Local Variables:
### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action))
### End:
