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