]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - crypto/openssh/aclocal.m4
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / crypto / openssh / aclocal.m4
1 dnl $Id: aclocal.m4,v 1.13 2014/01/22 10:30:12 djm Exp $
2 dnl
3 dnl OpenSSH-specific autoconf macros
4 dnl
5
6 dnl OSSH_CHECK_CFLAG_COMPILE(check_flag[, define_flag])
7 dnl Check that $CC accepts a flag 'check_flag'. If it is supported append
8 dnl 'define_flag' to $CFLAGS. If 'define_flag' is not specified, then append
9 dnl 'check_flag'.
10 AC_DEFUN([OSSH_CHECK_CFLAG_COMPILE], [{
11         AC_MSG_CHECKING([if $CC supports compile flag $1])
12         saved_CFLAGS="$CFLAGS"
13         CFLAGS="$CFLAGS $WERROR $1"
14         _define_flag="$2"
15         test "x$_define_flag" = "x" && _define_flag="$1"
16         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
17 #include <stdlib.h>
18 #include <stdio.h>
19 int main(int argc, char **argv) {
20         /* Some math to catch -ftrapv problems in the toolchain */
21         int i = 123 * argc, j = 456 + argc, k = 789 - argc;
22         float l = i * 2.1;
23         double m = l / 0.5;
24         long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
25         printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o);
26         exit(0);
27 }
28         ]])],
29                 [
30 if `grep -i "unrecognized option" conftest.err >/dev/null`
31 then
32                 AC_MSG_RESULT([no])
33                 CFLAGS="$saved_CFLAGS"
34 else
35                 AC_MSG_RESULT([yes])
36                  CFLAGS="$saved_CFLAGS $_define_flag"
37 fi],
38                 [ AC_MSG_RESULT([no])
39                   CFLAGS="$saved_CFLAGS" ]
40         )
41 }])
42
43 dnl OSSH_CHECK_CFLAG_LINK(check_flag[, define_flag])
44 dnl Check that $CC accepts a flag 'check_flag'. If it is supported append
45 dnl 'define_flag' to $CFLAGS. If 'define_flag' is not specified, then append
46 dnl 'check_flag'.
47 AC_DEFUN([OSSH_CHECK_CFLAG_LINK], [{
48         AC_MSG_CHECKING([if $CC supports compile flag $1 and linking succeeds])
49         saved_CFLAGS="$CFLAGS"
50         CFLAGS="$CFLAGS $WERROR $1"
51         _define_flag="$2"
52         test "x$_define_flag" = "x" && _define_flag="$1"
53         AC_LINK_IFELSE([AC_LANG_SOURCE([[
54 #include <stdlib.h>
55 #include <stdio.h>
56 int main(int argc, char **argv) {
57         /* Some math to catch -ftrapv problems in the toolchain */
58         int i = 123 * argc, j = 456 + argc, k = 789 - argc;
59         float l = i * 2.1;
60         double m = l / 0.5;
61         long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
62         printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o);
63         exit(0);
64 }
65         ]])],
66                 [
67 if `grep -i "unrecognized option" conftest.err >/dev/null`
68 then
69                 AC_MSG_RESULT([no])
70                 CFLAGS="$saved_CFLAGS"
71 else
72                 AC_MSG_RESULT([yes])
73                  CFLAGS="$saved_CFLAGS $_define_flag"
74 fi],
75                 [ AC_MSG_RESULT([no])
76                   CFLAGS="$saved_CFLAGS" ]
77         )
78 }])
79
80 dnl OSSH_CHECK_LDFLAG_LINK(check_flag[, define_flag])
81 dnl Check that $LD accepts a flag 'check_flag'. If it is supported append
82 dnl 'define_flag' to $LDFLAGS. If 'define_flag' is not specified, then append
83 dnl 'check_flag'.
84 AC_DEFUN([OSSH_CHECK_LDFLAG_LINK], [{
85         AC_MSG_CHECKING([if $LD supports link flag $1])
86         saved_LDFLAGS="$LDFLAGS"
87         LDFLAGS="$LDFLAGS $WERROR $1"
88         _define_flag="$2"
89         test "x$_define_flag" = "x" && _define_flag="$1"
90         AC_LINK_IFELSE([AC_LANG_SOURCE([[
91 #include <stdlib.h>
92 #include <stdio.h>
93 int main(int argc, char **argv) {
94         /* Some math to catch -ftrapv problems in the toolchain */
95         int i = 123 * argc, j = 456 + argc, k = 789 - argc;
96         float l = i * 2.1;
97         double m = l / 0.5;
98         long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
99         printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o);
100         exit(0);
101 }
102                 ]])],
103                 [ AC_MSG_RESULT([yes])
104                   LDFLAGS="$saved_LDFLAGS $_define_flag"],
105                 [ AC_MSG_RESULT([no])
106                   LDFLAGS="$saved_LDFLAGS" ]
107         )
108 }])
109
110 dnl OSSH_CHECK_HEADER_FOR_FIELD(field, header, symbol)
111 dnl Does AC_EGREP_HEADER on 'header' for the string 'field'
112 dnl If found, set 'symbol' to be defined. Cache the result.
113 dnl TODO: This is not foolproof, better to compile and read from there
114 AC_DEFUN(OSSH_CHECK_HEADER_FOR_FIELD, [
115 # look for field '$1' in header '$2'
116         dnl This strips characters illegal to m4 from the header filename
117         ossh_safe=`echo "$2" | sed 'y%./+-%__p_%'`
118         dnl
119         ossh_varname="ossh_cv_$ossh_safe""_has_"$1
120         AC_MSG_CHECKING(for $1 field in $2)
121         AC_CACHE_VAL($ossh_varname, [
122                 AC_EGREP_HEADER($1, $2, [ dnl
123                         eval "$ossh_varname=yes" dnl
124                 ], [ dnl
125                         eval "$ossh_varname=no" dnl
126                 ]) dnl
127         ])
128         ossh_result=`eval 'echo $'"$ossh_varname"`
129         if test -n "`echo $ossh_varname`"; then
130                 AC_MSG_RESULT($ossh_result)
131                 if test "x$ossh_result" = "xyes"; then
132                         AC_DEFINE($3, 1, [Define if you have $1 in $2])
133                 fi
134         else
135                 AC_MSG_RESULT(no)
136         fi
137 ])
138
139 dnl Check for socklen_t: historically on BSD it is an int, and in
140 dnl POSIX 1g it is a type of its own, but some platforms use different
141 dnl types for the argument to getsockopt, getpeername, etc.  So we
142 dnl have to test to find something that will work.
143 AC_DEFUN([TYPE_SOCKLEN_T],
144 [
145    AC_CHECK_TYPE([socklen_t], ,[
146       AC_MSG_CHECKING([for socklen_t equivalent])
147       AC_CACHE_VAL([curl_cv_socklen_t_equiv],
148       [
149          # Systems have either "struct sockaddr *" or
150          # "void *" as the second argument to getpeername
151          curl_cv_socklen_t_equiv=
152          for arg2 in "struct sockaddr" void; do
153             for t in int size_t unsigned long "unsigned long"; do
154                AC_TRY_COMPILE([
155                   #include <sys/types.h>
156                   #include <sys/socket.h>
157
158                   int getpeername (int, $arg2 *, $t *);
159                ],[
160                   $t len;
161                   getpeername(0,0,&len);
162                ],[
163                   curl_cv_socklen_t_equiv="$t"
164                   break
165                ])
166             done
167          done
168
169          if test "x$curl_cv_socklen_t_equiv" = x; then
170             AC_MSG_ERROR([Cannot find a type to use in place of socklen_t])
171          fi
172       ])
173       AC_MSG_RESULT($curl_cv_socklen_t_equiv)
174       AC_DEFINE_UNQUOTED(socklen_t, $curl_cv_socklen_t_equiv,
175                         [type to use in place of socklen_t if not defined])],
176       [#include <sys/types.h>
177 #include <sys/socket.h>])
178 ])
179