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