#                                                                    -*-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");

# SV 45728: Test that undefining a variable is reflected properly

&run_make_test('
FOO := foo
BAR := bar
$(info one: $(sort $(filter FOO BAR BAZ,$(.VARIABLES))))
undefine BAR
BAZ := baz
$(info two: $(sort $(filter FOO BAR BAZ,$(.VARIABLES))))
all:;@:
',
               '', "one: BAR FOO\ntwo: BAZ 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');

1;

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