| # -*-perl-*- |
| |
| $description = "Test the origin function."; |
| |
| $details = "This is a test of the origin function in gnu make. |
| This function will report on where a variable was |
| defined per the following list: |
| |
| 'undefined' never defined |
| 'default' default definition |
| 'environment' environment var without -e |
| 'environment override' environment var with -e |
| 'file' defined in makefile |
| 'command line' defined on the command line |
| 'override' defined by override in makefile |
| 'automatic' Automatic variable\n"; |
| |
| # On WIN32 systems, HOME is meaningless. SystemRoot should be defined |
| # though. With DJGPP, HOME is not guaranteed to be defined. Use DJDIR |
| # instead. |
| # |
| $homevar = (($port_type eq 'Windows') ? "SystemRoot" |
| : (($port_type eq 'DOS') ? "DJDIR" |
| : "HOME")); |
| |
| open(MAKEFILE,"> $makefile"); |
| |
| print MAKEFILE <<EOF; |
| foo := bletch garf |
| auto_var = udef CC $homevar MAKE foo CFLAGS WHITE \@ |
| av = \$(foreach var, \$(auto_var), \$(origin \$(var)) ) |
| override WHITE := BLACK |
| all: auto |
| \t\@echo \$(origin undefined) |
| \t\@echo \$(origin CC) |
| \t\@echo \$(origin $homevar) |
| \t\@echo \$(origin MAKE) |
| \t\@echo \$(origin foo) |
| \t\@echo \$(origin CFLAGS) |
| \t\@echo \$(origin WHITE) |
| \t\@echo \$(origin \@) |
| auto : |
| \t\@echo \$(av) |
| EOF |
| |
| close(MAKEFILE); |
| |
| &run_make_with_options($makefile, |
| "-e WHITE=WHITE CFLAGS=", |
| &get_logfile); |
| |
| # Create the answer to what should be produced by this Makefile |
| $answer = "undefined default environment default file command line override automatic |
| undefined |
| default |
| environment |
| default |
| file |
| command line |
| override |
| automatic\n"; |
| |
| |
| &compare_output($answer,&get_logfile(1)); |
| |
| 1; |