mirror of
https://git.savannah.gnu.org/git/make.git
synced 2025-01-29 02:20:01 +00:00
87 lines
2.6 KiB
Text
87 lines
2.6 KiB
Text
|
# -*-perl-*-
|
||
|
|
||
|
$description = "Test the --warn option.";
|
||
|
|
||
|
my %warn_test = (
|
||
|
'--warn' => '', '--warn=warn' => '', '--warn=error --warn=warn' => '',
|
||
|
'--warn --warn=error' => '=error',
|
||
|
'--warn=ignore --warn=error --warn=ignore --warn=undefined-var' => '=ignore,undefined-var',
|
||
|
'--warn=undefined-var:error --warn' => '=warn,undefined-var:error'
|
||
|
);
|
||
|
|
||
|
# Verify the deprecated --warn-undefined-variables option
|
||
|
run_make_test(q!
|
||
|
$(info MF=$(MAKEFLAGS))
|
||
|
all:; @#HELPER# env MAKEFLAGS
|
||
|
!,
|
||
|
'--warn-undefined-variables', "MF= --warn=undefined-var\nMAKEFLAGS= --warn=undefined-var");
|
||
|
|
||
|
# Verify parsing of --warn in various forms.
|
||
|
|
||
|
while (my ($f, $r) = each %warn_test) {
|
||
|
run_make_test(undef, $f, "MF= --warn$r\nMAKEFLAGS= --warn$r");
|
||
|
}
|
||
|
|
||
|
# Verify that values set in MAKEFLAGS take effect
|
||
|
|
||
|
while (my ($f, $r) = each %warn_test) {
|
||
|
run_make_test(qq!
|
||
|
MAKEFLAGS += $f
|
||
|
\$(info MF=\$(MAKEFLAGS))
|
||
|
all:; \@#HELPER# env MAKEFLAGS
|
||
|
!,
|
||
|
'', "MF= --warn$r\nMAKEFLAGS= --warn$r");
|
||
|
}
|
||
|
|
||
|
# Verify that make's special variables don't warn even if they're not set
|
||
|
run_make_test(q!
|
||
|
vars := $(.VARIABLES) $(MAKECMDGOALS) $(MAKE_RESTARTS) $(CURDIR)
|
||
|
vars += $(GNUMAKEFLAGS) $(MAKEFLAGS) $(MFLAGS) $(MAKE_COMMAND) $(MAKE)
|
||
|
vars += $(MAKEFILE_LIST) $(MAKEOVERRIDES) $(-*-command-variables-*-)
|
||
|
vars += $(.RECIPEPREFIX) $(.LOADED) $(.FEATURES)
|
||
|
vars += $(SHELL) $(.SHELLFLAGS) $(MAKE_TERMOUT) $(MAKE_TERMERR)
|
||
|
vars += $(.DEFAULT) $(.DEFAULT_GOAL) $(-*-eval-flags-*-) $(SUFFIXES)
|
||
|
vars += $(VPATH) $(GPATH)
|
||
|
all:;
|
||
|
!,
|
||
|
'--warn=undefined-var', "#MAKE#: 'all' is up to date.");
|
||
|
|
||
|
# sv 63609.
|
||
|
# Test for buffer overrun in warn_undefined.
|
||
|
run_make_test(q!
|
||
|
all:;
|
||
|
X := $(averyveryveryloooooooooooooooooooooooooooongvariablename)
|
||
|
!,
|
||
|
'--warn=undefined-var',
|
||
|
"#MAKEFILE#:3: reference to undefined variable 'averyveryveryloooooooooooooooooooooooooooongvariablename'
|
||
|
#MAKE#: 'all' is up to date.\n"
|
||
|
);
|
||
|
|
||
|
# Check undefined variable warnings
|
||
|
|
||
|
# With no options or with ignore, nothing should happen
|
||
|
run_make_test('
|
||
|
EMPTY =
|
||
|
EREF = $(EMPTY)
|
||
|
UREF = $(UNDEFINED)
|
||
|
|
||
|
SEREF := $(EREF)
|
||
|
SUREF := $(UREF)
|
||
|
|
||
|
all: ; @echo ref $(EREF) $(UREF)',
|
||
|
'', 'ref');
|
||
|
|
||
|
run_make_test(undef, '--warn=undefined-var:ignore', 'ref');
|
||
|
|
||
|
# Check warnings
|
||
|
run_make_test(undef, '--warn=undefined-var',
|
||
|
"#MAKEFILE#:7: reference to undefined variable 'UNDEFINED'
|
||
|
#MAKEFILE#:9: reference to undefined variable 'UNDEFINED'
|
||
|
ref");
|
||
|
|
||
|
# Check and errors
|
||
|
run_make_test(undef, '--warn=undefined-var:error',
|
||
|
"#MAKEFILE#:7: *** reference to undefined variable 'UNDEFINED'. Stop.", 512);
|
||
|
|
||
|
1;
|