12b15cb3dSCy Schubert# SYNOPSIS -*- Autoconf -*- 22b15cb3dSCy Schubert# 32b15cb3dSCy Schubert# NTP_ENABLE_LOCAL_LIBEVENT 42b15cb3dSCy Schubert# NTP_LIBEVENT_CHECK([MINVERSION [, DIR]]) 52b15cb3dSCy Schubert# NTP_LIBEVENT_CHECK_NOBUILD([MINVERSION [, DIR]]) 62b15cb3dSCy Schubert# 72b15cb3dSCy Schubert# DESCRIPTION 82b15cb3dSCy Schubert# 92b15cb3dSCy Schubert# AUTHOR 102b15cb3dSCy Schubert# 112b15cb3dSCy Schubert# Harlan Stenn 122b15cb3dSCy Schubert# 132b15cb3dSCy Schubert# LICENSE 142b15cb3dSCy Schubert# 152b15cb3dSCy Schubert# This file is Copyright (c) 2014 Network Time Foundation 162b15cb3dSCy Schubert# 172b15cb3dSCy Schubert# Copying and distribution of this file, with or without modification, are 182b15cb3dSCy Schubert# permitted in any medium without royalty provided the copyright notice, 192b15cb3dSCy Schubert# author attribution and this notice are preserved. This file is offered 202b15cb3dSCy Schubert# as-is, without any warranty. 212b15cb3dSCy Schubert 222b15cb3dSCy Schubertdnl NTP_ENABLE_LOCAL_LIBEVENT 232b15cb3dSCy Schubertdnl 242b15cb3dSCy Schubertdnl Provide only the --enable-local-libevent command-line option. 252b15cb3dSCy Schubertdnl 262b15cb3dSCy Schubertdnl Used standalone by top-level NTP configure.ac, which should have 272b15cb3dSCy Schubertdnl --enable-local-libevent in its --help output but which doesn't do 282b15cb3dSCy Schubertdnl anything differently based upon its presence or value. 292b15cb3dSCy Schubertdnl 302b15cb3dSCy Schubertdnl Also AC_REQUIRE'd by NTP_LIBEVENT_CHECK_NOBUILD. 312b15cb3dSCy SchubertAC_DEFUN([NTP_ENABLE_LOCAL_LIBEVENT], [ 322b15cb3dSCy Schubert 332b15cb3dSCy SchubertAC_ARG_ENABLE( 342b15cb3dSCy Schubert [local-libevent], 352b15cb3dSCy Schubert [AC_HELP_STRING( 362b15cb3dSCy Schubert [--enable-local-libevent], 372b15cb3dSCy Schubert [Force using the supplied libevent tearoff code] 382b15cb3dSCy Schubert )], 392b15cb3dSCy Schubert [ntp_use_local_libevent=$enableval], 402b15cb3dSCy Schubert [ntp_use_local_libevent=${ntp_use_local_libevent-detect}] 412b15cb3dSCy Schubert) 422b15cb3dSCy Schubert 432b15cb3dSCy Schubert]) dnl NTP_ENABLE_LOCAL_LIBEVENT 442b15cb3dSCy Schubert 452b15cb3dSCy Schubertdnl NTP_LIBEVENT_CHECK_NOBUILD([MINVERSION [, DIR]]) -*- Autoconf -*- 462b15cb3dSCy Schubertdnl 472b15cb3dSCy Schubertdnl Look for libevent, which must be at least MINVERSION. 482b15cb3dSCy Schubertdnl DIR is the location of our "bundled" copy of libevent. 492b15cb3dSCy Schubertdnl If NOBUILD is provided as the 3rd argument, do all of the above, 502b15cb3dSCy Schubertdnl but DO NOT invoke DIR/configure if we are going to use our bundled 512b15cb3dSCy Schubertdnl version. This may be the case for nested packages. 522b15cb3dSCy Schubertdnl 532b15cb3dSCy Schubertdnl provides: --enable-local-libevent 542b15cb3dSCy Schubertdnl 552b15cb3dSCy Schubertdnl Examples: 562b15cb3dSCy Schubertdnl 572b15cb3dSCy Schubertdnl NTP_LIBEVENT_CHECK_NOBUILD([2.0.9], [sntp/libevent]) 582b15cb3dSCy Schubertdnl NTP_LIBEVENT_CHECK 592b15cb3dSCy Schubertdnl 602b15cb3dSCy SchubertAC_DEFUN([NTP_LIBEVENT_CHECK_NOBUILD], [ 612b15cb3dSCy SchubertAC_REQUIRE([NTP_PKG_CONFIG])dnl 622b15cb3dSCy SchubertAC_REQUIRE([NTP_ENABLE_LOCAL_LIBEVENT])dnl 632b15cb3dSCy Schubert 642b15cb3dSCy Schubertntp_libevent_min_version=m4_default([$1], [2.0.9]) 652b15cb3dSCy Schubertntp_libevent_tearoff=m4_default([$2], [libevent]) 662b15cb3dSCy Schubert 679034852cSGleb SmirnoffAC_SUBST([CFLAGS_LIBEVENT]) 682b15cb3dSCy SchubertAC_SUBST([CPPFLAGS_LIBEVENT]) 692b15cb3dSCy SchubertAC_SUBST([LDADD_LIBEVENT]) 702b15cb3dSCy Schubert 712b15cb3dSCy Schubertcase "$ntp_use_local_libevent" in 722b15cb3dSCy Schubert yes) 732b15cb3dSCy Schubert ;; 742b15cb3dSCy Schubert *) # If we have (a good enough) pkg-config, see if it can find libevent 752b15cb3dSCy Schubert case "$PKG_CONFIG" in 762b15cb3dSCy Schubert /*) 772b15cb3dSCy Schubert AC_MSG_CHECKING([if libevent $ntp_libevent_min_version or later is installed]) 782b15cb3dSCy Schubert if $PKG_CONFIG --atleast-version=$ntp_libevent_min_version libevent 792b15cb3dSCy Schubert then 802b15cb3dSCy Schubert ntp_use_local_libevent=no 812b15cb3dSCy Schubert AC_MSG_NOTICE([Using the installed libevent]) 829034852cSGleb Smirnoff CFLAGS_LIBEVENT=`$PKG_CONFIG --cflags libevent_pthreads` 832b15cb3dSCy Schubert CPPFLAGS_LIBEVENT=`$PKG_CONFIG --cflags-only-I libevent` 842b15cb3dSCy Schubert # HMS: I hope the following is accurate. 852b15cb3dSCy Schubert # We don't need -levent, we only need -levent_core. 862b15cb3dSCy Schubert # While we could grab only the -L stuff, there *might* be 872b15cb3dSCy Schubert # other flags there we want. Originally we just removed -levent 882b15cb3dSCy Schubert # but then somebody decided to install -levent-2.0 892b15cb3dSCy Schubert # LDADD_LIBEVENT=`$PKG_CONFIG --libs libevent | sed 's:-levent::'` 902b15cb3dSCy Schubert # So now we dance... 912b15cb3dSCy Schubert LDADD_LIBEVENT= 92*3311ff84SXin LI for i in `$PKG_CONFIG --libs libevent` `$PKG_CONFIG --cflags-only-other libevent_pthreads` 932b15cb3dSCy Schubert do 942b15cb3dSCy Schubert case "$i" in 95*3311ff84SXin LI -D*) ;; 962b15cb3dSCy Schubert -levent*) ;; 972b15cb3dSCy Schubert *) case "$LDADD_LIBEVENT" in 982b15cb3dSCy Schubert '') LDADD_LIBEVENT="$i" ;; 992b15cb3dSCy Schubert *) LDADD_LIBEVENT="$LDADD_LIBEVENT $i" ;; 1002b15cb3dSCy Schubert esac 1012b15cb3dSCy Schubert ;; 1022b15cb3dSCy Schubert esac 1032b15cb3dSCy Schubert done 1042b15cb3dSCy Schubert case "$LIBISC_PTHREADS_NOTHREADS" in 1052b15cb3dSCy Schubert pthreads) 1062b15cb3dSCy Schubert LDADD_LIBEVENT="$LDADD_LIBEVENT -levent_pthreads" 1072b15cb3dSCy Schubert esac 1082b15cb3dSCy Schubert LDADD_LIBEVENT="$LDADD_LIBEVENT -levent_core" 1092b15cb3dSCy Schubert AC_MSG_RESULT([yes]) 1102b15cb3dSCy Schubert else 1112b15cb3dSCy Schubert ntp_use_local_libevent=yes 1129034852cSGleb Smirnoff # HMS: do we only need to do this if LIBISC_PTHREADS_NOTHREADS 1139034852cSGleb Smirnoff # is "pthreads"? 1149034852cSGleb Smirnoff CFLAGS_LIBEVENT=`$PKG_CONFIG --cflags libevent_pthreads` 1152b15cb3dSCy Schubert AC_MSG_RESULT([no]) 1162b15cb3dSCy Schubert fi 1172b15cb3dSCy Schubert ;; 1182b15cb3dSCy Schubert *) 1192b15cb3dSCy Schubert ntp_use_local_libevent=yes 1202b15cb3dSCy Schubert ;; 1212b15cb3dSCy Schubert esac 1222b15cb3dSCy Schubert ;; 1232b15cb3dSCy Schubertesac 1242b15cb3dSCy Schubert 1252b15cb3dSCy Schubertcase "$ntp_use_local_libevent" in 1262b15cb3dSCy Schubert yes) 1272b15cb3dSCy Schubert AC_MSG_NOTICE([Using libevent tearoff]) 1282b15cb3dSCy Schubert CPPFLAGS_LIBEVENT="-I\$(top_builddir)/$ntp_libevent_tearoff/include -I\$(top_srcdir)/$ntp_libevent_tearoff/include" 1292b15cb3dSCy Schubert case "$LIBISC_PTHREADS_NOTHREADS" in 1302b15cb3dSCy Schubert pthreads) 1312b15cb3dSCy Schubert LDADD_LIBEVENT="\$(top_builddir)/$ntp_libevent_tearoff/libevent_pthreads.la \$(top_builddir)/$ntp_libevent_tearoff/libevent_core.la" 1322b15cb3dSCy Schubert ;; 1332b15cb3dSCy Schubert *) 1342b15cb3dSCy Schubert LDADD_LIBEVENT="\$(top_builddir)/$ntp_libevent_tearoff/libevent_core.la" 1352b15cb3dSCy Schubert esac 1362b15cb3dSCy Schubertesac 1372b15cb3dSCy Schubert 1389034852cSGleb Smirnoffdnl AC_ARG_ENABLE( 1399034852cSGleb Smirnoffdnl [cflags-libevent], 1409034852cSGleb Smirnoffdnl [AC_HELP_STRING( 1419034852cSGleb Smirnoffdnl [--enable-cflags-libevent=-pthread], 1429034852cSGleb Smirnoffdnl [CFLAGS value to build with pthreads] 1439034852cSGleb Smirnoffdnl )], 1449034852cSGleb Smirnoffdnl [CFLAGS_LIBEVENT=$enableval], 1459034852cSGleb Smirnoffdnl [# See above about LIBISC_PTHREADS_NOTHREADS 1469034852cSGleb Smirnoffdnl case "$CFLAGS_LIBEVENT" in 1479034852cSGleb Smirnoffdnl '') CFLAGS_LIBEVENT="-pthread" ;; 1489034852cSGleb Smirnoffdnl *) ;; 1499034852cSGleb Smirnoffdnl esac] 1509034852cSGleb Smirnoffdnl ) 1519034852cSGleb Smirnoffdnl AC_MSG_NOTICE([LIBISC_PTHREADS_NOTHREADS is <$LIBISC_PTHREADS_NOTHREADS>]) 1529034852cSGleb Smirnoffdnl AC_MSG_NOTICE([CFLAGS_LIBEVENT is <$CFLAGS_LIBEVENT>]) 1539034852cSGleb Smirnoff 1542b15cb3dSCy SchubertAM_CONDITIONAL([BUILD_LIBEVENT], [test "x$ntp_use_local_libevent" = "xyes"]) 1552b15cb3dSCy Schubert 1562b15cb3dSCy Schubert]) dnl NTP_LIBEVENT_CHECK_NOBUILD 1572b15cb3dSCy Schubert 1582b15cb3dSCy Schubertdnl NTP_LIBEVENT_CHECK([MINVERSION [, DIR]]) -*- Autoconf -*- 1592b15cb3dSCy SchubertAC_DEFUN([NTP_LIBEVENT_CHECK], [ 1602b15cb3dSCy Schubert 1612b15cb3dSCy SchubertAC_SUBST([NTP_FORCE_LIBEVENT_DIST]) 1622b15cb3dSCy SchubertNTP_LIBEVENT_CHECK_NOBUILD([$1], [$2]) 1632b15cb3dSCy Schubert 1642b15cb3dSCy Schubertcase "$ntp_libevent_tearoff" in 1652b15cb3dSCy Schubert libevent) 1662b15cb3dSCy Schubert ;; 1672b15cb3dSCy Schubert *) 1682b15cb3dSCy Schubert AC_MSG_ERROR([ntp_libevent.m4 dir must be libevent, not $ntp_libevent_tearoff]) 1692b15cb3dSCy Schubert ;; 1702b15cb3dSCy Schubertesac 1712b15cb3dSCy Schubert 1722b15cb3dSCy Schubertcase "$ntp_use_local_libevent" in 1732b15cb3dSCy Schubert yes) 1742b15cb3dSCy Schubert dnl ac_configure_args is undocumented but widely abused, as here, 1752b15cb3dSCy Schubert dnl to modify the defaults of the libevent subpackage, by prefixing 1762b15cb3dSCy Schubert dnl our changes to the child configure arguments already assembled. 1772b15cb3dSCy Schubert dnl User-supplied contradictory choices should prevail thanks to 1782b15cb3dSCy Schubert dnl "last wins". 1792b15cb3dSCy Schubert ac_configure_args=" --disable-openssl${ac_configure_args}" 1802b15cb3dSCy Schubert ac_configure_args=" --disable-shared${ac_configure_args}" 1812b15cb3dSCy Schubert ac_configure_args=" --disable-libevent-regress${ac_configure_args}" 1822b15cb3dSCy Schubert ac_configure_args=" --disable-libevent-install${ac_configure_args}" 1832b15cb3dSCy Schubert ac_configure_args=" --enable-silent-rules${ac_configure_args}" 1842b15cb3dSCy Schubert ac_configure_args=" --enable-function-sections${ac_configure_args}" 1852b15cb3dSCy Schubert AC_CONFIG_SUBDIRS([libevent]) 1862b15cb3dSCy Schubert ;; 1872b15cb3dSCy Schubert *) 1882b15cb3dSCy Schubert NTP_FORCE_LIBEVENT_DIST=libevent 1892b15cb3dSCy Schubert ;; 1902b15cb3dSCy Schubertesac 1912b15cb3dSCy Schubert 1922b15cb3dSCy Schubert]) dnl NTP_LIBEVENT_CHECK 1932b15cb3dSCy Schubert 194