annotate auto/lib/perl/conf @ 6700:0d2956dfc4e6

Perl: pass additional linker options to perl module. Previously flags passed by --with-ld-opt were not used when building perl module, which meant hardening flags provided by package build systems were not applied.
author Konstantin Pavlov <thresh@nginx.com>
date Tue, 20 Sep 2016 22:11:23 +0300
parents 39a806ccf21e
children 30b6f1ff192b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
599
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2 # Copyright (C) Igor Sysoev
4412
d620f497c50f Copyright updated.
Maxim Konovalov <maxim@nginx.com>
parents: 950
diff changeset
3 # Copyright (C) Nginx, Inc.
599
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
4
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
5
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
6 echo "checking for perl"
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
7
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
8
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
9 NGX_PERL_VER=`$NGX_PERL -v 2>&1 | grep '^This is perl' 2>&1 \
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
10 | sed -e 's/^This is perl, \(.*\)/\1/'`
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
11
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
12 if test -n "$NGX_PERL_VER"; then
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
13 echo " + perl version: $NGX_PERL_VER"
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
14
4866
fac1cc762969 Configure: additional test for ExtUtils::Embed perl module presence.
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
15 if [ "`$NGX_PERL -e 'use 5.006001; print "OK"'`" != "OK" ]; then
599
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
16 echo
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
17 echo "$0: error: perl 5.6.1 or higher is required"
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
18 echo
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
19
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
20 exit 1;
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
21 fi
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
22
4866
fac1cc762969 Configure: additional test for ExtUtils::Embed perl module presence.
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
23 if [ "`$NGX_PERL -MExtUtils::Embed -e 'print "OK"'`" != "OK" ]; then
fac1cc762969 Configure: additional test for ExtUtils::Embed perl module presence.
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
24 echo
fac1cc762969 Configure: additional test for ExtUtils::Embed perl module presence.
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
25 echo "$0: error: perl module ExtUtils::Embed is required"
fac1cc762969 Configure: additional test for ExtUtils::Embed perl module presence.
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
26 echo
fac1cc762969 Configure: additional test for ExtUtils::Embed perl module presence.
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
27
fac1cc762969 Configure: additional test for ExtUtils::Embed perl module presence.
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
28 exit 1;
fac1cc762969 Configure: additional test for ExtUtils::Embed perl module presence.
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
29 fi
fac1cc762969 Configure: additional test for ExtUtils::Embed perl module presence.
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
30
6700
0d2956dfc4e6 Perl: pass additional linker options to perl module.
Konstantin Pavlov <thresh@nginx.com>
parents: 6419
diff changeset
31 NGX_PM_CFLAGS=`$NGX_PERL -MExtUtils::Embed -e ccopts`
0d2956dfc4e6 Perl: pass additional linker options to perl module.
Konstantin Pavlov <thresh@nginx.com>
parents: 6419
diff changeset
32 NGX_PM_LDFLAGS=`$NGX_PERL -MConfig -e 'print $Config{lddlflags}'`
0d2956dfc4e6 Perl: pass additional linker options to perl module.
Konstantin Pavlov <thresh@nginx.com>
parents: 6419
diff changeset
33
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 669
diff changeset
34 NGX_PERL_CFLAGS="$CFLAGS `$NGX_PERL -MExtUtils::Embed -e ccopts`"
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 669
diff changeset
35
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 669
diff changeset
36 # gcc 4.1/4.2 warn about unused values in pTHX_
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 669
diff changeset
37 NGX_PERL_CFLAGS=`echo $NGX_PERL_CFLAGS \
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 669
diff changeset
38 | sed -e 's/-Wunused-value/-Wno-unused-value/'`
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 669
diff changeset
39 # icc8 warns 'declaration hides parameter "my_perl"' in ENTER and LEAVE
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 669
diff changeset
40 NGX_PERL_CFLAGS=`echo $NGX_PERL_CFLAGS \
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 669
diff changeset
41 | sed -e 's/-wd171/-wd171 -wd1599/'`
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 669
diff changeset
42
599
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
43 ngx_perl_ldopts=`$NGX_PERL -MExtUtils::Embed -e ldopts`
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
44
5145
f6777aef5b2f Configure: fixed perl module make rules.
Ruslan Ermilov <ru@nginx.com>
parents: 4866
diff changeset
45 ngx_perl_dlext=`$NGX_PERL -MConfig -e 'print $Config{dlext}'`
5743
dde2ae4701e1 Configure: restored "nginx/" missed in 6e4bb1d6679d.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5739
diff changeset
46 ngx_perl_libdir="src/http/modules/perl/blib/arch/auto"
dde2ae4701e1 Configure: restored "nginx/" missed in 6e4bb1d6679d.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5739
diff changeset
47 ngx_perl_module="$ngx_perl_libdir/nginx/nginx.$ngx_perl_dlext"
5145
f6777aef5b2f Configure: fixed perl module make rules.
Ruslan Ermilov <ru@nginx.com>
parents: 4866
diff changeset
48
599
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
49 if $NGX_PERL -V:usemultiplicity | grep define > /dev/null; then
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
50 have=NGX_HAVE_PERL_MULTIPLICITY . auto/have
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
51 echo " + perl interpreter multiplicity found"
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
52 fi
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
53
872
1c4a5b3f9110 Axe several perl interpreter instances: they may be useful in currently
Igor Sysoev <igor@sysoev.ru>
parents: 681
diff changeset
54 if $NGX_PERL -V:useithreads | grep undef > /dev/null; then
599
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
55 # FreeBSD port wants to link with -pthread non-threaded perl
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
56 ngx_perl_ldopts=`echo $ngx_perl_ldopts | sed 's/ -pthread//'`
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
57 fi
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
58
5722
baf2816d556d Configure: workaround for system perl on OS X (ticket #576).
Maxim Dounin <mdounin@mdounin.ru>
parents: 5145
diff changeset
59 if [ "$NGX_SYSTEM" = "Darwin" ]; then
baf2816d556d Configure: workaround for system perl on OS X (ticket #576).
Maxim Dounin <mdounin@mdounin.ru>
parents: 5145
diff changeset
60 # OS X system perl wants to link universal binaries
5739
6e4bb1d6679d Configure: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5722
diff changeset
61 ngx_perl_ldopts=`echo $ngx_perl_ldopts \
6308
7e241b36819d Configure: improved workaround for system perl on OS X.
Ruslan Ermilov <ru@nginx.com>
parents: 5743
diff changeset
62 | sed -e 's/-arch i386//' -e 's/-arch x86_64//'`
5722
baf2816d556d Configure: workaround for system perl on OS X (ticket #576).
Maxim Dounin <mdounin@mdounin.ru>
parents: 5145
diff changeset
63 fi
baf2816d556d Configure: workaround for system perl on OS X (ticket #576).
Maxim Dounin <mdounin@mdounin.ru>
parents: 5145
diff changeset
64
6419
39a806ccf21e Dynamic modules: perl.
Ruslan Ermilov <ru@nginx.com>
parents: 6308
diff changeset
65 if [ $USE_PERL = YES ]; then
39a806ccf21e Dynamic modules: perl.
Ruslan Ermilov <ru@nginx.com>
parents: 6308
diff changeset
66 CORE_LINK="$CORE_LINK $ngx_perl_ldopts"
39a806ccf21e Dynamic modules: perl.
Ruslan Ermilov <ru@nginx.com>
parents: 6308
diff changeset
67 fi
39a806ccf21e Dynamic modules: perl.
Ruslan Ermilov <ru@nginx.com>
parents: 6308
diff changeset
68
39a806ccf21e Dynamic modules: perl.
Ruslan Ermilov <ru@nginx.com>
parents: 6308
diff changeset
69 NGX_LIB_PERL="$ngx_perl_ldopts"
599
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
70
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
71 if test -n "$NGX_PERL_MODULES"; then
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
72 have=NGX_PERL_MODULES value="(u_char *) \"$NGX_PERL_MODULES\""
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
73 . auto/define
950
9581fba9ea12 fix for nginx.pm default installation
Igor Sysoev <igor@sysoev.ru>
parents: 872
diff changeset
74 NGX_PERL_MODULES_MAN=$NGX_PERL_MODULES/man3
599
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
75 fi
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
76
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
77 else
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
78 echo
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
79 echo "$0: error: perl 5.6.1 or higher is required"
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
80 echo
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
81
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
82 exit 1;
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
83 fi