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