#                                                                    -*-perl-*-

$description = "Test special GNU make variables.";

$details = "";

&run_make_test('

X1 := $(sort $(filter FOO BAR,$(.VARIABLES)))

FOO := foo

X2 := $(sort $(filter FOO BAR,$(.VARIABLES)))

BAR := bar

all:
	@echo X1 = $(X1)
	@echo X2 = $(X2)
	@echo LAST = $(sort $(filter FOO BAR,$(.VARIABLES)))
',
               '', "X1 =\nX2 = FOO\nLAST = BAR FOO\n");



# $makefile2 = &get_tmpfile;
# open(MAKEFILE, "> $makefile2");

# print MAKEFILE <<'EOF';

# X1 := $(sort $(.TARGETS))

# all: foo
# 	@echo X1 = $(X1)
# 	@echo X2 = $(X2)
# 	@echo LAST = $(sort $(.TARGETS))

# X2 := $(sort $(.TARGETS))

# foo:

# EOF

# close(MAKEFILE);

# # TEST #2
# # -------

# &run_make_with_options($makefile2, "", &get_logfile);
# $answer = "X1 =\nX2 = all\nLAST = all foo\n";
# &compare_output($answer, &get_logfile(1));

# Test the .RECIPEPREFIX variable
&run_make_test('
define foo
: foo-one\
foo-two
: foo-three
	: foo-four
endef

orig: ; : orig-one
	: orig-two \
orig-three \
	orig-four \
		orig-five \\\\
	: orig-six
	$(foo)

.RECIPEPREFIX = >
test: ; : test-one
>: test-two \
test-three \
>test-four \
>	test-five \\\\
>: test-six
>$(foo)

.RECIPEPREFIX =
reset: ; : reset-one
	: reset-two \
reset-three \
	reset-four \
		reset-five \\\\
	: reset-six
	$(foo)
',
               'orig test reset',
               ': orig-one
: orig-two \
orig-three \
orig-four \
	orig-five \\\\
: orig-six
: foo-one foo-two
: foo-three
: foo-four
: test-one
: test-two \
test-three \
test-four \
	test-five \\\\
: test-six
: foo-one foo-two
: foo-three
: foo-four
: reset-one
: reset-two \
reset-three \
reset-four \
	reset-five \\\\
: reset-six
: foo-one foo-two
: foo-three
: foo-four');

# Test that the "did you mean TAB" message is printed properly

run_make_test(q!
$x.
!,
              '', '#MAKEFILE#:2: *** missing separator.  Stop.', 512);

run_make_test(q!
foo:
        bar
!,
              '', '#MAKEFILE#:3: *** missing separator (did you mean TAB instead of 8 spaces?).  Stop.', 512);

run_make_test(q!
.RECIPEPREFIX = :
foo:
        bar
!,
              '', '#MAKEFILE#:4: *** missing separator.  Stop.', 512);

1;

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