#                                                                    -*-perl-*-

$description = "Test removing default rules and variables";

touch('xxx.c');

# Simple check
run_make_test("\n", '-r COMPILE.c=echo xxx.o',
              "#MAKE#: *** No rule to make target 'xxx.o'.  Stop.", 512);

# Make sure we can set it from within the makefile too
run_make_test(q!
COMPILE.c = echo
MAKEFLAGS += -r
!,
              'xxx.o',
              "#MAKE#: *** No rule to make target 'xxx.o'.  Stop.", 512);

unlink('xxx.c');

# Simple check for -R
run_make_test(q!
all:;$(info CC='$(CC)')
!,
              '-sR', "CC=''");

# Make sure we can set -R from within the makefile too
run_make_test(q!
MAKEFLAGS += -R
all:;$(info CC='$(CC)')
!,
              '-s', "CC=''");

# sv 62356.
# Setting -R in MAKEFLAGS sets -r.
run_make_test(q!
MAKEFLAGS := -R
.PHONY: hello.c
all: hello.o
!, '', "#MAKE#: *** No rule to make target 'hello.o', needed by 'all'.  Stop.", 512);

my @flavors = ('=', ':=', ':::=', '+=');

# sv 64107.

# Use $answer to test that -R in the makefile has the same effect as -R on the
# command line.

my $answer = "at parse time TEX=\nat build time TEX=\n#MAKE#: 'all' is up to date.\n";

# Subtest 1.
# First run with -R command line switch.

for my $fl (@flavors) {
run_make_test("
\$(info at parse time TEX=\$(TEX))
all:; \$(info at build time TEX=\$(TEX))
", '-R', "$answer");
}

# Subtest 2.
# Set -R in the makefile.
# Also, test that setting -R in MAKEFLAGS takes effect immediately.

for my $fl (@flavors) {
run_make_test("
\$(info at start time TEX=\$(TEX))
MAKEFLAGS ${fl} -R
\$(info at parse time TEX=\$(TEX))
all:; \$(info at build time TEX=\$(TEX))
", '', "at start time TEX=tex\n$answer");
}

# Same as above, but also set TEX conditionally.

$answer = "at parse time TEX=hello\nat build time TEX=hello\n#MAKE#: 'all' is up to date.\n";

# Subtest 3.
# -R on the command line.

for my $fl (@flavors) {
run_make_test("
TEX ?= hello
\$(info at parse time TEX=\$(TEX))
all:; \$(info at build time TEX=\$(TEX))
", '-R', "$answer");
}

# Subtest 4.
# -R in the makefile.

for my $fl (@flavors) {
run_make_test("
\$(info at start time TEX=\$(TEX))
MAKEFLAGS ${fl} -R
TEX ?= hello
\$(info at parse time TEX=\$(TEX))
all:; \$(info at build time TEX=\$(TEX))
", '', "at start time TEX=tex\n$answer");
}


1;
