| 1 | # -*-perl-*-
|
|---|
| 2 |
|
|---|
| 3 | $description = "Test the behaviour of the .POSIX target.";
|
|---|
| 4 |
|
|---|
| 5 | $details = "";
|
|---|
| 6 |
|
|---|
| 7 |
|
|---|
| 8 | # Ensure turning on .POSIX enables the -e flag for the shell
|
|---|
| 9 | # We can't assume the exit value of "false" because on different systems it's
|
|---|
| 10 | # different.
|
|---|
| 11 |
|
|---|
| 12 | my $script = 'false; true';
|
|---|
| 13 | my $flags = '-ec';
|
|---|
| 14 | my $out = `/bin/sh $flags '$script' 2>&1`;
|
|---|
| 15 | my $err = $? >> 8;
|
|---|
| 16 | run_make_test(qq!
|
|---|
| 17 | .POSIX:
|
|---|
| 18 | all: ; \@$script
|
|---|
| 19 | !,
|
|---|
| 20 | '', "#MAKE#: *** [#MAKEFILE#:3: all] Error $err\n", 512);
|
|---|
| 21 |
|
|---|
| 22 | # User settings must override .POSIX
|
|---|
| 23 | $flags = '-xc';
|
|---|
| 24 | $out = `/bin/sh $flags '$script' 2>&1`;
|
|---|
| 25 | run_make_test(qq!
|
|---|
| 26 | .SHELLFLAGS = $flags
|
|---|
| 27 | .POSIX:
|
|---|
| 28 | all: ; \@$script
|
|---|
| 29 | !,
|
|---|
| 30 | '', $out);
|
|---|
| 31 |
|
|---|
| 32 | # Test the default value of various POSIX-specific variables
|
|---|
| 33 | my %POSIX = (AR => 'ar', ARFLAGS => '-rv',
|
|---|
| 34 | YACC => 'yacc', YFLAGS => '',
|
|---|
| 35 | LEX => 'lex', LFLAGS => '',
|
|---|
| 36 | LDFLAGS => '',
|
|---|
| 37 | CC => 'c99', CFLAGS => '-O',
|
|---|
| 38 | FC => 'fort77', FFLAGS => '-O 1',
|
|---|
| 39 | GET => 'get', GFLAGS => '',
|
|---|
| 40 | SCCSFLAGS => '', SCCSGETFLAGS => '-s');
|
|---|
| 41 | my $make = join('', map { "\t\@echo '$_=\$($_)'\n" } sort keys %POSIX);
|
|---|
| 42 | my $r = join('', map { "$_=$POSIX{$_}\n"} sort keys %POSIX);
|
|---|
| 43 | run_make_test(qq!
|
|---|
| 44 | .POSIX:
|
|---|
| 45 | all:
|
|---|
| 46 | $make
|
|---|
| 47 | !,
|
|---|
| 48 | '', $r);
|
|---|
| 49 |
|
|---|
| 50 | # Make sure that local settings take precedence
|
|---|
| 51 | %extraENV = map { $_ => "xx-$_" } keys %POSIX;
|
|---|
| 52 | $r = join('', map { "$_=xx-$_\n"} sort keys %POSIX);
|
|---|
| 53 | run_make_test(undef, '', $r);
|
|---|
| 54 |
|
|---|
| 55 | # This tells the test driver that the perl test script executed properly.
|
|---|
| 56 | 1;
|
|---|