From cb2f300364a42b590d2c427e99c9fa2fc000c223 Mon Sep 17 00:00:00 2001 From: Yang Tse Date: Thu, 9 Jun 2011 19:03:10 +0200 Subject: configure: get API info for a couple of OpenSSL functions (followup 2) --- configure.ac | 4 +- m4/curl-openssl.m4 | 368 ++++++++++++++++++++++++++--------------------------- 2 files changed, 183 insertions(+), 189 deletions(-) diff --git a/configure.ac b/configure.ac index f1977443f..8bac56274 100644 --- a/configure.ac +++ b/configure.ac @@ -1533,8 +1533,8 @@ if test X"$OPT_SSL" != Xno; then fi CURL_CHECK_OPENSSL_ADD_ALL_ALGORITHMS_API CURL_CHECK_OPENSSL_DES_RANDOM_KEY_API - CURL_CHECK_OPENSSL_HEADERS_VERSION - CURL_CHECK_OPENSSL_LIBRARY_VERSION + CURL_CHECK_OPENSSL_API_HEADERS + CURL_CHECK_OPENSSL_API_LIBRARY fi fi diff --git a/m4/curl-openssl.m4 b/m4/curl-openssl.m4 index 3cbff46ae..4e3cdb332 100644 --- a/m4/curl-openssl.m4 +++ b/m4/curl-openssl.m4 @@ -21,7 +21,7 @@ #*************************************************************************** # File version for 'aclocal' use. Keep it a single number. -# serial 2 +# serial 3 dnl CURL_CHECK_OPENSSL_ADD_ALL_ALGORITHMS_API @@ -35,57 +35,40 @@ dnl or in any other way shall not define this. AC_DEFUN([CURL_CHECK_OPENSSL_ADD_ALL_ALGORITHMS_API], [ # - tst_openssl_add_all_algorithms_api="unknown" + tst_api="unknown" # AC_MSG_CHECKING([for OpenSSL_add_all_algorithms API]) - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ - ]],[[ - OPENSSL_add_all_algorithms_conf(); - OPENSSL_add_all_algorithms_noconf(); - ]]) - ],[ - tst_openssl_add_all_algorithms_api="0x097" - ]) - if test "$tst_openssl_add_all_algorithms_api" = "unknown"; then + if test "$tst_api" = "unknown"; then AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ - ]],[[ - OpenSSL_add_all_algorithms(); - ]]) + AC_LANG_FUNC_LINK_TRY([OPENSSL_add_all_algorithms_noconf]) ],[ - tst_openssl_add_all_algorithms_api="0x095" + tst_api="0x097" ]) fi - if test "$tst_openssl_add_all_algorithms_api" = "unknown"; then + if test "$tst_api" = "unknown"; then AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ - ]],[[ - SSLeay_add_all_algorithms(); - ]]) + AC_LANG_FUNC_LINK_TRY([OpenSSL_add_all_algorithms]) ],[ - tst_openssl_add_all_algorithms_api="0x091" + tst_api="0x095" ]) fi - case "$tst_openssl_add_all_algorithms_api" in - 0x097) - tst_show="0.9.7" - ;; - 0x095) - tst_show="0.9.5" - ;; - 0x091) - tst_show="0.9.1" - ;; - *) - tst_show="unknown" - ;; + if test "$tst_api" = "unknown"; then + AC_LINK_IFELSE([ + AC_LANG_FUNC_LINK_TRY([SSLeay_add_all_algorithms]) + ],[ + tst_api="0x091" + ]) + fi + case $tst_api in + 0x097) tst_show="0.9.7" ;; + 0x095) tst_show="0.9.5" ;; + 0x091) tst_show="0.9.1" ;; + *) tst_show="unknown" ;; esac AC_MSG_RESULT([$tst_show]) # - if test "$tst_openssl_add_all_algorithms_api" != "unknown"; then - AC_DEFINE_UNQUOTED(HAVE_OPENSSL_ADD_ALL_ALGORITHMS_API, - $tst_openssl_add_all_algorithms_api, + if test "$tst_api" != "unknown"; then + AC_DEFINE_UNQUOTED(HAVE_OPENSSL_ADD_ALL_ALGORITHMS_API, $tst_api, [OpenSSL link time API for OpenSSL_add_all_algorithms function. Configure script only definition. No matter what, do not ever define yourself.]) fi @@ -103,63 +86,53 @@ dnl or in any other way shall not define this. AC_DEFUN([CURL_CHECK_OPENSSL_DES_RANDOM_KEY_API], [ # - tst_openssl_des_random_key_api="unknown" + tst_api="unknown" # AC_MSG_CHECKING([for OpenSSL DES_random_key API]) - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ - ]],[[ - if(0 != DES_random_key(0)) - return 1; - ]]) - ],[ - tst_openssl_des_random_key_api="0x097" - ]) - if test "$tst_openssl_des_random_key_api" = "unknown"; then + if test "$tst_api" = "unknown"; then + AC_LINK_IFELSE([ + AC_LANG_FUNC_LINK_TRY([DES_random_key]) + ],[ + tst_api="0x097" + ]) + fi + if test "$tst_api" = "unknown"; then AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ - ]],[[ - if(0 != des_random_key(0)) - return 1; - ]]) + AC_LANG_FUNC_LINK_TRY([des_random_key]) ],[ - tst_openssl_des_random_key_api="0x095" + tst_api="0x095" ]) fi - case "$tst_openssl_des_random_key_api" in - 0x097) - tst_show="0.9.7" - ;; - 0x095) - tst_show="0.9.5" - ;; - *) - tst_show="unknown" - ;; + case $tst_api in + 0x097) tst_show="0.9.7" ;; + 0x095) tst_show="0.9.5" ;; + *) tst_show="unknown" ;; esac AC_MSG_RESULT([$tst_show]) # - if test "$tst_openssl_des_random_key_api" != "unknown"; then - AC_DEFINE_UNQUOTED(HAVE_OPENSSL_DES_RANDOM_KEY_API, - $tst_openssl_des_random_key_api, + if test "$tst_api" != "unknown"; then + AC_DEFINE_UNQUOTED(HAVE_OPENSSL_DES_RANDOM_KEY_API, $tst_api, [OpenSSL link time API for OpenSSL DES_random_key function. Configure script only definition. No matter what, do not ever define yourself.]) fi ]) -dnl CURL_CHECK_OPENSSL_HEADERS_VERSION +dnl CURL_CHECK_OPENSSL_API_HEADERS dnl ------------------------------------------------- dnl Find out OpenSSL headers API version, as reported dnl by OPENSSL_VERSION_NUMBER. No runtime checks -dnl allowed here for cross-compilation sake. +dnl allowed here for cross-compilation support. +dnl HAVE_OPENSSL_API_HEADERS is defined as apprpriate +dnl only for systems which actually run the configure +dnl script. Config files generated manually or in any +dnl other way shall not define this. -AC_DEFUN([CURL_CHECK_OPENSSL_HEADERS_VERSION], [ - # - AC_MSG_CHECKING([for OpenSSL headers version]) +AC_DEFUN([CURL_CHECK_OPENSSL_API_HEADERS], [ # - tst_openssl_headers_api="unknown" + tst_api="unknown" # + AC_MSG_CHECKING([for OpenSSL headers version]) CURL_CHECK_DEF([OPENSSL_VERSION_NUMBER], [ # ifdef USE_OPENSSL # include @@ -168,167 +141,188 @@ AC_DEFUN([CURL_CHECK_OPENSSL_HEADERS_VERSION], [ # endif ], [silent]) if test "$curl_cv_have_def_OPENSSL_VERSION_NUMBER" = "yes"; then - tst_openssl_headers_api=$curl_cv_def_OPENSSL_VERSION_NUMBER + tst_verlen=`expr "$curl_cv_def_OPENSSL_VERSION_NUMBER" : '.*'` + case "x$tst_verlen" in + x6) + tst_vermaj=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 3` + tst_vermin=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 4` + tst_verfix=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 5` + tst_api=0x$tst_vermaj$tst_vermin$tst_verfix + ;; + x11) + tst_vermaj=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 3` + tst_vermin=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 5` + tst_verfix=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 7` + tst_api=0x$tst_vermaj$tst_vermin$tst_verfix + ;; + *) + tst_api="unknown" + ;; + esac + case $tst_api in + 0x110) tst_show="1.1.0" ;; + 0x101) tst_show="1.0.1" ;; + 0x100) tst_show="1.0.0" ;; + 0x099) tst_show="0.9.9" ;; + 0x098) tst_show="0.9.8" ;; + 0x097) tst_show="0.9.7" ;; + 0x096) tst_show="0.9.6" ;; + 0x095) tst_show="0.9.5" ;; + 0x094) tst_show="0.9.4" ;; + 0x093) tst_show="0.9.3" ;; + 0x092) tst_show="0.9.2" ;; + 0x091) tst_show="0.9.1" ;; + *) tst_show="unknown" ;; + esac + tst_show="$tst_show - $curl_cv_def_OPENSSL_VERSION_NUMBER" + else + tst_show="unknown" fi - AC_MSG_RESULT([$tst_openssl_headers_api]) + AC_MSG_RESULT([$tst_show]) # + if test "$tst_api" != "unknown"; then + AC_DEFINE_UNQUOTED(HAVE_OPENSSL_API_HEADERS, $tst_api, + [OpenSSL headers configure time API. Defined only by configure script. + No matter what, do not ever define this manually or by any other means.]) + fi + curl_openssl_api_headers=$tst_api ]) -dnl CURL_CHECK_OPENSSL_LIBRARY_VERSION +dnl CURL_CHECK_OPENSSL_API_LIBRARY dnl ------------------------------------------------- dnl Find out OpenSSL library API version, performing dnl only link tests in order to avoid getting fooled dnl by mismatched OpenSSL headers. No runtime checks -dnl allowed here for cross-compilation sake. +dnl allowed here for cross-compilation support. +dnl HAVE_OPENSSL_API_LIBRARY is defined as apprpriate +dnl only for systems which actually run the configure +dnl script. Config files generated manually or in any +dnl other way shall not define this. +dnl +dnl Most probably we should not bother attempting to +dnl detect OpenSSL library development API versions +dnl 0.9.9 and 1.1.0. For our intended use, detecting +dnl released versions should be good enough. +dnl +dnl Given that currently we are not using the result +dnl of this check, except for informative purposes, +dnl lets try to figure out everything. -AC_DEFUN([CURL_CHECK_OPENSSL_LIBRARY_VERSION], [ - # - AC_MSG_CHECKING([for OpenSSL library version]) +AC_DEFUN([CURL_CHECK_OPENSSL_API_LIBRARY], [ # - tst_openssl_library_api="unknown" + tst_api="unknown" # - if test "$tst_openssl_library_api" = "unknown"; then + AC_MSG_CHECKING([for OpenSSL library version]) + if test "$tst_api" = "unknown"; then + case $host in + *-*-vms*) + AC_LINK_IFELSE([ + AC_LANG_FUNC_LINK_TRY([SSL_CTX_set_not_resumbl_sess_cb]) + ],[ + tst_api="0x110" + ]) + ;; + *) + AC_LINK_IFELSE([ + AC_LANG_FUNC_LINK_TRY([SSL_CTX_set_not_resumable_session_callback]) + ],[ + tst_api="0x110" + ]) + ;; + esac + fi + if test "$tst_api" = "unknown"; then AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ - ]],[[ - if(0 != OBJ_add_sigid(0, 0, 0)) - return 1; - ]]) + AC_LANG_FUNC_LINK_TRY([SSL_renegotiate_abbreviated]) ],[ - dnl 1.0.0 or newer - tst_openssl_library_api="0x100" + tst_api="0x101" ]) fi - if test "$tst_openssl_library_api" = "unknown"; then + if test "$tst_api" = "unknown"; then AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ - ]],[[ - if(0 != ERR_set_mark()) - return 1; - ]]) + AC_LANG_FUNC_LINK_TRY([OBJ_add_sigid]) ],[ - dnl 0.9.8 or newer - tst_openssl_library_api="0x098" + tst_api="0x100" ]) fi - if test "$tst_openssl_library_api" = "unknown"; then + if test "$tst_api" = "unknown"; then AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ - ]],[[ - if(0 != ERR_peek_last_error()) - return 1; - ]]) + AC_LANG_FUNC_LINK_TRY([ERR_set_mark]) ],[ - dnl 0.9.7 or newer - tst_openssl_library_api="0x097" + tst_api="0x098" ]) fi - if test "$tst_openssl_library_api" = "unknown"; then + if test "$tst_api" = "unknown"; then AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ - ]],[[ - if(0 != c2i_ASN1_OBJECT(0, 0, 0)) - return 1; - ]]) + AC_LANG_FUNC_LINK_TRY([ERR_peek_last_error]) ],[ - dnl 0.9.6 or newer - tst_openssl_library_api="0x096" + tst_api="0x097" ]) fi - if test "$tst_openssl_library_api" = "unknown"; then + if test "$tst_api" = "unknown"; then AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ - ]],[[ - if(0 != SSL_CTX_set_purpose(0, 0)) - return 1; - ]]) + AC_LANG_FUNC_LINK_TRY([c2i_ASN1_OBJECT]) ],[ - dnl 0.9.5 or newer - tst_openssl_library_api="0x095" + tst_api="0x096" ]) fi - if test "$tst_openssl_library_api" = "unknown"; then + if test "$tst_api" = "unknown"; then AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ - ]],[[ - if(0 != OBJ_obj2txt(0, 0, 0, 0)) - return 1; - ]]) + AC_LANG_FUNC_LINK_TRY([SSL_CTX_set_purpose]) ],[ - dnl 0.9.4 or newer - tst_openssl_library_api="0x094" + tst_api="0x095" ]) fi - if test "$tst_openssl_library_api" = "unknown"; then + if test "$tst_api" = "unknown"; then AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ - ]],[[ - if(0 != SSL_get_verify_depth(0)) - return 1; - ]]) + AC_LANG_FUNC_LINK_TRY([OBJ_obj2txt]) ],[ - dnl 0.9.3 or newer - tst_openssl_library_api="0x093" + tst_api="0x094" ]) fi - if test "$tst_openssl_library_api" = "unknown"; then + if test "$tst_api" = "unknown"; then AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ - ]],[[ - if(0 != SSL_library_init()) - return 1; - ]]) + AC_LANG_FUNC_LINK_TRY([SSL_get_verify_depth]) ],[ - dnl 0.9.2 or newer - tst_openssl_library_api="0x092" + tst_api="0x093" ]) fi - if test "$tst_openssl_library_api" = "unknown"; then + if test "$tst_api" = "unknown"; then AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ - ]],[[ - if(0 != SSL_CTX_set_cipher_list(0, 0)) - return 1; - ]]) + AC_LANG_FUNC_LINK_TRY([SSL_library_init]) ],[ - dnl 0.9.1 or newer - tst_openssl_library_api="0x091" + tst_api="0x092" ]) fi - # - case "$tst_openssl_library_api" in - 0x100) - tst_show="1.0.0" - ;; - 0x098) - tst_show="0.9.8" - ;; - 0x097) - tst_show="0.9.7" - ;; - 0x096) - tst_show="0.9.6" - ;; - 0x095) - tst_show="0.9.5" - ;; - 0x094) - tst_show="0.9.4" - ;; - 0x093) - tst_show="0.9.3" - ;; - 0x092) - tst_show="0.9.2" - ;; - 0x091) - tst_show="0.9.1" - ;; - *) - tst_show="unknown" - ;; + if test "$tst_api" = "unknown"; then + AC_LINK_IFELSE([ + AC_LANG_FUNC_LINK_TRY([SSL_CTX_set_cipher_list]) + ],[ + tst_api="0x091" + ]) + fi + case $tst_api in + 0x110) tst_show="1.1.0" ;; + 0x101) tst_show="1.0.1" ;; + 0x100) tst_show="1.0.0" ;; + 0x099) tst_show="0.9.9" ;; + 0x098) tst_show="0.9.8" ;; + 0x097) tst_show="0.9.7" ;; + 0x096) tst_show="0.9.6" ;; + 0x095) tst_show="0.9.5" ;; + 0x094) tst_show="0.9.4" ;; + 0x093) tst_show="0.9.3" ;; + 0x092) tst_show="0.9.2" ;; + 0x091) tst_show="0.9.1" ;; + *) tst_show="unknown" ;; esac AC_MSG_RESULT([$tst_show]) # + if test "$tst_api" != "unknown"; then + AC_DEFINE_UNQUOTED(HAVE_OPENSSL_API_LIBRARY, $tst_api, + [OpenSSL library link time API. Defined only by configure script. + No matter what, do not ever define this manually or by any other means.]) + fi + curl_openssl_api_library=$tst_api ]) -- cgit v1.2.3