Edit

kc3-lang/libevent/m4/libevent_openssl.m4

Branch :

  • Show log

    Commit

  • Author : Michael Davidsaver
    Date : 2023-06-05 18:38:22
    Hash : 9ce6ae78
    Message : Add option to auto-detect OpenSSL and MbedTLS

  • m4/libevent_openssl.m4
  • 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"])
    ])