smtp: use the upload buffer size for scratch buffer malloc
[platform/upstream/curl.git] / m4 / curl-openssl.m4
1 #***************************************************************************
2 #                                  _   _ ____  _
3 #  Project                     ___| | | |  _ \| |
4 #                             / __| | | | |_) | |
5 #                            | (__| |_| |  _ <| |___
6 #                             \___|\___/|_| \_\_____|
7 #
8 # Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
9 #
10 # This software is licensed as described in the file COPYING, which
11 # you should have received as part of this distribution. The terms
12 # are also available at https://curl.haxx.se/docs/copyright.html.
13 #
14 # You may opt to use, copy, modify, merge, publish, distribute and/or sell
15 # copies of the Software, and permit persons to whom the Software is
16 # furnished to do so, under the terms of the COPYING file.
17 #
18 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
19 # KIND, either express or implied.
20 #
21 #***************************************************************************
22
23 # File version for 'aclocal' use. Keep it a single number.
24 # serial 5
25
26
27 dnl CURL_CHECK_OPENSSL_API_HEADERS
28 dnl -------------------------------------------------
29 dnl Find out OpenSSL headers API version, as reported
30 dnl by OPENSSL_VERSION_NUMBER. No runtime checks
31 dnl allowed here for cross-compilation support.
32 dnl HAVE_OPENSSL_API_HEADERS is defined as appropriate
33 dnl only for systems which actually run the configure
34 dnl script. Config files generated manually or in any
35 dnl other way shall not define this.
36
37 AC_DEFUN([CURL_CHECK_OPENSSL_API_HEADERS], [
38   #
39   tst_api="unknown"
40   #
41   AC_MSG_CHECKING([for OpenSSL headers version])
42   CURL_CHECK_DEF([OPENSSL_VERSION_NUMBER], [
43 #   ifdef USE_OPENSSL
44 #     include <openssl/crypto.h>
45 #   else
46 #     include <crypto.h>
47 #   endif
48     ], [silent])
49   if test "$curl_cv_have_def_OPENSSL_VERSION_NUMBER" = "yes"; then
50     tst_verlen=`expr "$curl_cv_def_OPENSSL_VERSION_NUMBER" : '.*'`
51     case "x$tst_verlen" in
52       x6)
53         tst_vermaj=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 3`
54         tst_vermin=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 4`
55         tst_verfix=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 5`
56         tst_api=0x$tst_vermaj$tst_vermin$tst_verfix
57         ;;
58       x11|x10)
59         tst_vermaj=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 3`
60         tst_vermin=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 5`
61         tst_verfix=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 7`
62         tst_api=0x$tst_vermaj$tst_vermin$tst_verfix
63         ;;
64       *)
65         tst_api="unknown"
66         ;;
67     esac
68     case $tst_api in
69       0x111) tst_show="1.1.1" ;;
70       0x110) tst_show="1.1.0" ;;
71       0x102) tst_show="1.0.2" ;;
72       0x101) tst_show="1.0.1" ;;
73       0x100) tst_show="1.0.0" ;;
74       0x099) tst_show="0.9.9" ;;
75       0x098) tst_show="0.9.8" ;;
76       0x097) tst_show="0.9.7" ;;
77       0x096) tst_show="0.9.6" ;;
78       0x095) tst_show="0.9.5" ;;
79       0x094) tst_show="0.9.4" ;;
80       0x093) tst_show="0.9.3" ;;
81       0x092) tst_show="0.9.2" ;;
82       0x091) tst_show="0.9.1" ;;
83       *)     tst_show="unknown" ;;
84     esac
85     tst_show="$tst_show - $curl_cv_def_OPENSSL_VERSION_NUMBER"
86   else
87     tst_show="unknown"
88   fi
89   AC_MSG_RESULT([$tst_show])
90   #
91 dnl if test "$tst_api" != "unknown"; then
92 dnl AC_DEFINE_UNQUOTED(HAVE_OPENSSL_API_HEADERS, $tst_api,
93 dnl   [OpenSSL headers configure time API. Defined only by configure script.
94 dnl    No matter what, do not ever define this manually or by any other means.])
95 dnl fi
96   curl_openssl_api_headers=$tst_api
97 ])
98
99
100 dnl CURL_CHECK_OPENSSL_API_LIBRARY
101 dnl -------------------------------------------------
102 dnl Find out OpenSSL library API version, performing
103 dnl only link tests in order to avoid getting fooled
104 dnl by mismatched OpenSSL headers. No runtime checks
105 dnl allowed here for cross-compilation support.
106 dnl HAVE_OPENSSL_API_LIBRARY is defined as appropriate
107 dnl only for systems which actually run the configure
108 dnl script. Config files generated manually or in any
109 dnl other way shall not define this.
110 dnl
111 dnl Most probably we should not bother attempting to
112 dnl detect OpenSSL library development API versions
113 dnl 0.9.9 and 1.1.0. For our intended use, detecting
114 dnl released versions should be good enough.
115 dnl
116 dnl Given that currently we are not using the result
117 dnl of this check, except for informative purposes,
118 dnl lets try to figure out everything.
119
120 AC_DEFUN([CURL_CHECK_OPENSSL_API_LIBRARY], [
121   #
122   tst_api="unknown"
123   #
124   AC_MSG_CHECKING([for OpenSSL library version])
125   if test "$tst_api" = "unknown"; then
126     AC_LINK_IFELSE([
127       AC_LANG_FUNC_LINK_TRY([ERR_clear_last_mark])
128     ],[
129       tst_api="0x111"
130     ])
131   fi
132   if test "$tst_api" = "unknown"; then
133     case $host in
134       *-*-vms*)
135         AC_LINK_IFELSE([
136           AC_LANG_FUNC_LINK_TRY([SSL_CTX_set_not_resumbl_sess_cb])
137         ],[
138           tst_api="0x110"
139         ])
140         ;;
141       *)
142         AC_LINK_IFELSE([
143           AC_LANG_FUNC_LINK_TRY([SSL_CTX_set_not_resumable_session_callback])
144         ],[
145           tst_api="0x110"
146         ])
147         ;;
148     esac
149   fi
150   if test "$tst_api" = "unknown"; then
151     AC_LINK_IFELSE([
152       AC_LANG_FUNC_LINK_TRY([SSL_CONF_CTX_new])
153     ],[
154       tst_api="0x102"
155     ])
156   fi
157   if test "$tst_api" = "unknown"; then
158     AC_LINK_IFELSE([
159       AC_LANG_FUNC_LINK_TRY([SSL_renegotiate_abbreviated])
160     ],[
161       tst_api="0x101"
162     ])
163   fi
164   if test "$tst_api" = "unknown"; then
165     AC_LINK_IFELSE([
166       AC_LANG_FUNC_LINK_TRY([OBJ_add_sigid])
167     ],[
168       tst_api="0x100"
169     ])
170   fi
171   if test "$tst_api" = "unknown"; then
172     AC_LINK_IFELSE([
173       AC_LANG_FUNC_LINK_TRY([ERR_set_mark])
174     ],[
175       tst_api="0x098"
176     ])
177   fi
178   if test "$tst_api" = "unknown"; then
179     AC_LINK_IFELSE([
180       AC_LANG_FUNC_LINK_TRY([ERR_peek_last_error])
181     ],[
182       tst_api="0x097"
183     ])
184   fi
185   if test "$tst_api" = "unknown"; then
186     AC_LINK_IFELSE([
187       AC_LANG_FUNC_LINK_TRY([c2i_ASN1_OBJECT])
188     ],[
189       tst_api="0x096"
190     ])
191   fi
192   if test "$tst_api" = "unknown"; then
193     AC_LINK_IFELSE([
194       AC_LANG_FUNC_LINK_TRY([SSL_CTX_set_purpose])
195     ],[
196       tst_api="0x095"
197     ])
198   fi
199   if test "$tst_api" = "unknown"; then
200     AC_LINK_IFELSE([
201       AC_LANG_FUNC_LINK_TRY([OBJ_obj2txt])
202     ],[
203       tst_api="0x094"
204     ])
205   fi
206   if test "$tst_api" = "unknown"; then
207     AC_LINK_IFELSE([
208       AC_LANG_FUNC_LINK_TRY([SSL_get_verify_depth])
209     ],[
210       tst_api="0x093"
211     ])
212   fi
213   if test "$tst_api" = "unknown"; then
214     AC_LINK_IFELSE([
215       AC_LANG_FUNC_LINK_TRY([SSL_library_init])
216     ],[
217       tst_api="0x092"
218     ])
219   fi
220   if test "$tst_api" = "unknown"; then
221     AC_LINK_IFELSE([
222       AC_LANG_FUNC_LINK_TRY([SSL_CTX_set_cipher_list])
223     ],[
224       tst_api="0x091"
225     ])
226   fi
227   case $tst_api in
228     0x111) tst_show="1.1.1" ;;
229     0x110) tst_show="1.1.0" ;;
230     0x102) tst_show="1.0.2" ;;
231     0x101) tst_show="1.0.1" ;;
232     0x100) tst_show="1.0.0" ;;
233     0x099) tst_show="0.9.9" ;;
234     0x098) tst_show="0.9.8" ;;
235     0x097) tst_show="0.9.7" ;;
236     0x096) tst_show="0.9.6" ;;
237     0x095) tst_show="0.9.5" ;;
238     0x094) tst_show="0.9.4" ;;
239     0x093) tst_show="0.9.3" ;;
240     0x092) tst_show="0.9.2" ;;
241     0x091) tst_show="0.9.1" ;;
242     *)     tst_show="unknown" ;;
243   esac
244   AC_MSG_RESULT([$tst_show])
245   #
246 dnl if test "$tst_api" != "unknown"; then
247 dnl AC_DEFINE_UNQUOTED(HAVE_OPENSSL_API_LIBRARY, $tst_api,
248 dnl   [OpenSSL library link time API. Defined only by configure script.
249 dnl    No matter what, do not ever define this manually or by any other means.])
250 dnl fi
251   curl_openssl_api_library=$tst_api
252 ])
253
254
255 dnl CURL_CHECK_OPENSSL_API
256 dnl -------------------------------------------------
257
258 AC_DEFUN([CURL_CHECK_OPENSSL_API], [
259   #
260   CURL_CHECK_OPENSSL_API_HEADERS
261   CURL_CHECK_OPENSSL_API_LIBRARY
262   #
263   tst_match="yes"
264   #
265   AC_MSG_CHECKING([for OpenSSL headers and library versions matching])
266   if test "$curl_openssl_api_headers" = "unknown" ||
267     test "$curl_openssl_api_library" = "unknown"; then
268     tst_match="fail"
269     tst_warns="Can not compare OpenSSL headers and library versions."
270   elif test "$curl_openssl_api_headers" != "$curl_openssl_api_library"; then
271     tst_match="no"
272     tst_warns="OpenSSL headers and library versions do not match."
273   fi
274   AC_MSG_RESULT([$tst_match])
275   if test "$tst_match" != "yes"; then
276     AC_MSG_WARN([$tst_warns])
277   fi
278 ])