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

# 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:
