Better checks for OpenSSL. I think it can now detect almost all conceivable installa...
[oweals/tinc.git] / m4 / openssl.m4
index 3fef464b55b7a5b06e2ec602b1c50c02a821707b..d933b23bb59b505c84f3c47fb6d5675ff74f5a24 100644 (file)
@@ -3,49 +3,76 @@ dnl Check to find the OpenSSL headers/libraries
 
 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],
+    [openssl_lib="$withval/lib"
+     openssl_include="$withval/include"]
+  )
+  AC_CACHE_CHECK([for openssl headers], 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"]
+      [tinc_cv_openssl_include="$withval"],
+      [if test "x$openssl_include" = "x" ; then
+         tinc_cv_openssl_include="none given"
+       else
+         tinc_cv_openssl_include=$openssl_include
+       fi]
     )
+  ])
+  AC_CACHE_CHECK([for openssl libraries], tinc_cv_openssl_lib,
+  [
     AC_ARG_WITH(openssl-lib,
       [  --with-openssl-lib=DIR  OpenSSL library directory],
-      [echo -ne 'libraries...'
-       openssl_lib="$withval"]
+      [tinc_cv_openssl_lib="$withval"],
+      [if test "x$openssl_lib" = "x" ; then
+         tinc_cv_openssl_lib="none given"
+       else
+         tinc_cv_openssl_lib=$openssl_lib
+       fi]
     )
+  ])
 
-if test "x$openssl_lib" != "x" ; then
-  LIBS="$LIBS -L$openssl_lib"
+if test "$openssl_lib" != "none given" ; then
+  LIBS="$LIBS -L$tinc_cv_openssl_lib"
 fi
-if test "x$openssl_include" != "x" ; then
-  INCLUDES="$INCLUDES -I$openssl_include"
+if test "$openssl_include" != "none given" ; then
+  INCLUDES="$INCLUDES -I$tinc_cv_openssl_include"
+fi
+
+osi=none
+AC_CHECK_HEADERS(evp.h rsa.h,
+[osi=found
+ break])
+
+if test "$osi" = "none" ; then
+  AC_CHECK_HEADERS(openssl/evp.h openssl/rsa.h,
+  [osi=found
+   break])
 fi
 
-AC_MSG_RESULT([done.])
-  ])
 
 libcrypto=none
-AC_CHECK_LIB(crypto, SHA1_version, [
-  libcrypto=yes
-])
+
+if test "$osi" = "found" ; then
+  AC_CHECK_LIB(crypto, SHA1_version, [
+    libcrypto=yes
+  ])
+fi
 
 if test $libcrypto = none; then
-  AC_MSG_ERROR(
-[It seems like OpenSSL is not installed on this system.  But perhaps
+cat <<EOF
+
+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.])
+--with-openssl-lib=/DIR.
+
+EOF
+
+  AC_MSG_ERROR(OpenSSL not found.)
 
 else
   LIBS="$LIBS -lcrypto"