d02de681a566f2957735873b2fd1a9888c4dc426
[packages/trusty/cirros-testvm.git] / cirros-testvm / src-cirros / buildroot-2015.05 / package / nginx / 0005-auto-unix-make-sys_nerr-guessing-cross-friendly.patch
1 From 8c19cea5e667f325ececdc1678bfddf063af0da2 Mon Sep 17 00:00:00 2001
2 From: Samuel Martin <s.martin49@gmail.com>
3 Date: Sun, 1 Jun 2014 16:05:04 +0200
4 Subject: [PATCH 5/5] auto/unix: make sys_nerr guessing cross-friendly
5
6 This patch replaces the default sys_nerr runtest with a test done at
7 buildtime.
8
9 The idea behind this buildtime test is finding the value of the ERR_MAX
10 macro if defined, or the EHWPOISON (which is currently the last errno)
11 otherwise.
12
13 Signed-off-by: Samuel Martin <s.martin49@gmail.com>
14 ---
15  auto/os/sys_nerr | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
16  auto/unix        | 10 ++++++++
17  2 files changed, 87 insertions(+)
18  create mode 100644 auto/os/sys_nerr
19
20 diff --git a/auto/os/sys_nerr b/auto/os/sys_nerr
21 new file mode 100644
22 index 0000000..25e7c22
23 --- /dev/null
24 +++ b/auto/os/sys_nerr
25 @@ -0,0 +1,78 @@
26 +
27 +# Copyright (C) Samuel Martin <s.martin49@gmail.com>
28 +
29 +
30 +echo $ngx_n "checking for sys_nerr value...$ngx_c"
31 +
32 +# sys_nerr guessing is done using a (very) poor (but working)
33 +# heuristics, by checking for the value of ERR_MAX if defined, or
34 +# EHWPOISON otherwise.
35 +
36 +cat << END >> $NGX_AUTOCONF_ERR
37 +
38 +----------------------------------------
39 +checking for sys_nerr value
40 +
41 +END
42 +
43 +ngx_sys_nerr=
44 +
45 +cat << _EOF > $NGX_AUTOTEST.c
46 +
47 +#include <stdio.h>
48 +#include <errno.h>
49 +
50 +static char sys_nerr_test[ERR_MAX];
51 +int main(void)
52 +{
53 +    return 0;
54 +}
55 +
56 +_EOF
57 +
58 +if $CC $CC_TEST_FLAGS $CC_AUX_FLAGS \
59 +        $NGX_AUTOTEST.c -o $NGX_AUTOTEST \
60 +        $NGX_LD_OPT $ngx_feature_libs >/dev/null 2>&1 ; then
61 +    _ngx_max_err_macro=ERR_MAX
62 +else
63 +    # the +2 has been empirically found!
64 +    _ngx_max_err_macro="EHWPOISON + 2"
65 +fi
66 +
67 +cat << _EOF > $NGX_AUTOTEST.c
68 +
69 +#include <stdio.h>
70 +#include <errno.h>
71 +
72 +static char sys_nerr_test[(TEST_ERR_MAX == $_ngx_max_err_macro) ? 1 : -1];
73 +int main(void)
74 +{
75 +    return 0;
76 +}
77 +
78 +_EOF
79 +
80 +
81 +ngx_sys_nerr=`for i in $(seq 0 2000) ; do \
82 +    $CC $CC_TEST_FLAGS $CC_AUX_FLAGS \
83 +    -DTEST_ERR_MAX="$i" \
84 +    $NGX_AUTOTEST.c -o $NGX_AUTOTEST \
85 +    $NGX_LD_OPT $ngx_feature_libs >/dev/null 2>&1 || continue ;\
86 +    echo $i ; break ; done`
87 +
88 +rm -rf $NGX_AUTOTEST*
89 +
90 +if test -z $ngx_sys_nerr ; then
91 +    ngx_size=0
92 +    ngx_sys_nerr=0
93 +fi
94 +
95 +cat << END >> $NGX_AUTO_CONFIG_H
96 +
97 +#ifndef $ngx_feature_name
98 +#define $ngx_feature_name $ngx_sys_nerr
99 +#endif
100 +
101 +END
102 +
103 +echo " $ngx_sys_nerr"
104 diff --git a/auto/unix b/auto/unix
105 index b7cc9cb..1a49ba3 100755
106 --- a/auto/unix
107 +++ b/auto/unix
108 @@ -550,6 +550,10 @@ ngx_feature_incs='#include <errno.h>
109                    #include <stdio.h>'
110  ngx_feature_path=
111  ngx_feature_libs=
112 +
113 +if false ; then
114 +# Disabled because only valid for native build.
115 +
116  ngx_feature_test='printf("%d", sys_nerr);'
117  . auto/feature
118  
119 @@ -598,6 +602,12 @@ if [ $ngx_found = no ]; then
120      . auto/feature
121  fi
122  
123 +else
124 +    # Cross-compilation support
125 +    . auto/os/sys_nerr
126 +
127 +fi
128 +
129  
130  ngx_feature="localtime_r()"
131  ngx_feature_name="NGX_HAVE_LOCALTIME_R"
132 -- 
133 1.9.2
134