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;
|
---|