mirror of
https://git.savannah.gnu.org/git/make.git
synced 2025-01-12 16:45:35 +00:00
0880e5c86a
Disable builtin variables and rules immediately, when -R or -r is added to MAKEFLAGS inside the makefile. * src/main.c (disable_builtins): Add new function disable_builtins(). (main): Call disable_builtins(). (reset_makeflags): Call disable_builtins(). * tests/scripts/options/dash-r: Add tests. * tests/scripts/variables/MAKEFLAGS: Update tests.
103 lines
2.3 KiB
Perl
103 lines
2.3 KiB
Perl
# -*-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;
|