libevent/m4/libevent_openssl.m4

101 lines
3.3 KiB
Plaintext
Raw Normal View History

dnl ######################################################################
dnl OpenSSL support
AC_DEFUN([LIBEVENT_OPENSSL], [
m4_ifndef([PKG_PROG_PKG_CONFIG], [AC_MSG_ERROR([PKG_PROG_PKG_CONFIG not found. Please install pkg-config and re-run autogen.sh])])
PKG_PROG_PKG_CONFIG([0.15.0])
AC_PROG_GREP
case "$host_os" in
darwin*)
dnl when compiling for Darwin, attempt to find OpenSSL using brew.
dnl We append the location given by brew to PKG_CONFIG_PATH path
dnl and then export it, so that it can be used in detection below.
AC_CHECK_PROG([BREW],brew, brew)
if test x$BREW = xbrew; then
openssl_prefix=$($BREW --prefix openssl 2>/dev/null)
dnl CI workers has only openssl@1.1,
dnl while default is openssl@3, see
dnl https://github.com/Homebrew/brew/issues/12879
if ! test -d $openssl_prefix; then
openssl_prefix=$($BREW --prefix $($BREW list | $GREP -m1 openssl) 2>/dev/null)
fi
if test x$openssl_prefix != x; then
OPENSSL_LIBS=`$PKG_CONFIG --libs openssl 2>/dev/null`
case "$OPENSSL_LIBS" in
dnl only if openssl is not in PKG_CONFIG_PATH already
'')
if test x$PKG_CONFIG_PATH != x; then
PKG_CONFIG_PATH="$PKG_CONFIG_PATH:"
fi
OPENSSL_PKG_CONFIG="$openssl_prefix/lib/pkgconfig"
PKG_CONFIG_PATH="$PKG_CONFIG_PATH$OPENSSL_PKG_CONFIG"
export PKG_CONFIG_PATH
AC_MSG_NOTICE([PKG_CONFIG_PATH has been set to $PKG_CONFIG_PATH (added openssl from brew)])
;;
esac
fi
fi
;;
esac
case "$enable_openssl" in
auto|yes)
have_openssl=no
case "$PKG_CONFIG" in
'')
;;
*)
OPENSSL_LIBS=`$PKG_CONFIG --libs openssl 2>/dev/null`
case "$OPENSSL_LIBS" in
'') ;;
*) OPENSSL_LIBS="$OPENSSL_LIBS $EV_LIB_GDI $EV_LIB_WS32 $OPENSSL_LIBADD"
have_openssl=yes
;;
esac
OPENSSL_INCS=`$PKG_CONFIG --cflags openssl 2>/dev/null`
;;
esac
case "$have_openssl" in
yes) ;;
*)
save_LIBS="$LIBS"
LIBS=""
OPENSSL_LIBS=""
for lib in crypto eay32; do
dnl clear cache
unset ac_cv_search_SSL_new
AC_SEARCH_LIBS([SSL_new], [ssl ssl32],
[have_openssl=yes
OPENSSL_LIBS="$LIBS -l$lib $EV_LIB_GDI $EV_LIB_WS32 $OPENSSL_LIBADD"],
[have_openssl=no],
[-l$lib $EV_LIB_GDI $EV_LIB_WS32 $OPENSSL_LIBADD])
LIBS="$save_LIBS"
test "$have_openssl" = "yes" && break
done
;;
esac
AC_MSG_NOTICE([OPENSSL_LIBS is $OPENSSL_LIBS])
AC_MSG_NOTICE([OPENSSL_INCS is $OPENSSL_INCS])
CPPFLAGS_SAVE=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $OPENSSL_INCS"
AC_CHECK_HEADERS([openssl/ssl.h], [], [have_openssl=no])
CPPFLAGS=$CPPFLAGS_SAVE
AC_SUBST(OPENSSL_INCS)
AC_SUBST(OPENSSL_LIBS)
if test "$have_openssl" = "yes" ; then
AC_DEFINE(HAVE_OPENSSL, 1, [Define if the system has openssl])
elif test "$enable_openssl" = "yes" ; then
AC_MSG_ERROR([OpenSSL could not be found. You should add the directory \
containing 'openssl.pc' to the 'PKG_CONFIG_PATH' environment variable, set \
'CFLAGS' and 'LDFLAGS' directly, or use '--disable-openssl' to disable \
support for OpenSSL encryption])
fi
;;
esac
dnl check if we have and should use OpenSSL
AM_CONDITIONAL(OPENSSL, [test "$have_openssl" = "yes"])
])