xref: /freebsd/contrib/ntp/sntp/m4/ntp_libevent.m4 (revision 39ee7a7a6bdd1557b1c3532abf60d139798ac88b)
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([CFLAGS_LIBEVENT])
68AC_SUBST([CPPFLAGS_LIBEVENT])
69AC_SUBST([LDADD_LIBEVENT])
70
71case "$ntp_use_local_libevent" in
72 yes)
73    ;;
74 *) # If we have (a good enough) pkg-config, see if it can find libevent
75    case "$PKG_CONFIG" in
76     /*)
77	AC_MSG_CHECKING([if libevent $ntp_libevent_min_version or later is installed])
78	if $PKG_CONFIG --atleast-version=$ntp_libevent_min_version libevent
79	then
80	    ntp_use_local_libevent=no
81	    AC_MSG_NOTICE([Using the installed libevent])
82	    CFLAGS_LIBEVENT=`$PKG_CONFIG --cflags libevent_pthreads`
83	    CPPFLAGS_LIBEVENT=`$PKG_CONFIG --cflags-only-I libevent`
84	    # HMS: I hope the following is accurate.
85	    # We don't need -levent, we only need  -levent_core.
86	    # While we could grab only the -L stuff, there *might* be
87	    # other flags there we want.  Originally we just removed -levent
88	    # but then somebody decided to install -levent-2.0
89	    # LDADD_LIBEVENT=`$PKG_CONFIG --libs libevent | sed 's:-levent::'`
90	    # So now we dance...
91	    LDADD_LIBEVENT=
92	    for i in `$PKG_CONFIG --libs libevent`
93	    do
94		case "$i" in
95		 -levent*) ;;
96		 *) case "$LDADD_LIBEVENT" in
97		     '') LDADD_LIBEVENT="$i" ;;
98		     *) LDADD_LIBEVENT="$LDADD_LIBEVENT $i" ;;
99		    esac
100		    ;;
101		esac
102	    done
103	    case "$LIBISC_PTHREADS_NOTHREADS" in
104	     pthreads)
105		LDADD_LIBEVENT="$LDADD_LIBEVENT -levent_pthreads"
106	    esac
107	    LDADD_LIBEVENT="$LDADD_LIBEVENT -levent_core"
108	    AC_MSG_RESULT([yes])
109	else
110	    ntp_use_local_libevent=yes
111	    # HMS: do we only need to do this if LIBISC_PTHREADS_NOTHREADS
112	    # is "pthreads"?
113	    CFLAGS_LIBEVENT=`$PKG_CONFIG --cflags libevent_pthreads`
114	    AC_MSG_RESULT([no])
115	fi
116	;;
117     *)
118	ntp_use_local_libevent=yes
119	;;
120    esac
121    ;;
122esac
123
124case "$ntp_use_local_libevent" in
125 yes)
126    AC_MSG_NOTICE([Using libevent tearoff])
127    CPPFLAGS_LIBEVENT="-I\$(top_builddir)/$ntp_libevent_tearoff/include -I\$(top_srcdir)/$ntp_libevent_tearoff/include"
128    case "$LIBISC_PTHREADS_NOTHREADS" in
129     pthreads)
130	LDADD_LIBEVENT="\$(top_builddir)/$ntp_libevent_tearoff/libevent_pthreads.la \$(top_builddir)/$ntp_libevent_tearoff/libevent_core.la"
131	;;
132     *)
133	LDADD_LIBEVENT="\$(top_builddir)/$ntp_libevent_tearoff/libevent_core.la"
134    esac
135esac
136
137dnl AC_ARG_ENABLE(
138dnl     [cflags-libevent],
139dnl     [AC_HELP_STRING(
140dnl 	[--enable-cflags-libevent=-pthread],
141dnl 	[CFLAGS value to build with pthreads]
142dnl     )],
143dnl     [CFLAGS_LIBEVENT=$enableval],
144dnl     [# See above about LIBISC_PTHREADS_NOTHREADS
145dnl     case "$CFLAGS_LIBEVENT" in
146dnl      '') CFLAGS_LIBEVENT="-pthread" ;;
147dnl      *) ;;
148dnl     esac]
149dnl )
150dnl AC_MSG_NOTICE([LIBISC_PTHREADS_NOTHREADS is <$LIBISC_PTHREADS_NOTHREADS>])
151dnl AC_MSG_NOTICE([CFLAGS_LIBEVENT is <$CFLAGS_LIBEVENT>])
152
153AM_CONDITIONAL([BUILD_LIBEVENT], [test "x$ntp_use_local_libevent" = "xyes"])
154
155]) dnl NTP_LIBEVENT_CHECK_NOBUILD
156
157dnl NTP_LIBEVENT_CHECK([MINVERSION [, DIR]])	     -*- Autoconf -*-
158AC_DEFUN([NTP_LIBEVENT_CHECK], [
159
160AC_SUBST([NTP_FORCE_LIBEVENT_DIST])
161NTP_LIBEVENT_CHECK_NOBUILD([$1], [$2])
162
163case "$ntp_libevent_tearoff" in
164 libevent)
165    ;;
166 *)
167    AC_MSG_ERROR([ntp_libevent.m4 dir must be libevent, not $ntp_libevent_tearoff])
168    ;;
169esac
170
171case "$ntp_use_local_libevent" in
172 yes)
173    dnl ac_configure_args is undocumented but widely abused, as here,
174    dnl to modify the defaults of the libevent subpackage, by prefixing
175    dnl our changes to the child configure arguments already assembled.
176    dnl User-supplied contradictory choices should prevail thanks to
177    dnl "last wins".
178    ac_configure_args=" --disable-openssl${ac_configure_args}"
179    ac_configure_args=" --disable-shared${ac_configure_args}"
180    ac_configure_args=" --disable-libevent-regress${ac_configure_args}"
181    ac_configure_args=" --disable-libevent-install${ac_configure_args}"
182    ac_configure_args=" --enable-silent-rules${ac_configure_args}"
183    ac_configure_args=" --enable-function-sections${ac_configure_args}"
184    AC_CONFIG_SUBDIRS([libevent])
185    ;;
186 *)
187    NTP_FORCE_LIBEVENT_DIST=libevent
188    ;;
189esac
190
191]) dnl NTP_LIBEVENT_CHECK
192
193