aboutsummaryrefslogtreecommitdiff
path: root/contrib/ntp/sntp/m4/ntp_libevent.m4
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/ntp/sntp/m4/ntp_libevent.m4')
-rw-r--r--contrib/ntp/sntp/m4/ntp_libevent.m4202
1 files changed, 202 insertions, 0 deletions
diff --git a/contrib/ntp/sntp/m4/ntp_libevent.m4 b/contrib/ntp/sntp/m4/ntp_libevent.m4
new file mode 100644
index 000000000000..451eac58fb06
--- /dev/null
+++ b/contrib/ntp/sntp/m4/ntp_libevent.m4
@@ -0,0 +1,202 @@
+# SYNOPSIS -*- Autoconf -*-
+#
+# NTP_ENABLE_LOCAL_LIBEVENT
+# NTP_LIBEVENT_CHECK([MINVERSION [, DIR]])
+# NTP_LIBEVENT_CHECK_NOBUILD([MINVERSION [, DIR]])
+#
+# DESCRIPTION
+#
+# AUTHOR
+#
+# Harlan Stenn
+#
+# LICENSE
+#
+# This file is Copyright (c) 2014 Network Time Foundation
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice,
+# author attribution and this notice are preserved. This file is offered
+# as-is, without any warranty.
+
+dnl NTP_ENABLE_LOCAL_LIBEVENT
+dnl
+dnl Provide only the --enable-local-libevent command-line option.
+dnl
+dnl Used standalone by top-level NTP configure.ac, which should have
+dnl --enable-local-libevent in its --help output but which doesn't do
+dnl anything differently based upon its presence or value.
+dnl
+dnl Also AC_REQUIRE'd by NTP_LIBEVENT_CHECK_NOBUILD.
+AC_DEFUN([NTP_ENABLE_LOCAL_LIBEVENT], [
+
+AC_ARG_ENABLE(
+ [local-libevent],
+ [AC_HELP_STRING(
+ [--enable-local-libevent],
+ [Force using the supplied libevent tearoff code]
+ )],
+ [ntp_use_local_libevent=$enableval],
+ [ntp_use_local_libevent=${ntp_use_local_libevent-detect}]
+)
+
+]) dnl NTP_ENABLE_LOCAL_LIBEVENT
+
+dnl NTP_LIBEVENT_CHECK_NOBUILD([MINVERSION [, DIR]]) -*- Autoconf -*-
+dnl
+dnl Look for libevent, which must be at least MINVERSION.
+dnl DIR is the location of our "bundled" copy of libevent.
+dnl If NOBUILD is provided as the 3rd argument, do all of the above,
+dnl but DO NOT invoke DIR/configure if we are going to use our bundled
+dnl version. This may be the case for nested packages.
+dnl
+dnl provides: --enable-local-libevent
+dnl
+dnl Examples:
+dnl
+dnl NTP_LIBEVENT_CHECK_NOBUILD([2.0.9], [sntp/libevent])
+dnl NTP_LIBEVENT_CHECK
+dnl
+AC_DEFUN([NTP_LIBEVENT_CHECK_NOBUILD], [
+AC_REQUIRE([NTP_PKG_CONFIG])dnl
+AC_REQUIRE([NTP_ENABLE_LOCAL_LIBEVENT])dnl
+
+ntp_libevent_min_version=m4_default([$1], [2.0.9])
+ntp_libevent_tearoff=m4_default([$2], [libevent])
+
+AC_SUBST([CFLAGS_LIBEVENT])
+AC_SUBST([CPPFLAGS_LIBEVENT])
+AC_SUBST([LDADD_LIBEVENT])
+
+case "$ntp_use_local_libevent" in
+ yes)
+ ;;
+ *) # If we have (a good enough) pkg-config, see if it can find libevent
+ case "$PKG_CONFIG" in
+ /*)
+ if $PKG_CONFIG --atleast-version=$ntp_libevent_min_version libevent
+ then
+ ntp_use_local_libevent=no
+ ntp_libevent_version="`$PKG_CONFIG --modversion libevent`"
+ case "$ntp_libevent_version" in
+ *.*) ;;
+ *) ntp_libevent_version='(unknown)' ;;
+ esac
+ AC_MSG_CHECKING([if libevent $ntp_libevent_min_version or later is installed])
+ AC_MSG_RESULT([yes, version $ntp_libevent_version])
+ CFLAGS_LIBEVENT=`$PKG_CONFIG --cflags libevent_pthreads`
+ CPPFLAGS_LIBEVENT=`$PKG_CONFIG --cflags-only-I libevent`
+ # HMS: I hope the following is accurate.
+ # We don't need -levent, we only need -levent_core.
+ # While we could grab only the -L stuff, there *might* be
+ # other flags there we want. Originally we just removed -levent
+ # but then somebody decided to install -levent-2.0
+ # LDADD_LIBEVENT=`$PKG_CONFIG --libs libevent | sed 's:-levent::'`
+ # So now we dance...
+ LDADD_LIBEVENT=
+ for i in `$PKG_CONFIG --libs libevent` `$PKG_CONFIG --cflags-only-other libevent_pthreads`
+ do
+ case "$i" in
+ -D*) ;;
+ -levent*) ;;
+ *) case "$LDADD_LIBEVENT" in
+ '') LDADD_LIBEVENT="$i" ;;
+ *) LDADD_LIBEVENT="$LDADD_LIBEVENT $i" ;;
+ esac
+ ;;
+ esac
+ done
+ case "$LIBISC_PTHREADS_NOTHREADS" in
+ pthreads)
+ LDADD_LIBEVENT="$LDADD_LIBEVENT -levent_pthreads"
+ esac
+ LDADD_LIBEVENT="$LDADD_LIBEVENT -levent_core"
+ else
+ ntp_use_local_libevent=yes
+ # HMS: do we only need to do this if LIBISC_PTHREADS_NOTHREADS
+ # is "pthreads"?
+ CFLAGS_LIBEVENT=`$PKG_CONFIG --cflags libevent_pthreads`
+ AC_MSG_CHECKING([if libevent $ntp_libevent_min_version or later is installed])
+ AC_MSG_RESULT([no])
+ fi
+ ;;
+ *)
+ ntp_use_local_libevent=yes
+ ;;
+ esac
+ ;;
+esac
+
+case "$ntp_use_local_libevent" in
+ yes)
+ AC_MSG_NOTICE([Using libevent tearoff])
+ CPPFLAGS_LIBEVENT="-I\$(top_builddir)/$ntp_libevent_tearoff/include -I\$(top_srcdir)/$ntp_libevent_tearoff/include"
+ case "$LIBISC_PTHREADS_NOTHREADS" in
+ pthreads)
+ LDADD_LIBEVENT="\$(top_builddir)/$ntp_libevent_tearoff/libevent_pthreads.la \$(top_builddir)/$ntp_libevent_tearoff/libevent_core.la"
+ ;;
+ *)
+ LDADD_LIBEVENT="\$(top_builddir)/$ntp_libevent_tearoff/libevent_core.la"
+ esac
+esac
+
+dnl AC_ARG_ENABLE(
+dnl [cflags-libevent],
+dnl [AC_HELP_STRING(
+dnl [--enable-cflags-libevent=-pthread],
+dnl [CFLAGS value to build with pthreads]
+dnl )],
+dnl [CFLAGS_LIBEVENT=$enableval],
+dnl [# See above about LIBISC_PTHREADS_NOTHREADS
+dnl case "$CFLAGS_LIBEVENT" in
+dnl '') CFLAGS_LIBEVENT="-pthread" ;;
+dnl *) ;;
+dnl esac]
+dnl )
+dnl AC_MSG_NOTICE([LIBISC_PTHREADS_NOTHREADS is <$LIBISC_PTHREADS_NOTHREADS>])
+dnl AC_MSG_NOTICE([CFLAGS_LIBEVENT is <$CFLAGS_LIBEVENT>])
+
+AM_CONDITIONAL([BUILD_LIBEVENT], [test "x$ntp_use_local_libevent" = "xyes"])
+
+]) dnl NTP_LIBEVENT_CHECK_NOBUILD
+
+dnl NTP_LIBEVENT_CHECK([MINVERSION [, DIR]]) -*- Autoconf -*-
+AC_DEFUN([NTP_LIBEVENT_CHECK], [
+
+AC_SUBST([NTP_FORCE_LIBEVENT_DIST])
+NTP_LIBEVENT_CHECK_NOBUILD([$1], [$2])
+
+case "$ntp_libevent_tearoff" in
+ libevent)
+ ;;
+ *)
+ AC_MSG_ERROR([ntp_libevent.m4 dir must be libevent, not $ntp_libevent_tearoff])
+ ;;
+esac
+
+case "$ntp_use_local_libevent" in
+ yes)
+ dnl ac_configure_args is undocumented but widely abused, as here,
+ dnl to modify the defaults of the libevent subpackage, by prefixing
+ dnl our changes to the child configure arguments already assembled.
+ dnl User-supplied contradictory choices should prevail thanks to
+ dnl "last wins".
+ ac_configure_args=" --disable-openssl${ac_configure_args}"
+ ac_configure_args=" --disable-samples${ac_configure_args}"
+ ac_configure_args=" --disable-shared${ac_configure_args}"
+ ac_configure_args=" --disable-libevent-regress${ac_configure_args}"
+ ac_configure_args=" --disable-libevent-install${ac_configure_args}"
+ ac_configure_args=" --enable-silent-rules${ac_configure_args}"
+ ac_configure_args=" --enable-function-sections${ac_configure_args}"
+ ac_configure_args=" LIBEVENT_CFLAGS='${NTP_HARD_CFLAGS}'${ac_configure_args}"
+ ac_configure_args=" LIBEVENT_CPPFLAGS='${NTP_HARD_CPPFLAGS}'${ac_configure_args}"
+ ac_configure_args=" LIBEVENT_LDFLAGS='${NTP_HARD_LDFLAGS}'${ac_configure_args}"
+ AC_CONFIG_SUBDIRS([libevent])
+ ;;
+ *)
+ NTP_FORCE_LIBEVENT_DIST=libevent
+ ;;
+esac
+
+]) dnl NTP_LIBEVENT_CHECK
+