Annotation of embedaddon/curl/m4/curl-openssl.m4, revision 1.1.1.1

1.1       misho       1: #***************************************************************************
                      2: #                                  _   _ ____  _
                      3: #  Project                     ___| | | |  _ \| |
                      4: #                             / __| | | | |_) | |
                      5: #                            | (__| |_| |  _ <| |___
                      6: #                             \___|\___/|_| \_\_____|
                      7: #
                      8: # Copyright (C) 1998 - 2020, 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: ])

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>