1AC_DEFUN([CHECK_ERLANG], [ 2# 3# Erlang checks for mod_erlang_event 4# 5AC_ARG_WITH( 6 [erlang], 7 [AS_HELP_STRING([--with-erlang], [Use system provided version of erlang (default: try)])], 8 [with_erlang="$withval"], 9 [with_erlang="try"] 10) 11 12AM_CONDITIONAL([HAVE_ERLANG],[false]) 13if test "$with_erlang" != "no" 14then 15 save_CFLAGS="$CFLAGS" 16 save_LIBS="$LIBS" 17 18 if test "$with_erlang" != "yes" -a "$with_erlang" != "try" ; then 19 AC_MSG_CHECKING([for erlang]) 20 if test ! -x "$with_erlang" ; then 21 AC_MSG_ERROR([Specified erlang does not exist or is not executable: $with_erlang]) 22 fi 23 AC_MSG_RESULT([$with_erlang]) 24 AC_SUBST([ERLANG], ["$with_erlang"]) 25 else 26 AC_PATH_PROG([ERLANG], ["erl"], ["no"], ["$PATH:/usr/bin:/usr/local/bin"]) 27 fi 28 29 if test "$ERLANG" != "no" ; then 30 AC_MSG_CHECKING([erlang version]) 31 ERLANG_VER="`$ERLANG -version 2>&1 | cut -d' ' -f6`" 32 33 if test -z "$ERLANG_VER" ; then 34 AC_MSG_ERROR([Unable to detect erlang version]) 35 fi 36 AC_MSG_RESULT([$ERLANG_VER]) 37 38 ERLANG_LIBDIR=`$ERLANG -noshell -eval 'io:format("~n~s/lib~n", [[code:lib_dir("erl_interface")]]).' -s erlang halt | tail -n 1` 39 AC_MSG_CHECKING([erlang libdir]) 40 if test -z "`echo $ERLANG_LIBDIR`" ; then 41 AC_MSG_ERROR([failed]) 42 else 43 ERLANG_LDFLAGS="-L$ERLANG_LIBDIR $ERLANG_LDFLAGS" 44 LIBS="-L$ERLANG_LIBDIR $LIBS" 45 fi 46 AC_MSG_RESULT([$ERLANG_LIBDIR]) 47 48 ERLANG_INCDIR=`$ERLANG -noshell -eval 'io:format("~n~s/include~n", [[code:lib_dir("erl_interface")]]).' -s erlang halt | tail -n 1` 49 AC_MSG_CHECKING([erlang incdir]) 50 if test -z "`echo $ERLANG_INCDIR`" ; then 51 AC_MSG_ERROR([failed]) 52 else 53 ERLANG_CFLAGS="-I$ERLANG_INCDIR $ERLANG_CFLAGS" 54 CFLAGS="-I$ERLANG_INCDIR $CFLAGS" 55 fi 56 AC_MSG_RESULT([$ERLANG_INCDIR]) 57 58 AC_CHECK_HEADERS([ei.h], [has_ei_h="yes"], [has_ei_h="no"]) 59 60 ERLANG_LIB="ei" 61 62 # check liei 63 AC_CHECK_LIB([$ERLANG_LIB], [ei_encode_version], [has_libei="yes"], [has_libei="no"]) 64 # maybe someday ei will actually expose this? 65 AC_CHECK_LIB([$ERLANG_LIB], [ei_link_unlink], [ERLANG_CFLAGS="$ERLANG_CFLAGS -DEI_LINK_UNLINK"]) 66 67 if test "$has_libei" = "no" ; then 68 AS_IF([test "$with_erlang" = "try"], 69 [AC_MSG_WARN([$ERLANG_LIB is unusable])], 70 [AC_MSG_ERROR([$ERLANG_LIB is unusable])] 71 ) 72 elif test "$has_ei_h" = "no"; then 73 AS_IF([test "$with_erlang" = "try"], 74 [AC_MSG_WARN([ei.h is unusable - are the erlang development headers installed?])], 75 [AC_MSG_ERROR([ei.h is unusable - are the erlang development headers installed?])] 76 ) 77 else 78 ERLANG_MAJOR="`echo "$ERLANG_VER" | sed 's/\([[^.]][[^.]]*\).*/\1/'`" 79 ERLANG_MINOR="`echo "$ERLANG_VER" | sed 's/[[^.]][[^.]]*.\([[^.]][[^.]]*\).*/\1/'`" 80 ERLANG_LDFLAGS="$ERLANG_LDFLAGS -lei" 81 AC_MSG_NOTICE([Your erlang seems OK, do not forget to enable mod_erlang_event in modules.conf]) 82 AC_SUBST([ERLANG_CFLAGS], [$ERLANG_CFLAGS]) 83 AC_SUBST([ERLANG_LDFLAGS], [$ERLANG_LDFLAGS]) 84 AC_SUBST([ERLANG_VERSION], [$ERLANG_VER]) 85 AC_SUBST([ERLANG_MAJOR], [$ERLANG_MAJOR]) 86 AC_SUBST([ERLANG_MINOR], [$ERLANG_MINOR]) 87 AM_CONDITIONAL([HAVE_ERLANG],[true]) 88 fi 89 90 LIBS="$save_LIBS" 91 CFLAGS="$save_CFLAGS" 92 93 else 94 AS_IF([test "$with_erlang" = "try"], 95 [AC_MSG_WARN([Could not find erlang, mod_erlang_event will not build, use --with-erlang to specify the location])], 96 [AC_MSG_ERROR([Could not find erlang, use --with-erlang to specify the location])] 97 ) 98 fi 99else 100 AC_MSG_WARN([erlang support disabled, building mod_erlang_event will fail!]) 101fi 102 103]) 104