ntp_libevent.m4 revision 330567
1132718Skan# SYNOPSIS						-*- Autoconf -*-
2132718Skan#
3169689Skan#  NTP_ENABLE_LOCAL_LIBEVENT
4132718Skan#  NTP_LIBEVENT_CHECK([MINVERSION [, DIR]])
5132718Skan#  NTP_LIBEVENT_CHECK_NOBUILD([MINVERSION [, DIR]])
6132718Skan#
7132718Skan# DESCRIPTION
8132718Skan#
9132718Skan# AUTHOR
10132718Skan#
11132718Skan#  Harlan Stenn
12132718Skan#
13132718Skan# LICENSE
14132718Skan#
15132718Skan#  This file is Copyright (c) 2014 Network Time Foundation
16132718Skan# 
17132718Skan#  Copying and distribution of this file, with or without modification, are
18132718Skan#  permitted in any medium without royalty provided the copyright notice,
19132718Skan#  author attribution and this notice are preserved.  This file is offered
20132718Skan#  as-is, without any warranty.
21132718Skan
22132718Skandnl NTP_ENABLE_LOCAL_LIBEVENT
23169689Skandnl
24169689Skandnl Provide only the --enable-local-libevent command-line option.
25132718Skandnl
26132718Skandnl Used standalone by top-level NTP configure.ac, which should have
27132718Skandnl --enable-local-libevent in its --help output but which doesn't do
28132718Skandnl anything differently based upon its presence or value.
29132718Skandnl
30132718Skandnl Also AC_REQUIRE'd by NTP_LIBEVENT_CHECK_NOBUILD.
31132718SkanAC_DEFUN([NTP_ENABLE_LOCAL_LIBEVENT], [
32132718Skan
33132718SkanAC_ARG_ENABLE(
34132718Skan    [local-libevent],
35132718Skan    [AC_HELP_STRING(
36132718Skan	[--enable-local-libevent],
37132718Skan	[Force using the supplied libevent tearoff code]
38132718Skan    )],
39132718Skan    [ntp_use_local_libevent=$enableval],
40132718Skan    [ntp_use_local_libevent=${ntp_use_local_libevent-detect}]
41132718Skan)
42132718Skan
43132718Skan]) dnl NTP_ENABLE_LOCAL_LIBEVENT
44132718Skan
45169689Skandnl NTP_LIBEVENT_CHECK_NOBUILD([MINVERSION [, DIR]])	     -*- Autoconf -*-
46169689Skandnl
47132718Skandnl Look for libevent, which must be at least MINVERSION.
48132718Skandnl DIR is the location of our "bundled" copy of libevent.
49132718Skandnl If NOBUILD is provided as the 3rd argument, do all of the above,
50132718Skandnl but DO NOT invoke DIR/configure if we are going to use our bundled
51132718Skandnl version.  This may be the case for nested packages.
52132718Skandnl
53132718Skandnl provides: --enable-local-libevent 
54132718Skandnl
55132718Skandnl Examples:
56132718Skandnl
57132718Skandnl    NTP_LIBEVENT_CHECK_NOBUILD([2.0.9], [sntp/libevent])
58132718Skandnl    NTP_LIBEVENT_CHECK
59132718Skandnl
60132718SkanAC_DEFUN([NTP_LIBEVENT_CHECK_NOBUILD], [
61132718SkanAC_REQUIRE([NTP_PKG_CONFIG])dnl
62132718SkanAC_REQUIRE([NTP_ENABLE_LOCAL_LIBEVENT])dnl
63132718Skan
64132718Skanntp_libevent_min_version=m4_default([$1], [2.0.9])
65132718Skanntp_libevent_tearoff=m4_default([$2], [libevent])
66132718Skan
67132718SkanAC_SUBST([CFLAGS_LIBEVENT])
68132718SkanAC_SUBST([CPPFLAGS_LIBEVENT])
69132718SkanAC_SUBST([LDADD_LIBEVENT])
70132718Skan
71132718Skancase "$ntp_use_local_libevent" in
72132718Skan yes)
73132718Skan    ;;
74132718Skan *) # If we have (a good enough) pkg-config, see if it can find libevent
75132718Skan    case "$PKG_CONFIG" in
76132718Skan     /*)
77132718Skan	AC_MSG_CHECKING([if libevent $ntp_libevent_min_version or later is installed])
78132718Skan	if $PKG_CONFIG --atleast-version=$ntp_libevent_min_version libevent
79132718Skan	then
80132718Skan	    ntp_use_local_libevent=no
81132718Skan	    ntp_libevent_version="`$PKG_CONFIG --modversion libevent`"
82132718Skan	    case "$ntp_libevent_version" in
83132718Skan	     *.*) ;;
84132718Skan	     *) ntp_libevent_version='(unknown)' ;;
85132718Skan	    esac
86132718Skan	    AC_MSG_RESULT([yes, version $ntp_libevent_version])
87132718Skan	    CFLAGS_LIBEVENT=`$PKG_CONFIG --cflags libevent_pthreads`
88132718Skan	    CPPFLAGS_LIBEVENT=`$PKG_CONFIG --cflags-only-I libevent`
89132718Skan	    # HMS: I hope the following is accurate.
90132718Skan	    # We don't need -levent, we only need  -levent_core.
91132718Skan	    # While we could grab only the -L stuff, there *might* be
92132718Skan	    # other flags there we want.  Originally we just removed -levent
93132718Skan	    # but then somebody decided to install -levent-2.0
94132718Skan	    # LDADD_LIBEVENT=`$PKG_CONFIG --libs libevent | sed 's:-levent::'`
95132718Skan	    # So now we dance...
96132718Skan	    LDADD_LIBEVENT=
97132718Skan	    for i in `$PKG_CONFIG --libs libevent` `$PKG_CONFIG --cflags-only-other libevent_pthreads`
98132718Skan	    do
99169689Skan		case "$i" in
100169689Skan		 -D*) ;;
101169689Skan		 -levent*) ;;
102169689Skan		 *) case "$LDADD_LIBEVENT" in
103169689Skan		     '') LDADD_LIBEVENT="$i" ;;
104132718Skan		     *) LDADD_LIBEVENT="$LDADD_LIBEVENT $i" ;;
105132718Skan		    esac
106132718Skan		    ;;
107132718Skan		esac
108132718Skan	    done
109132718Skan	    case "$LIBISC_PTHREADS_NOTHREADS" in
110132718Skan	     pthreads)
111132718Skan		LDADD_LIBEVENT="$LDADD_LIBEVENT -levent_pthreads"
112132718Skan	    esac
113132718Skan	    LDADD_LIBEVENT="$LDADD_LIBEVENT -levent_core"
114132718Skan	else
115132718Skan	    ntp_use_local_libevent=yes
116132718Skan	    # HMS: do we only need to do this if LIBISC_PTHREADS_NOTHREADS
117132718Skan	    # is "pthreads"?
118132718Skan	    CFLAGS_LIBEVENT=`$PKG_CONFIG --cflags libevent_pthreads`
119132718Skan	    AC_MSG_RESULT([no])
120132718Skan	fi
121132718Skan	;;
122132718Skan     *)
123169689Skan	ntp_use_local_libevent=yes
124169689Skan	;;
125132718Skan    esac
126169689Skan    ;;
127169689Skanesac
128169689Skan
129169689Skancase "$ntp_use_local_libevent" in
130169689Skan yes)
131169689Skan    AC_MSG_NOTICE([Using libevent tearoff])
132169689Skan    CPPFLAGS_LIBEVENT="-I\$(top_builddir)/$ntp_libevent_tearoff/include -I\$(top_srcdir)/$ntp_libevent_tearoff/include"
133169689Skan    case "$LIBISC_PTHREADS_NOTHREADS" in
134169689Skan     pthreads)
135169689Skan	LDADD_LIBEVENT="\$(top_builddir)/$ntp_libevent_tearoff/libevent_pthreads.la \$(top_builddir)/$ntp_libevent_tearoff/libevent_core.la"
136169689Skan	;;
137169689Skan     *)
138169689Skan	LDADD_LIBEVENT="\$(top_builddir)/$ntp_libevent_tearoff/libevent_core.la"
139132718Skan    esac
140132718Skanesac
141132718Skan
142132718Skandnl AC_ARG_ENABLE(
143132718Skandnl     [cflags-libevent],
144132718Skandnl     [AC_HELP_STRING(
145132718Skandnl 	[--enable-cflags-libevent=-pthread],
146132718Skandnl 	[CFLAGS value to build with pthreads]
147132718Skandnl     )],
148132718Skandnl     [CFLAGS_LIBEVENT=$enableval],
149132718Skandnl     [# See above about LIBISC_PTHREADS_NOTHREADS
150132718Skandnl     case "$CFLAGS_LIBEVENT" in
151132718Skandnl      '') CFLAGS_LIBEVENT="-pthread" ;;	
152132718Skandnl      *) ;;
153132718Skandnl     esac]
154132718Skandnl )
155132718Skandnl AC_MSG_NOTICE([LIBISC_PTHREADS_NOTHREADS is <$LIBISC_PTHREADS_NOTHREADS>])
156132718Skandnl AC_MSG_NOTICE([CFLAGS_LIBEVENT is <$CFLAGS_LIBEVENT>])
157132718Skan
158132718SkanAM_CONDITIONAL([BUILD_LIBEVENT], [test "x$ntp_use_local_libevent" = "xyes"])
159132718Skan
160132718Skan]) dnl NTP_LIBEVENT_CHECK_NOBUILD
161132718Skan
162132718Skandnl NTP_LIBEVENT_CHECK([MINVERSION [, DIR]])	     -*- Autoconf -*-
163132718SkanAC_DEFUN([NTP_LIBEVENT_CHECK], [
164132718Skan
165132718SkanAC_SUBST([NTP_FORCE_LIBEVENT_DIST])
166132718SkanNTP_LIBEVENT_CHECK_NOBUILD([$1], [$2])
167132718Skan
168132718Skancase "$ntp_libevent_tearoff" in
169132718Skan libevent)
170132718Skan    ;;
171132718Skan *)
172132718Skan    AC_MSG_ERROR([ntp_libevent.m4 dir must be libevent, not $ntp_libevent_tearoff])
173132718Skan    ;;
174132718Skanesac
175132718Skan
176132718Skancase "$ntp_use_local_libevent" in
177132718Skan yes)
178132718Skan    dnl ac_configure_args is undocumented but widely abused, as here,
179132718Skan    dnl to modify the defaults of the libevent subpackage, by prefixing
180132718Skan    dnl our changes to the child configure arguments already assembled.
181132718Skan    dnl User-supplied contradictory choices should prevail thanks to
182132718Skan    dnl "last wins".
183169689Skan    ac_configure_args=" --disable-openssl${ac_configure_args}"
184132718Skan    ac_configure_args=" --disable-shared${ac_configure_args}"
185132718Skan    ac_configure_args=" --disable-libevent-regress${ac_configure_args}"
186132718Skan    ac_configure_args=" --disable-libevent-install${ac_configure_args}"
187132718Skan    ac_configure_args=" --enable-silent-rules${ac_configure_args}"
188132718Skan    ac_configure_args=" --enable-function-sections${ac_configure_args}"
189132718Skan    ac_configure_args=" LEP_CFLAGS='${NTP_HARD_CFLAGS}'${ac_configure_args}"
190132718Skan    ac_configure_args=" LEP_CPPFLAGS='${NTP_HARD_CPPFLAGS}'${ac_configure_args}"
191132718Skan    ac_configure_args=" LEP_LDFLAGS='${NTP_HARD_LDFLAGS}'${ac_configure_args}"
192132718Skan    AC_CONFIG_SUBDIRS([libevent])
193132718Skan    ;;
194169689Skan *)
195161651Skan    NTP_FORCE_LIBEVENT_DIST=libevent
196132718Skan    ;;
197132718Skanesac
198132718Skan
199132718Skan]) dnl NTP_LIBEVENT_CHECK
200132718Skan
201132718Skan