ntp_libevent.m4 revision 1.1.1.3
1# SYNOPSIS						-*- Autoconf -*-
2#
3#  NTP_ENABLE_LOCAL_LIBEVENT
4#  NTP_LIBEVENT_CHECK([MINVERSION [, DIR]])
5#  NTP_LIBEVENT_CHECK_NOBUILD([MINVERSION [, DIR]])
6#
7# DESCRIPTION
8#
9# AUTHOR
10#
11#  Harlan Stenn
12#
13# LICENSE
14#
15#  This file is Copyright (c) 2014 Network Time Foundation
16# 
17#  Copying and distribution of this file, with or without modification, are
18#  permitted in any medium without royalty provided the copyright notice,
19#  author attribution and this notice are preserved.  This file is offered
20#  as-is, without any warranty.
21
22dnl NTP_ENABLE_LOCAL_LIBEVENT
23dnl
24dnl Provide only the --enable-local-libevent command-line option.
25dnl
26dnl Used standalone by top-level NTP configure.ac, which should have
27dnl --enable-local-libevent in its --help output but which doesn't do
28dnl anything differently based upon its presence or value.
29dnl
30dnl Also AC_REQUIRE'd by NTP_LIBEVENT_CHECK_NOBUILD.
31AC_DEFUN([NTP_ENABLE_LOCAL_LIBEVENT], [
32
33AC_ARG_ENABLE(
34    [local-libevent],
35    [AC_HELP_STRING(
36	[--enable-local-libevent],
37	[Force using the supplied libevent tearoff code]
38    )],
39    [ntp_use_local_libevent=$enableval],
40    [ntp_use_local_libevent=${ntp_use_local_libevent-detect}]
41)
42
43]) dnl NTP_ENABLE_LOCAL_LIBEVENT
44
45dnl NTP_LIBEVENT_CHECK_NOBUILD([MINVERSION [, DIR]])	     -*- Autoconf -*-
46dnl
47dnl Look for libevent, which must be at least MINVERSION.
48dnl DIR is the location of our "bundled" copy of libevent.
49dnl If NOBUILD is provided as the 3rd argument, do all of the above,
50dnl but DO NOT invoke DIR/configure if we are going to use our bundled
51dnl version.  This may be the case for nested packages.
52dnl
53dnl provides: --enable-local-libevent 
54dnl
55dnl Examples:
56dnl
57dnl    NTP_LIBEVENT_CHECK_NOBUILD([2.0.9], [sntp/libevent])
58dnl    NTP_LIBEVENT_CHECK
59dnl
60AC_DEFUN([NTP_LIBEVENT_CHECK_NOBUILD], [
61AC_REQUIRE([NTP_PKG_CONFIG])dnl
62AC_REQUIRE([NTP_ENABLE_LOCAL_LIBEVENT])dnl
63
64ntp_libevent_min_version=m4_default([$1], [2.0.9])
65ntp_libevent_tearoff=m4_default([$2], [libevent])
66
67AC_SUBST([CPPFLAGS_LIBEVENT])
68AC_SUBST([LDADD_LIBEVENT])
69
70case "$ntp_use_local_libevent" in
71 yes)
72    ;;
73 *) # If we have (a good enough) pkg-config, see if it can find libevent
74    case "$PKG_CONFIG" in
75     /*)
76	AC_MSG_CHECKING([if libevent $ntp_libevent_min_version or later is installed])
77	if $PKG_CONFIG --atleast-version=$ntp_libevent_min_version libevent
78	then
79	    ntp_use_local_libevent=no
80	    AC_MSG_NOTICE([Using the installed libevent])
81	    CPPFLAGS_LIBEVENT=`$PKG_CONFIG --cflags-only-I libevent`
82	    # HMS: I hope the following is accurate.
83	    # We don't need -levent, we only need  -levent_core.
84	    # While we could grab only the -L stuff, there *might* be
85	    # other flags there we want.  Originally we just removed -levent
86	    # but then somebody decided to install -levent-2.0
87	    # LDADD_LIBEVENT=`$PKG_CONFIG --libs libevent | sed 's:-levent::'`
88	    # So now we dance...
89	    LDADD_LIBEVENT=
90	    for i in `$PKG_CONFIG --libs libevent`
91	    do
92		case "$i" in
93		 -levent*) ;;
94		 *) case "$LDADD_LIBEVENT" in
95		     '') LDADD_LIBEVENT="$i" ;;
96		     *) LDADD_LIBEVENT="$LDADD_LIBEVENT $i" ;;
97		    esac
98		    ;;
99		esac
100	    done
101	    case "$LIBISC_PTHREADS_NOTHREADS" in
102	     pthreads)
103		LDADD_LIBEVENT="$LDADD_LIBEVENT -levent_pthreads"
104	    esac
105	    LDADD_LIBEVENT="$LDADD_LIBEVENT -levent_core"
106	    AC_MSG_RESULT([yes])
107	else
108	    ntp_use_local_libevent=yes
109	    AC_MSG_RESULT([no])
110	fi
111	;;
112     *)
113	ntp_use_local_libevent=yes
114	;;
115    esac
116    ;;
117esac
118
119case "$ntp_use_local_libevent" in
120 yes)
121    AC_MSG_NOTICE([Using libevent tearoff])
122    CPPFLAGS_LIBEVENT="-I\$(top_builddir)/$ntp_libevent_tearoff/include -I\$(top_srcdir)/$ntp_libevent_tearoff/include"
123    case "$LIBISC_PTHREADS_NOTHREADS" in
124     pthreads)
125	LDADD_LIBEVENT="\$(top_builddir)/$ntp_libevent_tearoff/libevent_pthreads.la \$(top_builddir)/$ntp_libevent_tearoff/libevent_core.la"
126	;;
127     *)
128	LDADD_LIBEVENT="\$(top_builddir)/$ntp_libevent_tearoff/libevent_core.la"
129    esac
130esac
131
132AM_CONDITIONAL([BUILD_LIBEVENT], [test "x$ntp_use_local_libevent" = "xyes"])
133
134]) dnl NTP_LIBEVENT_CHECK_NOBUILD
135
136dnl NTP_LIBEVENT_CHECK([MINVERSION [, DIR]])	     -*- Autoconf -*-
137AC_DEFUN([NTP_LIBEVENT_CHECK], [
138
139AC_SUBST([NTP_FORCE_LIBEVENT_DIST])
140NTP_LIBEVENT_CHECK_NOBUILD([$1], [$2])
141
142case "$ntp_libevent_tearoff" in
143 libevent)
144    ;;
145 *)
146    AC_MSG_ERROR([ntp_libevent.m4 dir must be libevent, not $ntp_libevent_tearoff])
147    ;;
148esac
149
150case "$ntp_use_local_libevent" in
151 yes)
152    dnl ac_configure_args is undocumented but widely abused, as here,
153    dnl to modify the defaults of the libevent subpackage, by prefixing
154    dnl our changes to the child configure arguments already assembled.
155    dnl User-supplied contradictory choices should prevail thanks to
156    dnl "last wins".
157    ac_configure_args=" --disable-openssl${ac_configure_args}"
158    ac_configure_args=" --disable-shared${ac_configure_args}"
159    ac_configure_args=" --disable-libevent-regress${ac_configure_args}"
160    ac_configure_args=" --disable-libevent-install${ac_configure_args}"
161    ac_configure_args=" --enable-silent-rules${ac_configure_args}"
162    ac_configure_args=" --enable-function-sections${ac_configure_args}"
163    AC_CONFIG_SUBDIRS([libevent])
164    ;;
165 *)
166    NTP_FORCE_LIBEVENT_DIST=libevent
167    ;;
168esac
169
170]) dnl NTP_LIBEVENT_CHECK
171
172