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 27dnl CURL_CHECK_OPENSSL_API_HEADERS 28dnl ------------------------------------------------- 29dnl Find out OpenSSL headers API version, as reported 30dnl by OPENSSL_VERSION_NUMBER. No runtime checks 31dnl allowed here for cross-compilation support. 32dnl HAVE_OPENSSL_API_HEADERS is defined as appropriate 33dnl only for systems which actually run the configure 34dnl script. Config files generated manually or in any 35dnl other way shall not define this. 36 37AC_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 # 91dnl if test "$tst_api" != "unknown"; then 92dnl AC_DEFINE_UNQUOTED(HAVE_OPENSSL_API_HEADERS, $tst_api, 93dnl [OpenSSL headers configure time API. Defined only by configure script. 94dnl No matter what, do not ever define this manually or by any other means.]) 95dnl fi 96 curl_openssl_api_headers=$tst_api 97]) 98 99 100dnl CURL_CHECK_OPENSSL_API_LIBRARY 101dnl ------------------------------------------------- 102dnl Find out OpenSSL library API version, performing 103dnl only link tests in order to avoid getting fooled 104dnl by mismatched OpenSSL headers. No runtime checks 105dnl allowed here for cross-compilation support. 106dnl HAVE_OPENSSL_API_LIBRARY is defined as appropriate 107dnl only for systems which actually run the configure 108dnl script. Config files generated manually or in any 109dnl other way shall not define this. 110dnl 111dnl Most probably we should not bother attempting to 112dnl detect OpenSSL library development API versions 113dnl 0.9.9 and 1.1.0. For our intended use, detecting 114dnl released versions should be good enough. 115dnl 116dnl Given that currently we are not using the result 117dnl of this check, except for informative purposes, 118dnl lets try to figure out everything. 119 120AC_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 # 246dnl if test "$tst_api" != "unknown"; then 247dnl AC_DEFINE_UNQUOTED(HAVE_OPENSSL_API_LIBRARY, $tst_api, 248dnl [OpenSSL library link time API. Defined only by configure script. 249dnl No matter what, do not ever define this manually or by any other means.]) 250dnl fi 251 curl_openssl_api_library=$tst_api 252]) 253 254 255dnl CURL_CHECK_OPENSSL_API 256dnl ------------------------------------------------- 257 258AC_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]) 279