| # -*-perl-*- | |
| $description = "Test the --warn-undefined-variables option."; | |
| $details = "Verify that warnings are printed for referencing undefined variables."; | |
| # 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-variables', "#MAKE#: 'all' is up to date."); | |
| # Without --warn-undefined-variables, nothing should happen | |
| run_make_test(' | |
| EMPTY = | |
| EREF = $(EMPTY) | |
| UREF = $(UNDEFINED) | |
| SEREF := $(EREF) | |
| SUREF := $(UREF) | |
| all: ; @echo ref $(EREF) $(UREF)', | |
| '', 'ref'); | |
| # With --warn-undefined-variables, it should warn me | |
| run_make_test(undef, '--warn-undefined-variables', | |
| "#MAKEFILE#:7: warning: undefined variable 'UNDEFINED' | |
| #MAKEFILE#:9: warning: undefined variable 'UNDEFINED' | |
| ref"); | |
| # sv 63609. | |
| # Test for buffer overrun in warn_undefined. | |
| run_make_test(q! | |
| all:; | |
| X := $(averyveryverylongvariablename) | |
| !, | |
| '--warn-undefined-variables', | |
| "#MAKEFILE#:3: warning: undefined variable 'averyveryverylongvariablename' | |
| #MAKE#: 'all' is up to date.\n" | |
| ); | |
| 1; |