blob: 9bbe89f37fa701a66f8a9b23c86588ebc4cec050 [file] [log] [blame]
paul7ea487b2003-03-17 02:05:07 +00001##
paule8f29842003-08-12 13:08:31 +00002## Configure template file for Quagga.
paul7ea487b2003-03-17 02:05:07 +00003## autoconf will generate configure script.
4##
5## Copyright (c) 1996, 97, 98, 99, 2000 Kunihiro Ishiguro <kunihiro@zebra.org>
paule8f29842003-08-12 13:08:31 +00006## Portions Copyright (c) 2003 Paul Jakma <paul@dishone.st>
paul7ea487b2003-03-17 02:05:07 +00007##
paule8f29842003-08-12 13:08:31 +00008AC_PREREQ(2.53)
paul7ea487b2003-03-17 02:05:07 +00009
David Lamparter828f2352012-05-01 21:43:53 +020010AC_INIT(Quagga, 0.99.21, [https://bugzilla.quagga.net])
paulfa1253d2003-09-24 05:09:26 +000011AC_CONFIG_SRCDIR(lib/zebra.h)
Paul Jakma62c9f502009-07-19 17:33:21 +010012AC_CONFIG_MACRO_DIR([m4])
ajsdfb9a542005-04-11 14:55:55 +000013
14dnl -----------------------------------
15dnl Get hostname and other information.
16dnl -----------------------------------
17AC_CANONICAL_BUILD()
18AC_CANONICAL_HOST()
19AC_CANONICAL_TARGET()
20
gdt81b81822004-04-07 22:48:47 +000021AM_INIT_AUTOMAKE(1.6)
paul7ea487b2003-03-17 02:05:07 +000022AM_CONFIG_HEADER(config.h)
23
Jeremy Jackson7ec57362009-01-21 22:10:40 -050024AC_CHECK_PROG([GAWK],[gawk],[gawk],[not-in-PATH])
25if test "x$GAWK" = "xnot-in-PATH" ; then
26 AC_MSG_ERROR([GNU awk is required for lib/memtype.h made by memtypes.awk.
27BSD awk complains: awk: gensub doesn't support backreferences (subst "\1") ])
28fi
paul03ecfb62005-04-16 15:38:23 +000029AC_ARG_VAR([GAWK],[GNU AWK])
30
gdtd6b72f72003-12-03 17:24:27 +000031dnl default is to match previous behavior
gdtc4f0efe2003-12-04 15:39:25 +000032exampledir=${sysconfdir}
gdtd6b72f72003-12-03 17:24:27 +000033AC_ARG_ENABLE([exampledir],
34 AC_HELP_STRING([--enable-exampledir],
35 [specify alternate directory for examples]),
36 exampledir="$enableval",)
gdtc4f0efe2003-12-04 15:39:25 +000037dnl XXX add --exampledir to autoconf standard directory list somehow
gdtd6b72f72003-12-03 17:24:27 +000038AC_SUBST(exampledir)
39
gdtcbd04082004-08-31 18:16:36 +000040dnl default is to match previous behavior
41pkgsrcrcdir=""
42pkgsrcdir=""
43AC_ARG_ENABLE([pkgsrcrcdir],
44 AC_HELP_STRING([--enable-pkgsrcrcdir],
45 [specify directory for rc.d scripts]),
46 pkgsrcrcdir="$enableval"; pkgsrcdir="pkgsrc",)
47dnl XXX add --pkgsrcrcdir to autoconf standard directory list somehow
48AC_SUBST(pkgsrcdir)
49AC_SUBST(pkgsrcrcdir)
50
paul7ea487b2003-03-17 02:05:07 +000051dnl ------------
52dnl Check CFLAGS
53dnl ------------
54AC_ARG_WITH(cflags,
55[ --with-cflags Set CFLAGS for use in compilation.])
56if test "x$with_cflags" != "x" ; then
57 CFLAGS="$with_cflags" ; cflags_specified=yes ;
58elif test -n "$CFLAGS" ; then
59 cflags_specified=yes ;
60fi
61
hasso1969e4b2005-03-27 13:07:23 +000062dnl --------------------
63dnl Check CC and friends
64dnl --------------------
Paul P Komkoff Jr46bc0e42008-08-13 16:17:04 +010065AC_LANG([C])
paul7ea487b2003-03-17 02:05:07 +000066AC_PROG_CC
hasso1969e4b2005-03-27 13:07:23 +000067AC_PROG_CPP
Paul P Komkoff Jr46bc0e42008-08-13 16:17:04 +010068AM_PROG_CC_C_O
hasso1969e4b2005-03-27 13:07:23 +000069AC_PROG_EGREP
Greg Troxel553bdfe2007-02-06 20:10:35 +000070
71dnl autoconf 2.59 appears not to support AC_PROG_SED
72dnl AC_PROG_SED
73AC_CHECK_PROG([SED],[sed],[sed],[/bin/false])
hasso1969e4b2005-03-27 13:07:23 +000074
Paul Jakmafa482832012-03-08 13:51:21 +000075dnl pdflatex and latexmk are needed to build HACKING.pdf
76AC_CHECK_PROG([PDFLATEX],[pdflatex],[pdflatex],[/bin/false])
77AC_CHECK_PROG([LATEXMK],[latexmk],[latexmk],[/bin/false])
78if test "x$PDFLATEX" = "x/bin/false" -o "x$LATEXMK" = "x/bin/false"; then
79 AC_MSG_WARN([Will not be able to make PDF versions of TeX documents])
80else
81 HAVE_LATEX=true
82fi
83AM_CONDITIONAL([HAVE_LATEX], [test "x$HAVE_LATEX" = "xtrue"])
84
hasso1969e4b2005-03-27 13:07:23 +000085dnl ------------------------------------------------------------------
86dnl Intel compiler check. Although Intel tries really hard to make icc
87dnl look like gcc, there are some differences. It's very verbose with
88dnl -Wall and it doesn't support the individual -W options.
89dnl ------------------------------------------------------------------
paul6a4b8832005-11-26 08:28:00 +000090if test "x${GCC}" = "xyes" ; then
91 COMPILER="GCC"
92 AC_MSG_CHECKING([whether we are using the Intel compiler])
93 AC_EGREP_CPP([^__INTEL_COMPILER], [__INTEL_COMPILER],
94 [AC_MSG_RESULT([no])],
95 [COMPILER="ICC"
96 AC_MSG_RESULT([yes])]
97 )
98else
99 AC_MSG_CHECKING([whether we are using SunPro compiler])
100 AC_EGREP_CPP([^__SUNPRO_C.*0x5(7|8|9)], ["__SUNPRO_C" __SUNPRO_C],
101 [AC_MSG_RESULT([no])],
102 [COMPILER="SUNPRO"
103 AC_MSG_RESULT([yes])]
104 )
105fi
paul7ea487b2003-03-17 02:05:07 +0000106
paula49c0ff2004-09-30 06:08:58 +0000107dnl ---------------------------------------------
paul7ea487b2003-03-17 02:05:07 +0000108dnl If CLFAGS doesn\'t exist set default value
paula49c0ff2004-09-30 06:08:58 +0000109dnl AC_PROG_CC will have set minimal default
110dnl already, eg "-O2 -g" for gcc, "-g" for others
paul27eebb32004-07-22 18:16:59 +0000111dnl (Wall is gcc specific... have to make sure
112dnl gcc is being used before setting it)
113dnl
paul6a4b8832005-11-26 08:28:00 +0000114dnl Intel icc 8.0 also sets __GNUC__,
115dnl but doesn't support all these fancy -W options.
hasso1969e4b2005-03-27 13:07:23 +0000116dnl Intel compiler warnings we ignore:
117dnl 279: controlling expression is constant.
118dnl 869: parameter "xxx" was never referenced - to avoid massive warnings
119dnl about "self", "vty", "argc" and "argv" never referenced in DEFUN
120dnl macro.
121dnl 981: operands are evaluated in unspecified order.
paul6a4b8832005-11-26 08:28:00 +0000122dnl
123dnl Sun Studio 10 / SunPro 5.7 is also supported,
124dnl so lets set some sane CFLAGS for it.
125dnl ---------------------------------------------
hasso1969e4b2005-03-27 13:07:23 +0000126
paul6a4b8832005-11-26 08:28:00 +0000127AC_MSG_CHECKING([whether to set a default CFLAGS])
128if test "x${cflags_specified}" = "x" ; then
129 case ${COMPILER} in
130 "ICC")
131 CFLAGS="-Os -g -Wall -wd 279,869,981"
132 AC_MSG_RESULT([Intel default])
133 ;;
134 "GCC")
Andrew J. Schorr5fa05092007-04-30 19:14:08 +0000135 CFLAGS="-Os -fno-omit-frame-pointer -g -std=gnu99 -Wall"
paul6a4b8832005-11-26 08:28:00 +0000136 CFLAGS="${CFLAGS} -Wsign-compare -Wpointer-arith"
137 CFLAGS="${CFLAGS} -Wbad-function-cast -Wwrite-strings"
138 CFLAGS="${CFLAGS} -Wmissing-prototypes -Wmissing-declarations"
139 CFLAGS="${CFLAGS} -Wchar-subscripts -Wcast-qual"
140 # TODO: conditionally addd -Wpacked if handled
141 AC_MSG_RESULT([gcc default])
142 ;;
143 "SUNPRO")
Paul Jakma105b8232006-05-28 08:02:41 +0000144 CFLAGS="-xO4 -v -g -xspace -xcode=pic32 -xstrconst -xc99"
paul6a4b8832005-11-26 08:28:00 +0000145 AC_MSG_RESULT([SunPro default])
146 ;;
147 *)
148 AC_MSG_RESULT([unknown compiler])
149 ;;
150 esac
151else
152 AC_MSG_RESULT([CFLAGS supplied by user])
hasso1969e4b2005-03-27 13:07:23 +0000153fi
154
paul7ea487b2003-03-17 02:05:07 +0000155dnl --------------
156dnl Check programs
157dnl --------------
paul7ea487b2003-03-17 02:05:07 +0000158AC_PROG_INSTALL
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000159AC_PROG_LN_S
paul7ea487b2003-03-17 02:05:07 +0000160AC_PROG_MAKE_SET
161AC_CHECK_TOOL(AR, ar)
paul7ea487b2003-03-17 02:05:07 +0000162
Paul Jakma105b8232006-05-28 08:02:41 +0000163dnl ---------------------------
164dnl We, perhaps unfortunately,
165dnl depend on GNU Make specific
166dnl constructs.
167dnl Give the user a warning if
168dnl not GNU Make.
169dnl ---------------------------
170AC_CACHE_CHECK([if ${MAKE-make} is GNU make], [quagga_cv_gnu_make],
171 [quagga_cv_gnu_make=no
172 if ${MAKE-make} --version 2>/dev/null | \
173 grep '^GNU Make ' >/dev/null ; then
174 quagga_cv_gnu_make=yes;
175 fi
176 ]
177)
178
Paul Jakmad46d2a22007-05-10 16:53:04 +0000179dnl -----------------
180dnl System extensions
181dnl -----------------
Paul Jakmad46d2a22007-05-10 16:53:04 +0000182AC_GNU_SOURCE
paul7ea487b2003-03-17 02:05:07 +0000183
gdt87efd642004-06-30 17:36:11 +0000184dnl -------
185dnl libtool
186dnl -------
paul0fc42942004-08-19 04:41:21 +0000187AC_PROG_LIBTOOL
gdt87efd642004-06-30 17:36:11 +0000188
paul7ea487b2003-03-17 02:05:07 +0000189dnl ----------------------
190dnl Packages configuration
191dnl ----------------------
Joachim Nilsson1080c132012-05-30 08:15:48 +0200192AC_ARG_WITH(pkg-extra-version,
193 AS_HELP_STRING([--with-pkg-extra-version=VER], [add extra version field, for packagers/distributions]),
194 [EXTRAVERSION=$withval],)
paul7ea487b2003-03-17 02:05:07 +0000195AC_ARG_ENABLE(vtysh,
gdtfc9d0742004-06-30 14:25:12 +0000196[ --enable-vtysh include integrated vty shell for Quagga])
paul7ea487b2003-03-17 02:05:07 +0000197AC_ARG_ENABLE(ipv6,
198[ --disable-ipv6 turn off IPv6 related features and daemons])
Joakim Tjernlundcbcd9bf2009-02-16 09:40:39 +0100199AC_ARG_ENABLE(doc,
200[ --disable-doc do not build docs])
David Lampartere2b15802012-11-03 09:14:29 -0700201AC_ARG_ENABLE(tests,
202[ --disable-tests do not build tests])
paul7ea487b2003-03-17 02:05:07 +0000203AC_ARG_ENABLE(zebra,
204[ --disable-zebra do not build zebra daemon])
205AC_ARG_ENABLE(bgpd,
206[ --disable-bgpd do not build bgpd])
207AC_ARG_ENABLE(ripd,
208[ --disable-ripd do not build ripd])
209AC_ARG_ENABLE(ripngd,
210[ --disable-ripngd do not build ripngd])
211AC_ARG_ENABLE(ospfd,
212[ --disable-ospfd do not build ospfd])
paul7ea487b2003-03-17 02:05:07 +0000213AC_ARG_ENABLE(ospf6d,
214[ --disable-ospf6d do not build ospf6d])
Paul Jakma57345092011-12-25 17:52:09 +0100215AC_ARG_ENABLE(babeld,
216[ --disable-babeld do not build babeld])
ajsd0199432004-12-22 14:03:52 +0000217AC_ARG_ENABLE(watchquagga,
218[ --disable-watchquagga do not build watchquagga])
jardin9e867fe2003-12-23 08:56:18 +0000219AC_ARG_ENABLE(isisd,
hassoae399ab2004-09-13 20:22:18 +0000220[ --enable-isisd build isisd])
Greg Troxel97cee872007-08-02 13:36:56 +0000221AC_ARG_ENABLE(solaris,
222[ --enable-solaris build solaris])
paul7ea487b2003-03-17 02:05:07 +0000223AC_ARG_ENABLE(bgp-announce,
224[ --disable-bgp-announce, turn off BGP route announcement])
225AC_ARG_ENABLE(netlink,
226[ --enable-netlink force to use Linux netlink interface])
227AC_ARG_ENABLE(broken-aliases,
228[ --enable-broken-aliases enable aliases as distinct interfaces for Linux 2.2.X])
229AC_ARG_ENABLE(snmp,
Vincent Bernatd6be5fb2012-05-24 09:44:43 +0200230[ --enable-snmp=ARG enable SNMP support (smux or agentx)])
paul7ea487b2003-03-17 02:05:07 +0000231AC_ARG_WITH(libpam,
232[ --with-libpam use libpam for PAM support in vtysh])
hasso71c0fb52003-05-25 20:18:13 +0000233AC_ARG_ENABLE(tcp-zebra,
paul7ea487b2003-03-17 02:05:07 +0000234[ --enable-tcp-zebra enable TCP/IP socket connection between zebra and protocol daemon])
paul7ea487b2003-03-17 02:05:07 +0000235AC_ARG_ENABLE(opaque-lsa,
Paul Jakma36de2612011-03-22 10:18:05 +0000236 AC_HELP_STRING([--disable-opaque-lsa],[do not build OSPF Opaque-LSA with OSPFAPI support (RFC2370)]))
paul1ef74ef2003-03-21 15:16:05 +0000237AC_ARG_ENABLE(ospfapi,
Paul Jakma36de2612011-03-22 10:18:05 +0000238[ --disable-ospfapi do not build OSPFAPI to access the OSPF LSA Database])
paul1ef74ef2003-03-21 15:16:05 +0000239AC_ARG_ENABLE(ospfclient,
240[ --disable-ospfclient do not build OSPFAPI client for OSPFAPI,
241 (this is the default if --disable-ospfapi is set)])
paul7ea487b2003-03-17 02:05:07 +0000242AC_ARG_ENABLE(ospf-te,
Paul Jakma36de2612011-03-22 10:18:05 +0000243 AC_HELP_STRING([--disable-ospf-te],[disable Traffic Engineering Extension to OSPF]))
paul7ea487b2003-03-17 02:05:07 +0000244AC_ARG_ENABLE(multipath,
245[ --enable-multipath=ARG enable multipath function, ARG must be digit])
Paul P Komkoff Jrfe86b482008-08-13 16:56:05 +0100246AC_ARG_ENABLE(user,
247 AC_HELP_STRING([--enable-user=user], [user to run Quagga suite as (default quagga)]))
248AC_ARG_ENABLE(group,
249 AC_HELP_STRING([--enable-group=group], [group to run Quagga suite as (default quagga)]))
pauledd7c242003-06-04 13:59:38 +0000250AC_ARG_ENABLE(vty_group,
paul6b6942f2004-10-22 04:55:05 +0000251[ --enable-vty-group=ARG set vty sockets to have specified group as owner])
gdtaa593d52003-12-22 20:15:53 +0000252AC_ARG_ENABLE(configfile_mask,
253[ --enable-configfile-mask=ARG set mask for config files])
254AC_ARG_ENABLE(logfile_mask,
255[ --enable-logfile-mask=ARG set mask for log files])
pauledd7c242003-06-04 13:59:38 +0000256
hasso71c0fb52003-05-25 20:18:13 +0000257AC_ARG_ENABLE(rtadv,
paul6b6942f2004-10-22 04:55:05 +0000258[ --disable-rtadv disable IPV6 router advertisement feature])
hassoca776982004-06-12 14:33:05 +0000259AC_ARG_ENABLE(irdp,
paul6b6942f2004-10-22 04:55:05 +0000260[ --enable-irdp enable IRDP server support in zebra])
hassof695b012005-04-02 19:03:39 +0000261AC_ARG_ENABLE(isis_topology,
262[ --enable-isis-topology enable IS-IS topology generator])
hasso41d3fc92004-04-06 11:59:00 +0000263AC_ARG_ENABLE(capabilities,
264[ --disable-capabilities disable using POSIX capabilities])
paul6b6942f2004-10-22 04:55:05 +0000265AC_ARG_ENABLE(gcc_ultra_verbose,
266[ --enable-gcc-ultra-verbose enable ultra verbose GCC warnings])
Paul Jakma3453a712009-06-12 14:21:02 +0100267AC_ARG_ENABLE(linux24_tcp_md5,
268[ --enable-linux24-tcp-md5 enable support for old, Linux-2.4 RFC2385 patch])
ajs3cade262004-12-29 17:50:22 +0000269AC_ARG_ENABLE(gcc-rdynamic,
270[ --enable-gcc-rdynamic enable gcc linking with -rdynamic for better backtraces])
ajs924b9222005-04-16 17:11:24 +0000271AC_ARG_ENABLE(time-check,
272[ --disable-time-check disable slow thread warning messages])
Jeremy Jackson25f45882009-01-12 16:06:12 -0500273AC_ARG_ENABLE(pcreposix,
274[ --enable-pcreposix enable using PCRE Posix libs for regex functions])
Avneesh Sachdev5adc2522012-11-13 22:48:59 +0000275AC_ARG_ENABLE(fpm,
276[ --enable-fpm enable Forwarding Plane Manager support])
paul6b6942f2004-10-22 04:55:05 +0000277
278if test x"${enable_gcc_ultra_verbose}" = x"yes" ; then
279 CFLAGS="${CFLAGS} -W -Wcast-qual -Wstrict-prototypes"
280 CFLAGS="${CFLAGS} -Wmissing-declarations -Wmissing-noreturn"
281 CFLAGS="${CFLAGS} -Wmissing-format-attribute -Wunreachable-code"
282 CFLAGS="${CFLAGS} -Wpacked -Wpadded"
283fi
paul7ea487b2003-03-17 02:05:07 +0000284
ajs3cade262004-12-29 17:50:22 +0000285if test x"${enable_gcc_rdynamic}" = x"yes" ; then
286 LDFLAGS="${LDFLAGS} -rdynamic"
287fi
288
ajs924b9222005-04-16 17:11:24 +0000289if test x"${enable_time_check}" != x"no" ; then
290 if test x"${enable_time_check}" = x"yes" -o x"${enable_time_check}" = x ; then
291 AC_DEFINE(CONSUMED_TIME_CHECK,5000000,Consumed Time Check)
292 else
293 AC_DEFINE_UNQUOTED(CONSUMED_TIME_CHECK,$enable_time_check,Consumed Time Check)
294 fi
295fi
296
Avneesh Sachdev5adc2522012-11-13 22:48:59 +0000297if test "${enable_fpm}" = "yes"; then
298 AC_DEFINE(HAVE_FPM,,Forwarding Plane Manager support)
299fi
300
paul7ea487b2003-03-17 02:05:07 +0000301if test "${enable_broken_aliases}" = "yes"; then
302 if test "${enable_netlink}" = "yes"
303 then
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000304 AC_MSG_FAILURE([Sorry you can not use netlink with broken aliases])
paul7ea487b2003-03-17 02:05:07 +0000305 fi
306 AC_DEFINE(HAVE_BROKEN_ALIASES,,Broken Alias)
307 enable_netlink=no
308fi
309
310if test "${enable_tcp_zebra}" = "yes"; then
311 AC_DEFINE(HAVE_TCP_ZEBRA,,Use TCP for zebra communication)
312fi
313
Paul Jakma36de2612011-03-22 10:18:05 +0000314if test "${enable_opaque_lsa}" != "no"; then
paul7ea487b2003-03-17 02:05:07 +0000315 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
316fi
317
Paul Jakma36de2612011-03-22 10:18:05 +0000318if test "${enable_ospf_te}" != "no"; then
paul7ea487b2003-03-17 02:05:07 +0000319 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
320 AC_DEFINE(HAVE_OSPF_TE,,OSPF TE)
321fi
322
Paul Jakma3453a712009-06-12 14:21:02 +0100323if test "${enable_linux24_tcp_md5}" = "yes"; then
324 AC_DEFINE(HAVE_TCP_MD5_LINUX24,,Old Linux 2.4 TCP MD5 Signature Patch)
325fi
326
gdtd2a0ccc2003-12-03 18:13:48 +0000327AC_MSG_CHECKING(if zebra should be configurable to send Route Advertisements)
328if test "${enable_rtadv}" != "no"; then
hasso71c0fb52003-05-25 20:18:13 +0000329 AC_MSG_RESULT(yes)
gdtd2a0ccc2003-12-03 18:13:48 +0000330 AC_DEFINE(HAVE_RTADV,,Enable IPv6 Routing Advertisement support)
paul2487bea2003-05-25 23:51:31 +0000331else
332 AC_MSG_RESULT(no)
hasso71c0fb52003-05-25 20:18:13 +0000333fi
paul7ea487b2003-03-17 02:05:07 +0000334
hassoca776982004-06-12 14:33:05 +0000335if test "${enable_irdp}" = "yes"; then
336 AC_DEFINE(HAVE_IRDP,, IRDP )
337fi
338
hassof695b012005-04-02 19:03:39 +0000339if test "${enable_isisd}" = "yes" && test "${enable_isis_topology}" = yes; then
340 AC_DEFINE(TOPOLOGY_GENERATE,,Enable IS-IS topology generator code)
David Lamparteree1ac2d2012-07-19 12:58:59 +0200341 ISIS_TOPOLOGY_INCLUDES="-I\$(srcdir)/topology"
hassof695b012005-04-02 19:03:39 +0000342 ISIS_TOPOLOGY_DIR="topology"
343 ISIS_TOPOLOGY_LIB="./topology/libtopology.a"
344fi
345
346AC_SUBST(ISIS_TOPOLOGY_INCLUDES)
347AC_SUBST(ISIS_TOPOLOGY_DIR)
348AC_SUBST(ISIS_TOPOLOGY_LIB)
349
paul79cb2162003-06-06 12:19:53 +0000350if test "${enable_user}" = "yes" || test x"${enable_user}" = x""; then
paule8f29842003-08-12 13:08:31 +0000351 enable_user="quagga"
pauledd7c242003-06-04 13:59:38 +0000352elif test "${enable_user}" = "no"; then
353 enable_user="root"
354fi
pauledd7c242003-06-04 13:59:38 +0000355
paul79cb2162003-06-06 12:19:53 +0000356if test "${enable_group}" = "yes" || test x"${enable_group}" = x""; then
paule8f29842003-08-12 13:08:31 +0000357 enable_group="quagga"
pauledd7c242003-06-04 13:59:38 +0000358elif test "${enable_group}" = "no"; then
359 enable_group="root"
360fi
pauledd7c242003-06-04 13:59:38 +0000361
362if test x"${enable_vty_group}" = x"yes" ; then
paul8d4aee52003-06-06 00:30:35 +0000363 AC_MSG_ERROR([--enable-vty-group requires a group as argument, not yes])
paul79cb2162003-06-06 12:19:53 +0000364elif test x"${enable_vty_group}" != x""; then
paul8d4aee52003-06-06 00:30:35 +0000365 if test x"${enable_vty_group}" != x"no"; then
pauledd7c242003-06-04 13:59:38 +0000366 AC_DEFINE_UNQUOTED(VTY_GROUP, "${enable_vty_group}", VTY Sockets Group)
367 fi
368fi
paul26275b02005-04-11 07:10:47 +0000369AC_SUBST([enable_user])
370AC_SUBST([enable_group])
371AC_SUBST([enable_vty_group])
372AC_DEFINE_UNQUOTED(QUAGGA_USER, "${enable_user}", Quagga User)
373AC_DEFINE_UNQUOTED(QUAGGA_GROUP, "${enable_group}", Quagga Group)
pauledd7c242003-06-04 13:59:38 +0000374
gdtaa593d52003-12-22 20:15:53 +0000375enable_configfile_mask=${enable_configfile_mask:-0600}
376AC_DEFINE_UNQUOTED(CONFIGFILE_MASK, ${enable_configfile_mask}, Mask for config files)
377
378enable_logfile_mask=${enable_logfile_mask:-0600}
379AC_DEFINE_UNQUOTED(LOGFILE_MASK, ${enable_logfile_mask}, Mask for log files)
380
paul7ea487b2003-03-17 02:05:07 +0000381MULTIPATH_NUM=1
382
383case "${enable_multipath}" in
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000384 [[0-9]|[1-9][0-9]])
paul7ea487b2003-03-17 02:05:07 +0000385 MULTIPATH_NUM="${enable_multipath}"
386 ;;
387 "")
388 ;;
389 *)
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000390 AC_MSG_FAILURE([Please specify digit to enable multipath ARG])
paul7ea487b2003-03-17 02:05:07 +0000391 ;;
392esac
393
paul7ea487b2003-03-17 02:05:07 +0000394AC_SUBST(MULTIPATH_NUM)
395
Joachim Nilsson1080c132012-05-30 08:15:48 +0200396dnl -----------------------------------
397dnl Add extra version string to package
398dnl name, string and version fields.
399dnl -----------------------------------
400if test "x${EXTRAVERSION}" != "x" ; then
401 VERSION=${VERSION}${EXTRAVERSION}
402 PACKAGE_VERSION=${PACKAGE_VERSION}${EXTRAVERSION}
403 PACKAGE_STRING=${PACKAGE_STRING}${EXTRAVERSION}
404fi
405
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000406dnl ------------------------------------
407dnl Check C keywords and standard types
408dnl ------------------------------------
409AC_C_CONST
410AC_C_INLINE
411AC_C_RESTRICT
412AC_C_VOLATILE
pauldc7a2bf2003-10-22 00:07:44 +0000413AC_HEADER_STDC
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000414AC_HEADER_TIME
415AC_HEADER_SYS_WAIT
416dnl AC_TYPE_PID_T
417AC_TYPE_UID_T
418AC_TYPE_MODE_T
419AC_TYPE_SIZE_T
420AC_TYPE_SIGNAL
421AC_STRUCT_TM
pauldc7a2bf2003-10-22 00:07:44 +0000422
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000423dnl -------------------------
424dnl Check other header files.
425dnl -------------------------
426AC_CHECK_HEADERS([stropts.h sys/ksym.h sys/times.h sys/select.h \
427 sys/types.h linux/version.h netdb.h asm/types.h \
Stephen Hemmingerb69442d2011-09-13 17:15:51 +0400428 sys/param.h limits.h signal.h \
Paul Jakma6511cab2009-06-18 17:38:01 +0100429 sys/socket.h netinet/in.h time.h sys/time.h])
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000430
431dnl Utility macro to avoid retyping includes all the time
432m4_define([QUAGGA_INCLUDES],
433[#ifdef SUNOS_5
434#define _XPG4_2
435#define __EXTENSIONS__
436#endif
437#include <stdio.h>
438#if STDC_HEADERS
439# include <stdlib.h>
440# include <stddef.h>
441#else
442# if HAVE_STDLIB_H
443# include <stdlib.h>
444# endif
445#endif
446#if HAVE_SYS_TYPES_H
447# include <sys/types.h>
448#endif
449/* sys/conf.h depends on param.h on FBSD at least */
450#if HAVE_SYS_PARAM_H
451# include <sys/param.h>
452#endif
453/* Required for MAXSIG */
454#if HAVE_SIGNAL_H
455# include <signal.h>
456#endif
457#if HAVE_SYS_SOCKET_H
458# include <sys/socket.h>
459#endif
460#if HAVE_NETINET_IN_H
461# include <netinet/in.h>
462#endif
Paul Jakma6511cab2009-06-18 17:38:01 +0100463#ifdef TIME_WITH_SYS_TIME
464# include <sys/time.h>
465# include <time.h>
466#else
467# ifdef HAVE_SYS_TIME_H
468# include <sys/time.h>
469# else
470# include <time.h>
471# endif
472#endif /* TIME_WITH_SYS_TIME */
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000473])dnl
474
Denis Ovsienko2b43bf22011-07-14 16:30:08 +0400475dnl HAVE_NET_IF_H must be discovered by the time the longer AC_CHECK_HEADERS
476dnl round below execution begins, otherwise it doesn't properly detect
477dnl HAVE_NETINET6_IN6_VAR_H, HAVE_NET_IF_VAR_H and HAVE_STRUCT_IN6_ALIASREQ
478dnl on FreeBSD (BZ#408).
479
480AC_CHECK_HEADERS([net/if.h], [], [], QUAGGA_INCLUDES)
481
482m4_define([QUAGGA_INCLUDES],
483QUAGGA_INCLUDES
484[#if HAVE_NET_IF_H
485# include <net/if.h>
486#endif
487])dnl
488
489dnl Same applies for HAVE_NET_IF_VAR_H, which HAVE_NETINET6_ND6_H and
490dnl HAVE_NETINET_IN_VAR_H depend upon. But if_var.h depends on if.h, hence
491dnl an additional round for it.
492
493AC_CHECK_HEADERS([net/if_var.h], [], [], QUAGGA_INCLUDES)
494
495m4_define([QUAGGA_INCLUDES],
496QUAGGA_INCLUDES
497[#if HAVE_NET_IF_VAR_H
498# include <net/if_var.h>
499#endif
500])dnl
501
502AC_CHECK_HEADERS([sys/un.h netinet/in_systm.h netinet/in_var.h \
503 net/if_dl.h net/netopt.h net/route.h \
Paul Jakma11770e12007-06-22 16:14:42 +0000504 inet/nd.h arpa/inet.h netinet/ip_icmp.h \
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000505 fcntl.h stddef.h sys/ioctl.h syslog.h wchar.h wctype.h \
506 sys/sysctl.h sys/sockio.h kvm.h sys/conf.h],
507 [], [], QUAGGA_INCLUDES)
508
509AC_CHECK_HEADERS([ucontext.h], [], [],
510[#ifndef __USE_GNU
511#define __USE_GNU
512#endif /* __USE_GNU */
513QUAGGA_INCLUDES
514])
515
516m4_define([QUAGGA_INCLUDES],
517QUAGGA_INCLUDES
Denis Ovsienko2b43bf22011-07-14 16:30:08 +0400518[#if HAVE_SYS_UN_H
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000519# include <sys/un.h>
520#endif
521#if HAVE_NETINET_IN_SYSTM_H
522# include <netinet/in_systm.h>
523#endif
524#if HAVE_NETINET_IN_VAR_H
525# include <netinet/in_var.h>
526#endif
527#if HAVE_NET_IF_DL_H
528# include <net/if_dl.h>
529#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000530#if HAVE_NET_NETOPT_H
531# include <net/netopt.h>
532#endif
533#if HAVE_NET_ROUTE_H
534# include <net/route.h>
535#endif
536#if HAVE_INET_ND_H
537# include <inet/nd.h>
538#endif
539#if HAVE_ARPA_INET_H
540# include <arpa/inet.h>
541#endif
Paul Jakma11770e12007-06-22 16:14:42 +0000542/* Required for IDRP */
543#if HAVE_NETINET_IP_ICMP_H
544# include <netinet/ip_icmp.h>
545#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000546])dnl
pauldc7a2bf2003-10-22 00:07:44 +0000547
gdtfa3232e2003-12-03 17:52:30 +0000548dnl V6 headers are checked below, after we check for v6
paul7ea487b2003-03-17 02:05:07 +0000549
paul7ea487b2003-03-17 02:05:07 +0000550dnl Some systems (Solaris 2.x) require libnsl (Network Services Library)
551case "$host" in
paulafd8a122005-03-12 06:36:10 +0000552 [*-sunos5.[6-7]*] | [*-solaris2.[6-7]*])
paul7ea487b2003-03-17 02:05:07 +0000553 opsys=sol2-6
paulafd8a122005-03-12 06:36:10 +0000554 AC_DEFINE(SUNOS_56, 1, SunOS 5.6 to 5.7)
paul19877dd2004-05-11 10:49:35 +0000555 AC_DEFINE(SUNOS_5, 1, SunOS 5)
paul7ea487b2003-03-17 02:05:07 +0000556 AC_CHECK_LIB(xnet, main)
557 CURSES=-lcurses
558 ;;
paul1b73de82005-04-10 16:31:51 +0000559 [*-sunos5.[8-9]] \
560 | [*-sunos5.1[0-9]] \
561 | [*-sunos5.1[0-9].[0-9]] \
562 | [*-solaris2.[8-9]] \
563 | [*-solaris2.1[0-9]] \
564 | [*-solaris2.1[0-9].[0-9]])
paulafd8a122005-03-12 06:36:10 +0000565 opsys=sol8
Paul Jakmafb66b292006-05-28 08:26:15 +0000566 AC_DEFINE(SUNOS_59, 1, [SunOS 5.8 up])
567 AC_DEFINE(SUNOS_5, 1, [SunOS 5])
paul19877dd2004-05-11 10:49:35 +0000568 AC_CHECK_LIB(socket, main)
569 AC_CHECK_LIB(nsl, main)
paul1b73de82005-04-10 16:31:51 +0000570 AC_CHECK_LIB(umem, main)
Paul Jakmafb66b292006-05-28 08:26:15 +0000571 AC_CHECK_FUNCS([printstack],
572 [AC_DEFINE([HAVE_PRINTSTACK],1,[Solaris printstack])
573 AC_DEFINE([HAVE_STACK_TRACE],1,[Stack symbols decode functionality])
574 ])
paul19877dd2004-05-11 10:49:35 +0000575 CURSES=-lcurses
576 ;;
paul7ea487b2003-03-17 02:05:07 +0000577 *-sunos5* | *-solaris2*)
paul19877dd2004-05-11 10:49:35 +0000578 AC_DEFINE(SUNOS_5,,SunOS 5, Unknown SunOS)
paul7ea487b2003-03-17 02:05:07 +0000579 AC_CHECK_LIB(socket, main)
580 AC_CHECK_LIB(nsl, main)
581 CURSES=-lcurses
582 ;;
hassoc45eb832005-02-19 13:58:06 +0000583 *-linux*)
paul7ea487b2003-03-17 02:05:07 +0000584 opsys=gnu-linux
585 AC_DEFINE(GNU_LINUX,,GNU Linux)
586 ;;
587 *-nec-sysv4*)
588 AC_CHECK_LIB(nsl, gethostbyname)
589 AC_CHECK_LIB(socket, socket)
590 ;;
paul7ea487b2003-03-17 02:05:07 +0000591 *-openbsd*)
592 opsys=openbsd
593 AC_DEFINE(OPEN_BSD,,OpenBSD)
594 ;;
595 *-bsdi*)
596 opsys=bsdi
597 OTHER_METHOD="mtu_kvm.o"
598 AC_CHECK_LIB(kvm, main)
599 ;;
paul49e3b3c2003-10-23 20:39:50 +0000600 *-irix6.5)
pauldc7a2bf2003-10-22 00:07:44 +0000601 opsys=irix
602 AC_DEFINE(IRIX_65,,IRIX 6.5)
603 ;;
paul7ea487b2003-03-17 02:05:07 +0000604esac
605
Paul Jakma62c9f502009-07-19 17:33:21 +0100606AC_SYS_LARGEFILE
607
paul7ea487b2003-03-17 02:05:07 +0000608dnl ---------------------
609dnl Integrated VTY option
610dnl ---------------------
611case "${enable_vtysh}" in
612 "yes") VTYSH="vtysh";
613 AC_DEFINE(VTYSH,,VTY shell)
gdtfc9d0742004-06-30 14:25:12 +0000614 AC_PATH_PROG(PERL, perl)
615dnl Vtysh uses libreadline, which looks for termcap functions at
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000616dnl configure time. We follow readlines search order.
gdtfc9d0742004-06-30 14:25:12 +0000617dnl The required procedures are in libtermcap on NetBSD, in
618dnl [TODO] on Linux, and in [TODO] on Solaris.
hassoc0689392005-08-25 12:00:58 +0000619 AC_CHECK_LIB(termcap, tputs, LIBREADLINE="$LIBREADLINE -ltermcap",
paula9694592005-08-25 14:50:05 +0000620 [AC_CHECK_LIB(tinfo, tputs, LIBREADLINE="$LIBREADLINE -ltinfo",
621 [AC_CHECK_LIB(curses, tputs, LIBREADLINE="$LIBREADLINE -lcurses",
622 [AC_CHECK_LIB(ncurses, tputs,
623 LIBREADLINE="$LIBREADLINE -lncurses")]
624 )]
625 )]
626 )
627 AC_CHECK_LIB(readline, main, LIBREADLINE="$LIBREADLINE -lreadline",,
628 "$LIBREADLINE")
paul7ea487b2003-03-17 02:05:07 +0000629 if test $ac_cv_lib_readline_main = no; then
gdtfc9d0742004-06-30 14:25:12 +0000630 AC_MSG_ERROR([vtysh needs libreadline but was not found and usable on your system.])
paul7ea487b2003-03-17 02:05:07 +0000631 fi
632 AC_CHECK_HEADER(readline/history.h)
633 if test $ac_cv_header_readline_history_h = no;then
634 AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
635 fi
paula9694592005-08-25 14:50:05 +0000636 AC_CHECK_LIB(readline, rl_completion_matches,
637 LIBREADLINE="$LIBREADLINE",, "$LIBREADLINE")
paul3d3de8c2003-05-23 10:33:49 +0000638 if test $ac_cv_lib_readline_rl_completion_matches = no; then
639 AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
640 fi
641 ;;
paul7ea487b2003-03-17 02:05:07 +0000642 "no" ) VTYSH="";;
643 * ) ;;
644esac
hassoc0689392005-08-25 12:00:58 +0000645AC_SUBST(LIBREADLINE)
David Wardf027d332012-04-30 11:36:15 -0400646AM_CONDITIONAL(VTYSH, test "x$VTYSH" = "xvtysh")
paul7ea487b2003-03-17 02:05:07 +0000647
648dnl ----------
649dnl PAM module
Denis Ovsienko61599282011-07-15 00:24:15 +0400650dnl
651dnl Quagga detects the PAM library it is built against by checking for a
652dnl functional pam_misc.h (Linux-PAM) or openpam.h (OpenPAM) header. pam_misc.h
653dnl is known to #include pam_appl.h, the standard header of a PAM library, and
654dnl openpam.h doesn't do that, although depends on the header too. Hence a
655dnl little assistance to AC_CHECK_HEADER is necessary for the proper detection
656dnl of OpenPAM.
paul7ea487b2003-03-17 02:05:07 +0000657dnl ----------
658if test "$with_libpam" = "yes"; then
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000659 AC_CHECK_HEADER([security/pam_misc.h],
660 [AC_DEFINE(HAVE_PAM_MISC_H,,Have pam_misc.h)
661 AC_DEFINE(PAM_CONV_FUNC,misc_conv,Have misc_conv)
662 pam_conv_func="misc_conv"
663 ],
664 [], QUAGGA_INCLUDES)
665 AC_CHECK_HEADER([security/openpam.h],
666 [AC_DEFINE(HAVE_OPENPAM_H,,Have openpam.h)
667 AC_DEFINE(PAM_CONV_FUNC,openpam_ttyconv,Have openpam_ttyconv)
668 pam_conv_func="openpam_ttyconv"
669 ],
Denis Ovsienko61599282011-07-15 00:24:15 +0400670 [], QUAGGA_INCLUDES[#include <security/pam_appl.h>])
paul24cd4352003-05-06 12:16:27 +0000671 if test -z "$ac_cv_header_security_pam_misc_h$ac_cv_header_security_openpam_h" ; then
672 AC_MSG_WARN([*** pam support will not be built ***])
673 with_libpam="no"
674 fi
675fi
676
677if test "$with_libpam" = "yes"; then
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000678dnl took this test from proftpds configure.in and suited to our needs
paul7ea487b2003-03-17 02:05:07 +0000679dnl -------------------------------------------------------------------------
680dnl
681dnl This next check looks funky due to a linker problem with some versions
682dnl of the PAM library. Prior to 0.72 release, the Linux PAM shared library
683dnl omitted requiring libdl linking information. PAM-0.72 or better ships
684dnl with RedHat 6.2 and Debian 2.2 or better.
685AC_CHECK_LIB(pam, pam_start,
paul24cd4352003-05-06 12:16:27 +0000686 [AC_CHECK_LIB(pam, $pam_conv_func,
paul7ea487b2003-03-17 02:05:07 +0000687 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
688 LIBPAM="-lpam"],
689 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
690 LIBPAM="-lpam -lpam_misc"]
691 )
692 ],
693
694 [AC_CHECK_LIB(pam, pam_end,
paul24cd4352003-05-06 12:16:27 +0000695 [AC_CHECK_LIB(pam, $pam_conv_func,
paula159ed92003-06-04 11:01:45 +0000696 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
paul7ea487b2003-03-17 02:05:07 +0000697 LIBPAM="-lpam -ldl"],
paula159ed92003-06-04 11:01:45 +0000698 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
paul7ea487b2003-03-17 02:05:07 +0000699 LIBPAM="-lpam -ldl -lpam_misc"]
700 )
701 ],AC_MSG_WARN([*** pam support will not be built ***]),
702 [-ldl])
703 ]
704)
705fi
706AC_SUBST(LIBPAM)
707
708dnl -------------------------------
709dnl Endian-ness check
710dnl -------------------------------
711AC_WORDS_BIGENDIAN
712
713dnl -------------------------------
714dnl check the size in byte of the C
715dnl -------------------------------
716dnl AC_CHECK_SIZEOF(char)
717dnl AC_CHECK_SIZEOF(int)
718dnl AC_CHECK_SIZEOF(short)
719dnl AC_CHECK_SIZEOF(long)
720
721dnl ----------------------------
722dnl check existance of functions
723dnl ----------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000724AC_FUNC_CHOWN
725AC_FUNC_FNMATCH
726AC_FUNC_FORK
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000727AC_FUNC_MEMCMP
728AC_FUNC_MKTIME
729AC_FUNC_STRFTIME
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000730AC_FUNC_STAT
731AC_FUNC_SELECT_ARGTYPES
732AC_FUNC_STRFTIME
Paul Jakmad46d2a22007-05-10 16:53:04 +0000733dnl Avoid AC_FUNC_STRNLEN because it pulls in AC_SYSTEM_EXTENSIONS which
734dnl can lead to strange side effects. So we just check for strnlen
735dnl directly, see below.
Paul Jakma2b5cb412007-05-10 17:05:16 +0000736dnl AC_FUNC_STRNLENdnl
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000737AC_FUNC_VPRINTF
738
739dnl -------------------------------
740dnl bgpd needs pow() and hence libm
741dnl -------------------------------
742TMPLIBS="$LIBS"
743AC_CHECK_HEADER([math.h],
744 [AC_CHECK_LIB([m], [pow],
745 [LIBM="-lm"
746 LIBS="$LIBS $LIBM"
747 AC_DEFINE(HAVE_LIBM,, Have libm)
748 AC_CHECK_FUNCS(pow,[],[LIBM=""])
749 ])
750])
751if test x"$LIBM" = x ; then
752 AC_MSG_WARN([Unable to find working pow function - bgpd may not link])
753fi
754LIBS="$TMPLIBS"
755AC_SUBST(LIBM)
756
757dnl ---------------
758dnl other functions
759dnl ---------------
760AC_CHECK_FUNCS([dup2 ftruncate getcwd gethostbyname getpagesize gettimeofday \
Paul Jakmad46d2a22007-05-10 16:53:04 +0000761 inet_ntoa inet_aton strnlen \
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000762 memchr memmove memset select socket \
763 strcasecmp strchr strcspn strdup strerror \
764 strncasecmp strndup strrchr strspn strstr \
765 strtol strtoul strlcat strlcpy \
766 daemon snprintf vsnprintf \
767 if_nametoindex if_indextoname getifaddrs \
768 uname fcntl])
769
paula159ed92003-06-04 11:01:45 +0000770AC_CHECK_FUNCS(setproctitle, ,
771 [AC_CHECK_LIB(util, setproctitle,
772 [LIBS="$LIBS -lutil"
773 AC_DEFINE(HAVE_SETPROCTITLE,, Have setproctitle)
774 ]
775 )
776 ]
777)
paul7ea487b2003-03-17 02:05:07 +0000778
779dnl ------------------------------------
780dnl Determine routing get and set method
781dnl ------------------------------------
782AC_MSG_CHECKING(zebra between kernel interface method)
783if test x"$opsys" = x"gnu-linux"; then
784 if test "${enable_netlink}" = "yes";then
785 AC_MSG_RESULT(netlink)
786 RT_METHOD=rt_netlink.o
787 AC_DEFINE(HAVE_NETLINK,,netlink)
788 netlink=yes
789 elif test "${enable_netlink}" = "no"; then
790 AC_MSG_RESULT(ioctl)
791 RT_METHOD=rt_ioctl.o
792 netlink=no
793 else
794 AC_MSG_RESULT(netlink)
795 RT_METHOD=rt_netlink.o
796 AC_DEFINE(HAVE_NETLINK,,netlink)
797 netlink=yes
798 fi
paul19877dd2004-05-11 10:49:35 +0000799elif test x"$opsys" = x"sol2-6";then
800 AC_MSG_RESULT(Route socket)
801 KERNEL_METHOD="kernel_socket.o"
802 RT_METHOD="rt_socket.o"
paulafd8a122005-03-12 06:36:10 +0000803elif test x"$opsys" = x"sol8";then
paul19877dd2004-05-11 10:49:35 +0000804 AC_MSG_RESULT(Route socket)
805 KERNEL_METHOD="kernel_socket.o"
806 RT_METHOD="rt_socket.o"
807elif test "$opsys" = "irix" ; then
808 AC_MSG_RESULT(Route socket)
809 KERNEL_METHOD="kernel_socket.o"
810 RT_METHOD="rt_socket.o"
paul7ea487b2003-03-17 02:05:07 +0000811else
paul19877dd2004-05-11 10:49:35 +0000812 AC_TRY_RUN([#include <errno.h>
paul7ea487b2003-03-17 02:05:07 +0000813#include <sys/types.h>
814#include <sys/socket.h>
815
816main ()
817{
818 int ac_sock;
819
820 ac_sock = socket (AF_ROUTE, SOCK_RAW, 0);
821 if (ac_sock < 0 && errno == EINVAL)
822 exit (1);
823 exit (0);
824}],
825 [KERNEL_METHOD=kernel_socket.o
826 RT_METHOD=rt_socket.o
827 AC_MSG_RESULT(socket)],
828 [RT_METHOD=rt_ioctl.o
829 AC_MSG_RESULT(ioctl)],
830 [KERNEL_METHOD=kernel_socket.o
831 RT_METHOD=rt_socket.o
832 AC_MSG_RESULT(socket)])
paul7ea487b2003-03-17 02:05:07 +0000833fi
834AC_SUBST(RT_METHOD)
835AC_SUBST(KERNEL_METHOD)
836AC_SUBST(OTHER_METHOD)
Avneesh Sachdev5adc2522012-11-13 22:48:59 +0000837AM_CONDITIONAL([HAVE_NETLINK], [test "x$netlink" = "xyes"])
paul7ea487b2003-03-17 02:05:07 +0000838
Paul Jakma238497f2007-08-07 18:49:18 +0000839dnl --------------------------
840dnl Determine IS-IS I/O method
841dnl --------------------------
David Lamparter745bf052010-02-02 21:49:35 +0100842AC_DEFINE(ISIS_METHOD_PFPACKET, 1, [ constant value for isis method pfpacket ])
843AC_DEFINE(ISIS_METHOD_DLPI, 2, [ constant value for isis method dlpi ])
844AC_DEFINE(ISIS_METHOD_BPF, 3, [ constant value for isis method bpf ])
Paul Jakma238497f2007-08-07 18:49:18 +0000845AC_CHECK_HEADER(net/bpf.h)
846AC_CHECK_HEADER(sys/dlpi.h)
847AC_MSG_CHECKING(zebra IS-IS I/O method)
848if test x"$opsys" = x"gnu-linux"; then
849 AC_MSG_RESULT(pfpacket)
David Lamparter745bf052010-02-02 21:49:35 +0100850 ISIS_METHOD_MACRO="ISIS_METHOD_PFPACKET"
Paul Jakma238497f2007-08-07 18:49:18 +0000851elif test x"$opsys" = x"sol2-6" -o x"$opsys" = x"sol8"; then
852 AC_MSG_RESULT(DLPI)
David Lamparter745bf052010-02-02 21:49:35 +0100853 ISIS_METHOD_MACRO="ISIS_METHOD_DLPI"
Paul Jakma238497f2007-08-07 18:49:18 +0000854else
855 if test $ac_cv_header_net_bpf_h = no; then
856 if test $ac_cv_header_sys_dlpi_h = no; then
857 AC_MSG_RESULT(none)
858 AC_MSG_WARN([*** IS-IS support will not be built ***])
859 ISISD=""
860 else
861 AC_MSG_RESULT(DLPI)
862 fi
David Lamparter745bf052010-02-02 21:49:35 +0100863 ISIS_METHOD_MACRO="ISIS_METHOD_DLPI"
Paul Jakma238497f2007-08-07 18:49:18 +0000864 else
865 AC_MSG_RESULT(BPF)
David Lamparter745bf052010-02-02 21:49:35 +0100866 ISIS_METHOD_MACRO="ISIS_METHOD_BPF"
Paul Jakma238497f2007-08-07 18:49:18 +0000867 fi
868fi
David Lamparter745bf052010-02-02 21:49:35 +0100869AC_DEFINE_UNQUOTED(ISIS_METHOD, $ISIS_METHOD_MACRO, [ selected method for isis, == one of the constants ])
Paul Jakma238497f2007-08-07 18:49:18 +0000870
ajsb99760a2005-01-04 16:24:43 +0000871dnl ------------------------------------
872dnl check for broken CMSG_FIRSTHDR macro
873dnl ------------------------------------
gdt6c200462005-01-04 17:02:48 +0000874AC_MSG_CHECKING(for broken CMSG_FIRSTHDR)
hasso5b087522005-04-03 23:46:37 +0000875AC_RUN_IFELSE([AC_LANG_SOURCE([[
ajsb99760a2005-01-04 16:24:43 +0000876#ifdef SUNOS_5
877#define _XPG4_2
878#define __EXTENSIONS__
879#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000880#ifdef HAVE_STDLIB_H
881# include <stdlib.h>
882#endif
883#ifdef HAVE_SYS_TYPES_H
ajsb99760a2005-01-04 16:24:43 +0000884#include <sys/types.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000885#endif
886#ifdef HAVE_SYS_SOCKET_H
ajsb99760a2005-01-04 16:24:43 +0000887#include <sys/socket.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000888#endif
ajsb99760a2005-01-04 16:24:43 +0000889
890main()
891{
892 struct msghdr msg;
893 char buf[4];
894
895 msg.msg_control = buf;
896 msg.msg_controllen = 0;
897
898 if (CMSG_FIRSTHDR(&msg) != NULL)
899 exit(0);
900 exit (1);
hasso5b087522005-04-03 23:46:37 +0000901}]])],[AC_MSG_RESULT(yes - using workaround) AC_DEFINE(HAVE_BROKEN_CMSG_FIRSTHDR,,Broken CMSG_FIRSTHDR)],
hassod33e8d72005-04-03 13:07:21 +0000902[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
ajsb99760a2005-01-04 16:24:43 +0000903
paul7ea487b2003-03-17 02:05:07 +0000904dnl ------------------------------
905dnl check kernel route read method
906dnl ------------------------------
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500907AC_CACHE_CHECK([route read method], [quagga_cv_rtread_method],
908[if test "x$netlink" = xyes; then
909 quagga_cv_rtread_method="netlink"
paul7ea487b2003-03-17 02:05:07 +0000910else
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500911for quagga_cv_rtread_method in /proc/net/route /dev/ip /dev/null;
paul7ea487b2003-03-17 02:05:07 +0000912do
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500913 test x`ls $quagga_cv_rtread_method 2>/dev/null` = x"$quagga_cv_rtread_method" && break
paul7ea487b2003-03-17 02:05:07 +0000914done
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500915case $quagga_cv_rtread_method in
916 "/proc/net/route") quagga_cv_rtread_method="proc";;
paul9c30ab62003-07-08 08:36:17 +0000917 "/dev/ip")
918 case "$host" in
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500919 *-freebsd*) quagga_cv_rtread_method="sysctl";;
920 *) quagga_cv_rtread_method="getmsg";;
paul9c30ab62003-07-08 08:36:17 +0000921 esac;;
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500922 *)
923 quagga_cv_rtread_method="sysctl";;
paul7ea487b2003-03-17 02:05:07 +0000924esac
925fi])
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500926RTREAD_METHOD=rtread_${quagga_cv_rtread_method}.o
paul7ea487b2003-03-17 02:05:07 +0000927AC_SUBST(RTREAD_METHOD)
928
929dnl -----------------------------
930dnl check interface lookup method
931dnl -----------------------------
paul19877dd2004-05-11 10:49:35 +0000932IOCTL_METHOD=ioctl.o
paul7ea487b2003-03-17 02:05:07 +0000933AC_MSG_CHECKING(interface looking up method)
934if test "$netlink" = yes; then
935 AC_MSG_RESULT(netlink)
936 IF_METHOD=if_netlink.o
paul19877dd2004-05-11 10:49:35 +0000937elif test "$opsys" = "sol2-6";then
938 AC_MSG_RESULT(Solaris GIF)
939 IF_METHOD=if_ioctl.o
paulafd8a122005-03-12 06:36:10 +0000940elif test "$opsys" = "sol8";then
paul19877dd2004-05-11 10:49:35 +0000941 AC_MSG_RESULT(Solaris GLIF)
942 IF_METHOD=if_ioctl_solaris.o
943 IOCTL_METHOD=ioctl_solaris.o
944elif test "$opsys" = "irix" ; then
945 AC_MSG_RESULT(IRIX)
946 IF_METHOD=if_ioctl.o
947elif test "$opsys" = "openbsd";then
948 AC_MSG_RESULT(openbsd)
949 IF_METHOD=if_ioctl.o
950elif grep NET_RT_IFLIST /usr/include/sys/socket.h >/dev/null 2>&1; then
951 AC_MSG_RESULT(sysctl)
paul7ea487b2003-03-17 02:05:07 +0000952 IF_METHOD=if_sysctl.o
953 AC_DEFINE(HAVE_NET_RT_IFLIST,,NET_RT_IFLIST)
paul19877dd2004-05-11 10:49:35 +0000954else
paul7ea487b2003-03-17 02:05:07 +0000955 AC_MSG_RESULT(ioctl)
956 IF_METHOD=if_ioctl.o
paul7ea487b2003-03-17 02:05:07 +0000957fi
958AC_SUBST(IF_METHOD)
paul19877dd2004-05-11 10:49:35 +0000959AC_SUBST(IOCTL_METHOD)
paul7ea487b2003-03-17 02:05:07 +0000960
paul42c98192005-05-07 02:22:51 +0000961dnl ---------------------------------------------------------------
962dnl figure out how to specify an interface in multicast sockets API
963dnl ---------------------------------------------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000964AC_CHECK_MEMBERS([struct ip_mreqn.imr_ifindex], [], [], QUAGGA_INCLUDES)
paul42c98192005-05-07 02:22:51 +0000965
966AC_MSG_CHECKING([for BSD struct ip_mreq hack])
967AC_TRY_COMPILE([#ifdef HAVE_SYS_PARAM_H
968#include <sys/param.h>
Brad Smith1b54f792012-08-09 00:44:28 +0000969#endif],[#if (defined(__FreeBSD__) && ((__FreeBSD_version >= 500022 && __FreeBSD_version < 700000) || (__FreeBSD_version < 500000 && __FreeBSD_version >= 440000))) || (defined(__NetBSD__) && defined(__NetBSD_Version__) && __NetBSD_Version__ >= 106010000) || defined(__OpenBSD__)
paul42c98192005-05-07 02:22:51 +0000970 return (0);
971#else
972 #error No support for BSD struct ip_mreq hack detected
973#endif],[AC_MSG_RESULT(yes)
974AC_DEFINE(HAVE_BSD_STRUCT_IP_MREQ_HACK,,[Can pass ifindex in struct ip_mreq])],
975AC_MSG_RESULT(no))
976
Dmitrij Tejblum10d04cd2011-08-22 11:39:35 +0400977AC_MSG_CHECKING([for RFC3678 protocol-independed API])
978AC_TRY_COMPILE([
979#include <sys/types.h>
980#include <netinet/in.h>
981], [struct group_req gr; int sock; setsockopt(sock, IPPROTO_IP, MCAST_JOIN_GROUP, (void*)&gr, sizeof(gr));
982], [AC_MSG_RESULT(yes)
983AC_DEFINE(HAVE_RFC3678,1,[Have RFC3678 protocol-independed API])],
984AC_MSG_RESULT(no))
985
Andrew J. Schorrc543a172008-01-10 15:24:32 +0000986dnl ---------------------------------------------------------------
987dnl figure out how to check link-state
988dnl ---------------------------------------------------------------
Andrew J. Schorr6418bed2008-01-11 16:33:59 +0000989AC_CHECK_HEADER([net/if.h],
990 [AC_CHECK_HEADER( [net/if_media.h],
991 [m4_define([LINK_DETECT_INCLUDES],
992 QUAGGA_INCLUDES
993 [#include <net/if_media.h>
994 ])
995 AC_CHECK_MEMBERS( [struct ifmediareq.ifm_status],
996 AC_DEFINE(HAVE_BSD_LINK_DETECT,,[BSD link-detect]),
997 [], LINK_DETECT_INCLUDES)],
998 [],
999 QUAGGA_INCLUDES)],
1000 [], QUAGGA_INCLUDES )
Andrew J. Schorrc543a172008-01-10 15:24:32 +00001001
Doug VanLeuven9234b382012-10-10 16:12:32 -07001002dnl ---------------------------------------------------------------
1003dnl Additional, newer way to check link-state using ifi_link_state.
1004dnl Not available in all BSD's when ifmediareq available
1005dnl ---------------------------------------------------------------
1006AC_CHECK_HEADER([net/if.h],
1007 AC_CHECK_MEMBERS([struct if_data.ifi_link_state],
1008 AC_DEFINE(HAVE_BSD_IFI_LINK_STATE,,[BSD ifi_link_state available]),
1009 [], QUAGGA_INCLUDES),
1010 ,)
1011
Paul Jakma0df7c912008-07-21 21:02:49 +00001012dnl ------------------------
1013dnl TCP_MD5SIG socket option
1014dnl ------------------------
1015
1016AC_CHECK_HEADER([netinet/tcp.h],
1017 [m4_define([MD5_INCLUDES],
1018 QUAGGA_INCLUDES
1019 [#include <netinet/tcp.h>
1020 ])
1021 AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)],
1022 [],
1023 QUAGGA_INCLUDES)
1024if test $ac_cv_have_decl_TCP_MD5SIG = no; then
1025 AC_CHECK_HEADER([linux/tcp.h],
1026 [m4_define([MD5_INCLUDES],
1027 QUAGGA_INCLUDES
1028 [#include <linux/tcp.h>
1029 ])
1030 AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)])
1031fi
1032
paul7ea487b2003-03-17 02:05:07 +00001033dnl -----------------------
1034dnl check proc file system.
1035dnl -----------------------
Stephen Hemmingercadfb2c2008-08-16 18:03:44 +01001036if test "$netlink" != yes; then
1037 if test -r /proc/net/dev; then
1038 AC_DEFINE(HAVE_PROC_NET_DEV,,/proc/net/dev)
1039 IF_PROC=if_proc.o
1040 fi
1041 if test -r /proc/net/if_inet6; then
1042 AC_DEFINE(HAVE_PROC_NET_IF_INET6,,/proc/net/if_inet6)
1043 IF_PROC=if_proc.o
1044 fi
paul7ea487b2003-03-17 02:05:07 +00001045fi
1046AC_SUBST(IF_PROC)
1047
1048dnl -----------------------------
1049dnl check ipforward detect method
1050dnl -----------------------------
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001051AC_CACHE_CHECK([ipforward method], [quagga_cv_ipforward_method],
David Lamparterca9f3422009-09-16 02:11:00 +02001052[if test x$cross_compiling = xyes; then
1053 if test x"$opsys" = x"gnu-linux"; then
1054 quagga_cv_ipforward_method=/proc/net/snmp
1055 else
1056 quagga_cv_ipforward_method=/dev/ip
1057 fi
1058else
1059 for quagga_cv_ipforward_method in /proc/net/snmp /dev/ip /dev/null;
1060 do
1061 test x`ls $quagga_cv_ipforward_method 2>/dev/null` = x"$quagga_cv_ipforward_method" && break
1062 done
1063fi
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001064case $quagga_cv_ipforward_method in
1065 "/proc/net/snmp") quagga_cv_ipforward_method="proc";;
paul7ea487b2003-03-17 02:05:07 +00001066 "/dev/ip")
1067 case "$host" in
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001068 *-nec-sysv4*) quagga_cv_ipforward_method="ews";;
1069 *-freebsd*) quagga_cv_ipforward_method="sysctl";;
1070 *) quagga_cv_ipforward_method="solaris";;
paul7ea487b2003-03-17 02:05:07 +00001071 esac;;
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001072 *) quagga_cv_ipforward_method="sysctl";;
paul7ea487b2003-03-17 02:05:07 +00001073esac])
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001074IPFORWARD=ipforward_${quagga_cv_ipforward_method}.o
paul7ea487b2003-03-17 02:05:07 +00001075AC_SUBST(IPFORWARD)
1076
1077AC_CHECK_FUNCS(getaddrinfo, [have_getaddrinfo=yes], [have_getaddrinfo=no])
1078
1079dnl ----------
1080dnl IPv6 check
1081dnl ----------
1082AC_MSG_CHECKING(whether does this OS have IPv6 stack)
1083if test "${enable_ipv6}" = "no"; then
1084 AC_MSG_RESULT(disabled)
1085else
1086dnl ----------
1087dnl INRIA IPv6
1088dnl ----------
paula159ed92003-06-04 11:01:45 +00001089 if grep IPV6_INRIA_VERSION /usr/include/netinet/in.h >/dev/null 2>&1; then
1090 zebra_cv_ipv6=yes
1091 AC_DEFINE(HAVE_IPV6,1,INRIA IPv6)
1092 AC_DEFINE(INRIA_IPV6,1,INRIA IPv6)
1093 RIPNGD="ripngd"
1094 OSPF6D="ospf6d"
1095 LIB_IPV6=""
1096 AC_MSG_RESULT(INRIA IPv6)
paul7ea487b2003-03-17 02:05:07 +00001097dnl ---------
1098dnl KAME IPv6
1099dnl ---------
paula159ed92003-06-04 11:01:45 +00001100 elif grep WIDE /usr/include/netinet6/in6.h >/dev/null 2>&1; then
1101 zebra_cv_ipv6=yes
1102 AC_DEFINE(HAVE_IPV6,1,KAME IPv6)
1103 AC_DEFINE(KAME,1,KAME IPv6)
1104 RIPNGD="ripngd"
1105 OSPF6D="ospf6d"
1106 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
paul7ea487b2003-03-17 02:05:07 +00001107 LIB_IPV6="-L/usr/local/v6/lib -linet6"
paula159ed92003-06-04 11:01:45 +00001108 fi
1109 AC_MSG_RESULT(KAME)
hasso71c0fb52003-05-25 20:18:13 +00001110dnl -------------------------
1111dnl MUSICA IPv6
1112dnl default host check
1113dnl It is not used by Kheops
1114dnl -------------------------
paula159ed92003-06-04 11:01:45 +00001115 elif grep MUSICA /usr/include6/netinet6/in6.h >/dev/null 2>&1; then
1116 zebra_cv_ipv6=yes
1117 AC_DEFINE(HAVE_IPV6,1,Musicia IPv6)
1118 AC_DEFINE(MUSICA,1,Musica IPv6 stack)
1119 AC_DEFINE(KAME,1,KAME IPv6 stack)
1120 RIPNGD="ripngd"
1121 OSPF6D="ospf6d"
1122 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
hasso71c0fb52003-05-25 20:18:13 +00001123 LIB_IPV6="-L/usr/local/v6/lib -linet6"
paula159ed92003-06-04 11:01:45 +00001124 fi
1125 AC_MSG_RESULT(MUSICA)
paul7ea487b2003-03-17 02:05:07 +00001126dnl ---------
1127dnl NRL check
1128dnl ---------
paula159ed92003-06-04 11:01:45 +00001129 elif grep NRL /usr/include/netinet6/in6.h >/dev/null 2>&1; then
1130 zebra_cv_ipv6=yes
1131 AC_DEFINE(HAVE_IPV6,1,NRL IPv6)
1132 AC_DEFINE(NRL,1,NRL)
1133 RIPNGD="ripngd"
1134 OSPF6D="ospf6d"
1135 if test x"$opsys" = x"bsdi";then
paul7ea487b2003-03-17 02:05:07 +00001136 AC_DEFINE(BSDI_NRL,,BSDI)
1137 AC_MSG_RESULT(BSDI_NRL)
paula159ed92003-06-04 11:01:45 +00001138 else
paul7ea487b2003-03-17 02:05:07 +00001139 AC_MSG_RESULT(NRL)
paula159ed92003-06-04 11:01:45 +00001140 fi
paul19877dd2004-05-11 10:49:35 +00001141dnl ------------------------------------
1142dnl Solaris 9, 10 and potentially higher
1143dnl ------------------------------------
paulafd8a122005-03-12 06:36:10 +00001144 elif test x"$opsys" = x"sol8"; then
paul19877dd2004-05-11 10:49:35 +00001145 zebra_cv_ipv6=yes;
1146 AC_DEFINE(HAVE_IPV6, 1, IPv6)
1147 AC_DEFINE(SOLARIS_IPV6, 1, Solaris IPv6)
1148 RIPNGD="ripngd"
1149 OSPF6D="ospf6d"
1150 AC_MSG_RESULT(Solaris IPv6)
paul7ea487b2003-03-17 02:05:07 +00001151dnl ----------
1152dnl Linux IPv6
1153dnl ----------
paula159ed92003-06-04 11:01:45 +00001154 elif test "${enable_ipv6}" = "yes"; then
1155 AC_EGREP_CPP(yes, [
1156 #include <linux/version.h>
1157 /* 2.1.128 or later */
1158 #if LINUX_VERSION_CODE >= 0x020180
1159 yes
1160 #endif],
1161 [zebra_cv_ipv6=yes
1162 zebra_cv_linux_ipv6=yes
1163 AC_MSG_RESULT(Linux IPv6)])
1164 else
1165 if test x`ls /proc/net/ipv6_route 2>/dev/null` = x"/proc/net/ipv6_route"
1166 then
paul7ea487b2003-03-17 02:05:07 +00001167 zebra_cv_ipv6=yes
1168 zebra_cv_linux_ipv6=yes
1169 AC_MSG_RESULT(Linux IPv6)
paula159ed92003-06-04 11:01:45 +00001170 fi
1171 fi
paul7ea487b2003-03-17 02:05:07 +00001172
paula159ed92003-06-04 11:01:45 +00001173 if test "$zebra_cv_linux_ipv6" = "yes";then
hasso850d39f2005-06-30 13:52:20 +00001174 AC_MSG_CHECKING(whether libc has IPv6 support)
1175 AC_TRY_LINK([#include <netinet/in.h>
1176 ],[ int a; a = (int) in6addr_any.s6_addr[0]; if (a != 12345) return a; ],
1177 [AC_MSG_RESULT(yes)
1178 zebra_cv_ipv6=yes
1179 zebra_cv_linux_ipv6=yes],
1180 [AC_MSG_RESULT(no)
1181 zebra_cv_ipv6=no
1182 zebra_cv_linux_ipv6=no])
1183 fi
1184
1185 if test "$zebra_cv_linux_ipv6" = "yes";then
paula159ed92003-06-04 11:01:45 +00001186 AC_MSG_CHECKING(for GNU libc >= 2.1)
1187 AC_DEFINE(HAVE_IPV6,1,Linux IPv6)
1188 AC_EGREP_CPP(yes, [
paul7ea487b2003-03-17 02:05:07 +00001189#include <features.h>
1190#if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
1191 yes
paula159ed92003-06-04 11:01:45 +00001192#endif],
1193 [glibc=yes
1194 AC_DEFINE(LINUX_IPV6,1,Linux IPv6 stack)
1195 AC_MSG_RESULT(yes)],
1196 AC_MSG_RESULT(no)
1197 )
1198 RIPNGD="ripngd"
1199 OSPF6D="ospf6d"
1200 if test "$glibc" != "yes"; then
paul7ea487b2003-03-17 02:05:07 +00001201 INCLUDES="-I/usr/inet6/include"
1202 if test x`ls /usr/inet6/lib/libinet6.a 2>/dev/null` != x;then
1203 LIB_IPV6="-L/usr/inet6/lib -linet6"
1204 fi
paula159ed92003-06-04 11:01:45 +00001205 fi
1206 fi
paul7ea487b2003-03-17 02:05:07 +00001207
1208dnl -----------------------
1209dnl Set IPv6 related values
1210dnl -----------------------
paula159ed92003-06-04 11:01:45 +00001211 LIBS="$LIB_IPV6 $LIBS"
1212 AC_SUBST(LIB_IPV6)
paul7ea487b2003-03-17 02:05:07 +00001213
paula159ed92003-06-04 11:01:45 +00001214 if test x"$RIPNGD" = x""; then
1215 AC_MSG_RESULT(IPv4 only)
1216 fi
paul7ea487b2003-03-17 02:05:07 +00001217fi
1218
gdtfa3232e2003-12-03 17:52:30 +00001219dnl ------------------
1220dnl IPv6 header checks
1221dnl ------------------
1222if test "x${zebra_cv_ipv6}" = "xyes"; then
1223AC_CHECK_HEADERS([netinet6/in6.h netinet/in6_var.h netinet/icmp6.h \
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001224 netinet6/in6_var.h netinet6/nd6.h], [], [],
1225 QUAGGA_INCLUDES)
gdtfa3232e2003-12-03 17:52:30 +00001226fi
1227
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001228m4_define([QUAGGA_INCLUDES],dnl
1229QUAGGA_INCLUDES
1230[#if HAVE_NETINET6_IN6_H
1231#include <netinet6/in6.h>
1232#endif
1233#if HAVE_NETINET_IN6_VAR_H
1234#include <netinet/in6_var.h>
1235#endif
1236#if HAVE_NETINET_ICMP6_H
1237# include <netinet/icmp6.h>
1238#endif
1239#if HAVE_NETINET6_IN6_VAR_H
1240# include <netinet6/in6_var.h>
1241#endif
1242#if HAVE_NETINET6_ND6_H
Hasso Tepperfbf24542007-06-25 19:30:59 +00001243# include <netinet6/nd6.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001244#endif
1245])dnl
1246
Joakim Tjernlundcbcd9bf2009-02-16 09:40:39 +01001247dnl disable doc check
1248if test "${enable_doc}" = "no";then
1249 DOC=""
1250else
1251 DOC="doc"
1252fi
1253
David Lampartere2b15802012-11-03 09:14:29 -07001254dnl can't use TESTS as name, that's special with automake
1255if test "${enable_tests}" = "no";then
1256 BUILD_TESTS=""
1257else
1258 BUILD_TESTS="tests"
1259fi
1260
paul7ea487b2003-03-17 02:05:07 +00001261dnl --------------------
1262dnl Daemon disable check
1263dnl --------------------
1264if test "${enable_zebra}" = "no";then
1265 ZEBRA=""
1266else
1267 ZEBRA="zebra"
1268fi
David Wardf027d332012-04-30 11:36:15 -04001269AM_CONDITIONAL(ZEBRA, test "x$ZEBRA" = "xzebra")
paul7ea487b2003-03-17 02:05:07 +00001270
1271if test "${enable_bgpd}" = "no";then
1272 BGPD=""
1273else
1274 BGPD="bgpd"
1275fi
David Wardf027d332012-04-30 11:36:15 -04001276AM_CONDITIONAL(BGPD, test "x$BGPD" = "xbgpd")
paul7ea487b2003-03-17 02:05:07 +00001277
1278if test "${enable_ripd}" = "no";then
1279 RIPD=""
1280else
1281 RIPD="ripd"
1282fi
David Wardf027d332012-04-30 11:36:15 -04001283AM_CONDITIONAL(RIPD, test "x$RIPD" = "xripd")
paul7ea487b2003-03-17 02:05:07 +00001284
1285if test "${enable_ospfd}" = "no";then
1286 OSPFD=""
1287else
1288 OSPFD="ospfd"
1289fi
David Wardf027d332012-04-30 11:36:15 -04001290AM_CONDITIONAL(OSPFD, test "x$OSPFD" = "xospfd")
paul7ea487b2003-03-17 02:05:07 +00001291
Paul Jakma57345092011-12-25 17:52:09 +01001292if test "${enable_babeld}" = "no";then
1293 BABELD=""
1294else
1295 BABELD="babeld"
1296fi
David Wardf027d332012-04-30 11:36:15 -04001297AM_CONDITIONAL(BABELD, test "x$BABELD" = "xbabeld")
Paul Jakma57345092011-12-25 17:52:09 +01001298
ajsd0199432004-12-22 14:03:52 +00001299if test "${enable_watchquagga}" = "no";then
1300 WATCHQUAGGA=""
1301else
1302 WATCHQUAGGA="watchquagga"
1303fi
David Wardf027d332012-04-30 11:36:15 -04001304AM_CONDITIONAL(WATCHQUAGGA, test "x$WATCHQUAGGA" = "xwatchquagga")
ajsd0199432004-12-22 14:03:52 +00001305
paul1ef74ef2003-03-21 15:16:05 +00001306OSPFCLIENT=""
Greg Troxel0d51c7e2011-03-24 10:19:43 -04001307if test "${enable_opaque_lsa}" != "no"; then
paul1ef74ef2003-03-21 15:16:05 +00001308 if test "${enable_ospfapi}" != "no";then
paul9a569842003-03-28 01:45:13 +00001309 AC_DEFINE(SUPPORT_OSPF_API,,OSPFAPI)
paul1ef74ef2003-03-21 15:16:05 +00001310
1311 if test "${enable_ospfclient}" != "no";then
1312 OSPFCLIENT="ospfclient"
1313 fi
1314 fi
1315
paul7ea487b2003-03-17 02:05:07 +00001316fi
David Wardf027d332012-04-30 11:36:15 -04001317AM_CONDITIONAL(OSPFCLIENT, test "x$OSPFCLIENT" = "xospfclient")
paul7ea487b2003-03-17 02:05:07 +00001318
1319case "${enable_ripngd}" in
1320 "yes") RIPNGD="ripngd";;
1321 "no" ) RIPNGD="";;
1322 * ) ;;
1323esac
David Wardf027d332012-04-30 11:36:15 -04001324AM_CONDITIONAL(RIPNGD, test "x$RIPNGD" = "xripngd")
paul7ea487b2003-03-17 02:05:07 +00001325
1326case "${enable_ospf6d}" in
1327 "yes") OSPF6D="ospf6d";;
1328 "no" ) OSPF6D="";;
1329 * ) ;;
1330esac
David Wardf027d332012-04-30 11:36:15 -04001331AM_CONDITIONAL(OSPF6D, test "x$OSPF6D" = "xospf6d")
paul7ea487b2003-03-17 02:05:07 +00001332
jardin9e867fe2003-12-23 08:56:18 +00001333case "${enable_isisd}" in
1334 "yes") ISISD="isisd";;
1335 "no" ) ISISD="";;
hassoae399ab2004-09-13 20:22:18 +00001336 * ) ;;
jardin9e867fe2003-12-23 08:56:18 +00001337esac
David Wardf027d332012-04-30 11:36:15 -04001338AM_CONDITIONAL(ISISD, test "x$ISISD" = "xisisd")
jardin9e867fe2003-12-23 08:56:18 +00001339
Greg Troxel97cee872007-08-02 13:36:56 +00001340# XXX Perhaps auto-enable on Solaris, but that's messy for cross builds.
1341case "${enable_solaris}" in
1342 "yes") SOLARIS="solaris";;
1343 "no" ) SOLARIS="";;
1344 * ) ;;
1345esac
1346
paul7ea487b2003-03-17 02:05:07 +00001347if test "${enable_bgp_announce}" = "no";then
Paul Jakma750e8142008-07-22 21:11:48 +00001348 AC_DEFINE(DISABLE_BGP_ANNOUNCE,1,Disable BGP installation to zebra)
1349else
1350 AC_DEFINE(DISABLE_BGP_ANNOUNCE,0,Disable BGP installation to zebra)
paul7ea487b2003-03-17 02:05:07 +00001351fi
1352
Joakim Tjernlundcbcd9bf2009-02-16 09:40:39 +01001353AC_SUBST(DOC)
David Lampartere2b15802012-11-03 09:14:29 -07001354AC_SUBST(BUILD_TESTS)
paul7ea487b2003-03-17 02:05:07 +00001355AC_SUBST(ZEBRA)
1356AC_SUBST(BGPD)
1357AC_SUBST(RIPD)
1358AC_SUBST(RIPNGD)
1359AC_SUBST(OSPFD)
1360AC_SUBST(OSPF6D)
Paul Jakma57345092011-12-25 17:52:09 +01001361AC_SUBST(BABELD)
ajsd0199432004-12-22 14:03:52 +00001362AC_SUBST(WATCHQUAGGA)
jardin9e867fe2003-12-23 08:56:18 +00001363AC_SUBST(ISISD)
Greg Troxel97cee872007-08-02 13:36:56 +00001364AC_SUBST(SOLARIS)
paul7ea487b2003-03-17 02:05:07 +00001365AC_SUBST(VTYSH)
1366AC_SUBST(INCLUDES)
1367AC_SUBST(CURSES)
1368AC_SUBST(OSPFCLIENT)
paul1ef74ef2003-03-21 15:16:05 +00001369AC_SUBST(OSPFAPI)
paul7ea487b2003-03-17 02:05:07 +00001370AC_CHECK_LIB(c, inet_ntop, [AC_DEFINE(HAVE_INET_NTOP,,inet_ntop)])
1371AC_CHECK_LIB(c, inet_pton, [AC_DEFINE(HAVE_INET_PTON,,inet_pton)])
1372AC_CHECK_LIB(crypt, crypt)
1373AC_CHECK_LIB(resolv, res_init)
paul7ea487b2003-03-17 02:05:07 +00001374
1375dnl ---------------------------------------------------
1376dnl BSD/OS 4.1 define inet_XtoY function as __inet_XtoY
1377dnl ---------------------------------------------------
paula159ed92003-06-04 11:01:45 +00001378AC_CHECK_FUNC(__inet_ntop, AC_DEFINE(HAVE_INET_NTOP,,__inet_ntop))
1379AC_CHECK_FUNC(__inet_pton, AC_DEFINE(HAVE_INET_PTON,,__inet_pton))
1380AC_CHECK_FUNC(__inet_aton, AC_DEFINE(HAVE_INET_ATON,,__inet_aton))
paul7ea487b2003-03-17 02:05:07 +00001381
1382dnl ---------------------------
Jeremy Jackson25f45882009-01-12 16:06:12 -05001383dnl check system has PCRE regexp
1384dnl ---------------------------
1385if test "x$enable_pcreposix" = "xyes"; then
1386 AC_CHECK_LIB(pcreposix, pcreposix_regexec, ,[enable_pcreposix=no
1387 AC_MSG_WARN([*** falling back to other regex library ***]) ])
1388fi
1389
1390if test "x$enable_pcreposix" != "xyes"; then
1391dnl ---------------------------
paul7ea487b2003-03-17 02:05:07 +00001392dnl check system has GNU regexp
1393dnl ---------------------------
Jeremy Jackson25f45882009-01-12 16:06:12 -05001394AC_MSG_CHECKING(whether system has GNU regex)
paul7ea487b2003-03-17 02:05:07 +00001395AC_CHECK_LIB(c, regexec,
1396[AC_DEFINE(HAVE_GNU_REGEX,,GNU regexp library)
1397 LIB_REGEX=""],
1398[LIB_REGEX="regex.o"])
Jeremy Jackson25f45882009-01-12 16:06:12 -05001399fi
1400AC_SUBST(HAVE_LIBPCREPOSIX)
paul7ea487b2003-03-17 02:05:07 +00001401AC_SUBST(LIB_REGEX)
1402
1403dnl ------------------
paulb1fc9ac2006-01-31 10:09:27 +00001404dnl check Net-SNMP library
paul7ea487b2003-03-17 02:05:07 +00001405dnl ------------------
Vincent Bernatd6be5fb2012-05-24 09:44:43 +02001406if test "${enable_snmp}" != ""; then
Vincent Bernat08d7f652012-05-22 22:29:17 +02001407 AC_PATH_TOOL([NETSNMP_CONFIG], [net-snmp-config], [no])
1408 if test x"$NETSNMP_CONFIG" = x"no"; then
1409 AC_MSG_ERROR([--enable-snmp given but unable to find net-snmp-config])
1410 fi
1411 LIBS="$LIBS `${NETSNMP_CONFIG} --agent-libs`"
1412 CFLAGS="`${NETSNMP_CONFIG} --base-cflags` $CFLAGS"
1413 AC_MSG_CHECKING([whether we can link to Net-SNMP])
1414 AC_LINK_IFELSE([AC_LANG_PROGRAM([
1415int main(void);
1416],
1417[
1418{
1419 return 0;
1420}
1421])],[AC_MSG_RESULT(yes)],[
1422 AC_MSG_RESULT(no)
1423 AC_MSG_ERROR([--enable-snmp given but not usable])])
1424 AC_DEFINE(HAVE_SNMP,,SNMP)
Vincent Bernatd6be5fb2012-05-24 09:44:43 +02001425 case "${enable_snmp}" in
1426 yes)
1427 SNMP_METHOD=agentx
1428 ;;
1429 smux|agentx)
1430 SNMP_METHOD="${enable_snmp}"
1431 ;;
1432 *)
1433 AC_MSG_ERROR([--enable-snmp given with an unknown method (${enable_snmp}). Use smux or agentx])
1434 ;;
1435 esac
1436 AH_TEMPLATE([SNMP_SMUX], [Use SNMP SMUX to interface with snmpd])
1437 AH_TEMPLATE([SNMP_AGENTX], [Use SNMP AgentX to interface with snmpd])
1438 AC_DEFINE_UNQUOTED(AS_TR_CPP(SNMP_${SNMP_METHOD}),,SNMP method to interface with snmpd)
paul7ea487b2003-03-17 02:05:07 +00001439fi
1440
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001441dnl ---------------------------
1442dnl sockaddr and netinet checks
1443dnl ---------------------------
1444AC_CHECK_TYPES([struct sockaddr, struct sockaddr_in,
1445 struct sockaddr_in6, struct sockaddr_un, struct sockaddr_dl,
1446 socklen_t,
1447 struct ifaliasreq, struct if6_aliasreq, struct in6_aliasreq,
1448 struct nd_opt_adv_interval, struct rt_addrinfo,
Paul Jakma11770e12007-06-22 16:14:42 +00001449 struct nd_opt_homeagent_info, struct nd_opt_adv_interval],
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001450 [], [], QUAGGA_INCLUDES)
paul7ea487b2003-03-17 02:05:07 +00001451
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001452AC_CHECK_MEMBERS([struct sockaddr.sa_len,
1453 struct sockaddr_in.sin_len, struct sockaddr_un.sun_len,
1454 struct sockaddr_in6.sin6_scope_id,
1455 struct if6_aliasreq.ifra_lifetime,
1456 struct nd_opt_adv_interval.nd_opt_ai_type],
1457 [], [], QUAGGA_INCLUDES)
hasso71c0fb52003-05-25 20:18:13 +00001458
paul7ea487b2003-03-17 02:05:07 +00001459dnl ---------------------------
Paul Jakma11770e12007-06-22 16:14:42 +00001460dnl IRDP/pktinfo/icmphdr checks
paul7ea487b2003-03-17 02:05:07 +00001461dnl ---------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001462AC_CHECK_TYPES([struct in_pktinfo],
Paul Jakma11770e12007-06-22 16:14:42 +00001463 [AC_CHECK_TYPES([struct icmphdr],
1464 [if test "${enable_irdp}" != "no"; then
1465 AC_DEFINE(HAVE_IRDP,, IRDP)
1466 fi],
1467 [if test "${enable_irdp}" = "yes"; then
1468 AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
1469 fi], [QUAGGA_INCLUDES])],
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001470 [if test "${enable_irdp}" = "yes"; then
1471 AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
1472 fi], [QUAGGA_INCLUDES])
vincent29c4c9b2005-03-25 13:05:47 +00001473
paul7ea487b2003-03-17 02:05:07 +00001474dnl --------------------------------------
1475dnl checking for getrusage struct and call
1476dnl --------------------------------------
1477AC_MSG_CHECKING(whether getrusage is available)
1478AC_TRY_COMPILE([#include <sys/resource.h>
1479],[struct rusage ac_x; getrusage (RUSAGE_SELF, &ac_x);],
1480[AC_MSG_RESULT(yes)
1481 AC_DEFINE(HAVE_RUSAGE,,rusage)],
1482 AC_MSG_RESULT(no))
1483
Stephen Hemmingerc4376c92009-05-28 15:29:10 -07001484dnl --------------------------------------
1485dnl checking for clock_time monotonic struct and call
1486dnl --------------------------------------
Paul Jakma6511cab2009-06-18 17:38:01 +01001487AC_CHECK_DECL(CLOCK_MONOTONIC,
1488 [AC_CHECK_LIB(rt, clock_gettime, [LIBS="$LIBS -lrt"])
Dmitry Tejblum9964fcf2009-11-05 16:50:36 +03001489 AC_DEFINE(HAVE_CLOCK_MONOTONIC,, Have monotonic clock)
Paul Jakma6511cab2009-06-18 17:38:01 +01001490], [AC_MSG_RESULT(no)], [QUAGGA_INCLUDES])
Stephen Hemmingerc4376c92009-05-28 15:29:10 -07001491
pauledd7c242003-06-04 13:59:38 +00001492dnl -------------------
1493dnl capabilities checks
1494dnl -------------------
hasso41d3fc92004-04-06 11:59:00 +00001495if test "${enable_capabilities}" != "no"; then
1496 AC_MSG_CHECKING(whether prctl PR_SET_KEEPCAPS is available)
1497 AC_TRY_COMPILE([#include <sys/prctl.h>],[prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);],
1498 [AC_MSG_RESULT(yes)
1499 AC_DEFINE(HAVE_PR_SET_KEEPCAPS,,prctl)
1500 quagga_ac_keepcaps="yes"],
1501 AC_MSG_RESULT(no)
pauledd7c242003-06-04 13:59:38 +00001502 )
hasso41d3fc92004-04-06 11:59:00 +00001503 if test x"${quagga_ac_keepcaps}" = x"yes"; then
1504 AC_CHECK_HEADERS(sys/capability.h)
1505 fi
1506 if test x"${ac_cv_header_sys_capability_h}" = x"yes"; then
1507 AC_CHECK_LIB(cap, cap_init,
1508 [AC_DEFINE(HAVE_LCAPS,1,Capabilities)
1509 LIBCAP="-lcap"
paulceacedb2005-09-29 14:39:32 +00001510 quagga_ac_lcaps="yes"]
hasso41d3fc92004-04-06 11:59:00 +00001511 )
paulceacedb2005-09-29 14:39:32 +00001512 else
1513 AC_CHECK_HEADERS(priv.h,
1514 [AC_MSG_CHECKING(Solaris style privileges are available)
1515 AC_TRY_COMPILE([#include <priv.h>],[getpflags(PRIV_AWARE);],
1516 [AC_MSG_RESULT(yes)
1517 AC_DEFINE(HAVE_SOLARIS_CAPABILITIES,1,getpflags)
1518 quagga_ac_scaps="yes"],
1519 AC_MSG_RESULT(no)
1520 )
1521 ]
1522 )
1523 fi
1524 if test x"${quagga_ac_scaps}" = x"yes" \
1525 -o x"${quagga_ac_lcaps}" = x"yes"; then
1526 AC_DEFINE(HAVE_CAPABILITIES,1,capabilities)
hasso41d3fc92004-04-06 11:59:00 +00001527 fi
pauledd7c242003-06-04 13:59:38 +00001528fi
1529AC_SUBST(LIBCAP)
1530
paulfb2d1502003-06-04 09:40:54 +00001531dnl ---------------------------
1532dnl check for glibc 'backtrace'
1533dnl ---------------------------
Dmitrij Tejblumeda35292011-09-15 20:00:33 +04001534AC_CHECK_HEADER([execinfo.h],
1535 [AC_CHECK_FUNC([backtrace],
1536 [AC_DEFINE(HAVE_GLIBC_BACKTRACE,,[Glibc backtrace])
1537 AC_DEFINE(HAVE_STACK_TRACE,,[Stack symbol decoding])
1538 ])
1539])
paulfb2d1502003-06-04 09:40:54 +00001540
Paul Jakma41be32b2006-03-30 13:53:59 +00001541dnl -----------------------------------------
1542dnl check for malloc mallinfo struct and call
1543dnl this must try and link using LIBS, in
1544dnl order to check no alternative allocator
1545dnl has been specified, which might not provide
1546dnl mallinfo, e.g. such as Umem on Solaris.
1547dnl -----------------------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001548AC_CHECK_HEADER([malloc.h],
Paul Jakma41be32b2006-03-30 13:53:59 +00001549 [AC_MSG_CHECKING(whether mallinfo is available)
1550 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <malloc.h>]],
1551 [[struct mallinfo ac_x; ac_x = mallinfo ();]])],
1552 [AC_MSG_RESULT(yes)
1553 AC_DEFINE(HAVE_MALLINFO,,mallinfo)],
1554 AC_MSG_RESULT(no)
1555 )
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001556 ], [], QUAGGA_INCLUDES)
Paul Jakma41be32b2006-03-30 13:53:59 +00001557
paul408ad942003-05-20 00:03:33 +00001558dnl ----------
1559dnl configure date
1560dnl ----------
1561CONFDATE=`date '+%Y%m%d'`
1562AC_SUBST(CONFDATE)
1563
Paul P Komkoff Jr46bc0e42008-08-13 16:17:04 +01001564dnl Conditionally enable PIE support for GNU toolchains.
Paul P Komkoff Jr46bc0e42008-08-13 16:17:04 +01001565AC_ARG_ENABLE(pie, AS_HELP_STRING([--disable-pie], [Do not build tools as a Position Independent Executables]))
Paul P Komkoff Jr0e9de562008-09-24 16:42:35 +01001566if test "$enable_pie" != "no"; then
Paul P Komkoff Jr46bc0e42008-08-13 16:17:04 +01001567 AC_CACHE_CHECK([whether $CC accepts PIE flags], [ap_cv_cc_pie], [
1568 save_CFLAGS=$CFLAGS
1569 save_LDFLAGS=$LDFLAGS
1570 CFLAGS="$CFLAGS -fPIE"
1571 LDFLAGS="$LDFLAGS -pie"
1572 AC_LINK_IFELSE([AC_LANG_SOURCE([[static int foo[30000]; int main () { return 0; }]])],
1573 [ap_cv_cc_pie=yes], [ap_cv_cc_pie=no]
1574 )
1575 CFLAGS=$save_CFLAGS
1576 LDFLAGS=$save_LDFLAGS
1577 ])
1578 if test "$ap_cv_cc_pie" = "yes"; then
1579 PICFLAGS="-fPIE"
1580 PILDFLAGS="-pie"
1581 fi
1582fi
1583
1584AC_SUBST(PICFLAGS)
1585AC_SUBST(PILDFLAGS)
1586
paul7ea487b2003-03-17 02:05:07 +00001587dnl ------------------------------
paula159ed92003-06-04 11:01:45 +00001588dnl set paths for state directory
paul23bd12c2003-04-07 06:11:09 +00001589dnl ------------------------------
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001590AC_MSG_CHECKING(directory to use for state file)
paul23bd12c2003-04-07 06:11:09 +00001591if test "${prefix}" = "NONE"; then
paule8f29842003-08-12 13:08:31 +00001592 quagga_statedir_prefix="";
paul23bd12c2003-04-07 06:11:09 +00001593else
paule8f29842003-08-12 13:08:31 +00001594 quagga_statedir_prefix=${prefix}
paul23bd12c2003-04-07 06:11:09 +00001595fi
1596if test "${localstatedir}" = '${prefix}/var'; then
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001597 for QUAGGA_STATE_DIR in ${quagga_statedir_prefix}/var/run dnl
paule8f29842003-08-12 13:08:31 +00001598 ${quagga_statedir_prefix}/var/adm dnl
1599 ${quagga_statedir_prefix}/etc dnl
paula159ed92003-06-04 11:01:45 +00001600 /var/run dnl
1601 /var/adm dnl
1602 /etc dnl
1603 /dev/null;
paul23bd12c2003-04-07 06:11:09 +00001604 do
paule8f29842003-08-12 13:08:31 +00001605 test -d $QUAGGA_STATE_DIR && break
paul23bd12c2003-04-07 06:11:09 +00001606 done
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001607 quagga_statedir=$QUAGGA_STATE_DIR
paul23bd12c2003-04-07 06:11:09 +00001608else
paule8f29842003-08-12 13:08:31 +00001609 quagga_statedir=${localstatedir}
paul23bd12c2003-04-07 06:11:09 +00001610fi
paule8f29842003-08-12 13:08:31 +00001611if test $quagga_statedir = "/dev/null"; then
paula159ed92003-06-04 11:01:45 +00001612 AC_MSG_ERROR('STATE DIRECTORY NOT FOUND! FIX OR SPECIFY --localstatedir!')
1613fi
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001614AC_MSG_RESULT(${quagga_statedir})
1615AC_SUBST(quagga_statedir)
paula159ed92003-06-04 11:01:45 +00001616
paule8f29842003-08-12 13:08:31 +00001617AC_DEFINE_UNQUOTED(PATH_ZEBRA_PID, "$quagga_statedir/zebra.pid",zebra PID)
1618AC_DEFINE_UNQUOTED(PATH_RIPD_PID, "$quagga_statedir/ripd.pid",ripd PID)
1619AC_DEFINE_UNQUOTED(PATH_RIPNGD_PID, "$quagga_statedir/ripngd.pid",ripngd PID)
1620AC_DEFINE_UNQUOTED(PATH_BGPD_PID, "$quagga_statedir/bgpd.pid",bgpd PID)
1621AC_DEFINE_UNQUOTED(PATH_OSPFD_PID, "$quagga_statedir/ospfd.pid",ospfd PID)
1622AC_DEFINE_UNQUOTED(PATH_OSPF6D_PID, "$quagga_statedir/ospf6d.pid",ospf6d PID)
Paul Jakma57345092011-12-25 17:52:09 +01001623AC_DEFINE_UNQUOTED(PATH_BABELD_PID, "$quagga_statedir/babeld.pid",babeld PID)
jardin9e867fe2003-12-23 08:56:18 +00001624AC_DEFINE_UNQUOTED(PATH_ISISD_PID, "$quagga_statedir/isisd.pid",isisd PID)
ajsd0199432004-12-22 14:03:52 +00001625AC_DEFINE_UNQUOTED(PATH_WATCHQUAGGA_PID, "$quagga_statedir/watchquagga.pid",watchquagga PID)
paule8f29842003-08-12 13:08:31 +00001626AC_DEFINE_UNQUOTED(ZEBRA_SERV_PATH, "$quagga_statedir/zserv.api",zebra api socket)
1627AC_DEFINE_UNQUOTED(ZEBRA_VTYSH_PATH, "$quagga_statedir/zebra.vty",zebra vty socket)
1628AC_DEFINE_UNQUOTED(RIP_VTYSH_PATH, "$quagga_statedir/ripd.vty",rip vty socket)
1629AC_DEFINE_UNQUOTED(RIPNG_VTYSH_PATH, "$quagga_statedir/ripngd.vty",ripng vty socket)
1630AC_DEFINE_UNQUOTED(BGP_VTYSH_PATH, "$quagga_statedir/bgpd.vty",bgpd vty socket)
1631AC_DEFINE_UNQUOTED(OSPF_VTYSH_PATH, "$quagga_statedir/ospfd.vty",ospfd vty socket)
1632AC_DEFINE_UNQUOTED(OSPF6_VTYSH_PATH, "$quagga_statedir/ospf6d.vty",ospf6d vty socket)
Paul Jakma57345092011-12-25 17:52:09 +01001633AC_DEFINE_UNQUOTED(BABEL_VTYSH_PATH, "$quagga_statedir/babeld.vty",babeld vty socket)
jardin9e867fe2003-12-23 08:56:18 +00001634AC_DEFINE_UNQUOTED(ISIS_VTYSH_PATH, "$quagga_statedir/isisd.vty",isisd vty socket)
ajs515210b2004-12-22 15:35:12 +00001635AC_DEFINE_UNQUOTED(DAEMON_VTY_DIR, "$quagga_statedir",daemon vty directory)
paul7ea487b2003-03-17 02:05:07 +00001636
paul1eb8ef22005-04-07 07:30:20 +00001637dnl -------------------------------
1638dnl Quagga sources should always be
1639dnl current wrt interfaces. Dont
1640dnl allow deprecated interfaces to
1641dnl be exposed.
1642dnl -------------------------------
1643AC_DEFINE(QUAGGA_NO_DEPRECATED_INTERFACES, 1, Hide deprecated interfaces)
1644
paul7ea487b2003-03-17 02:05:07 +00001645dnl ---------------------------
1646dnl Check htonl works correctly
1647dnl ---------------------------
1648AC_MSG_CHECKING(for working htonl)
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001649AC_CACHE_VAL(ac_cv_htonl_works,
1650 [AC_LINK_IFELSE([AC_LANG_PROGRAM([QUAGGA_INCLUDES],[htonl (0);])],
1651 [ac_cv_htonl_works=yes], [ac_cv_htonl_works=no])
1652 ]
1653)
paul7ea487b2003-03-17 02:05:07 +00001654AC_MSG_RESULT($ac_cv_htonl_works)
1655
paul14c17fd2004-11-07 22:34:23 +00001656AC_CONFIG_FILES([Makefile lib/Makefile zebra/Makefile ripd/Makefile
ajsd0199432004-12-22 14:03:52 +00001657 ripngd/Makefile bgpd/Makefile ospfd/Makefile watchquagga/Makefile
Paul Jakma57345092011-12-25 17:52:09 +01001658 ospf6d/Makefile isisd/Makefile babeld/Makefile vtysh/Makefile
1659 doc/Makefile ospfclient/Makefile tests/Makefile m4/Makefile
1660 redhat/Makefile
gdt69f1fc22004-08-27 15:57:35 +00001661 pkgsrc/Makefile
paul670bbf12004-11-12 09:05:00 +00001662 redhat/quagga.spec
gdtb7a97f82004-07-23 16:23:56 +00001663 lib/version.h
paul14c17fd2004-11-07 22:34:23 +00001664 doc/defines.texi
hassof695b012005-04-02 19:03:39 +00001665 isisd/topology/Makefile
gdtcbd04082004-08-31 18:16:36 +00001666 pkgsrc/bgpd.sh pkgsrc/ospf6d.sh pkgsrc/ospfd.sh
paulf31293a2004-11-12 09:27:04 +00001667 pkgsrc/ripd.sh pkgsrc/ripngd.sh pkgsrc/zebra.sh])
paul26275b02005-04-11 07:10:47 +00001668AC_CONFIG_FILES([solaris/Makefile])
1669
paul670bbf12004-11-12 09:05:00 +00001670AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl])
hasso48577192004-11-19 06:41:49 +00001671## Hack, but working solution to avoid rebuilding of quagga.info.
1672## It's already in CVS until texinfo 4.7 is more common.
paul14c17fd2004-11-07 22:34:23 +00001673AC_OUTPUT
paul7ea487b2003-03-17 02:05:07 +00001674
1675echo "
hassoc89f6492004-08-26 12:21:28 +00001676Quagga configuration
1677--------------------
1678quagga version : ${PACKAGE_VERSION}
Joachim Nilsson1080c132012-05-30 08:15:48 +02001679host operating system : ${host_os}
paul7ea487b2003-03-17 02:05:07 +00001680source code location : ${srcdir}
1681compiler : ${CC}
1682compiler flags : ${CFLAGS}
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001683make : ${MAKE-make}
Vincent Bernat08d7f652012-05-22 22:29:17 +02001684includes : ${INCLUDES}
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001685linker flags : ${LDFLAGS} ${LIBS} ${LIBCAP} ${LIBREADLINE} ${LIBM}
paule8f29842003-08-12 13:08:31 +00001686state file directory : ${quagga_statedir}
pauldc7a2bf2003-10-22 00:07:44 +00001687config file directory : `eval echo \`echo ${sysconfdir}\``
gdtd6b72f72003-12-03 17:24:27 +00001688example directory : `eval echo \`echo ${exampledir}\``
paul8d4aee52003-06-06 00:30:35 +00001689user to run as : ${enable_user}
1690group to run as : ${enable_group}
1691group for vty sockets : ${enable_vty_group}
gdtaa593d52003-12-22 20:15:53 +00001692config file mask : ${enable_configfile_mask}
1693log file mask : ${enable_logfile_mask}
pauldc7a2bf2003-10-22 00:07:44 +00001694
1695The above user and group must have read/write access to the state file
Paul Jakma105b8232006-05-28 08:02:41 +00001696directory and to the config files in the config file directory."
1697
1698if test x"$quagga_cv_gnu_make" = x"no"; then echo "
1699Warning: The ${MAKE-make} programme detected, either in your path or
1700via the MAKE variable, is not GNU Make. GNU make may be installed as
1701gmake on some systems. and is required to complete a build of Quagga
1702" > /dev/stderr
1703fi