2 ## Configure template file for Quagga.
3 ## autoconf will generate configure script.
5 ## Copyright (c) 1996, 97, 98, 99, 2000 Kunihiro Ishiguro <kunihiro@zebra.org>
6 ## Portions Copyright (c) 2003 Paul Jakma <paul@dishone.st>
11 AC_INIT(Quagga, 0.99.12, [http://bugzilla.quagga.net])
12 AC_CONFIG_SRCDIR(lib/zebra.h)
14 dnl -----------------------------------
15 dnl Get hostname and other information.
16 dnl -----------------------------------
22 AM_CONFIG_HEADER(config.h)
24 dnl GNU awk is required for lib/memtype.h made by memtypes.awk.
25 dnl BSD awk complains: awk: gensub doesn't support backreferences (subst "\1")
26 AC_CHECK_PROG([GAWK],[gawk],[gawk],[/bin/false])
27 AC_ARG_VAR([GAWK],[GNU AWK])
29 dnl default is to match previous behavior
30 exampledir=${sysconfdir}
31 AC_ARG_ENABLE([exampledir],
32 AC_HELP_STRING([--enable-exampledir],
33 [specify alternate directory for examples]),
34 exampledir="$enableval",)
35 dnl XXX add --exampledir to autoconf standard directory list somehow
38 dnl default is to match previous behavior
41 AC_ARG_ENABLE([pkgsrcrcdir],
42 AC_HELP_STRING([--enable-pkgsrcrcdir],
43 [specify directory for rc.d scripts]),
44 pkgsrcrcdir="$enableval"; pkgsrcdir="pkgsrc",)
45 dnl XXX add --pkgsrcrcdir to autoconf standard directory list somehow
53 [ --with-cflags Set CFLAGS for use in compilation.])
54 if test "x$with_cflags" != "x" ; then
55 CFLAGS="$with_cflags" ; cflags_specified=yes ;
56 elif test -n "$CFLAGS" ; then
57 cflags_specified=yes ;
60 dnl --------------------
61 dnl Check CC and friends
62 dnl --------------------
69 dnl autoconf 2.59 appears not to support AC_PROG_SED
71 AC_CHECK_PROG([SED],[sed],[sed],[/bin/false])
73 dnl ------------------------------------------------------------------
74 dnl Intel compiler check. Although Intel tries really hard to make icc
75 dnl look like gcc, there are some differences. It's very verbose with
76 dnl -Wall and it doesn't support the individual -W options.
77 dnl ------------------------------------------------------------------
78 if test "x${GCC}" = "xyes" ; then
80 AC_MSG_CHECKING([whether we are using the Intel compiler])
81 AC_EGREP_CPP([^__INTEL_COMPILER], [__INTEL_COMPILER],
82 [AC_MSG_RESULT([no])],
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])],
95 dnl ---------------------------------------------
96 dnl If CLFAGS doesn\'t exist set default value
97 dnl AC_PROG_CC will have set minimal default
98 dnl already, eg "-O2 -g" for gcc, "-g" for others
99 dnl (Wall is gcc specific... have to make sure
100 dnl gcc is being used before setting it)
102 dnl Intel icc 8.0 also sets __GNUC__,
103 dnl but doesn't support all these fancy -W options.
104 dnl Intel compiler warnings we ignore:
105 dnl 279: controlling expression is constant.
106 dnl 869: parameter "xxx" was never referenced - to avoid massive warnings
107 dnl about "self", "vty", "argc" and "argv" never referenced in DEFUN
109 dnl 981: operands are evaluated in unspecified order.
111 dnl Sun Studio 10 / SunPro 5.7 is also supported,
112 dnl so lets set some sane CFLAGS for it.
113 dnl ---------------------------------------------
115 AC_MSG_CHECKING([whether to set a default CFLAGS])
116 if test "x${cflags_specified}" = "x" ; then
119 CFLAGS="-Os -g -Wall -wd 279,869,981"
120 AC_MSG_RESULT([Intel default])
123 CFLAGS="-Os -fno-omit-frame-pointer -g -std=gnu99 -Wall"
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])
132 CFLAGS="-xO4 -v -g -xspace -xcode=pic32 -xstrconst -xc99"
133 AC_MSG_RESULT([SunPro default])
136 AC_MSG_RESULT([unknown compiler])
140 AC_MSG_RESULT([CFLAGS supplied by user])
149 AC_CHECK_TOOL(AR, ar)
151 dnl ---------------------------
152 dnl We, perhaps unfortunately,
153 dnl depend on GNU Make specific
155 dnl Give the user a warning if
157 dnl ---------------------------
158 AC_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;
167 dnl -----------------
168 dnl System extensions
169 dnl -----------------
177 dnl ----------------------
178 dnl Packages configuration
179 dnl ----------------------
181 [ --enable-vtysh include integrated vty shell for Quagga])
183 [ --disable-ipv6 turn off IPv6 related features and daemons])
185 [ --disable-zebra do not build zebra daemon])
187 [ --disable-bgpd do not build bgpd])
189 [ --disable-ripd do not build ripd])
190 AC_ARG_ENABLE(ripngd,
191 [ --disable-ripngd do not build ripngd])
193 [ --disable-ospfd do not build ospfd])
194 AC_ARG_ENABLE(ospf6d,
195 [ --disable-ospf6d do not build ospf6d])
196 AC_ARG_ENABLE(watchquagga,
197 [ --disable-watchquagga do not build watchquagga])
199 [ --enable-isisd build isisd])
200 AC_ARG_ENABLE(solaris,
201 [ --enable-solaris build solaris])
202 AC_ARG_ENABLE(bgp-announce,
203 [ --disable-bgp-announce, turn off BGP route announcement])
204 AC_ARG_ENABLE(netlink,
205 [ --enable-netlink force to use Linux netlink interface])
206 AC_ARG_ENABLE(broken-aliases,
207 [ --enable-broken-aliases enable aliases as distinct interfaces for Linux 2.2.X])
209 [ --without-crypto do not use libcrypto in SNMP])
211 [ --enable-snmp enable SNMP support])
213 [ --with-libpam use libpam for PAM support in vtysh])
214 AC_ARG_ENABLE(tcp-zebra,
215 [ --enable-tcp-zebra enable TCP/IP socket connection between zebra and protocol daemon])
216 AC_ARG_ENABLE(opaque-lsa,
217 [ --enable-opaque-lsa enable OSPF Opaque-LSA with OSPFAPI support (RFC2370)])
218 AC_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)])
221 AC_ARG_ENABLE(ospfclient,
222 [ --disable-ospfclient do not build OSPFAPI client for OSPFAPI,
223 (this is the default if --disable-ospfapi is set)])
224 AC_ARG_ENABLE(ospf-te,
225 [ --enable-ospf-te enable Traffic Engineering Extension to OSPF])
226 AC_ARG_ENABLE(multipath,
227 [ --enable-multipath=ARG enable multipath function, ARG must be digit])
229 AC_HELP_STRING([--enable-user=user], [user to run Quagga suite as (default quagga)]))
231 AC_HELP_STRING([--enable-group=group], [group to run Quagga suite as (default quagga)]))
232 AC_ARG_ENABLE(vty_group,
233 [ --enable-vty-group=ARG set vty sockets to have specified group as owner])
234 AC_ARG_ENABLE(configfile_mask,
235 [ --enable-configfile-mask=ARG set mask for config files])
236 AC_ARG_ENABLE(logfile_mask,
237 [ --enable-logfile-mask=ARG set mask for log files])
240 [ --disable-rtadv disable IPV6 router advertisement feature])
242 [ --enable-irdp enable IRDP server support in zebra])
243 AC_ARG_ENABLE(isis_topology,
244 [ --enable-isis-topology enable IS-IS topology generator])
245 AC_ARG_ENABLE(capabilities,
246 [ --disable-capabilities disable using POSIX capabilities])
247 AC_ARG_ENABLE(gcc_ultra_verbose,
248 [ --enable-gcc-ultra-verbose enable ultra verbose GCC warnings])
249 AC_ARG_ENABLE(linux24_tcp_md5,
250 [ --enable-linux24-tcp-md5 enable support for old, Linux-2.4 RFC2385 patch])
251 AC_ARG_ENABLE(gcc-rdynamic,
252 [ --enable-gcc-rdynamic enable gcc linking with -rdynamic for better backtraces])
253 AC_ARG_ENABLE(time-check,
254 [ --disable-time-check disable slow thread warning messages])
255 AC_ARG_ENABLE(pcreposix,
256 [ --enable-pcreposix enable using PCRE Posix libs for regex functions])
258 if 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"
265 if test x"${enable_gcc_rdynamic}" = x"yes" ; then
266 LDFLAGS="${LDFLAGS} -rdynamic"
269 if 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)
273 AC_DEFINE_UNQUOTED(CONSUMED_TIME_CHECK,$enable_time_check,Consumed Time Check)
277 if test "${enable_broken_aliases}" = "yes"; then
278 if test "${enable_netlink}" = "yes"
280 AC_MSG_FAILURE([Sorry you can not use netlink with broken aliases])
282 AC_DEFINE(HAVE_BROKEN_ALIASES,,Broken Alias)
286 if test "${enable_tcp_zebra}" = "yes"; then
287 AC_DEFINE(HAVE_TCP_ZEBRA,,Use TCP for zebra communication)
290 if test "${enable_opaque_lsa}" = "yes"; then
291 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
294 if test "${enable_ospf_te}" = "yes"; then
295 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
296 AC_DEFINE(HAVE_OSPF_TE,,OSPF TE)
299 if test "${enable_linux24_tcp_md5}" = "yes"; then
300 AC_DEFINE(HAVE_TCP_MD5_LINUX24,,Old Linux 2.4 TCP MD5 Signature Patch)
303 AC_MSG_CHECKING(if zebra should be configurable to send Route Advertisements)
304 if test "${enable_rtadv}" != "no"; then
306 AC_DEFINE(HAVE_RTADV,,Enable IPv6 Routing Advertisement support)
311 if test "${enable_irdp}" = "yes"; then
312 AC_DEFINE(HAVE_IRDP,, IRDP )
315 if 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"
322 AC_SUBST(ISIS_TOPOLOGY_INCLUDES)
323 AC_SUBST(ISIS_TOPOLOGY_DIR)
324 AC_SUBST(ISIS_TOPOLOGY_LIB)
326 if test "${enable_user}" = "yes" || test x"${enable_user}" = x""; then
328 elif test "${enable_user}" = "no"; then
332 if test "${enable_group}" = "yes" || test x"${enable_group}" = x""; then
333 enable_group="quagga"
334 elif test "${enable_group}" = "no"; then
338 if test x"${enable_vty_group}" = x"yes" ; then
339 AC_MSG_ERROR([--enable-vty-group requires a group as argument, not yes])
340 elif test x"${enable_vty_group}" != x""; then
341 if test x"${enable_vty_group}" != x"no"; then
342 AC_DEFINE_UNQUOTED(VTY_GROUP, "${enable_vty_group}", VTY Sockets Group)
345 AC_SUBST([enable_user])
346 AC_SUBST([enable_group])
347 AC_SUBST([enable_vty_group])
348 AC_DEFINE_UNQUOTED(QUAGGA_USER, "${enable_user}", Quagga User)
349 AC_DEFINE_UNQUOTED(QUAGGA_GROUP, "${enable_group}", Quagga Group)
351 enable_configfile_mask=${enable_configfile_mask:-0600}
352 AC_DEFINE_UNQUOTED(CONFIGFILE_MASK, ${enable_configfile_mask}, Mask for config files)
354 enable_logfile_mask=${enable_logfile_mask:-0600}
355 AC_DEFINE_UNQUOTED(LOGFILE_MASK, ${enable_logfile_mask}, Mask for log files)
359 case "${enable_multipath}" in
361 MULTIPATH_NUM="${enable_multipath}"
366 AC_MSG_FAILURE([Please specify digit to enable multipath ARG])
370 AC_SUBST(MULTIPATH_NUM)
372 dnl ------------------------------------
373 dnl Check C keywords and standard types
374 dnl ------------------------------------
389 dnl -------------------------
390 dnl Check other header files.
391 dnl -------------------------
392 AC_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 \
395 sys/socket.h netinet/in.h time.h sys/time.h])
397 dnl Utility macro to avoid retyping includes all the time
398 m4_define([QUAGGA_INCLUDES],
401 #define __EXTENSIONS__
413 # include <sys/types.h>
415 /* sys/conf.h depends on param.h on FBSD at least */
417 # include <sys/param.h>
419 /* Required for MAXSIG */
423 #if HAVE_SYS_SOCKET_H
424 # include <sys/socket.h>
426 #if HAVE_NETINET_IN_H
427 # include <netinet/in.h>
429 #ifdef TIME_WITH_SYS_TIME
430 # include <sys/time.h>
433 # ifdef HAVE_SYS_TIME_H
434 # include <sys/time.h>
438 #endif /* TIME_WITH_SYS_TIME */
441 AC_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 \
443 inet/nd.h arpa/inet.h netinet/ip_icmp.h \
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)
448 AC_CHECK_HEADERS([ucontext.h], [], [],
451 #endif /* __USE_GNU */
455 m4_define([QUAGGA_INCLUDES],
463 #if HAVE_NETINET_IN_SYSTM_H
464 # include <netinet/in_systm.h>
466 #if HAVE_NETINET_IN_VAR_H
467 # include <netinet/in_var.h>
470 # include <net/if_dl.h>
472 #if HAVE_NET_IF_VAR_H
473 # include <net/if_var.h>
475 #if HAVE_NET_NETOPT_H
476 # include <net/netopt.h>
479 # include <net/route.h>
482 # include <inet/nd.h>
485 # include <arpa/inet.h>
487 /* Required for IDRP */
488 #if HAVE_NETINET_IP_ICMP_H
489 # include <netinet/ip_icmp.h>
493 dnl V6 headers are checked below, after we check for v6
495 dnl Some systems (Solaris 2.x) require libnsl (Network Services Library)
497 [*-sunos5.[6-7]*] | [*-solaris2.[6-7]*])
499 AC_DEFINE(SUNOS_56, 1, SunOS 5.6 to 5.7)
500 AC_DEFINE(SUNOS_5, 1, SunOS 5)
501 AC_CHECK_LIB(xnet, main)
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]])
511 AC_DEFINE(SUNOS_59, 1, [SunOS 5.8 up])
512 AC_DEFINE(SUNOS_5, 1, [SunOS 5])
513 AC_CHECK_LIB(socket, main)
514 AC_CHECK_LIB(nsl, main)
515 AC_CHECK_LIB(umem, main)
516 AC_CHECK_FUNCS([printstack],
517 [AC_DEFINE([HAVE_PRINTSTACK],1,[Solaris printstack])
518 AC_DEFINE([HAVE_STACK_TRACE],1,[Stack symbols decode functionality])
522 *-sunos5* | *-solaris2*)
523 AC_DEFINE(SUNOS_5,,SunOS 5, Unknown SunOS)
524 AC_CHECK_LIB(socket, main)
525 AC_CHECK_LIB(nsl, main)
530 AC_DEFINE(GNU_LINUX,,GNU Linux)
533 AC_CHECK_LIB(nsl, gethostbyname)
534 AC_CHECK_LIB(socket, socket)
538 AC_DEFINE(OPEN_BSD,,OpenBSD)
542 OTHER_METHOD="mtu_kvm.o"
543 AC_CHECK_LIB(kvm, main)
547 AC_DEFINE(IRIX_65,,IRIX 6.5)
551 dnl ---------------------
552 dnl Integrated VTY option
553 dnl ---------------------
554 case "${enable_vtysh}" in
555 "yes") VTYSH="vtysh";
556 AC_DEFINE(VTYSH,,VTY shell)
557 AC_PATH_PROG(PERL, perl)
558 dnl Vtysh uses libreadline, which looks for termcap functions at
559 dnl configure time. We follow readlines search order.
560 dnl The required procedures are in libtermcap on NetBSD, in
561 dnl [TODO] on Linux, and in [TODO] on Solaris.
562 AC_CHECK_LIB(termcap, tputs, LIBREADLINE="$LIBREADLINE -ltermcap",
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")]
570 AC_CHECK_LIB(readline, main, LIBREADLINE="$LIBREADLINE -lreadline",,
572 if test $ac_cv_lib_readline_main = no; then
573 AC_MSG_ERROR([vtysh needs libreadline but was not found and usable on your system.])
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.])
579 AC_CHECK_LIB(readline, rl_completion_matches,
580 LIBREADLINE="$LIBREADLINE",, "$LIBREADLINE")
581 if test $ac_cv_lib_readline_rl_completion_matches = no; then
582 AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
588 AC_SUBST(LIBREADLINE)
593 if test "$with_libpam" = "yes"; then
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"
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"
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 ***])
612 if test "$with_libpam" = "yes"; then
613 dnl took this test from proftpds configure.in and suited to our needs
614 dnl -------------------------------------------------------------------------
616 dnl This next check looks funky due to a linker problem with some versions
617 dnl of the PAM library. Prior to 0.72 release, the Linux PAM shared library
618 dnl omitted requiring libdl linking information. PAM-0.72 or better ships
619 dnl with RedHat 6.2 and Debian 2.2 or better.
620 AC_CHECK_LIB(pam, pam_start,
621 [AC_CHECK_LIB(pam, $pam_conv_func,
622 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
624 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
625 LIBPAM="-lpam -lpam_misc"]
629 [AC_CHECK_LIB(pam, pam_end,
630 [AC_CHECK_LIB(pam, $pam_conv_func,
631 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
632 LIBPAM="-lpam -ldl"],
633 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
634 LIBPAM="-lpam -ldl -lpam_misc"]
636 ],AC_MSG_WARN([*** pam support will not be built ***]),
643 dnl -------------------------------
644 dnl Endian-ness check
645 dnl -------------------------------
648 dnl -------------------------------
649 dnl check the size in byte of the C
650 dnl -------------------------------
651 dnl AC_CHECK_SIZEOF(char)
652 dnl AC_CHECK_SIZEOF(int)
653 dnl AC_CHECK_SIZEOF(short)
654 dnl AC_CHECK_SIZEOF(long)
656 dnl ----------------------------
657 dnl check existance of functions
658 dnl ----------------------------
668 AC_FUNC_SELECT_ARGTYPES
670 dnl Avoid AC_FUNC_STRNLEN because it pulls in AC_SYSTEM_EXTENSIONS which
671 dnl can lead to strange side effects. So we just check for strnlen
672 dnl directly, see below.
673 dnl AC_FUNC_STRNLENdnl
676 dnl -------------------------------
677 dnl bgpd needs pow() and hence libm
678 dnl -------------------------------
680 AC_CHECK_HEADER([math.h],
681 [AC_CHECK_LIB([m], [pow],
684 AC_DEFINE(HAVE_LIBM,, Have libm)
685 AC_CHECK_FUNCS(pow,[],[LIBM=""])
688 if test x"$LIBM" = x ; then
689 AC_MSG_WARN([Unable to find working pow function - bgpd may not link])
697 AC_CHECK_FUNCS([dup2 ftruncate getcwd gethostbyname getpagesize gettimeofday \
698 inet_ntoa inet_aton strnlen \
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 \
707 AC_CHECK_FUNCS(setproctitle, ,
708 [AC_CHECK_LIB(util, setproctitle,
710 AC_DEFINE(HAVE_SETPROCTITLE,, Have setproctitle)
716 dnl ------------------------------------
717 dnl Determine routing get and set method
718 dnl ------------------------------------
719 AC_MSG_CHECKING(zebra between kernel interface method)
720 if 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)
726 elif test "${enable_netlink}" = "no"; then
731 AC_MSG_RESULT(netlink)
732 RT_METHOD=rt_netlink.o
733 AC_DEFINE(HAVE_NETLINK,,netlink)
736 elif 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"
740 elif test x"$opsys" = x"sol8";then
741 AC_MSG_RESULT(Route socket)
742 KERNEL_METHOD="kernel_socket.o"
743 RT_METHOD="rt_socket.o"
744 elif test "$opsys" = "irix" ; then
745 AC_MSG_RESULT(Route socket)
746 KERNEL_METHOD="kernel_socket.o"
747 RT_METHOD="rt_socket.o"
749 AC_TRY_RUN([#include <errno.h>
750 #include <sys/types.h>
751 #include <sys/socket.h>
757 ac_sock = socket (AF_ROUTE, SOCK_RAW, 0);
758 if (ac_sock < 0 && errno == EINVAL)
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)])
772 AC_SUBST(KERNEL_METHOD)
773 AC_SUBST(OTHER_METHOD)
775 dnl --------------------------
776 dnl Determine IS-IS I/O method
777 dnl --------------------------
778 AC_CHECK_HEADER(net/bpf.h)
779 AC_CHECK_HEADER(sys/dlpi.h)
780 AC_MSG_CHECKING(zebra IS-IS I/O method)
781 if test x"$opsys" = x"gnu-linux"; then
782 AC_MSG_RESULT(pfpacket)
783 ISIS_METHOD=isis_pfpacket.o
784 elif test x"$opsys" = x"sol2-6" -o x"$opsys" = x"sol8"; then
786 ISIS_METHOD="isis_dlpi.o"
788 if test $ac_cv_header_net_bpf_h = no; then
789 if test $ac_cv_header_sys_dlpi_h = no; then
791 AC_MSG_WARN([*** IS-IS support will not be built ***])
796 ISIS_METHOD="isis_dlpi.o"
799 ISIS_METHOD="isis_bpf.o"
802 AC_SUBST(ISIS_METHOD)
804 dnl ------------------------------------
805 dnl check for broken CMSG_FIRSTHDR macro
806 dnl ------------------------------------
807 AC_MSG_CHECKING(for broken CMSG_FIRSTHDR)
808 AC_RUN_IFELSE([AC_LANG_SOURCE([[
811 #define __EXTENSIONS__
816 #ifdef HAVE_SYS_TYPES_H
817 #include <sys/types.h>
819 #ifdef HAVE_SYS_SOCKET_H
820 #include <sys/socket.h>
828 msg.msg_control = buf;
829 msg.msg_controllen = 0;
831 if (CMSG_FIRSTHDR(&msg) != NULL)
834 }]])],[AC_MSG_RESULT(yes - using workaround) AC_DEFINE(HAVE_BROKEN_CMSG_FIRSTHDR,,Broken CMSG_FIRSTHDR)],
835 [AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
837 dnl ------------------------------
838 dnl check kernel route read method
839 dnl ------------------------------
840 AC_CACHE_CHECK([route read method], [quagga_cv_rtread_method],
841 [if test "x$netlink" = xyes; then
842 quagga_cv_rtread_method="netlink"
844 for quagga_cv_rtread_method in /proc/net/route /dev/ip /dev/null;
846 test x`ls $quagga_cv_rtread_method 2>/dev/null` = x"$quagga_cv_rtread_method" && break
848 case $quagga_cv_rtread_method in
849 "/proc/net/route") quagga_cv_rtread_method="proc";;
852 *-freebsd*) quagga_cv_rtread_method="sysctl";;
853 *) quagga_cv_rtread_method="getmsg";;
856 quagga_cv_rtread_method="sysctl";;
859 RTREAD_METHOD=rtread_${quagga_cv_rtread_method}.o
860 AC_SUBST(RTREAD_METHOD)
862 dnl -----------------------------
863 dnl check interface lookup method
864 dnl -----------------------------
866 AC_MSG_CHECKING(interface looking up method)
867 if test "$netlink" = yes; then
868 AC_MSG_RESULT(netlink)
869 IF_METHOD=if_netlink.o
870 elif test "$opsys" = "sol2-6";then
871 AC_MSG_RESULT(Solaris GIF)
873 elif test "$opsys" = "sol8";then
874 AC_MSG_RESULT(Solaris GLIF)
875 IF_METHOD=if_ioctl_solaris.o
876 IOCTL_METHOD=ioctl_solaris.o
877 elif test "$opsys" = "irix" ; then
880 elif test "$opsys" = "openbsd";then
881 AC_MSG_RESULT(openbsd)
883 elif grep NET_RT_IFLIST /usr/include/sys/socket.h >/dev/null 2>&1; then
884 AC_MSG_RESULT(sysctl)
885 IF_METHOD=if_sysctl.o
886 AC_DEFINE(HAVE_NET_RT_IFLIST,,NET_RT_IFLIST)
892 AC_SUBST(IOCTL_METHOD)
894 dnl ---------------------------------------------------------------
895 dnl figure out how to specify an interface in multicast sockets API
896 dnl ---------------------------------------------------------------
897 AC_CHECK_MEMBERS([struct ip_mreqn.imr_ifindex], [], [], QUAGGA_INCLUDES)
899 AC_MSG_CHECKING([for BSD struct ip_mreq hack])
900 AC_TRY_COMPILE([#ifdef HAVE_SYS_PARAM_H
901 #include <sys/param.h>
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)
905 #error No support for BSD struct ip_mreq hack detected
906 #endif],[AC_MSG_RESULT(yes)
907 AC_DEFINE(HAVE_BSD_STRUCT_IP_MREQ_HACK,,[Can pass ifindex in struct ip_mreq])],
910 dnl ---------------------------------------------------------------
911 dnl figure out how to check link-state
912 dnl ---------------------------------------------------------------
913 AC_CHECK_HEADER([net/if.h],
914 [AC_CHECK_HEADER( [net/if_media.h],
915 [m4_define([LINK_DETECT_INCLUDES],
917 [#include <net/if_media.h>
919 AC_CHECK_MEMBERS( [struct ifmediareq.ifm_status],
920 AC_DEFINE(HAVE_BSD_LINK_DETECT,,[BSD link-detect]),
921 [], LINK_DETECT_INCLUDES)],
924 [], QUAGGA_INCLUDES )
926 dnl ------------------------
927 dnl TCP_MD5SIG socket option
928 dnl ------------------------
930 AC_CHECK_HEADER([netinet/tcp.h],
931 [m4_define([MD5_INCLUDES],
933 [#include <netinet/tcp.h>
935 AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)],
938 if test $ac_cv_have_decl_TCP_MD5SIG = no; then
939 AC_CHECK_HEADER([linux/tcp.h],
940 [m4_define([MD5_INCLUDES],
942 [#include <linux/tcp.h>
944 AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)])
947 dnl -----------------------
948 dnl check proc file system.
949 dnl -----------------------
950 if test "$netlink" != yes; then
951 if test -r /proc/net/dev; then
952 AC_DEFINE(HAVE_PROC_NET_DEV,,/proc/net/dev)
955 if test -r /proc/net/if_inet6; then
956 AC_DEFINE(HAVE_PROC_NET_IF_INET6,,/proc/net/if_inet6)
962 dnl -----------------------------
963 dnl check ipforward detect method
964 dnl -----------------------------
965 AC_CACHE_CHECK([ipforward method], [quagga_cv_ipforward_method],
966 [for quagga_cv_ipforward_method in /proc/net/snmp /dev/ip /dev/null;
968 test x`ls $quagga_cv_ipforward_method 2>/dev/null` = x"$quagga_cv_ipforward_method" && break
970 case $quagga_cv_ipforward_method in
971 "/proc/net/snmp") quagga_cv_ipforward_method="proc";;
974 *-nec-sysv4*) quagga_cv_ipforward_method="ews";;
975 *-freebsd*) quagga_cv_ipforward_method="sysctl";;
976 *) quagga_cv_ipforward_method="solaris";;
978 *) quagga_cv_ipforward_method="sysctl";;
980 IPFORWARD=ipforward_${quagga_cv_ipforward_method}.o
983 AC_CHECK_FUNCS(getaddrinfo, [have_getaddrinfo=yes], [have_getaddrinfo=no])
988 AC_MSG_CHECKING(whether does this OS have IPv6 stack)
989 if test "${enable_ipv6}" = "no"; then
990 AC_MSG_RESULT(disabled)
995 if grep IPV6_INRIA_VERSION /usr/include/netinet/in.h >/dev/null 2>&1; then
997 AC_DEFINE(HAVE_IPV6,1,INRIA IPv6)
998 AC_DEFINE(INRIA_IPV6,1,INRIA IPv6)
1002 AC_MSG_RESULT(INRIA IPv6)
1006 elif grep WIDE /usr/include/netinet6/in6.h >/dev/null 2>&1; then
1008 AC_DEFINE(HAVE_IPV6,1,KAME IPv6)
1009 AC_DEFINE(KAME,1,KAME IPv6)
1012 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
1013 LIB_IPV6="-L/usr/local/v6/lib -linet6"
1016 dnl -------------------------
1018 dnl default host check
1019 dnl It is not used by Kheops
1020 dnl -------------------------
1021 elif grep MUSICA /usr/include6/netinet6/in6.h >/dev/null 2>&1; then
1023 AC_DEFINE(HAVE_IPV6,1,Musicia IPv6)
1024 AC_DEFINE(MUSICA,1,Musica IPv6 stack)
1025 AC_DEFINE(KAME,1,KAME IPv6 stack)
1028 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
1029 LIB_IPV6="-L/usr/local/v6/lib -linet6"
1031 AC_MSG_RESULT(MUSICA)
1035 elif grep NRL /usr/include/netinet6/in6.h >/dev/null 2>&1; then
1037 AC_DEFINE(HAVE_IPV6,1,NRL IPv6)
1038 AC_DEFINE(NRL,1,NRL)
1041 if test x"$opsys" = x"bsdi";then
1042 AC_DEFINE(BSDI_NRL,,BSDI)
1043 AC_MSG_RESULT(BSDI_NRL)
1047 dnl ------------------------------------
1048 dnl Solaris 9, 10 and potentially higher
1049 dnl ------------------------------------
1050 elif test x"$opsys" = x"sol8"; then
1052 AC_DEFINE(HAVE_IPV6, 1, IPv6)
1053 AC_DEFINE(SOLARIS_IPV6, 1, Solaris IPv6)
1056 AC_MSG_RESULT(Solaris IPv6)
1060 elif test "${enable_ipv6}" = "yes"; then
1062 #include <linux/version.h>
1063 /* 2.1.128 or later */
1064 #if LINUX_VERSION_CODE >= 0x020180
1068 zebra_cv_linux_ipv6=yes
1069 AC_MSG_RESULT(Linux IPv6)])
1071 if test x`ls /proc/net/ipv6_route 2>/dev/null` = x"/proc/net/ipv6_route"
1074 zebra_cv_linux_ipv6=yes
1075 AC_MSG_RESULT(Linux IPv6)
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; ],
1085 zebra_cv_linux_ipv6=yes],
1088 zebra_cv_linux_ipv6=no])
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)
1095 #include <features.h>
1096 #if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
1100 AC_DEFINE(LINUX_IPV6,1,Linux IPv6 stack)
1101 AC_MSG_RESULT(yes)],
1106 if test "$glibc" != "yes"; then
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"
1114 dnl -----------------------
1115 dnl Set IPv6 related values
1116 dnl -----------------------
1117 LIBS="$LIB_IPV6 $LIBS"
1120 if test x"$RIPNGD" = x""; then
1121 AC_MSG_RESULT(IPv4 only)
1125 dnl ------------------
1126 dnl IPv6 header checks
1127 dnl ------------------
1128 if test "x${zebra_cv_ipv6}" = "xyes"; then
1129 AC_CHECK_HEADERS([netinet6/in6.h netinet/in6_var.h netinet/icmp6.h \
1130 netinet6/in6_var.h netinet6/nd6.h], [], [],
1134 m4_define([QUAGGA_INCLUDES],dnl
1136 [#if HAVE_NETINET6_IN6_H
1137 #include <netinet6/in6.h>
1139 #if HAVE_NETINET_IN6_VAR_H
1140 #include <netinet/in6_var.h>
1142 #if HAVE_NETINET_ICMP6_H
1143 # include <netinet/icmp6.h>
1145 #if HAVE_NETINET6_IN6_VAR_H
1146 # include <netinet6/in6_var.h>
1148 #if HAVE_NETINET6_ND6_H
1149 # include <netinet6/nd6.h>
1153 dnl --------------------
1154 dnl Daemon disable check
1155 dnl --------------------
1156 if test "${enable_zebra}" = "no";then
1162 if test "${enable_bgpd}" = "no";then
1168 if test "${enable_ripd}" = "no";then
1174 if test "${enable_ospfd}" = "no";then
1180 if test "${enable_watchquagga}" = "no";then
1183 WATCHQUAGGA="watchquagga"
1187 if test "${enable_opaque_lsa}" = "yes"; then
1188 if test "${enable_ospfapi}" != "no";then
1189 AC_DEFINE(SUPPORT_OSPF_API,,OSPFAPI)
1191 if test "${enable_ospfclient}" != "no";then
1192 OSPFCLIENT="ospfclient"
1198 case "${enable_ripngd}" in
1199 "yes") RIPNGD="ripngd";;
1204 case "${enable_ospf6d}" in
1205 "yes") OSPF6D="ospf6d";;
1210 case "${enable_isisd}" in
1211 "yes") ISISD="isisd";;
1216 # XXX Perhaps auto-enable on Solaris, but that's messy for cross builds.
1217 case "${enable_solaris}" in
1218 "yes") SOLARIS="solaris";;
1223 if test "${enable_bgp_announce}" = "no";then
1224 AC_DEFINE(DISABLE_BGP_ANNOUNCE,1,Disable BGP installation to zebra)
1226 AC_DEFINE(DISABLE_BGP_ANNOUNCE,0,Disable BGP installation to zebra)
1235 AC_SUBST(WATCHQUAGGA)
1241 AC_SUBST(OSPFCLIENT)
1243 AC_CHECK_LIB(c, inet_ntop, [AC_DEFINE(HAVE_INET_NTOP,,inet_ntop)])
1244 AC_CHECK_LIB(c, inet_pton, [AC_DEFINE(HAVE_INET_PTON,,inet_pton)])
1245 AC_CHECK_LIB(crypt, crypt)
1246 AC_CHECK_LIB(resolv, res_init)
1248 dnl ---------------------------------------------------
1249 dnl BSD/OS 4.1 define inet_XtoY function as __inet_XtoY
1250 dnl ---------------------------------------------------
1251 AC_CHECK_FUNC(__inet_ntop, AC_DEFINE(HAVE_INET_NTOP,,__inet_ntop))
1252 AC_CHECK_FUNC(__inet_pton, AC_DEFINE(HAVE_INET_PTON,,__inet_pton))
1253 AC_CHECK_FUNC(__inet_aton, AC_DEFINE(HAVE_INET_ATON,,__inet_aton))
1255 dnl ---------------------------
1256 dnl check system has PCRE regexp
1257 dnl ---------------------------
1258 if 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 ***]) ])
1263 if test "x$enable_pcreposix" != "xyes"; then
1264 dnl ---------------------------
1265 dnl check system has GNU regexp
1266 dnl ---------------------------
1267 AC_MSG_CHECKING(whether system has GNU regex)
1268 AC_CHECK_LIB(c, regexec,
1269 [AC_DEFINE(HAVE_GNU_REGEX,,GNU regexp library)
1271 [LIB_REGEX="regex.o"])
1273 AC_SUBST(HAVE_LIBPCREPOSIX)
1276 dnl ------------------
1277 dnl check Net-SNMP library
1278 dnl ------------------
1279 if test "${enable_snmp}" = "yes"; then
1280 if test "$with_crypto" != "no"; then
1281 LIBS="${LIBS} -lcrypto";
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])])
1289 AC_CHECK_HEADER([net-snmp/net-snmp-config.h],
1291 [AC_MSG_ERROR([--enable-snmp given, but cannot find net-snmp-config.h])],
1293 AC_SUBST(SNMP_INCLUDES)
1296 dnl ---------------------------
1297 dnl sockaddr and netinet checks
1298 dnl ---------------------------
1299 AC_CHECK_TYPES([struct sockaddr, struct sockaddr_in,
1300 struct sockaddr_in6, struct sockaddr_un, struct sockaddr_dl,
1302 struct ifaliasreq, struct if6_aliasreq, struct in6_aliasreq,
1303 struct nd_opt_adv_interval, struct rt_addrinfo,
1304 struct nd_opt_homeagent_info, struct nd_opt_adv_interval],
1305 [], [], QUAGGA_INCLUDES)
1307 AC_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)
1314 dnl ---------------------------
1315 dnl IRDP/pktinfo/icmphdr checks
1316 dnl ---------------------------
1317 AC_CHECK_TYPES([struct in_pktinfo],
1318 [AC_CHECK_TYPES([struct icmphdr],
1319 [if test "${enable_irdp}" != "no"; then
1320 AC_DEFINE(HAVE_IRDP,, IRDP)
1322 [if test "${enable_irdp}" = "yes"; then
1323 AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
1324 fi], [QUAGGA_INCLUDES])],
1325 [if test "${enable_irdp}" = "yes"; then
1326 AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
1327 fi], [QUAGGA_INCLUDES])
1329 dnl --------------------------------------
1330 dnl checking for getrusage struct and call
1331 dnl --------------------------------------
1332 AC_MSG_CHECKING(whether getrusage is available)
1333 AC_TRY_COMPILE([#include <sys/resource.h>
1334 ],[struct rusage ac_x; getrusage (RUSAGE_SELF, &ac_x);],
1336 AC_DEFINE(HAVE_RUSAGE,,rusage)],
1339 dnl --------------------------------------
1340 dnl checking for clock_time monotonic struct and call
1341 dnl --------------------------------------
1342 AC_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])
1347 dnl -------------------
1348 dnl capabilities checks
1349 dnl -------------------
1350 if 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);],
1354 AC_DEFINE(HAVE_PR_SET_KEEPCAPS,,prctl)
1355 quagga_ac_keepcaps="yes"],
1358 if test x"${quagga_ac_keepcaps}" = x"yes"; then
1359 AC_CHECK_HEADERS(sys/capability.h)
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)
1365 quagga_ac_lcaps="yes"]
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);],
1372 AC_DEFINE(HAVE_SOLARIS_CAPABILITIES,1,getpflags)
1373 quagga_ac_scaps="yes"],
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)
1386 dnl ---------------------------
1387 dnl check for glibc 'backtrace'
1388 dnl ---------------------------
1389 if test "${glibc}" = "yes"; then
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])
1398 dnl -----------------------------------------
1399 dnl check for malloc mallinfo struct and call
1400 dnl this must try and link using LIBS, in
1401 dnl order to check no alternative allocator
1402 dnl has been specified, which might not provide
1403 dnl mallinfo, e.g. such as Umem on Solaris.
1404 dnl -----------------------------------------
1405 AC_CHECK_HEADER([malloc.h],
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 ();]])],
1410 AC_DEFINE(HAVE_MALLINFO,,mallinfo)],
1413 ], [], QUAGGA_INCLUDES)
1418 CONFDATE=`date '+%Y%m%d'`
1421 dnl Conditionally enable PIE support for GNU toolchains.
1422 AC_ARG_ENABLE(pie, AS_HELP_STRING([--disable-pie], [Do not build tools as a Position Independent Executables]))
1423 if test "$enable_pie" != "no"; then
1424 AC_CACHE_CHECK([whether $CC accepts PIE flags], [ap_cv_cc_pie], [
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]
1433 LDFLAGS=$save_LDFLAGS
1435 if test "$ap_cv_cc_pie" = "yes"; then
1444 dnl ------------------------------
1445 dnl set paths for state directory
1446 dnl ------------------------------
1447 AC_MSG_CHECKING(directory to use for state file)
1448 if test "${prefix}" = "NONE"; then
1449 quagga_statedir_prefix="";
1451 quagga_statedir_prefix=${prefix}
1453 if test "${localstatedir}" = '${prefix}/var'; then
1454 for QUAGGA_STATE_DIR in ${quagga_statedir_prefix}/var/run dnl
1455 ${quagga_statedir_prefix}/var/adm dnl
1456 ${quagga_statedir_prefix}/etc dnl
1462 test -d $QUAGGA_STATE_DIR && break
1464 quagga_statedir=$QUAGGA_STATE_DIR
1466 quagga_statedir=${localstatedir}
1468 if test $quagga_statedir = "/dev/null"; then
1469 AC_MSG_ERROR('STATE DIRECTORY NOT FOUND! FIX OR SPECIFY --localstatedir!')
1471 AC_MSG_RESULT(${quagga_statedir})
1472 AC_SUBST(quagga_statedir)
1474 AC_DEFINE_UNQUOTED(PATH_ZEBRA_PID, "$quagga_statedir/zebra.pid",zebra PID)
1475 AC_DEFINE_UNQUOTED(PATH_RIPD_PID, "$quagga_statedir/ripd.pid",ripd PID)
1476 AC_DEFINE_UNQUOTED(PATH_RIPNGD_PID, "$quagga_statedir/ripngd.pid",ripngd PID)
1477 AC_DEFINE_UNQUOTED(PATH_BGPD_PID, "$quagga_statedir/bgpd.pid",bgpd PID)
1478 AC_DEFINE_UNQUOTED(PATH_OSPFD_PID, "$quagga_statedir/ospfd.pid",ospfd PID)
1479 AC_DEFINE_UNQUOTED(PATH_OSPF6D_PID, "$quagga_statedir/ospf6d.pid",ospf6d PID)
1480 AC_DEFINE_UNQUOTED(PATH_ISISD_PID, "$quagga_statedir/isisd.pid",isisd PID)
1481 AC_DEFINE_UNQUOTED(PATH_WATCHQUAGGA_PID, "$quagga_statedir/watchquagga.pid",watchquagga PID)
1482 AC_DEFINE_UNQUOTED(ZEBRA_SERV_PATH, "$quagga_statedir/zserv.api",zebra api socket)
1483 AC_DEFINE_UNQUOTED(ZEBRA_VTYSH_PATH, "$quagga_statedir/zebra.vty",zebra vty socket)
1484 AC_DEFINE_UNQUOTED(RIP_VTYSH_PATH, "$quagga_statedir/ripd.vty",rip vty socket)
1485 AC_DEFINE_UNQUOTED(RIPNG_VTYSH_PATH, "$quagga_statedir/ripngd.vty",ripng vty socket)
1486 AC_DEFINE_UNQUOTED(BGP_VTYSH_PATH, "$quagga_statedir/bgpd.vty",bgpd vty socket)
1487 AC_DEFINE_UNQUOTED(OSPF_VTYSH_PATH, "$quagga_statedir/ospfd.vty",ospfd vty socket)
1488 AC_DEFINE_UNQUOTED(OSPF6_VTYSH_PATH, "$quagga_statedir/ospf6d.vty",ospf6d vty socket)
1489 AC_DEFINE_UNQUOTED(ISIS_VTYSH_PATH, "$quagga_statedir/isisd.vty",isisd vty socket)
1490 AC_DEFINE_UNQUOTED(DAEMON_VTY_DIR, "$quagga_statedir",daemon vty directory)
1492 dnl -------------------------------
1493 dnl Quagga sources should always be
1494 dnl current wrt interfaces. Dont
1495 dnl allow deprecated interfaces to
1497 dnl -------------------------------
1498 AC_DEFINE(QUAGGA_NO_DEPRECATED_INTERFACES, 1, Hide deprecated interfaces)
1500 dnl ---------------------------
1501 dnl Check htonl works correctly
1502 dnl ---------------------------
1503 AC_MSG_CHECKING(for working htonl)
1504 AC_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])
1509 AC_MSG_RESULT($ac_cv_htonl_works)
1511 AC_CONFIG_FILES([Makefile lib/Makefile zebra/Makefile ripd/Makefile
1512 ripngd/Makefile bgpd/Makefile ospfd/Makefile watchquagga/Makefile
1513 ospf6d/Makefile isisd/Makefile vtysh/Makefile doc/Makefile
1514 ospfclient/Makefile tests/Makefile m4/Makefile redhat/Makefile
1519 isisd/topology/Makefile
1520 pkgsrc/bgpd.sh pkgsrc/ospf6d.sh pkgsrc/ospfd.sh
1521 pkgsrc/ripd.sh pkgsrc/ripngd.sh pkgsrc/zebra.sh])
1522 AC_CONFIG_FILES([solaris/Makefile])
1524 AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl])
1525 ## Hack, but working solution to avoid rebuilding of quagga.info.
1526 ## It's already in CVS until texinfo 4.7 is more common.
1530 Quagga configuration
1531 --------------------
1532 quagga version : ${PACKAGE_VERSION}
1533 host operationg system : ${host_os}
1534 source code location : ${srcdir}
1536 compiler flags : ${CFLAGS}
1538 includes : ${INCLUDES} ${SNMP_INCLUDES}
1539 linker flags : ${LDFLAGS} ${LIBS} ${LIBCAP} ${LIBREADLINE} ${LIBM}
1540 state file directory : ${quagga_statedir}
1541 config file directory : `eval echo \`echo ${sysconfdir}\``
1542 example directory : `eval echo \`echo ${exampledir}\``
1543 user to run as : ${enable_user}
1544 group to run as : ${enable_group}
1545 group for vty sockets : ${enable_vty_group}
1546 config file mask : ${enable_configfile_mask}
1547 log file mask : ${enable_logfile_mask}
1549 The above user and group must have read/write access to the state file
1550 directory and to the config files in the config file directory."
1552 if test x"$quagga_cv_gnu_make" = x"no"; then echo "
1553 Warning: The ${MAKE-make} programme detected, either in your path or
1554 via the MAKE variable, is not GNU Make. GNU make may be installed as
1555 gmake on some systems. and is required to complete a build of Quagga