X-Git-Url: https://www.tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=m4%2Fopenssl.m4;h=254ea4ff2424531ee06b430de374c22b1e063efe;hp=3fef464b55b7a5b06e2ec602b1c50c02a821707b;hb=6185f0297d64a8ff75bd032bbb6ae7281e09ed18;hpb=5344832be1126967ff340cf6bd270a377bb8e487 diff --git a/m4/openssl.m4 b/m4/openssl.m4 index 3fef464b..254ea4ff 100644 --- a/m4/openssl.m4 +++ b/m4/openssl.m4 @@ -1,54 +1,56 @@ dnl Check to find the OpenSSL headers/libraries - -AC_DEFUN(tinc_OPENSSL, +AC_DEFUN([tinc_OPENSSL], [ - - AC_CACHE_CHECK([for openssl], tinc_cv_openssl_include, - [ - AC_ARG_WITH(openssl, - [ --with-openssl=DIR OpenSSL library and headers prefix], - [echo -ne 'prefix...' - openssl_lib="$withval/lib" - openssl_include="$withval/include"] - ) - AC_ARG_WITH(openssl-include, - [ --with-openssl-include=DIR OpenSSL headers directory], - [echo -ne 'includes...' - openssl_include="$withvall"] - ) - AC_ARG_WITH(openssl-lib, - [ --with-openssl-lib=DIR OpenSSL library directory], - [echo -ne 'libraries...' - openssl_lib="$withval"] - ) - -if test "x$openssl_lib" != "x" ; then - LIBS="$LIBS -L$openssl_lib" -fi -if test "x$openssl_include" != "x" ; then - INCLUDES="$INCLUDES -I$openssl_include" -fi - -AC_MSG_RESULT([done.]) - ]) - -libcrypto=none -AC_CHECK_LIB(crypto, SHA1_version, [ - libcrypto=yes -]) - -if test $libcrypto = none; then - AC_MSG_ERROR( -[It seems like OpenSSL is not installed on this system. But perhaps -you need to supply the exact location of the headers and libraries. -You can try running configure with the --with-openssl=/DIRECTORY -parameter. If you installed the headers and libraries in a different -location you can use --with-openssl-include=/DIR and ---with-openssl-lib=/DIR.]) - -else - LIBS="$LIBS -lcrypto" -fi - + case $host_os in + *mingw*) + ;; + *) + AC_CHECK_FUNC(dlopen, + [], + [AC_CHECK_LIB(dl, dlopen, + [LIBS="$LIBS -ldl"], + [AC_MSG_ERROR([OpenSSL depends on libdl.]); break] + )] + ) + ;; + esac + + AC_ARG_WITH(openssl, + AS_HELP_STRING([--with-openssl=DIR], [OpenSSL base directory, or:]), + [openssl="$withval" + CPPFLAGS="$CPPFLAGS -I$withval/include" + LDFLAGS="$LDFLAGS -L$withval/lib"] + ) + + AC_ARG_WITH(openssl-include, + AS_HELP_STRING([--with-openssl-include=DIR], [OpenSSL headers directory (without trailing /openssl)]), + [openssl_include="$withval" + CPPFLAGS="$CPPFLAGS -I$withval"] + ) + + AC_ARG_WITH(openssl-lib, + AS_HELP_STRING([--with-openssl-lib=DIR], [OpenSSL library directory]), + [openssl_lib="$withval" + LDFLAGS="$LDFLAGS -L$withval"] + ) + + AC_CHECK_HEADERS(openssl/evp.h openssl/rsa.h openssl/rand.h openssl/err.h openssl/sha.h openssl/pem.h openssl/engine.h, + [], + [AC_MSG_ERROR([OpenSSL header files not found.]); break] + ) + + AC_CHECK_LIB(crypto, EVP_EncryptInit_ex, + [LIBS="-lcrypto $LIBS"], + [AC_MSG_ERROR([OpenSSL libraries not found.])] + ) + + AC_CHECK_FUNCS([RAND_pseudo_bytes EVP_EncryptInit_ex], , + [AC_MSG_ERROR([Missing OpenSSL functionality, make sure you have installed the latest version.]); break], + ) + + AC_CHECK_DECL([OpenSSL_add_all_algorithms], , + [AC_MSG_ERROR([Missing OpenSSL functionality, make sure you have installed the latest version.]); break], + [#include ] + ) ])