#                                                                    -*-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.

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.
&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:
