#                                                                    -*-perl-*-

$description = "Test the MAKE_RESTARTS variable.";

# Test basic capability

run_make_test('
all: ; @:
$(info MAKE_RESTARTS=$(MAKE_RESTARTS))
include foo.x
foo.x: ; @touch $@
',
              '', 'MAKE_RESTARTS=
#MAKEFILE#:4: foo.x: No such file or directory
MAKE_RESTARTS=1');

rmfiles('foo.x');

# Test multiple restarts

run_make_test('
all: ; @:
$(info MAKE_RESTARTS=$(MAKE_RESTARTS))
include foo.x
foo.x: ; @echo "include bar.x" > $@
bar.x: ; @touch $@
',
              '', 'MAKE_RESTARTS=
#MAKEFILE#:4: foo.x: No such file or directory
MAKE_RESTARTS=1
foo.x:1: bar.x: No such file or directory
MAKE_RESTARTS=2');

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

# Test multiple restarts and make sure the variable is cleaned up

run_make_test('
recurse:
	@echo recurse MAKE_RESTARTS=$$MAKE_RESTARTS
	@$(MAKE) -f #MAKEFILE# all
all:
	@echo all MAKE_RESTARTS=$$MAKE_RESTARTS
$(info MAKE_RESTARTS=$(MAKE_RESTARTS))
include foo.x
foo.x: ; @echo "include bar.x" > $@
bar.x: ; @touch $@
',
              '', "MAKE_RESTARTS=
#MAKEFILE#:8: foo.x: No such file or directory
MAKE_RESTARTS=1
foo.x:1: bar.x: No such file or directory
MAKE_RESTARTS=2
recurse MAKE_RESTARTS=
#MAKE#[1]: Entering directory '#PWD#'
MAKE_RESTARTS=
all MAKE_RESTARTS=
#MAKE#[1]: Leaving directory '#PWD#'");

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

1;
