1 #*************************************************************************** 2 # _ _ ____ _ 3 # Project ___| | | | _ \| | 4 # / __| | | | |_) | | 5 # | (__| |_| | _ <| |___ 6 # \___|\___/|_| \_\_____| 7 # 8 # Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel (a] 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 http://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 apprpriate 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 0x110) tst_show="1.1.0" ;; 70 0x102) tst_show="1.0.2" ;; 71 0x101) tst_show="1.0.1" ;; 72 0x100) tst_show="1.0.0" ;; 73 0x099) tst_show="0.9.9" ;; 74 0x098) tst_show="0.9.8" ;; 75 0x097) tst_show="0.9.7" ;; 76 0x096) tst_show="0.9.6" ;; 77 0x095) tst_show="0.9.5" ;; 78 0x094) tst_show="0.9.4" ;; 79 0x093) tst_show="0.9.3" ;; 80 0x092) tst_show="0.9.2" ;; 81 0x091) tst_show="0.9.1" ;; 82 *) tst_show="unknown" ;; 83 esac 84 tst_show="$tst_show - $curl_cv_def_OPENSSL_VERSION_NUMBER" 85 else 86 tst_show="unknown" 87 fi 88 AC_MSG_RESULT([$tst_show]) 89 # 90 dnl if test "$tst_api" != "unknown"; then 91 dnl AC_DEFINE_UNQUOTED(HAVE_OPENSSL_API_HEADERS, $tst_api, 92 dnl [OpenSSL headers configure time API. Defined only by configure script. 93 dnl No matter what, do not ever define this manually or by any other means.]) 94 dnl fi 95 curl_openssl_api_headers=$tst_api 96 ]) 97 98 99 dnl CURL_CHECK_OPENSSL_API_LIBRARY 100 dnl ------------------------------------------------- 101 dnl Find out OpenSSL library API version, performing 102 dnl only link tests in order to avoid getting fooled 103 dnl by mismatched OpenSSL headers. No runtime checks 104 dnl allowed here for cross-compilation support. 105 dnl HAVE_OPENSSL_API_LIBRARY is defined as apprpriate 106 dnl only for systems which actually run the configure 107 dnl script. Config files generated manually or in any 108 dnl other way shall not define this. 109 dnl 110 dnl Most probably we should not bother attempting to 111 dnl detect OpenSSL library development API versions 112 dnl 0.9.9 and 1.1.0. For our intended use, detecting 113 dnl released versions should be good enough. 114 dnl 115 dnl Given that currently we are not using the result 116 dnl of this check, except for informative purposes, 117 dnl lets try to figure out everything. 118 119 AC_DEFUN([CURL_CHECK_OPENSSL_API_LIBRARY], [ 120 # 121 tst_api="unknown" 122 # 123 AC_MSG_CHECKING([for OpenSSL library version]) 124 if test "$tst_api" = "unknown"; then 125 case $host in 126 *-*-vms*) 127 AC_LINK_IFELSE([ 128 AC_LANG_FUNC_LINK_TRY([SSL_CTX_set_not_resumbl_sess_cb]) 129 ],[ 130 tst_api="0x110" 131 ]) 132 ;; 133 *) 134 AC_LINK_IFELSE([ 135 AC_LANG_FUNC_LINK_TRY([SSL_CTX_set_not_resumable_session_callback]) 136 ],[ 137 tst_api="0x110" 138 ]) 139 ;; 140 esac 141 fi 142 if test "$tst_api" = "unknown"; then 143 AC_LINK_IFELSE([ 144 AC_LANG_FUNC_LINK_TRY([SSL_CONF_CTX_new]) 145 ],[ 146 tst_api="0x102" 147 ]) 148 fi 149 if test "$tst_api" = "unknown"; then 150 AC_LINK_IFELSE([ 151 AC_LANG_FUNC_LINK_TRY([SSL_renegotiate_abbreviated]) 152 ],[ 153 tst_api="0x101" 154 ]) 155 fi 156 if test "$tst_api" = "unknown"; then 157 AC_LINK_IFELSE([ 158 AC_LANG_FUNC_LINK_TRY([OBJ_add_sigid]) 159 ],[ 160 tst_api="0x100" 161 ]) 162 fi 163 if test "$tst_api" = "unknown"; then 164 AC_LINK_IFELSE([ 165 AC_LANG_FUNC_LINK_TRY([ERR_set_mark]) 166 ],[ 167 tst_api="0x098" 168 ]) 169 fi 170 if test "$tst_api" = "unknown"; then 171 AC_LINK_IFELSE([ 172 AC_LANG_FUNC_LINK_TRY([ERR_peek_last_error]) 173 ],[ 174 tst_api="0x097" 175 ]) 176 fi 177 if test "$tst_api" = "unknown"; then 178 AC_LINK_IFELSE([ 179 AC_LANG_FUNC_LINK_TRY([c2i_ASN1_OBJECT]) 180 ],[ 181 tst_api="0x096" 182 ]) 183 fi 184 if test "$tst_api" = "unknown"; then 185 AC_LINK_IFELSE([ 186 AC_LANG_FUNC_LINK_TRY([SSL_CTX_set_purpose]) 187 ],[ 188 tst_api="0x095" 189 ]) 190 fi 191 if test "$tst_api" = "unknown"; then 192 AC_LINK_IFELSE([ 193 AC_LANG_FUNC_LINK_TRY([OBJ_obj2txt]) 194 ],[ 195 tst_api="0x094" 196 ]) 197 fi 198 if test "$tst_api" = "unknown"; then 199 AC_LINK_IFELSE([ 200 AC_LANG_FUNC_LINK_TRY([SSL_get_verify_depth]) 201 ],[ 202 tst_api="0x093" 203 ]) 204 fi 205 if test "$tst_api" = "unknown"; then 206 AC_LINK_IFELSE([ 207 AC_LANG_FUNC_LINK_TRY([SSL_library_init]) 208 ],[ 209 tst_api="0x092" 210 ]) 211 fi 212 if test "$tst_api" = "unknown"; then 213 AC_LINK_IFELSE([ 214 AC_LANG_FUNC_LINK_TRY([SSL_CTX_set_cipher_list]) 215 ],[ 216 tst_api="0x091" 217 ]) 218 fi 219 case $tst_api in 220 0x110) tst_show="1.1.0" ;; 221 0x102) tst_show="1.0.2" ;; 222 0x101) tst_show="1.0.1" ;; 223 0x100) tst_show="1.0.0" ;; 224 0x099) tst_show="0.9.9" ;; 225 0x098) tst_show="0.9.8" ;; 226 0x097) tst_show="0.9.7" ;; 227 0x096) tst_show="0.9.6" ;; 228 0x095) tst_show="0.9.5" ;; 229 0x094) tst_show="0.9.4" ;; 230 0x093) tst_show="0.9.3" ;; 231 0x092) tst_show="0.9.2" ;; 232 0x091) tst_show="0.9.1" ;; 233 *) tst_show="unknown" ;; 234 esac 235 AC_MSG_RESULT([$tst_show]) 236 # 237 dnl if test "$tst_api" != "unknown"; then 238 dnl AC_DEFINE_UNQUOTED(HAVE_OPENSSL_API_LIBRARY, $tst_api, 239 dnl [OpenSSL library link time API. Defined only by configure script. 240 dnl No matter what, do not ever define this manually or by any other means.]) 241 dnl fi 242 curl_openssl_api_library=$tst_api 243 ]) 244 245 246 dnl CURL_CHECK_OPENSSL_API 247 dnl ------------------------------------------------- 248 249 AC_DEFUN([CURL_CHECK_OPENSSL_API], [ 250 # 251 CURL_CHECK_OPENSSL_API_HEADERS 252 CURL_CHECK_OPENSSL_API_LIBRARY 253 # 254 tst_match="yes" 255 # 256 AC_MSG_CHECKING([for OpenSSL headers and library versions matching]) 257 if test "$curl_openssl_api_headers" = "unknown" || 258 test "$curl_openssl_api_library" = "unknown"; then 259 tst_match="fail" 260 tst_warns="Can not compare OpenSSL headers and library versions." 261 elif test "$curl_openssl_api_headers" != "$curl_openssl_api_library"; then 262 tst_match="no" 263 tst_warns="OpenSSL headers and library versions do not match." 264 fi 265 AC_MSG_RESULT([$tst_match]) 266 if test "$tst_match" != "yes"; then 267 AC_MSG_WARN([$tst_warns]) 268 fi 269 ]) 270