]> git.proxmox.com Git - mirror_frr.git/blame - configure.ac
delete CVS keywords
[mirror_frr.git] / configure.ac
CommitLineData
7ea487bc 1##
e8f2984c 2## Configure template file for Quagga.
7ea487bc 3## autoconf will generate configure script.
4##
5## Copyright (c) 1996, 97, 98, 99, 2000 Kunihiro Ishiguro <kunihiro@zebra.org>
e8f2984c 6## Portions Copyright (c) 2003 Paul Jakma <paul@dishone.st>
7ea487bc 7##
e8f2984c 8AC_PREREQ(2.53)
7ea487bc 9
0998342b 10AC_INIT(Quagga, 0.99.19, [https://bugzilla.quagga.net])
fa1253d0 11AC_CONFIG_SRCDIR(lib/zebra.h)
62c9f504 12AC_CONFIG_MACRO_DIR([m4])
dfb9a545 13
14dnl -----------------------------------
15dnl Get hostname and other information.
16dnl -----------------------------------
17AC_CANONICAL_BUILD()
18AC_CANONICAL_HOST()
19AC_CANONICAL_TARGET()
20
81b81822 21AM_INIT_AUTOMAKE(1.6)
7ea487bc 22AM_CONFIG_HEADER(config.h)
23
7ec57366
JJ
24AC_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
03ecfb67 29AC_ARG_VAR([GAWK],[GNU AWK])
30
d6b72f7a 31dnl default is to match previous behavior
c4f0efe6 32exampledir=${sysconfdir}
d6b72f7a 33AC_ARG_ENABLE([exampledir],
34 AC_HELP_STRING([--enable-exampledir],
35 [specify alternate directory for examples]),
36 exampledir="$enableval",)
c4f0efe6 37dnl XXX add --exampledir to autoconf standard directory list somehow
d6b72f7a 38AC_SUBST(exampledir)
39
cbd04084 40dnl 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
7ea487bc 51dnl ------------
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
1969e4b9 62dnl --------------------
63dnl Check CC and friends
64dnl --------------------
46bc0e43 65AC_LANG([C])
7ea487bc 66AC_PROG_CC
1969e4b9 67AC_PROG_CPP
46bc0e43 68AM_PROG_CC_C_O
1969e4b9 69AC_PROG_EGREP
553bdfe3
GT
70
71dnl autoconf 2.59 appears not to support AC_PROG_SED
72dnl AC_PROG_SED
73AC_CHECK_PROG([SED],[sed],[sed],[/bin/false])
1969e4b9 74
75dnl ------------------------------------------------------------------
76dnl Intel compiler check. Although Intel tries really hard to make icc
77dnl look like gcc, there are some differences. It's very verbose with
78dnl -Wall and it doesn't support the individual -W options.
79dnl ------------------------------------------------------------------
6a4b8832 80if test "x${GCC}" = "xyes" ; then
81 COMPILER="GCC"
82 AC_MSG_CHECKING([whether we are using the Intel compiler])
83 AC_EGREP_CPP([^__INTEL_COMPILER], [__INTEL_COMPILER],
84 [AC_MSG_RESULT([no])],
85 [COMPILER="ICC"
86 AC_MSG_RESULT([yes])]
87 )
88else
89 AC_MSG_CHECKING([whether we are using SunPro compiler])
90 AC_EGREP_CPP([^__SUNPRO_C.*0x5(7|8|9)], ["__SUNPRO_C" __SUNPRO_C],
91 [AC_MSG_RESULT([no])],
92 [COMPILER="SUNPRO"
93 AC_MSG_RESULT([yes])]
94 )
95fi
7ea487bc 96
a49c0ff6 97dnl ---------------------------------------------
7ea487bc 98dnl If CLFAGS doesn\'t exist set default value
a49c0ff6 99dnl AC_PROG_CC will have set minimal default
100dnl already, eg "-O2 -g" for gcc, "-g" for others
27eebb3e 101dnl (Wall is gcc specific... have to make sure
102dnl gcc is being used before setting it)
103dnl
6a4b8832 104dnl Intel icc 8.0 also sets __GNUC__,
105dnl but doesn't support all these fancy -W options.
1969e4b9 106dnl Intel compiler warnings we ignore:
107dnl 279: controlling expression is constant.
108dnl 869: parameter "xxx" was never referenced - to avoid massive warnings
109dnl about "self", "vty", "argc" and "argv" never referenced in DEFUN
110dnl macro.
111dnl 981: operands are evaluated in unspecified order.
6a4b8832 112dnl
113dnl Sun Studio 10 / SunPro 5.7 is also supported,
114dnl so lets set some sane CFLAGS for it.
115dnl ---------------------------------------------
1969e4b9 116
6a4b8832 117AC_MSG_CHECKING([whether to set a default CFLAGS])
118if test "x${cflags_specified}" = "x" ; then
119 case ${COMPILER} in
120 "ICC")
121 CFLAGS="-Os -g -Wall -wd 279,869,981"
122 AC_MSG_RESULT([Intel default])
123 ;;
124 "GCC")
5fa05099 125 CFLAGS="-Os -fno-omit-frame-pointer -g -std=gnu99 -Wall"
6a4b8832 126 CFLAGS="${CFLAGS} -Wsign-compare -Wpointer-arith"
127 CFLAGS="${CFLAGS} -Wbad-function-cast -Wwrite-strings"
128 CFLAGS="${CFLAGS} -Wmissing-prototypes -Wmissing-declarations"
129 CFLAGS="${CFLAGS} -Wchar-subscripts -Wcast-qual"
130 # TODO: conditionally addd -Wpacked if handled
131 AC_MSG_RESULT([gcc default])
132 ;;
133 "SUNPRO")
105b8239 134 CFLAGS="-xO4 -v -g -xspace -xcode=pic32 -xstrconst -xc99"
6a4b8832 135 AC_MSG_RESULT([SunPro default])
136 ;;
137 *)
138 AC_MSG_RESULT([unknown compiler])
139 ;;
140 esac
141else
142 AC_MSG_RESULT([CFLAGS supplied by user])
1969e4b9 143fi
144
7ea487bc 145dnl --------------
146dnl Check programs
147dnl --------------
7ea487bc 148AC_PROG_INSTALL
6f0e3f6e 149AC_PROG_LN_S
7ea487bc 150AC_PROG_MAKE_SET
151AC_CHECK_TOOL(AR, ar)
7ea487bc 152
105b8239
PJ
153dnl ---------------------------
154dnl We, perhaps unfortunately,
155dnl depend on GNU Make specific
156dnl constructs.
157dnl Give the user a warning if
158dnl not GNU Make.
159dnl ---------------------------
160AC_CACHE_CHECK([if ${MAKE-make} is GNU make], [quagga_cv_gnu_make],
161 [quagga_cv_gnu_make=no
162 if ${MAKE-make} --version 2>/dev/null | \
163 grep '^GNU Make ' >/dev/null ; then
164 quagga_cv_gnu_make=yes;
165 fi
166 ]
167)
168
d46d2a24
PJ
169dnl -----------------
170dnl System extensions
171dnl -----------------
d46d2a24 172AC_GNU_SOURCE
7ea487bc 173
87efd646 174dnl -------
175dnl libtool
176dnl -------
0fc42949 177AC_PROG_LIBTOOL
87efd646 178
7ea487bc 179dnl ----------------------
180dnl Packages configuration
181dnl ----------------------
182AC_ARG_ENABLE(vtysh,
fc9d0745 183[ --enable-vtysh include integrated vty shell for Quagga])
7ea487bc 184AC_ARG_ENABLE(ipv6,
185[ --disable-ipv6 turn off IPv6 related features and daemons])
cbcd9bfc
JT
186AC_ARG_ENABLE(doc,
187[ --disable-doc do not build docs])
7ea487bc 188AC_ARG_ENABLE(zebra,
189[ --disable-zebra do not build zebra daemon])
190AC_ARG_ENABLE(bgpd,
191[ --disable-bgpd do not build bgpd])
192AC_ARG_ENABLE(ripd,
193[ --disable-ripd do not build ripd])
194AC_ARG_ENABLE(ripngd,
195[ --disable-ripngd do not build ripngd])
196AC_ARG_ENABLE(ospfd,
197[ --disable-ospfd do not build ospfd])
7ea487bc 198AC_ARG_ENABLE(ospf6d,
199[ --disable-ospf6d do not build ospf6d])
d0199430 200AC_ARG_ENABLE(watchquagga,
201[ --disable-watchquagga do not build watchquagga])
9e867fe6 202AC_ARG_ENABLE(isisd,
ae399ab0 203[ --enable-isisd build isisd])
97cee877
GT
204AC_ARG_ENABLE(solaris,
205[ --enable-solaris build solaris])
7ea487bc 206AC_ARG_ENABLE(bgp-announce,
207[ --disable-bgp-announce, turn off BGP route announcement])
208AC_ARG_ENABLE(netlink,
209[ --enable-netlink force to use Linux netlink interface])
210AC_ARG_ENABLE(broken-aliases,
211[ --enable-broken-aliases enable aliases as distinct interfaces for Linux 2.2.X])
fb62a3ce
JT
212AC_ARG_WITH(crypto,
213[ --without-crypto do not use libcrypto in SNMP])
7ea487bc 214AC_ARG_ENABLE(snmp,
215[ --enable-snmp enable SNMP support])
216AC_ARG_WITH(libpam,
217[ --with-libpam use libpam for PAM support in vtysh])
71c0fb50 218AC_ARG_ENABLE(tcp-zebra,
7ea487bc 219[ --enable-tcp-zebra enable TCP/IP socket connection between zebra and protocol daemon])
7ea487bc 220AC_ARG_ENABLE(opaque-lsa,
36de261b 221 AC_HELP_STRING([--disable-opaque-lsa],[do not build OSPF Opaque-LSA with OSPFAPI support (RFC2370)]))
1ef74ef7 222AC_ARG_ENABLE(ospfapi,
36de261b 223[ --disable-ospfapi do not build OSPFAPI to access the OSPF LSA Database])
1ef74ef7 224AC_ARG_ENABLE(ospfclient,
225[ --disable-ospfclient do not build OSPFAPI client for OSPFAPI,
226 (this is the default if --disable-ospfapi is set)])
7ea487bc 227AC_ARG_ENABLE(ospf-te,
36de261b 228 AC_HELP_STRING([--disable-ospf-te],[disable Traffic Engineering Extension to OSPF]))
7ea487bc 229AC_ARG_ENABLE(multipath,
230[ --enable-multipath=ARG enable multipath function, ARG must be digit])
fe86b484
PKJ
231AC_ARG_ENABLE(user,
232 AC_HELP_STRING([--enable-user=user], [user to run Quagga suite as (default quagga)]))
233AC_ARG_ENABLE(group,
234 AC_HELP_STRING([--enable-group=group], [group to run Quagga suite as (default quagga)]))
edd7c245 235AC_ARG_ENABLE(vty_group,
6b6942f9 236[ --enable-vty-group=ARG set vty sockets to have specified group as owner])
aa593d5e 237AC_ARG_ENABLE(configfile_mask,
238[ --enable-configfile-mask=ARG set mask for config files])
239AC_ARG_ENABLE(logfile_mask,
240[ --enable-logfile-mask=ARG set mask for log files])
edd7c245 241
71c0fb50 242AC_ARG_ENABLE(rtadv,
6b6942f9 243[ --disable-rtadv disable IPV6 router advertisement feature])
ca776988 244AC_ARG_ENABLE(irdp,
6b6942f9 245[ --enable-irdp enable IRDP server support in zebra])
f695b01f 246AC_ARG_ENABLE(isis_topology,
247[ --enable-isis-topology enable IS-IS topology generator])
41d3fc96 248AC_ARG_ENABLE(capabilities,
249[ --disable-capabilities disable using POSIX capabilities])
6b6942f9 250AC_ARG_ENABLE(gcc_ultra_verbose,
251[ --enable-gcc-ultra-verbose enable ultra verbose GCC warnings])
3453a712
PJ
252AC_ARG_ENABLE(linux24_tcp_md5,
253[ --enable-linux24-tcp-md5 enable support for old, Linux-2.4 RFC2385 patch])
3cade26f 254AC_ARG_ENABLE(gcc-rdynamic,
255[ --enable-gcc-rdynamic enable gcc linking with -rdynamic for better backtraces])
924b9229 256AC_ARG_ENABLE(time-check,
257[ --disable-time-check disable slow thread warning messages])
25f45887
JJ
258AC_ARG_ENABLE(pcreposix,
259[ --enable-pcreposix enable using PCRE Posix libs for regex functions])
6b6942f9 260
261if test x"${enable_gcc_ultra_verbose}" = x"yes" ; then
262 CFLAGS="${CFLAGS} -W -Wcast-qual -Wstrict-prototypes"
263 CFLAGS="${CFLAGS} -Wmissing-declarations -Wmissing-noreturn"
264 CFLAGS="${CFLAGS} -Wmissing-format-attribute -Wunreachable-code"
265 CFLAGS="${CFLAGS} -Wpacked -Wpadded"
266fi
7ea487bc 267
3cade26f 268if test x"${enable_gcc_rdynamic}" = x"yes" ; then
269 LDFLAGS="${LDFLAGS} -rdynamic"
270fi
271
924b9229 272if test x"${enable_time_check}" != x"no" ; then
273 if test x"${enable_time_check}" = x"yes" -o x"${enable_time_check}" = x ; then
274 AC_DEFINE(CONSUMED_TIME_CHECK,5000000,Consumed Time Check)
275 else
276 AC_DEFINE_UNQUOTED(CONSUMED_TIME_CHECK,$enable_time_check,Consumed Time Check)
277 fi
278fi
279
7ea487bc 280if test "${enable_broken_aliases}" = "yes"; then
281 if test "${enable_netlink}" = "yes"
282 then
6f0e3f6e 283 AC_MSG_FAILURE([Sorry you can not use netlink with broken aliases])
7ea487bc 284 fi
285 AC_DEFINE(HAVE_BROKEN_ALIASES,,Broken Alias)
286 enable_netlink=no
287fi
288
289if test "${enable_tcp_zebra}" = "yes"; then
290 AC_DEFINE(HAVE_TCP_ZEBRA,,Use TCP for zebra communication)
291fi
292
36de261b 293if test "${enable_opaque_lsa}" != "no"; then
7ea487bc 294 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
295fi
296
36de261b 297if test "${enable_ospf_te}" != "no"; then
7ea487bc 298 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
299 AC_DEFINE(HAVE_OSPF_TE,,OSPF TE)
300fi
301
3453a712
PJ
302if test "${enable_linux24_tcp_md5}" = "yes"; then
303 AC_DEFINE(HAVE_TCP_MD5_LINUX24,,Old Linux 2.4 TCP MD5 Signature Patch)
304fi
305
d2a0ccc6 306AC_MSG_CHECKING(if zebra should be configurable to send Route Advertisements)
307if test "${enable_rtadv}" != "no"; then
71c0fb50 308 AC_MSG_RESULT(yes)
d2a0ccc6 309 AC_DEFINE(HAVE_RTADV,,Enable IPv6 Routing Advertisement support)
2487bea1 310else
311 AC_MSG_RESULT(no)
71c0fb50 312fi
7ea487bc 313
ca776988 314if test "${enable_irdp}" = "yes"; then
315 AC_DEFINE(HAVE_IRDP,, IRDP )
316fi
317
f695b01f 318if test "${enable_isisd}" = "yes" && test "${enable_isis_topology}" = yes; then
319 AC_DEFINE(TOPOLOGY_GENERATE,,Enable IS-IS topology generator code)
320 ISIS_TOPOLOGY_INCLUDES="-I./topology"
321 ISIS_TOPOLOGY_DIR="topology"
322 ISIS_TOPOLOGY_LIB="./topology/libtopology.a"
323fi
324
325AC_SUBST(ISIS_TOPOLOGY_INCLUDES)
326AC_SUBST(ISIS_TOPOLOGY_DIR)
327AC_SUBST(ISIS_TOPOLOGY_LIB)
328
79cb2169 329if test "${enable_user}" = "yes" || test x"${enable_user}" = x""; then
e8f2984c 330 enable_user="quagga"
edd7c245 331elif test "${enable_user}" = "no"; then
332 enable_user="root"
333fi
edd7c245 334
79cb2169 335if test "${enable_group}" = "yes" || test x"${enable_group}" = x""; then
e8f2984c 336 enable_group="quagga"
edd7c245 337elif test "${enable_group}" = "no"; then
338 enable_group="root"
339fi
edd7c245 340
341if test x"${enable_vty_group}" = x"yes" ; then
8d4aee5d 342 AC_MSG_ERROR([--enable-vty-group requires a group as argument, not yes])
79cb2169 343elif test x"${enable_vty_group}" != x""; then
8d4aee5d 344 if test x"${enable_vty_group}" != x"no"; then
edd7c245 345 AC_DEFINE_UNQUOTED(VTY_GROUP, "${enable_vty_group}", VTY Sockets Group)
346 fi
347fi
26275b05 348AC_SUBST([enable_user])
349AC_SUBST([enable_group])
350AC_SUBST([enable_vty_group])
351AC_DEFINE_UNQUOTED(QUAGGA_USER, "${enable_user}", Quagga User)
352AC_DEFINE_UNQUOTED(QUAGGA_GROUP, "${enable_group}", Quagga Group)
edd7c245 353
aa593d5e 354enable_configfile_mask=${enable_configfile_mask:-0600}
355AC_DEFINE_UNQUOTED(CONFIGFILE_MASK, ${enable_configfile_mask}, Mask for config files)
356
357enable_logfile_mask=${enable_logfile_mask:-0600}
358AC_DEFINE_UNQUOTED(LOGFILE_MASK, ${enable_logfile_mask}, Mask for log files)
359
7ea487bc 360MULTIPATH_NUM=1
361
362case "${enable_multipath}" in
6f0e3f6e 363 [[0-9]|[1-9][0-9]])
7ea487bc 364 MULTIPATH_NUM="${enable_multipath}"
365 ;;
366 "")
367 ;;
368 *)
6f0e3f6e 369 AC_MSG_FAILURE([Please specify digit to enable multipath ARG])
7ea487bc 370 ;;
371esac
372
7ea487bc 373AC_SUBST(MULTIPATH_NUM)
374
6f0e3f6e
PJ
375dnl ------------------------------------
376dnl Check C keywords and standard types
377dnl ------------------------------------
378AC_C_CONST
379AC_C_INLINE
380AC_C_RESTRICT
381AC_C_VOLATILE
dc7a2bf1 382AC_HEADER_STDC
6f0e3f6e
PJ
383AC_HEADER_TIME
384AC_HEADER_SYS_WAIT
385dnl AC_TYPE_PID_T
386AC_TYPE_UID_T
387AC_TYPE_MODE_T
388AC_TYPE_SIZE_T
389AC_TYPE_SIGNAL
390AC_STRUCT_TM
dc7a2bf1 391
6f0e3f6e
PJ
392dnl -------------------------
393dnl Check other header files.
394dnl -------------------------
395AC_CHECK_HEADERS([stropts.h sys/ksym.h sys/times.h sys/select.h \
396 sys/types.h linux/version.h netdb.h asm/types.h \
b69442d4 397 sys/param.h limits.h signal.h \
6511cab2 398 sys/socket.h netinet/in.h time.h sys/time.h])
6f0e3f6e
PJ
399
400dnl Utility macro to avoid retyping includes all the time
401m4_define([QUAGGA_INCLUDES],
402[#ifdef SUNOS_5
403#define _XPG4_2
404#define __EXTENSIONS__
405#endif
406#include <stdio.h>
407#if STDC_HEADERS
408# include <stdlib.h>
409# include <stddef.h>
410#else
411# if HAVE_STDLIB_H
412# include <stdlib.h>
413# endif
414#endif
415#if HAVE_SYS_TYPES_H
416# include <sys/types.h>
417#endif
418/* sys/conf.h depends on param.h on FBSD at least */
419#if HAVE_SYS_PARAM_H
420# include <sys/param.h>
421#endif
422/* Required for MAXSIG */
423#if HAVE_SIGNAL_H
424# include <signal.h>
425#endif
426#if HAVE_SYS_SOCKET_H
427# include <sys/socket.h>
428#endif
429#if HAVE_NETINET_IN_H
430# include <netinet/in.h>
431#endif
6511cab2
PJ
432#ifdef TIME_WITH_SYS_TIME
433# include <sys/time.h>
434# include <time.h>
435#else
436# ifdef HAVE_SYS_TIME_H
437# include <sys/time.h>
438# else
439# include <time.h>
440# endif
441#endif /* TIME_WITH_SYS_TIME */
6f0e3f6e
PJ
442])dnl
443
2b43bf23
DO
444dnl HAVE_NET_IF_H must be discovered by the time the longer AC_CHECK_HEADERS
445dnl round below execution begins, otherwise it doesn't properly detect
446dnl HAVE_NETINET6_IN6_VAR_H, HAVE_NET_IF_VAR_H and HAVE_STRUCT_IN6_ALIASREQ
447dnl on FreeBSD (BZ#408).
448
449AC_CHECK_HEADERS([net/if.h], [], [], QUAGGA_INCLUDES)
450
451m4_define([QUAGGA_INCLUDES],
452QUAGGA_INCLUDES
453[#if HAVE_NET_IF_H
454# include <net/if.h>
455#endif
456])dnl
457
458dnl Same applies for HAVE_NET_IF_VAR_H, which HAVE_NETINET6_ND6_H and
459dnl HAVE_NETINET_IN_VAR_H depend upon. But if_var.h depends on if.h, hence
460dnl an additional round for it.
461
462AC_CHECK_HEADERS([net/if_var.h], [], [], QUAGGA_INCLUDES)
463
464m4_define([QUAGGA_INCLUDES],
465QUAGGA_INCLUDES
466[#if HAVE_NET_IF_VAR_H
467# include <net/if_var.h>
468#endif
469])dnl
470
471AC_CHECK_HEADERS([sys/un.h netinet/in_systm.h netinet/in_var.h \
472 net/if_dl.h net/netopt.h net/route.h \
11770e10 473 inet/nd.h arpa/inet.h netinet/ip_icmp.h \
6f0e3f6e
PJ
474 fcntl.h stddef.h sys/ioctl.h syslog.h wchar.h wctype.h \
475 sys/sysctl.h sys/sockio.h kvm.h sys/conf.h],
476 [], [], QUAGGA_INCLUDES)
477
478AC_CHECK_HEADERS([ucontext.h], [], [],
479[#ifndef __USE_GNU
480#define __USE_GNU
481#endif /* __USE_GNU */
482QUAGGA_INCLUDES
483])
484
485m4_define([QUAGGA_INCLUDES],
486QUAGGA_INCLUDES
2b43bf23 487[#if HAVE_SYS_UN_H
6f0e3f6e
PJ
488# include <sys/un.h>
489#endif
490#if HAVE_NETINET_IN_SYSTM_H
491# include <netinet/in_systm.h>
492#endif
493#if HAVE_NETINET_IN_VAR_H
494# include <netinet/in_var.h>
495#endif
496#if HAVE_NET_IF_DL_H
497# include <net/if_dl.h>
498#endif
6f0e3f6e
PJ
499#if HAVE_NET_NETOPT_H
500# include <net/netopt.h>
501#endif
502#if HAVE_NET_ROUTE_H
503# include <net/route.h>
504#endif
505#if HAVE_INET_ND_H
506# include <inet/nd.h>
507#endif
508#if HAVE_ARPA_INET_H
509# include <arpa/inet.h>
510#endif
11770e10
PJ
511/* Required for IDRP */
512#if HAVE_NETINET_IP_ICMP_H
513# include <netinet/ip_icmp.h>
514#endif
6f0e3f6e 515])dnl
dc7a2bf1 516
fa3232e1 517dnl V6 headers are checked below, after we check for v6
7ea487bc 518
7ea487bc 519dnl Some systems (Solaris 2.x) require libnsl (Network Services Library)
520case "$host" in
afd8a129 521 [*-sunos5.[6-7]*] | [*-solaris2.[6-7]*])
7ea487bc 522 opsys=sol2-6
afd8a129 523 AC_DEFINE(SUNOS_56, 1, SunOS 5.6 to 5.7)
19877dd2 524 AC_DEFINE(SUNOS_5, 1, SunOS 5)
7ea487bc 525 AC_CHECK_LIB(xnet, main)
526 CURSES=-lcurses
527 ;;
1b73de8b 528 [*-sunos5.[8-9]] \
529 | [*-sunos5.1[0-9]] \
530 | [*-sunos5.1[0-9].[0-9]] \
531 | [*-solaris2.[8-9]] \
532 | [*-solaris2.1[0-9]] \
533 | [*-solaris2.1[0-9].[0-9]])
afd8a129 534 opsys=sol8
fb66b29c
PJ
535 AC_DEFINE(SUNOS_59, 1, [SunOS 5.8 up])
536 AC_DEFINE(SUNOS_5, 1, [SunOS 5])
19877dd2 537 AC_CHECK_LIB(socket, main)
538 AC_CHECK_LIB(nsl, main)
1b73de8b 539 AC_CHECK_LIB(umem, main)
fb66b29c
PJ
540 AC_CHECK_FUNCS([printstack],
541 [AC_DEFINE([HAVE_PRINTSTACK],1,[Solaris printstack])
542 AC_DEFINE([HAVE_STACK_TRACE],1,[Stack symbols decode functionality])
543 ])
19877dd2 544 CURSES=-lcurses
545 ;;
7ea487bc 546 *-sunos5* | *-solaris2*)
19877dd2 547 AC_DEFINE(SUNOS_5,,SunOS 5, Unknown SunOS)
7ea487bc 548 AC_CHECK_LIB(socket, main)
549 AC_CHECK_LIB(nsl, main)
550 CURSES=-lcurses
551 ;;
c45eb839 552 *-linux*)
7ea487bc 553 opsys=gnu-linux
554 AC_DEFINE(GNU_LINUX,,GNU Linux)
555 ;;
556 *-nec-sysv4*)
557 AC_CHECK_LIB(nsl, gethostbyname)
558 AC_CHECK_LIB(socket, socket)
559 ;;
7ea487bc 560 *-openbsd*)
561 opsys=openbsd
562 AC_DEFINE(OPEN_BSD,,OpenBSD)
563 ;;
564 *-bsdi*)
565 opsys=bsdi
566 OTHER_METHOD="mtu_kvm.o"
567 AC_CHECK_LIB(kvm, main)
568 ;;
49e3b3c0 569 *-irix6.5)
dc7a2bf1 570 opsys=irix
571 AC_DEFINE(IRIX_65,,IRIX 6.5)
572 ;;
7ea487bc 573esac
574
62c9f504
PJ
575AC_SYS_LARGEFILE
576
7ea487bc 577dnl ---------------------
578dnl Integrated VTY option
579dnl ---------------------
580case "${enable_vtysh}" in
581 "yes") VTYSH="vtysh";
582 AC_DEFINE(VTYSH,,VTY shell)
fc9d0745 583 AC_PATH_PROG(PERL, perl)
584dnl Vtysh uses libreadline, which looks for termcap functions at
6f0e3f6e 585dnl configure time. We follow readlines search order.
fc9d0745 586dnl The required procedures are in libtermcap on NetBSD, in
587dnl [TODO] on Linux, and in [TODO] on Solaris.
c0689394 588 AC_CHECK_LIB(termcap, tputs, LIBREADLINE="$LIBREADLINE -ltermcap",
a969459c 589 [AC_CHECK_LIB(tinfo, tputs, LIBREADLINE="$LIBREADLINE -ltinfo",
590 [AC_CHECK_LIB(curses, tputs, LIBREADLINE="$LIBREADLINE -lcurses",
591 [AC_CHECK_LIB(ncurses, tputs,
592 LIBREADLINE="$LIBREADLINE -lncurses")]
593 )]
594 )]
595 )
596 AC_CHECK_LIB(readline, main, LIBREADLINE="$LIBREADLINE -lreadline",,
597 "$LIBREADLINE")
7ea487bc 598 if test $ac_cv_lib_readline_main = no; then
fc9d0745 599 AC_MSG_ERROR([vtysh needs libreadline but was not found and usable on your system.])
7ea487bc 600 fi
601 AC_CHECK_HEADER(readline/history.h)
602 if test $ac_cv_header_readline_history_h = no;then
603 AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
604 fi
a969459c 605 AC_CHECK_LIB(readline, rl_completion_matches,
606 LIBREADLINE="$LIBREADLINE",, "$LIBREADLINE")
3d3de8c4 607 if test $ac_cv_lib_readline_rl_completion_matches = no; then
608 AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
609 fi
610 ;;
7ea487bc 611 "no" ) VTYSH="";;
612 * ) ;;
613esac
c0689394 614AC_SUBST(LIBREADLINE)
7ea487bc 615
616dnl ----------
617dnl PAM module
6159928d
DO
618dnl
619dnl Quagga detects the PAM library it is built against by checking for a
620dnl functional pam_misc.h (Linux-PAM) or openpam.h (OpenPAM) header. pam_misc.h
621dnl is known to #include pam_appl.h, the standard header of a PAM library, and
622dnl openpam.h doesn't do that, although depends on the header too. Hence a
623dnl little assistance to AC_CHECK_HEADER is necessary for the proper detection
624dnl of OpenPAM.
7ea487bc 625dnl ----------
24cd435b 626if test "$with_libpam" = "yes"; then
6f0e3f6e
PJ
627 AC_CHECK_HEADER([security/pam_misc.h],
628 [AC_DEFINE(HAVE_PAM_MISC_H,,Have pam_misc.h)
629 AC_DEFINE(PAM_CONV_FUNC,misc_conv,Have misc_conv)
630 pam_conv_func="misc_conv"
631 ],
632 [], QUAGGA_INCLUDES)
633 AC_CHECK_HEADER([security/openpam.h],
634 [AC_DEFINE(HAVE_OPENPAM_H,,Have openpam.h)
635 AC_DEFINE(PAM_CONV_FUNC,openpam_ttyconv,Have openpam_ttyconv)
636 pam_conv_func="openpam_ttyconv"
637 ],
6159928d 638 [], QUAGGA_INCLUDES[#include <security/pam_appl.h>])
24cd435b 639 if test -z "$ac_cv_header_security_pam_misc_h$ac_cv_header_security_openpam_h" ; then
640 AC_MSG_WARN([*** pam support will not be built ***])
641 with_libpam="no"
642 fi
643fi
644
7ea487bc 645if test "$with_libpam" = "yes"; then
6f0e3f6e 646dnl took this test from proftpds configure.in and suited to our needs
7ea487bc 647dnl -------------------------------------------------------------------------
648dnl
649dnl This next check looks funky due to a linker problem with some versions
650dnl of the PAM library. Prior to 0.72 release, the Linux PAM shared library
651dnl omitted requiring libdl linking information. PAM-0.72 or better ships
652dnl with RedHat 6.2 and Debian 2.2 or better.
653AC_CHECK_LIB(pam, pam_start,
24cd435b 654 [AC_CHECK_LIB(pam, $pam_conv_func,
7ea487bc 655 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
656 LIBPAM="-lpam"],
657 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
658 LIBPAM="-lpam -lpam_misc"]
659 )
660 ],
661
662 [AC_CHECK_LIB(pam, pam_end,
24cd435b 663 [AC_CHECK_LIB(pam, $pam_conv_func,
a159ed93 664 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
7ea487bc 665 LIBPAM="-lpam -ldl"],
a159ed93 666 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
7ea487bc 667 LIBPAM="-lpam -ldl -lpam_misc"]
668 )
669 ],AC_MSG_WARN([*** pam support will not be built ***]),
670 [-ldl])
671 ]
672)
673fi
674AC_SUBST(LIBPAM)
675
676dnl -------------------------------
677dnl Endian-ness check
678dnl -------------------------------
679AC_WORDS_BIGENDIAN
680
681dnl -------------------------------
682dnl check the size in byte of the C
683dnl -------------------------------
684dnl AC_CHECK_SIZEOF(char)
685dnl AC_CHECK_SIZEOF(int)
686dnl AC_CHECK_SIZEOF(short)
687dnl AC_CHECK_SIZEOF(long)
688
689dnl ----------------------------
690dnl check existance of functions
691dnl ----------------------------
6f0e3f6e
PJ
692AC_FUNC_CHOWN
693AC_FUNC_FNMATCH
694AC_FUNC_FORK
695AC_FUNC_MALLOC
696AC_FUNC_MEMCMP
697AC_FUNC_MKTIME
698AC_FUNC_STRFTIME
699AC_FUNC_REALLOC
700AC_FUNC_STAT
701AC_FUNC_SELECT_ARGTYPES
702AC_FUNC_STRFTIME
d46d2a24
PJ
703dnl Avoid AC_FUNC_STRNLEN because it pulls in AC_SYSTEM_EXTENSIONS which
704dnl can lead to strange side effects. So we just check for strnlen
705dnl directly, see below.
2b5cb411 706dnl AC_FUNC_STRNLENdnl
6f0e3f6e
PJ
707AC_FUNC_VPRINTF
708
709dnl -------------------------------
710dnl bgpd needs pow() and hence libm
711dnl -------------------------------
712TMPLIBS="$LIBS"
713AC_CHECK_HEADER([math.h],
714 [AC_CHECK_LIB([m], [pow],
715 [LIBM="-lm"
716 LIBS="$LIBS $LIBM"
717 AC_DEFINE(HAVE_LIBM,, Have libm)
718 AC_CHECK_FUNCS(pow,[],[LIBM=""])
719 ])
720])
721if test x"$LIBM" = x ; then
722 AC_MSG_WARN([Unable to find working pow function - bgpd may not link])
723fi
724LIBS="$TMPLIBS"
725AC_SUBST(LIBM)
726
727dnl ---------------
728dnl other functions
729dnl ---------------
730AC_CHECK_FUNCS([dup2 ftruncate getcwd gethostbyname getpagesize gettimeofday \
d46d2a24 731 inet_ntoa inet_aton strnlen \
6f0e3f6e
PJ
732 memchr memmove memset select socket \
733 strcasecmp strchr strcspn strdup strerror \
734 strncasecmp strndup strrchr strspn strstr \
735 strtol strtoul strlcat strlcpy \
736 daemon snprintf vsnprintf \
737 if_nametoindex if_indextoname getifaddrs \
738 uname fcntl])
739
a159ed93 740AC_CHECK_FUNCS(setproctitle, ,
741 [AC_CHECK_LIB(util, setproctitle,
742 [LIBS="$LIBS -lutil"
743 AC_DEFINE(HAVE_SETPROCTITLE,, Have setproctitle)
744 ]
745 )
746 ]
747)
7ea487bc 748
749dnl ------------------------------------
750dnl Determine routing get and set method
751dnl ------------------------------------
752AC_MSG_CHECKING(zebra between kernel interface method)
753if test x"$opsys" = x"gnu-linux"; then
754 if test "${enable_netlink}" = "yes";then
755 AC_MSG_RESULT(netlink)
756 RT_METHOD=rt_netlink.o
757 AC_DEFINE(HAVE_NETLINK,,netlink)
758 netlink=yes
759 elif test "${enable_netlink}" = "no"; then
760 AC_MSG_RESULT(ioctl)
761 RT_METHOD=rt_ioctl.o
762 netlink=no
763 else
764 AC_MSG_RESULT(netlink)
765 RT_METHOD=rt_netlink.o
766 AC_DEFINE(HAVE_NETLINK,,netlink)
767 netlink=yes
768 fi
19877dd2 769elif test x"$opsys" = x"sol2-6";then
770 AC_MSG_RESULT(Route socket)
771 KERNEL_METHOD="kernel_socket.o"
772 RT_METHOD="rt_socket.o"
afd8a129 773elif test x"$opsys" = x"sol8";then
19877dd2 774 AC_MSG_RESULT(Route socket)
775 KERNEL_METHOD="kernel_socket.o"
776 RT_METHOD="rt_socket.o"
777elif test "$opsys" = "irix" ; then
778 AC_MSG_RESULT(Route socket)
779 KERNEL_METHOD="kernel_socket.o"
780 RT_METHOD="rt_socket.o"
7ea487bc 781else
19877dd2 782 AC_TRY_RUN([#include <errno.h>
7ea487bc 783#include <sys/types.h>
784#include <sys/socket.h>
785
786main ()
787{
788 int ac_sock;
789
790 ac_sock = socket (AF_ROUTE, SOCK_RAW, 0);
791 if (ac_sock < 0 && errno == EINVAL)
792 exit (1);
793 exit (0);
794}],
795 [KERNEL_METHOD=kernel_socket.o
796 RT_METHOD=rt_socket.o
797 AC_MSG_RESULT(socket)],
798 [RT_METHOD=rt_ioctl.o
799 AC_MSG_RESULT(ioctl)],
800 [KERNEL_METHOD=kernel_socket.o
801 RT_METHOD=rt_socket.o
802 AC_MSG_RESULT(socket)])
7ea487bc 803fi
804AC_SUBST(RT_METHOD)
805AC_SUBST(KERNEL_METHOD)
806AC_SUBST(OTHER_METHOD)
807
238497fc
PJ
808dnl --------------------------
809dnl Determine IS-IS I/O method
810dnl --------------------------
745bf05f
DL
811AC_DEFINE(ISIS_METHOD_PFPACKET, 1, [ constant value for isis method pfpacket ])
812AC_DEFINE(ISIS_METHOD_DLPI, 2, [ constant value for isis method dlpi ])
813AC_DEFINE(ISIS_METHOD_BPF, 3, [ constant value for isis method bpf ])
238497fc
PJ
814AC_CHECK_HEADER(net/bpf.h)
815AC_CHECK_HEADER(sys/dlpi.h)
816AC_MSG_CHECKING(zebra IS-IS I/O method)
817if test x"$opsys" = x"gnu-linux"; then
818 AC_MSG_RESULT(pfpacket)
745bf05f 819 ISIS_METHOD_MACRO="ISIS_METHOD_PFPACKET"
238497fc
PJ
820elif test x"$opsys" = x"sol2-6" -o x"$opsys" = x"sol8"; then
821 AC_MSG_RESULT(DLPI)
745bf05f 822 ISIS_METHOD_MACRO="ISIS_METHOD_DLPI"
238497fc
PJ
823else
824 if test $ac_cv_header_net_bpf_h = no; then
825 if test $ac_cv_header_sys_dlpi_h = no; then
826 AC_MSG_RESULT(none)
827 AC_MSG_WARN([*** IS-IS support will not be built ***])
828 ISISD=""
829 else
830 AC_MSG_RESULT(DLPI)
831 fi
745bf05f 832 ISIS_METHOD_MACRO="ISIS_METHOD_DLPI"
238497fc
PJ
833 else
834 AC_MSG_RESULT(BPF)
745bf05f 835 ISIS_METHOD_MACRO="ISIS_METHOD_BPF"
238497fc
PJ
836 fi
837fi
745bf05f 838AC_DEFINE_UNQUOTED(ISIS_METHOD, $ISIS_METHOD_MACRO, [ selected method for isis, == one of the constants ])
238497fc 839
b99760ab 840dnl ------------------------------------
841dnl check for broken CMSG_FIRSTHDR macro
842dnl ------------------------------------
6c20046f 843AC_MSG_CHECKING(for broken CMSG_FIRSTHDR)
5b087528 844AC_RUN_IFELSE([AC_LANG_SOURCE([[
b99760ab 845#ifdef SUNOS_5
846#define _XPG4_2
847#define __EXTENSIONS__
848#endif
6f0e3f6e
PJ
849#ifdef HAVE_STDLIB_H
850# include <stdlib.h>
851#endif
852#ifdef HAVE_SYS_TYPES_H
b99760ab 853#include <sys/types.h>
6f0e3f6e
PJ
854#endif
855#ifdef HAVE_SYS_SOCKET_H
b99760ab 856#include <sys/socket.h>
6f0e3f6e 857#endif
b99760ab 858
859main()
860{
861 struct msghdr msg;
862 char buf[4];
863
864 msg.msg_control = buf;
865 msg.msg_controllen = 0;
866
867 if (CMSG_FIRSTHDR(&msg) != NULL)
868 exit(0);
869 exit (1);
5b087528 870}]])],[AC_MSG_RESULT(yes - using workaround) AC_DEFINE(HAVE_BROKEN_CMSG_FIRSTHDR,,Broken CMSG_FIRSTHDR)],
d33e8d7b 871[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
b99760ab 872
7ea487bc 873dnl ------------------------------
874dnl check kernel route read method
875dnl ------------------------------
5589ffa7
JJ
876AC_CACHE_CHECK([route read method], [quagga_cv_rtread_method],
877[if test "x$netlink" = xyes; then
878 quagga_cv_rtread_method="netlink"
7ea487bc 879else
5589ffa7 880for quagga_cv_rtread_method in /proc/net/route /dev/ip /dev/null;
7ea487bc 881do
5589ffa7 882 test x`ls $quagga_cv_rtread_method 2>/dev/null` = x"$quagga_cv_rtread_method" && break
7ea487bc 883done
5589ffa7
JJ
884case $quagga_cv_rtread_method in
885 "/proc/net/route") quagga_cv_rtread_method="proc";;
9c30ab6b 886 "/dev/ip")
887 case "$host" in
5589ffa7
JJ
888 *-freebsd*) quagga_cv_rtread_method="sysctl";;
889 *) quagga_cv_rtread_method="getmsg";;
9c30ab6b 890 esac;;
5589ffa7
JJ
891 *)
892 quagga_cv_rtread_method="sysctl";;
7ea487bc 893esac
894fi])
5589ffa7 895RTREAD_METHOD=rtread_${quagga_cv_rtread_method}.o
7ea487bc 896AC_SUBST(RTREAD_METHOD)
897
898dnl -----------------------------
899dnl check interface lookup method
900dnl -----------------------------
19877dd2 901IOCTL_METHOD=ioctl.o
7ea487bc 902AC_MSG_CHECKING(interface looking up method)
903if test "$netlink" = yes; then
904 AC_MSG_RESULT(netlink)
905 IF_METHOD=if_netlink.o
19877dd2 906elif test "$opsys" = "sol2-6";then
907 AC_MSG_RESULT(Solaris GIF)
908 IF_METHOD=if_ioctl.o
afd8a129 909elif test "$opsys" = "sol8";then
19877dd2 910 AC_MSG_RESULT(Solaris GLIF)
911 IF_METHOD=if_ioctl_solaris.o
912 IOCTL_METHOD=ioctl_solaris.o
913elif test "$opsys" = "irix" ; then
914 AC_MSG_RESULT(IRIX)
915 IF_METHOD=if_ioctl.o
916elif test "$opsys" = "openbsd";then
917 AC_MSG_RESULT(openbsd)
918 IF_METHOD=if_ioctl.o
919elif grep NET_RT_IFLIST /usr/include/sys/socket.h >/dev/null 2>&1; then
920 AC_MSG_RESULT(sysctl)
7ea487bc 921 IF_METHOD=if_sysctl.o
922 AC_DEFINE(HAVE_NET_RT_IFLIST,,NET_RT_IFLIST)
19877dd2 923else
7ea487bc 924 AC_MSG_RESULT(ioctl)
925 IF_METHOD=if_ioctl.o
7ea487bc 926fi
927AC_SUBST(IF_METHOD)
19877dd2 928AC_SUBST(IOCTL_METHOD)
7ea487bc 929
42c98199 930dnl ---------------------------------------------------------------
931dnl figure out how to specify an interface in multicast sockets API
932dnl ---------------------------------------------------------------
6f0e3f6e 933AC_CHECK_MEMBERS([struct ip_mreqn.imr_ifindex], [], [], QUAGGA_INCLUDES)
42c98199 934
935AC_MSG_CHECKING([for BSD struct ip_mreq hack])
936AC_TRY_COMPILE([#ifdef HAVE_SYS_PARAM_H
937#include <sys/param.h>
c540835e 938#endif],[#if (defined(__FreeBSD__) && ((__FreeBSD_version >= 500022 && __FreeBSD_version < 700000) || (__FreeBSD_version < 500000 && __FreeBSD_version >= 440000))) || (defined(__NetBSD__) && defined(__NetBSD_Version__) && __NetBSD_Version__ >= 106010000)
42c98199 939 return (0);
940#else
941 #error No support for BSD struct ip_mreq hack detected
942#endif],[AC_MSG_RESULT(yes)
943AC_DEFINE(HAVE_BSD_STRUCT_IP_MREQ_HACK,,[Can pass ifindex in struct ip_mreq])],
944AC_MSG_RESULT(no))
945
c543a173
AS
946dnl ---------------------------------------------------------------
947dnl figure out how to check link-state
948dnl ---------------------------------------------------------------
6418bedf
AS
949AC_CHECK_HEADER([net/if.h],
950 [AC_CHECK_HEADER( [net/if_media.h],
951 [m4_define([LINK_DETECT_INCLUDES],
952 QUAGGA_INCLUDES
953 [#include <net/if_media.h>
954 ])
955 AC_CHECK_MEMBERS( [struct ifmediareq.ifm_status],
956 AC_DEFINE(HAVE_BSD_LINK_DETECT,,[BSD link-detect]),
957 [], LINK_DETECT_INCLUDES)],
958 [],
959 QUAGGA_INCLUDES)],
960 [], QUAGGA_INCLUDES )
c543a173 961
0df7c91f
PJ
962dnl ------------------------
963dnl TCP_MD5SIG socket option
964dnl ------------------------
965
966AC_CHECK_HEADER([netinet/tcp.h],
967 [m4_define([MD5_INCLUDES],
968 QUAGGA_INCLUDES
969 [#include <netinet/tcp.h>
970 ])
971 AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)],
972 [],
973 QUAGGA_INCLUDES)
974if test $ac_cv_have_decl_TCP_MD5SIG = no; then
975 AC_CHECK_HEADER([linux/tcp.h],
976 [m4_define([MD5_INCLUDES],
977 QUAGGA_INCLUDES
978 [#include <linux/tcp.h>
979 ])
980 AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)])
981fi
982
7ea487bc 983dnl -----------------------
984dnl check proc file system.
985dnl -----------------------
cadfb2cd
SH
986if test "$netlink" != yes; then
987 if test -r /proc/net/dev; then
988 AC_DEFINE(HAVE_PROC_NET_DEV,,/proc/net/dev)
989 IF_PROC=if_proc.o
990 fi
991 if test -r /proc/net/if_inet6; then
992 AC_DEFINE(HAVE_PROC_NET_IF_INET6,,/proc/net/if_inet6)
993 IF_PROC=if_proc.o
994 fi
7ea487bc 995fi
996AC_SUBST(IF_PROC)
997
998dnl -----------------------------
999dnl check ipforward detect method
1000dnl -----------------------------
5589ffa7
JJ
1001AC_CACHE_CHECK([ipforward method], [quagga_cv_ipforward_method],
1002[for quagga_cv_ipforward_method in /proc/net/snmp /dev/ip /dev/null;
7ea487bc 1003do
5589ffa7 1004 test x`ls $quagga_cv_ipforward_method 2>/dev/null` = x"$quagga_cv_ipforward_method" && break
7ea487bc 1005done
5589ffa7
JJ
1006case $quagga_cv_ipforward_method in
1007 "/proc/net/snmp") quagga_cv_ipforward_method="proc";;
7ea487bc 1008 "/dev/ip")
1009 case "$host" in
5589ffa7
JJ
1010 *-nec-sysv4*) quagga_cv_ipforward_method="ews";;
1011 *-freebsd*) quagga_cv_ipforward_method="sysctl";;
1012 *) quagga_cv_ipforward_method="solaris";;
7ea487bc 1013 esac;;
5589ffa7 1014 *) quagga_cv_ipforward_method="sysctl";;
7ea487bc 1015esac])
5589ffa7 1016IPFORWARD=ipforward_${quagga_cv_ipforward_method}.o
7ea487bc 1017AC_SUBST(IPFORWARD)
1018
1019AC_CHECK_FUNCS(getaddrinfo, [have_getaddrinfo=yes], [have_getaddrinfo=no])
1020
1021dnl ----------
1022dnl IPv6 check
1023dnl ----------
1024AC_MSG_CHECKING(whether does this OS have IPv6 stack)
1025if test "${enable_ipv6}" = "no"; then
1026 AC_MSG_RESULT(disabled)
1027else
1028dnl ----------
1029dnl INRIA IPv6
1030dnl ----------
a159ed93 1031 if grep IPV6_INRIA_VERSION /usr/include/netinet/in.h >/dev/null 2>&1; then
1032 zebra_cv_ipv6=yes
1033 AC_DEFINE(HAVE_IPV6,1,INRIA IPv6)
1034 AC_DEFINE(INRIA_IPV6,1,INRIA IPv6)
1035 RIPNGD="ripngd"
1036 OSPF6D="ospf6d"
1037 LIB_IPV6=""
1038 AC_MSG_RESULT(INRIA IPv6)
7ea487bc 1039dnl ---------
1040dnl KAME IPv6
1041dnl ---------
a159ed93 1042 elif grep WIDE /usr/include/netinet6/in6.h >/dev/null 2>&1; then
1043 zebra_cv_ipv6=yes
1044 AC_DEFINE(HAVE_IPV6,1,KAME IPv6)
1045 AC_DEFINE(KAME,1,KAME IPv6)
1046 RIPNGD="ripngd"
1047 OSPF6D="ospf6d"
1048 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
7ea487bc 1049 LIB_IPV6="-L/usr/local/v6/lib -linet6"
a159ed93 1050 fi
1051 AC_MSG_RESULT(KAME)
71c0fb50 1052dnl -------------------------
1053dnl MUSICA IPv6
1054dnl default host check
1055dnl It is not used by Kheops
1056dnl -------------------------
a159ed93 1057 elif grep MUSICA /usr/include6/netinet6/in6.h >/dev/null 2>&1; then
1058 zebra_cv_ipv6=yes
1059 AC_DEFINE(HAVE_IPV6,1,Musicia IPv6)
1060 AC_DEFINE(MUSICA,1,Musica IPv6 stack)
1061 AC_DEFINE(KAME,1,KAME IPv6 stack)
1062 RIPNGD="ripngd"
1063 OSPF6D="ospf6d"
1064 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
71c0fb50 1065 LIB_IPV6="-L/usr/local/v6/lib -linet6"
a159ed93 1066 fi
1067 AC_MSG_RESULT(MUSICA)
7ea487bc 1068dnl ---------
1069dnl NRL check
1070dnl ---------
a159ed93 1071 elif grep NRL /usr/include/netinet6/in6.h >/dev/null 2>&1; then
1072 zebra_cv_ipv6=yes
1073 AC_DEFINE(HAVE_IPV6,1,NRL IPv6)
1074 AC_DEFINE(NRL,1,NRL)
1075 RIPNGD="ripngd"
1076 OSPF6D="ospf6d"
1077 if test x"$opsys" = x"bsdi";then
7ea487bc 1078 AC_DEFINE(BSDI_NRL,,BSDI)
1079 AC_MSG_RESULT(BSDI_NRL)
a159ed93 1080 else
7ea487bc 1081 AC_MSG_RESULT(NRL)
a159ed93 1082 fi
19877dd2 1083dnl ------------------------------------
1084dnl Solaris 9, 10 and potentially higher
1085dnl ------------------------------------
afd8a129 1086 elif test x"$opsys" = x"sol8"; then
19877dd2 1087 zebra_cv_ipv6=yes;
1088 AC_DEFINE(HAVE_IPV6, 1, IPv6)
1089 AC_DEFINE(SOLARIS_IPV6, 1, Solaris IPv6)
1090 RIPNGD="ripngd"
1091 OSPF6D="ospf6d"
1092 AC_MSG_RESULT(Solaris IPv6)
7ea487bc 1093dnl ----------
1094dnl Linux IPv6
1095dnl ----------
a159ed93 1096 elif test "${enable_ipv6}" = "yes"; then
1097 AC_EGREP_CPP(yes, [
1098 #include <linux/version.h>
1099 /* 2.1.128 or later */
1100 #if LINUX_VERSION_CODE >= 0x020180
1101 yes
1102 #endif],
1103 [zebra_cv_ipv6=yes
1104 zebra_cv_linux_ipv6=yes
1105 AC_MSG_RESULT(Linux IPv6)])
1106 else
1107 if test x`ls /proc/net/ipv6_route 2>/dev/null` = x"/proc/net/ipv6_route"
1108 then
7ea487bc 1109 zebra_cv_ipv6=yes
1110 zebra_cv_linux_ipv6=yes
1111 AC_MSG_RESULT(Linux IPv6)
a159ed93 1112 fi
1113 fi
7ea487bc 1114
850d39f3 1115 if test "$zebra_cv_linux_ipv6" = "yes";then
1116 AC_MSG_CHECKING(whether libc has IPv6 support)
1117 AC_TRY_LINK([#include <netinet/in.h>
1118 ],[ int a; a = (int) in6addr_any.s6_addr[0]; if (a != 12345) return a; ],
1119 [AC_MSG_RESULT(yes)
1120 zebra_cv_ipv6=yes
1121 zebra_cv_linux_ipv6=yes],
1122 [AC_MSG_RESULT(no)
1123 zebra_cv_ipv6=no
1124 zebra_cv_linux_ipv6=no])
1125 fi
1126
a159ed93 1127 if test "$zebra_cv_linux_ipv6" = "yes";then
1128 AC_MSG_CHECKING(for GNU libc >= 2.1)
1129 AC_DEFINE(HAVE_IPV6,1,Linux IPv6)
1130 AC_EGREP_CPP(yes, [
7ea487bc 1131#include <features.h>
1132#if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
1133 yes
a159ed93 1134#endif],
1135 [glibc=yes
1136 AC_DEFINE(LINUX_IPV6,1,Linux IPv6 stack)
1137 AC_MSG_RESULT(yes)],
1138 AC_MSG_RESULT(no)
1139 )
1140 RIPNGD="ripngd"
1141 OSPF6D="ospf6d"
1142 if test "$glibc" != "yes"; then
7ea487bc 1143 INCLUDES="-I/usr/inet6/include"
1144 if test x`ls /usr/inet6/lib/libinet6.a 2>/dev/null` != x;then
1145 LIB_IPV6="-L/usr/inet6/lib -linet6"
1146 fi
a159ed93 1147 fi
1148 fi
7ea487bc 1149
1150dnl -----------------------
1151dnl Set IPv6 related values
1152dnl -----------------------
a159ed93 1153 LIBS="$LIB_IPV6 $LIBS"
1154 AC_SUBST(LIB_IPV6)
7ea487bc 1155
a159ed93 1156 if test x"$RIPNGD" = x""; then
1157 AC_MSG_RESULT(IPv4 only)
1158 fi
7ea487bc 1159fi
1160
fa3232e1 1161dnl ------------------
1162dnl IPv6 header checks
1163dnl ------------------
1164if test "x${zebra_cv_ipv6}" = "xyes"; then
1165AC_CHECK_HEADERS([netinet6/in6.h netinet/in6_var.h netinet/icmp6.h \
6f0e3f6e
PJ
1166 netinet6/in6_var.h netinet6/nd6.h], [], [],
1167 QUAGGA_INCLUDES)
fa3232e1 1168fi
1169
6f0e3f6e
PJ
1170m4_define([QUAGGA_INCLUDES],dnl
1171QUAGGA_INCLUDES
1172[#if HAVE_NETINET6_IN6_H
1173#include <netinet6/in6.h>
1174#endif
1175#if HAVE_NETINET_IN6_VAR_H
1176#include <netinet/in6_var.h>
1177#endif
1178#if HAVE_NETINET_ICMP6_H
1179# include <netinet/icmp6.h>
1180#endif
1181#if HAVE_NETINET6_IN6_VAR_H
1182# include <netinet6/in6_var.h>
1183#endif
1184#if HAVE_NETINET6_ND6_H
fbf24544 1185# include <netinet6/nd6.h>
6f0e3f6e
PJ
1186#endif
1187])dnl
1188
cbcd9bfc
JT
1189dnl disable doc check
1190if test "${enable_doc}" = "no";then
1191 DOC=""
1192else
1193 DOC="doc"
1194fi
1195
7ea487bc 1196dnl --------------------
1197dnl Daemon disable check
1198dnl --------------------
1199if test "${enable_zebra}" = "no";then
1200 ZEBRA=""
1201else
1202 ZEBRA="zebra"
1203fi
1204
1205if test "${enable_bgpd}" = "no";then
1206 BGPD=""
1207else
1208 BGPD="bgpd"
1209fi
1210
1211if test "${enable_ripd}" = "no";then
1212 RIPD=""
1213else
1214 RIPD="ripd"
1215fi
1216
1217if test "${enable_ospfd}" = "no";then
1218 OSPFD=""
1219else
1220 OSPFD="ospfd"
1221fi
1222
d0199430 1223if test "${enable_watchquagga}" = "no";then
1224 WATCHQUAGGA=""
1225else
1226 WATCHQUAGGA="watchquagga"
1227fi
1228
1ef74ef7 1229OSPFCLIENT=""
0d51c7ef 1230if test "${enable_opaque_lsa}" != "no"; then
1ef74ef7 1231 if test "${enable_ospfapi}" != "no";then
9a569848 1232 AC_DEFINE(SUPPORT_OSPF_API,,OSPFAPI)
1ef74ef7 1233
1234 if test "${enable_ospfclient}" != "no";then
1235 OSPFCLIENT="ospfclient"
1236 fi
1237 fi
1238
7ea487bc 1239fi
1240
1241case "${enable_ripngd}" in
1242 "yes") RIPNGD="ripngd";;
1243 "no" ) RIPNGD="";;
1244 * ) ;;
1245esac
1246
1247case "${enable_ospf6d}" in
1248 "yes") OSPF6D="ospf6d";;
1249 "no" ) OSPF6D="";;
1250 * ) ;;
1251esac
1252
9e867fe6 1253case "${enable_isisd}" in
1254 "yes") ISISD="isisd";;
1255 "no" ) ISISD="";;
ae399ab0 1256 * ) ;;
9e867fe6 1257esac
1258
97cee877
GT
1259# XXX Perhaps auto-enable on Solaris, but that's messy for cross builds.
1260case "${enable_solaris}" in
1261 "yes") SOLARIS="solaris";;
1262 "no" ) SOLARIS="";;
1263 * ) ;;
1264esac
1265
7ea487bc 1266if test "${enable_bgp_announce}" = "no";then
750e8146
PJ
1267 AC_DEFINE(DISABLE_BGP_ANNOUNCE,1,Disable BGP installation to zebra)
1268else
1269 AC_DEFINE(DISABLE_BGP_ANNOUNCE,0,Disable BGP installation to zebra)
7ea487bc 1270fi
1271
cbcd9bfc 1272AC_SUBST(DOC)
7ea487bc 1273AC_SUBST(ZEBRA)
1274AC_SUBST(BGPD)
1275AC_SUBST(RIPD)
1276AC_SUBST(RIPNGD)
1277AC_SUBST(OSPFD)
1278AC_SUBST(OSPF6D)
d0199430 1279AC_SUBST(WATCHQUAGGA)
9e867fe6 1280AC_SUBST(ISISD)
97cee877 1281AC_SUBST(SOLARIS)
7ea487bc 1282AC_SUBST(VTYSH)
1283AC_SUBST(INCLUDES)
1284AC_SUBST(CURSES)
1285AC_SUBST(OSPFCLIENT)
1ef74ef7 1286AC_SUBST(OSPFAPI)
7ea487bc 1287AC_CHECK_LIB(c, inet_ntop, [AC_DEFINE(HAVE_INET_NTOP,,inet_ntop)])
1288AC_CHECK_LIB(c, inet_pton, [AC_DEFINE(HAVE_INET_PTON,,inet_pton)])
1289AC_CHECK_LIB(crypt, crypt)
1290AC_CHECK_LIB(resolv, res_init)
7ea487bc 1291
1292dnl ---------------------------------------------------
1293dnl BSD/OS 4.1 define inet_XtoY function as __inet_XtoY
1294dnl ---------------------------------------------------
a159ed93 1295AC_CHECK_FUNC(__inet_ntop, AC_DEFINE(HAVE_INET_NTOP,,__inet_ntop))
1296AC_CHECK_FUNC(__inet_pton, AC_DEFINE(HAVE_INET_PTON,,__inet_pton))
1297AC_CHECK_FUNC(__inet_aton, AC_DEFINE(HAVE_INET_ATON,,__inet_aton))
7ea487bc 1298
25f45887
JJ
1299dnl ---------------------------
1300dnl check system has PCRE regexp
1301dnl ---------------------------
1302if test "x$enable_pcreposix" = "xyes"; then
1303 AC_CHECK_LIB(pcreposix, pcreposix_regexec, ,[enable_pcreposix=no
1304 AC_MSG_WARN([*** falling back to other regex library ***]) ])
1305fi
1306
1307if test "x$enable_pcreposix" != "xyes"; then
7ea487bc 1308dnl ---------------------------
1309dnl check system has GNU regexp
1310dnl ---------------------------
25f45887 1311AC_MSG_CHECKING(whether system has GNU regex)
7ea487bc 1312AC_CHECK_LIB(c, regexec,
1313[AC_DEFINE(HAVE_GNU_REGEX,,GNU regexp library)
1314 LIB_REGEX=""],
1315[LIB_REGEX="regex.o"])
25f45887
JJ
1316fi
1317AC_SUBST(HAVE_LIBPCREPOSIX)
7ea487bc 1318AC_SUBST(LIB_REGEX)
1319
1320dnl ------------------
b1fc9acb 1321dnl check Net-SNMP library
7ea487bc 1322dnl ------------------
b1fc9acb 1323if test "${enable_snmp}" = "yes"; then
fb62a3ce
JT
1324 if test "$with_crypto" != "no"; then
1325 LIBS="${LIBS} -lcrypto";
1326 fi
b1fc9acb 1327 AC_CHECK_LIB(netsnmp, asn_parse_int,
1328 [AC_DEFINE(HAVE_NETSNMP,,Net SNMP)
1329 AC_DEFINE(HAVE_SNMP,,SNMP)
1330 LIBS="${LIBS} -lnetsnmp"],
1331 [AC_MSG_ERROR([--enable-snmp given, but cannot find support for SNMP])])
fb62a3ce
JT
1332
1333 AC_CHECK_HEADER([net-snmp/net-snmp-config.h],
1334 [],
1335 [AC_MSG_ERROR([--enable-snmp given, but cannot find net-snmp-config.h])],
1336 QUAGGA_INCLUDES)
b1fc9acb 1337 AC_SUBST(SNMP_INCLUDES)
6cf9df08 1338fi
1339
7ea487bc 1340dnl ---------------------------
6f0e3f6e 1341dnl sockaddr and netinet checks
7ea487bc 1342dnl ---------------------------
6f0e3f6e
PJ
1343AC_CHECK_TYPES([struct sockaddr, struct sockaddr_in,
1344 struct sockaddr_in6, struct sockaddr_un, struct sockaddr_dl,
1345 socklen_t,
1346 struct ifaliasreq, struct if6_aliasreq, struct in6_aliasreq,
1347 struct nd_opt_adv_interval, struct rt_addrinfo,
11770e10 1348 struct nd_opt_homeagent_info, struct nd_opt_adv_interval],
6f0e3f6e
PJ
1349 [], [], QUAGGA_INCLUDES)
1350
1351AC_CHECK_MEMBERS([struct sockaddr.sa_len,
1352 struct sockaddr_in.sin_len, struct sockaddr_un.sun_len,
1353 struct sockaddr_in6.sin6_scope_id,
1354 struct if6_aliasreq.ifra_lifetime,
1355 struct nd_opt_adv_interval.nd_opt_ai_type],
1356 [], [], QUAGGA_INCLUDES)
29c4c9bd 1357
6f0e3f6e 1358dnl ---------------------------
11770e10 1359dnl IRDP/pktinfo/icmphdr checks
6f0e3f6e
PJ
1360dnl ---------------------------
1361AC_CHECK_TYPES([struct in_pktinfo],
11770e10
PJ
1362 [AC_CHECK_TYPES([struct icmphdr],
1363 [if test "${enable_irdp}" != "no"; then
1364 AC_DEFINE(HAVE_IRDP,, IRDP)
1365 fi],
1366 [if test "${enable_irdp}" = "yes"; then
1367 AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
1368 fi], [QUAGGA_INCLUDES])],
6f0e3f6e
PJ
1369 [if test "${enable_irdp}" = "yes"; then
1370 AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
1371 fi], [QUAGGA_INCLUDES])
29c4c9bd 1372
7ea487bc 1373dnl --------------------------------------
1374dnl checking for getrusage struct and call
1375dnl --------------------------------------
1376AC_MSG_CHECKING(whether getrusage is available)
1377AC_TRY_COMPILE([#include <sys/resource.h>
1378],[struct rusage ac_x; getrusage (RUSAGE_SELF, &ac_x);],
1379[AC_MSG_RESULT(yes)
1380 AC_DEFINE(HAVE_RUSAGE,,rusage)],
1381 AC_MSG_RESULT(no))
1382
c4376c9d
SH
1383dnl --------------------------------------
1384dnl checking for clock_time monotonic struct and call
1385dnl --------------------------------------
6511cab2
PJ
1386AC_CHECK_DECL(CLOCK_MONOTONIC,
1387 [AC_CHECK_LIB(rt, clock_gettime, [LIBS="$LIBS -lrt"])
9964fcfc 1388 AC_DEFINE(HAVE_CLOCK_MONOTONIC,, Have monotonic clock)
6511cab2 1389], [AC_MSG_RESULT(no)], [QUAGGA_INCLUDES])
c4376c9d 1390
edd7c245 1391dnl -------------------
1392dnl capabilities checks
1393dnl -------------------
41d3fc96 1394if test "${enable_capabilities}" != "no"; then
1395 AC_MSG_CHECKING(whether prctl PR_SET_KEEPCAPS is available)
1396 AC_TRY_COMPILE([#include <sys/prctl.h>],[prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);],
1397 [AC_MSG_RESULT(yes)
1398 AC_DEFINE(HAVE_PR_SET_KEEPCAPS,,prctl)
1399 quagga_ac_keepcaps="yes"],
1400 AC_MSG_RESULT(no)
edd7c245 1401 )
41d3fc96 1402 if test x"${quagga_ac_keepcaps}" = x"yes"; then
1403 AC_CHECK_HEADERS(sys/capability.h)
1404 fi
1405 if test x"${ac_cv_header_sys_capability_h}" = x"yes"; then
1406 AC_CHECK_LIB(cap, cap_init,
1407 [AC_DEFINE(HAVE_LCAPS,1,Capabilities)
1408 LIBCAP="-lcap"
ceacedba 1409 quagga_ac_lcaps="yes"]
41d3fc96 1410 )
ceacedba 1411 else
1412 AC_CHECK_HEADERS(priv.h,
1413 [AC_MSG_CHECKING(Solaris style privileges are available)
1414 AC_TRY_COMPILE([#include <priv.h>],[getpflags(PRIV_AWARE);],
1415 [AC_MSG_RESULT(yes)
1416 AC_DEFINE(HAVE_SOLARIS_CAPABILITIES,1,getpflags)
1417 quagga_ac_scaps="yes"],
1418 AC_MSG_RESULT(no)
1419 )
1420 ]
1421 )
1422 fi
1423 if test x"${quagga_ac_scaps}" = x"yes" \
1424 -o x"${quagga_ac_lcaps}" = x"yes"; then
1425 AC_DEFINE(HAVE_CAPABILITIES,1,capabilities)
41d3fc96 1426 fi
edd7c245 1427fi
1428AC_SUBST(LIBCAP)
1429
fb2d1502 1430dnl ---------------------------
1431dnl check for glibc 'backtrace'
1432dnl ---------------------------
1433if test "${glibc}" = "yes"; then
fb66b29c
PJ
1434 AC_CHECK_HEADER([execinfo.h],
1435 [AC_CHECK_FUNC([backtrace],
1436 [AC_DEFINE(HAVE_GLIBC_BACKTRACE,,[Glibc backtrace])
1437 AC_DEFINE(HAVE_STACK_TRACE,,[Stack symbol decoding])
1438 ])
1439 ])
fb2d1502 1440fi
1441
41be32bf
PJ
1442dnl -----------------------------------------
1443dnl check for malloc mallinfo struct and call
1444dnl this must try and link using LIBS, in
1445dnl order to check no alternative allocator
1446dnl has been specified, which might not provide
1447dnl mallinfo, e.g. such as Umem on Solaris.
1448dnl -----------------------------------------
6f0e3f6e 1449AC_CHECK_HEADER([malloc.h],
41be32bf
PJ
1450 [AC_MSG_CHECKING(whether mallinfo is available)
1451 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <malloc.h>]],
1452 [[struct mallinfo ac_x; ac_x = mallinfo ();]])],
1453 [AC_MSG_RESULT(yes)
1454 AC_DEFINE(HAVE_MALLINFO,,mallinfo)],
1455 AC_MSG_RESULT(no)
1456 )
6f0e3f6e 1457 ], [], QUAGGA_INCLUDES)
41be32bf 1458
408ad943 1459dnl ----------
1460dnl configure date
1461dnl ----------
1462CONFDATE=`date '+%Y%m%d'`
1463AC_SUBST(CONFDATE)
1464
46bc0e43 1465dnl Conditionally enable PIE support for GNU toolchains.
46bc0e43 1466AC_ARG_ENABLE(pie, AS_HELP_STRING([--disable-pie], [Do not build tools as a Position Independent Executables]))
0e9de56d 1467if test "$enable_pie" != "no"; then
46bc0e43
PKJ
1468 AC_CACHE_CHECK([whether $CC accepts PIE flags], [ap_cv_cc_pie], [
1469 save_CFLAGS=$CFLAGS
1470 save_LDFLAGS=$LDFLAGS
1471 CFLAGS="$CFLAGS -fPIE"
1472 LDFLAGS="$LDFLAGS -pie"
1473 AC_LINK_IFELSE([AC_LANG_SOURCE([[static int foo[30000]; int main () { return 0; }]])],
1474 [ap_cv_cc_pie=yes], [ap_cv_cc_pie=no]
1475 )
1476 CFLAGS=$save_CFLAGS
1477 LDFLAGS=$save_LDFLAGS
1478 ])
1479 if test "$ap_cv_cc_pie" = "yes"; then
1480 PICFLAGS="-fPIE"
1481 PILDFLAGS="-pie"
1482 fi
1483fi
1484
1485AC_SUBST(PICFLAGS)
1486AC_SUBST(PILDFLAGS)
1487
7ea487bc 1488dnl ------------------------------
a159ed93 1489dnl set paths for state directory
23bd12c3 1490dnl ------------------------------
e84999d9 1491AC_MSG_CHECKING(directory to use for state file)
23bd12c3 1492if test "${prefix}" = "NONE"; then
e8f2984c 1493 quagga_statedir_prefix="";
23bd12c3 1494else
e8f2984c 1495 quagga_statedir_prefix=${prefix}
23bd12c3 1496fi
1497if test "${localstatedir}" = '${prefix}/var'; then
e84999d9 1498 for QUAGGA_STATE_DIR in ${quagga_statedir_prefix}/var/run dnl
e8f2984c 1499 ${quagga_statedir_prefix}/var/adm dnl
1500 ${quagga_statedir_prefix}/etc dnl
a159ed93 1501 /var/run dnl
1502 /var/adm dnl
1503 /etc dnl
1504 /dev/null;
23bd12c3 1505 do
e8f2984c 1506 test -d $QUAGGA_STATE_DIR && break
23bd12c3 1507 done
e84999d9 1508 quagga_statedir=$QUAGGA_STATE_DIR
23bd12c3 1509else
e8f2984c 1510 quagga_statedir=${localstatedir}
a159ed93 1511fi
e8f2984c 1512if test $quagga_statedir = "/dev/null"; then
a159ed93 1513 AC_MSG_ERROR('STATE DIRECTORY NOT FOUND! FIX OR SPECIFY --localstatedir!')
1514fi
e84999d9
JJ
1515AC_MSG_RESULT(${quagga_statedir})
1516AC_SUBST(quagga_statedir)
a159ed93 1517
e8f2984c 1518AC_DEFINE_UNQUOTED(PATH_ZEBRA_PID, "$quagga_statedir/zebra.pid",zebra PID)
1519AC_DEFINE_UNQUOTED(PATH_RIPD_PID, "$quagga_statedir/ripd.pid",ripd PID)
1520AC_DEFINE_UNQUOTED(PATH_RIPNGD_PID, "$quagga_statedir/ripngd.pid",ripngd PID)
1521AC_DEFINE_UNQUOTED(PATH_BGPD_PID, "$quagga_statedir/bgpd.pid",bgpd PID)
1522AC_DEFINE_UNQUOTED(PATH_OSPFD_PID, "$quagga_statedir/ospfd.pid",ospfd PID)
1523AC_DEFINE_UNQUOTED(PATH_OSPF6D_PID, "$quagga_statedir/ospf6d.pid",ospf6d PID)
9e867fe6 1524AC_DEFINE_UNQUOTED(PATH_ISISD_PID, "$quagga_statedir/isisd.pid",isisd PID)
d0199430 1525AC_DEFINE_UNQUOTED(PATH_WATCHQUAGGA_PID, "$quagga_statedir/watchquagga.pid",watchquagga PID)
e8f2984c 1526AC_DEFINE_UNQUOTED(ZEBRA_SERV_PATH, "$quagga_statedir/zserv.api",zebra api socket)
1527AC_DEFINE_UNQUOTED(ZEBRA_VTYSH_PATH, "$quagga_statedir/zebra.vty",zebra vty socket)
1528AC_DEFINE_UNQUOTED(RIP_VTYSH_PATH, "$quagga_statedir/ripd.vty",rip vty socket)
1529AC_DEFINE_UNQUOTED(RIPNG_VTYSH_PATH, "$quagga_statedir/ripngd.vty",ripng vty socket)
1530AC_DEFINE_UNQUOTED(BGP_VTYSH_PATH, "$quagga_statedir/bgpd.vty",bgpd vty socket)
1531AC_DEFINE_UNQUOTED(OSPF_VTYSH_PATH, "$quagga_statedir/ospfd.vty",ospfd vty socket)
1532AC_DEFINE_UNQUOTED(OSPF6_VTYSH_PATH, "$quagga_statedir/ospf6d.vty",ospf6d vty socket)
9e867fe6 1533AC_DEFINE_UNQUOTED(ISIS_VTYSH_PATH, "$quagga_statedir/isisd.vty",isisd vty socket)
515210bd 1534AC_DEFINE_UNQUOTED(DAEMON_VTY_DIR, "$quagga_statedir",daemon vty directory)
7ea487bc 1535
1eb8ef25 1536dnl -------------------------------
1537dnl Quagga sources should always be
1538dnl current wrt interfaces. Dont
1539dnl allow deprecated interfaces to
1540dnl be exposed.
1541dnl -------------------------------
1542AC_DEFINE(QUAGGA_NO_DEPRECATED_INTERFACES, 1, Hide deprecated interfaces)
1543
7ea487bc 1544dnl ---------------------------
1545dnl Check htonl works correctly
1546dnl ---------------------------
1547AC_MSG_CHECKING(for working htonl)
6f0e3f6e
PJ
1548AC_CACHE_VAL(ac_cv_htonl_works,
1549 [AC_LINK_IFELSE([AC_LANG_PROGRAM([QUAGGA_INCLUDES],[htonl (0);])],
1550 [ac_cv_htonl_works=yes], [ac_cv_htonl_works=no])
1551 ]
1552)
7ea487bc 1553AC_MSG_RESULT($ac_cv_htonl_works)
1554
14c17fd8 1555AC_CONFIG_FILES([Makefile lib/Makefile zebra/Makefile ripd/Makefile
d0199430 1556 ripngd/Makefile bgpd/Makefile ospfd/Makefile watchquagga/Makefile
9e867fe6 1557 ospf6d/Makefile isisd/Makefile vtysh/Makefile doc/Makefile
14c17fd8 1558 ospfclient/Makefile tests/Makefile m4/Makefile redhat/Makefile
69f1fc22 1559 pkgsrc/Makefile
670bbf19 1560 redhat/quagga.spec
b7a97f82 1561 lib/version.h
14c17fd8 1562 doc/defines.texi
f695b01f 1563 isisd/topology/Makefile
cbd04084 1564 pkgsrc/bgpd.sh pkgsrc/ospf6d.sh pkgsrc/ospfd.sh
f31293af 1565 pkgsrc/ripd.sh pkgsrc/ripngd.sh pkgsrc/zebra.sh])
26275b05 1566AC_CONFIG_FILES([solaris/Makefile])
1567
670bbf19 1568AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl])
48577196 1569## Hack, but working solution to avoid rebuilding of quagga.info.
1570## It's already in CVS until texinfo 4.7 is more common.
14c17fd8 1571AC_OUTPUT
7ea487bc 1572
1573echo "
c89f6494 1574Quagga configuration
1575--------------------
1576quagga version : ${PACKAGE_VERSION}
cdb99504 1577host operating system : ${host_os}
7ea487bc 1578source code location : ${srcdir}
1579compiler : ${CC}
1580compiler flags : ${CFLAGS}
6f0e3f6e 1581make : ${MAKE-make}
2d58228e 1582includes : ${INCLUDES} ${SNMP_INCLUDES}
6f0e3f6e 1583linker flags : ${LDFLAGS} ${LIBS} ${LIBCAP} ${LIBREADLINE} ${LIBM}
e8f2984c 1584state file directory : ${quagga_statedir}
dc7a2bf1 1585config file directory : `eval echo \`echo ${sysconfdir}\``
d6b72f7a 1586example directory : `eval echo \`echo ${exampledir}\``
8d4aee5d 1587user to run as : ${enable_user}
1588group to run as : ${enable_group}
1589group for vty sockets : ${enable_vty_group}
aa593d5e 1590config file mask : ${enable_configfile_mask}
1591log file mask : ${enable_logfile_mask}
dc7a2bf1 1592
1593The above user and group must have read/write access to the state file
105b8239
PJ
1594directory and to the config files in the config file directory."
1595
1596if test x"$quagga_cv_gnu_make" = x"no"; then echo "
1597Warning: The ${MAKE-make} programme detected, either in your path or
1598via the MAKE variable, is not GNU Make. GNU make may be installed as
1599gmake on some systems. and is required to complete a build of Quagga
1600" > /dev/stderr
1601fi