blob: 97c4e03283107c35218d46a6e648d04038887fb4 [file] [log] [blame]
dnl -------------------------------------------------------- -*- autoconf -*-
dnl Copyright 2006 The Apache Software Foundation or its licensors, as
dnl applicable.
dnl
dnl Licensed under the Apache License, Version 2.0 (the "License");
dnl you may not use this file except in compliance with the License.
dnl You may obtain a copy of the License at
dnl
dnl http://www.apache.org/licenses/LICENSE-2.0
dnl
dnl Unless required by applicable law or agreed to in writing, software
dnl distributed under the License is distributed on an "AS IS" BASIS,
dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
dnl See the License for the specific language governing permissions and
dnl limitations under the License.
dnl -------------------------------------------------------- -*- autoconf -*-
dnl
dnl DECAF_CONFIGURE_SSL: look for OpenSSL libraries and headers
dnl
AC_DEFUN([DECAF_CONFIGURE_SSL], [
decaf_have_ssl=0
AC_MSG_NOTICE([Checking if OpenSSL is supported on this platform...])
dnl We let the user define a single dir where they think OpenSSL is and we only look there
dnl but if they don't define one we search in some of the more common location.
AC_ARG_WITH([openssl],
AS_HELP_STRING([--with-openssl=PREFIX], [root of the OpenSSL installation directory]),
[
AC_MSG_NOTICE([Checking user specified OpenSSL installation directory])
DECAF_SEARCHFOR_OPENSSL([$withval])
],
[
AC_MSG_NOTICE([Checking for OpenSSL installation directory in common locations])
dnl Use pkg_config if its installed and there's a .pc for OpenSSL
dnl This is our prefered scenario.
AC_PATH_PROG(PKG_CONFIG, pkg-config)
if test x"$PKG_CONFIG" != x""; then
OPENSSL_LDFLAGS=`$PKG_CONFIG openssl --libs-only-L 2>/dev/null`
if test $? = 0; then
OPENSSL_LIBS=`$PKG_CONFIG openssl --libs-only-l 2>/dev/null`
OPENSSL_INCLUDES=`$PKG_CONFIG openssl --cflags-only-I 2>/dev/null`
fi
dnl Found it ensure no more tests are run.
decaf_have_ssl="1"
fi
dnl No pkg_config or no .pc file so we look in some common locations.
if test "$decaf_have_ssl" = "0"; then
ssldirs="/usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /usr"
DECAF_SEARCHFOR_OPENSSL([/usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /usr /opt /opt/local])
fi
])
dnl its not an error if we can't find it, so we just let the user know to be nice.
if test "$decaf_have_ssl" = "1"; then
AC_MSG_NOTICE([OpenSSL library found, SSL is enabled in this build])
AC_DEFINE([HAVE_OPENSSL], 1, [Define that we have SSL capability])
else
AC_MSG_NOTICE([OpenSSL library not found, SSL is disabled in this build])
fi
dnl Make the configuration available to our main script.
AC_SUBST([OPENSSL_LIBS])
AC_SUBST([OPENSSL_LDFLAGS])
AC_SUBST([OPENSSL_INCLUDES])
])
dnl DECAF_SEARCHFOR_OPENSSL
dnl
dnl Given a path(s) look for and try to compile and link against the OpenSSL lib.
dnl
AC_DEFUN([DECAF_SEARCHFOR_OPENSSL], [
dnl try and find the headers, then we can make some assumptions on the libs
for currentDir in $1; do
AC_MSG_CHECKING([for openssl/ssl.h in $currentDir/include])
if test -f "$currentDir/include/openssl/ssl.h"; then
OPENSSL_INCLUDES="-I$currentDir/include"
OPENSSL_LDFLAGS="-L$currentDir/lib"
OPENSSL_LIBS="-lssl -lcrypto"
decaf_have_ssl="1"
AC_MSG_RESULT([yes])
break
else
AC_MSG_RESULT([no])
fi
done
dnl Now we can try a compile of something simple and see if it compiles then
dnl we can try linking to the libs, if all goes well then we are good to go.
if test "$decaf_have_ssl" = "1"; then
AC_MSG_CHECKING([if compiling and linking against discovered OpenSSL succeeds])
original_LIBS="$LIBS"
original_LDFLAGS="$LDFLAGS"
original_CPPFLAGS="$CPPFLAGS"
LDFLAGS="$LDFLAGS $OPENSSL_LDFLAGS"
LIBS="$OPENSSL_LIBS $LIBS"
CPPFLAGS="$OPENSSL_INCLUDES $CPPFLAGS"
AC_LINK_IFELSE(
AC_LANG_PROGRAM([#include <openssl/ssl.h>], [SSL_new(NULL)]),
[
AC_MSG_RESULT([yes])
decaf_have_ssl="1"
], [
AC_MSG_RESULT([no])
decaf_have_ssl="0"
]
)
CPPFLAGS="$original_CPPFLAGS"
LDFLAGS="$original_LDFLAGS"
LIBS="$original_LIBS"
fi
])