]> git.proxmox.com Git - mirror_frr.git/blob - configure.ac
2005-01-12 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
[mirror_frr.git] / configure.ac
1 ##
2 ## Configure template file for Quagga.
3 ## autoconf will generate configure script.
4 ##
5 ## Copyright (c) 1996, 97, 98, 99, 2000 Kunihiro Ishiguro <kunihiro@zebra.org>
6 ## Portions Copyright (c) 2003 Paul Jakma <paul@dishone.st>
7 ##
8 ## $Id: configure.ac,v 1.87 2005/01/12 17:27:27 ajs Exp $
9 AC_PREREQ(2.53)
10
11 AC_INIT(Quagga, 0.98.0, [http://bugzilla.quagga.net])
12 AC_CONFIG_SRCDIR(lib/zebra.h)
13 AM_INIT_AUTOMAKE(1.6)
14 AM_CONFIG_HEADER(config.h)
15
16 dnl default is to match previous behavior
17 exampledir=${sysconfdir}
18 AC_ARG_ENABLE([exampledir],
19 AC_HELP_STRING([--enable-exampledir],
20 [specify alternate directory for examples]),
21 exampledir="$enableval",)
22 dnl XXX add --exampledir to autoconf standard directory list somehow
23 AC_SUBST(exampledir)
24
25 dnl default is to match previous behavior
26 pkgsrcrcdir=""
27 pkgsrcdir=""
28 AC_ARG_ENABLE([pkgsrcrcdir],
29 AC_HELP_STRING([--enable-pkgsrcrcdir],
30 [specify directory for rc.d scripts]),
31 pkgsrcrcdir="$enableval"; pkgsrcdir="pkgsrc",)
32 dnl XXX add --pkgsrcrcdir to autoconf standard directory list somehow
33 AC_SUBST(pkgsrcdir)
34 AC_SUBST(pkgsrcrcdir)
35
36 dnl -----------------------------------
37 dnl Get hostname and other information.
38 dnl -----------------------------------
39 AC_CANONICAL_HOST
40
41 dnl ------------
42 dnl Check CFLAGS
43 dnl ------------
44 AC_ARG_WITH(cflags,
45 [ --with-cflags Set CFLAGS for use in compilation.])
46 if test "x$with_cflags" != "x" ; then
47 CFLAGS="$with_cflags" ; cflags_specified=yes ;
48 elif test -n "$CFLAGS" ; then
49 cflags_specified=yes ;
50 fi
51
52 dnl --------
53 dnl Check CC
54 dnl --------
55 AC_PROG_CC
56
57 dnl ---------------------------------------------
58 dnl If CLFAGS doesn\'t exist set default value
59 dnl AC_PROG_CC will have set minimal default
60 dnl already, eg "-O2 -g" for gcc, "-g" for others
61 dnl (Wall is gcc specific... have to make sure
62 dnl gcc is being used before setting it)
63 dnl ---------------------------------------------
64 dnl
65 if test "x$cflags_specified" = "x" ; then
66 if test "x${GCC}" = "xyes"; then
67 CFLAGS="-Os -g -Wall -Wsign-compare -Wpointer-arith"
68 CFLAGS="${CFLAGS} -Wbad-function-cast -Wwrite-strings"
69 fi
70 # TODO: conditionally addd -Wpacked if handled
71 fi
72
73 dnl --------------
74 dnl Check programs
75 dnl --------------
76 AC_PROG_CPP
77 AC_PROG_INSTALL
78 AC_PROG_MAKE_SET
79 AC_CHECK_TOOL(AR, ar)
80 AC_CHECK_TOOL(RANLIB, ranlib, :)
81
82 dnl ---------
83 dnl AIX check
84 dnl ---------
85 AC_AIX
86
87 dnl -------
88 dnl libtool
89 dnl -------
90 AC_PROG_LIBTOOL
91
92 dnl ----------------------
93 dnl Packages configuration
94 dnl ----------------------
95 AC_ARG_ENABLE(vtysh,
96 [ --enable-vtysh include integrated vty shell for Quagga])
97 AC_ARG_ENABLE(ipv6,
98 [ --disable-ipv6 turn off IPv6 related features and daemons])
99 AC_ARG_ENABLE(zebra,
100 [ --disable-zebra do not build zebra daemon])
101 AC_ARG_ENABLE(bgpd,
102 [ --disable-bgpd do not build bgpd])
103 AC_ARG_ENABLE(ripd,
104 [ --disable-ripd do not build ripd])
105 AC_ARG_ENABLE(ripngd,
106 [ --disable-ripngd do not build ripngd])
107 AC_ARG_ENABLE(ospfd,
108 [ --disable-ospfd do not build ospfd])
109 AC_ARG_ENABLE(ospf6d,
110 [ --disable-ospf6d do not build ospf6d])
111 AC_ARG_ENABLE(watchquagga,
112 [ --disable-watchquagga do not build watchquagga])
113 AC_ARG_ENABLE(isisd,
114 [ --enable-isisd build isisd])
115 AC_ARG_ENABLE(bgp-announce,
116 [ --disable-bgp-announce, turn off BGP route announcement])
117 AC_ARG_ENABLE(netlink,
118 [ --enable-netlink force to use Linux netlink interface])
119 AC_ARG_ENABLE(broken-aliases,
120 [ --enable-broken-aliases enable aliases as distinct interfaces for Linux 2.2.X])
121 AC_ARG_ENABLE(snmp,
122 [ --enable-snmp enable SNMP support])
123 AC_ARG_WITH(libpam,
124 [ --with-libpam use libpam for PAM support in vtysh])
125 AC_ARG_ENABLE(tcp-zebra,
126 [ --enable-tcp-zebra enable TCP/IP socket connection between zebra and protocol daemon])
127 AC_ARG_ENABLE(opaque-lsa,
128 [ --enable-opaque-lsa enable OSPF Opaque-LSA with OSPFAPI support (RFC2370)])
129 AC_ARG_ENABLE(ospfapi,
130 [ --disable-ospfapi do not build OSPFAPI to access the OSPF LSA Database,
131 (this is the default if --enable-opaque-lsa is not set)])
132 AC_ARG_ENABLE(ospfclient,
133 [ --disable-ospfclient do not build OSPFAPI client for OSPFAPI,
134 (this is the default if --disable-ospfapi is set)])
135 AC_ARG_ENABLE(ospf-te,
136 [ --enable-ospf-te enable Traffic Engineering Extension to OSPF])
137 AC_ARG_ENABLE(multipath,
138 [ --enable-multipath=ARG enable multipath function, ARG must be digit])
139 AC_ARG_ENABLE(quagga_user,
140 [ --enable-user=ARG user to run Quagga suite as (default quagga)])
141 AC_ARG_ENABLE(quagga_group,
142 [ --enable-group=ARG group to run Quagga suite as (default quagga)])
143 AC_ARG_ENABLE(vty_group,
144 [ --enable-vty-group=ARG set vty sockets to have specified group as owner])
145 AC_ARG_ENABLE(configfile_mask,
146 [ --enable-configfile-mask=ARG set mask for config files])
147 AC_ARG_ENABLE(logfile_mask,
148 [ --enable-logfile-mask=ARG set mask for log files])
149
150 AC_ARG_ENABLE(rtadv,
151 [ --disable-rtadv disable IPV6 router advertisement feature])
152 AC_ARG_ENABLE(irdp,
153 [ --enable-irdp enable IRDP server support in zebra])
154 AC_ARG_ENABLE(capabilities,
155 [ --disable-capabilities disable using POSIX capabilities])
156 AC_ARG_ENABLE(gcc_ultra_verbose,
157 [ --enable-gcc-ultra-verbose enable ultra verbose GCC warnings])
158 AC_ARG_ENABLE(gcc-rdynamic,
159 [ --enable-gcc-rdynamic enable gcc linking with -rdynamic for better backtraces])
160
161 if test x"${enable_gcc_ultra_verbose}" = x"yes" ; then
162 CFLAGS="${CFLAGS} -W -Wcast-qual -Wstrict-prototypes"
163 CFLAGS="${CFLAGS} -Wmissing-declarations -Wmissing-noreturn"
164 CFLAGS="${CFLAGS} -Wmissing-format-attribute -Wunreachable-code"
165 CFLAGS="${CFLAGS} -Wpacked -Wpadded"
166 fi
167
168 if test x"${enable_gcc_rdynamic}" = x"yes" ; then
169 LDFLAGS="${LDFLAGS} -rdynamic"
170 fi
171
172 if test "${enable_broken_aliases}" = "yes"; then
173 if test "${enable_netlink}" = "yes"
174 then
175 echo "Sorry, you can't use netlink with broken aliases"
176 exit 1
177 fi
178 AC_DEFINE(HAVE_BROKEN_ALIASES,,Broken Alias)
179 enable_netlink=no
180 fi
181
182 if test "${enable_tcp_zebra}" = "yes"; then
183 AC_DEFINE(HAVE_TCP_ZEBRA,,Use TCP for zebra communication)
184 fi
185
186 if test "${enable_opaque_lsa}" = "yes"; then
187 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
188 fi
189
190 if test "${enable_ospf_te}" = "yes"; then
191 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
192 AC_DEFINE(HAVE_OSPF_TE,,OSPF TE)
193 fi
194
195 AC_MSG_CHECKING(if zebra should be configurable to send Route Advertisements)
196 if test "${enable_rtadv}" != "no"; then
197 AC_MSG_RESULT(yes)
198 AC_DEFINE(HAVE_RTADV,,Enable IPv6 Routing Advertisement support)
199 else
200 AC_MSG_RESULT(no)
201 fi
202
203 if test "${enable_irdp}" = "yes"; then
204 AC_DEFINE(HAVE_IRDP,, IRDP )
205 fi
206
207 if test "${enable_user}" = "yes" || test x"${enable_user}" = x""; then
208 enable_user="quagga"
209 elif test "${enable_user}" = "no"; then
210 enable_user="root"
211 fi
212 AC_DEFINE_UNQUOTED(QUAGGA_USER, "${enable_user}", Quagga User)
213
214 if test "${enable_group}" = "yes" || test x"${enable_group}" = x""; then
215 enable_group="quagga"
216 elif test "${enable_group}" = "no"; then
217 enable_group="root"
218 fi
219 AC_DEFINE_UNQUOTED(QUAGGA_GROUP, "${enable_group}", Quagga Group)
220
221 if test x"${enable_vty_group}" = x"yes" ; then
222 AC_MSG_ERROR([--enable-vty-group requires a group as argument, not yes])
223 elif test x"${enable_vty_group}" != x""; then
224 if test x"${enable_vty_group}" != x"no"; then
225 AC_DEFINE_UNQUOTED(VTY_GROUP, "${enable_vty_group}", VTY Sockets Group)
226 fi
227 fi
228
229 enable_configfile_mask=${enable_configfile_mask:-0600}
230 AC_DEFINE_UNQUOTED(CONFIGFILE_MASK, ${enable_configfile_mask}, Mask for config files)
231
232 enable_logfile_mask=${enable_logfile_mask:-0600}
233 AC_DEFINE_UNQUOTED(LOGFILE_MASK, ${enable_logfile_mask}, Mask for log files)
234
235 changequote(, )dnl
236
237 MULTIPATH_NUM=1
238
239 case "${enable_multipath}" in
240 [0-9]|[1-9][0-9])
241 MULTIPATH_NUM="${enable_multipath}"
242 ;;
243 "")
244 ;;
245 *)
246 echo "Please specify digit to --enable-multipath ARG."
247 exit 1
248 ;;
249 esac
250
251 changequote([, ])dnl
252
253 AC_SUBST(MULTIPATH_NUM)
254
255 dnl -------------------
256 dnl Check header files.
257 dnl -------------------
258 AC_HEADER_STDC
259 AC_CHECK_HEADERS([string.h stropts.h sys/conf.h sys/ksym.h sys/time.h \
260 sys/times.h sys/select.h sys/sysctl.h sys/sockio.h \
261 sys/types.h linux/version.h kvm.h netdb.h asm/types.h \
262 libutil.h limits.h])
263
264 AC_CHECK_HEADERS([sys/socket.h netinet/in_systm.h netinet/in.h \
265 net/if_dl.h net/netopt.h inet/nd.h net/route.h \
266 net/if.h net/if_var.h netinet/in_var.h])
267
268 dnl V6 headers are checked below, after we check for v6
269
270 dnl check some types
271 AC_C_CONST
272 dnl AC_TYPE_PID_T
273 AC_TYPE_SIGNAL
274
275 dnl Some systems (Solaris 2.x) require libnsl (Network Services Library)
276 case "$host" in
277 [*-sunos5.[6-8]*] | [*-solaris2.[6-8]*])
278 opsys=sol2-6
279 AC_DEFINE(SUNOS_56, 1, SunOS 5.6 to 5.8)
280 AC_DEFINE(SUNOS_5, 1, SunOS 5)
281 AC_CHECK_LIB(xnet, main)
282 CURSES=-lcurses
283 ;;
284 [*-sunos5.[8-9]] | [*-sunos5.1[0-9]] \
285 | [*-solaris2.[8-9]] | [*-solaris2.1[0-9]])
286 opsys=sol9
287 AC_DEFINE(SUNOS_59,,SunOS 5.9 up)
288 AC_DEFINE(SUNOS_5, 1, SunOS 5)
289 AC_CHECK_LIB(socket, main)
290 AC_CHECK_LIB(nsl, main)
291 CURSES=-lcurses
292 ;;
293 *-sunos5* | *-solaris2*)
294 AC_DEFINE(SUNOS_5,,SunOS 5, Unknown SunOS)
295 AC_CHECK_LIB(socket, main)
296 AC_CHECK_LIB(nsl, main)
297 CURSES=-lcurses
298 ;;
299 *-linux-*)
300 opsys=gnu-linux
301 AC_DEFINE(GNU_LINUX,,GNU Linux)
302 ;;
303 *-nec-sysv4*)
304 AC_CHECK_LIB(nsl, gethostbyname)
305 AC_CHECK_LIB(socket, socket)
306 ;;
307 *-freebsd3.2)
308 AC_DEFINE(FREEBSD_32,,FreeBSD 3.2)
309 ;;
310 *-openbsd*)
311 opsys=openbsd
312 AC_DEFINE(OPEN_BSD,,OpenBSD)
313 ;;
314 *-bsdi*)
315 opsys=bsdi
316 OTHER_METHOD="mtu_kvm.o"
317 AC_CHECK_LIB(kvm, main)
318 ;;
319 *-irix6.5)
320 opsys=irix
321 AC_DEFINE(IRIX_65,,IRIX 6.5)
322 ;;
323 esac
324
325 dnl ---------------------
326 dnl Integrated VTY option
327 dnl ---------------------
328 case "${enable_vtysh}" in
329 "yes") VTYSH="vtysh";
330 AC_DEFINE(VTYSH,,VTY shell)
331 AC_PATH_PROG(PERL, perl)
332 dnl Vtysh uses libreadline, which looks for termcap functions at
333 dnl configure time. We follow readline's search order.
334 dnl The required procedures are in libtermcap on NetBSD, in
335 dnl [TODO] on Linux, and in [TODO] on Solaris.
336 AC_CHECK_LIB(termcap, tputs, ,
337 AC_CHECK_LIB(tinfo, tputs, ,
338 AC_CHECK_LIB(curses, tputs, ,
339 AC_CHECK_LIB(ncurses, tputs))))
340 AC_CHECK_LIB(readline, main)
341 if test $ac_cv_lib_readline_main = no; then
342 AC_MSG_ERROR([vtysh needs libreadline but was not found and usable on your system.])
343 fi
344 AC_CHECK_HEADER(readline/history.h)
345 if test $ac_cv_header_readline_history_h = no;then
346 AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
347 fi
348 AC_CHECK_LIB(readline, rl_completion_matches)
349 if test $ac_cv_lib_readline_rl_completion_matches = no; then
350 AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
351 fi
352 ;;
353 "no" ) VTYSH="";;
354 * ) ;;
355 esac
356
357 dnl ----------
358 dnl PAM module
359 dnl ----------
360 if test "$with_libpam" = "yes"; then
361 AC_CHECK_HEADER(security/pam_misc.h)
362 if test "$ac_cv_header_security_pam_misc_h" = yes; then
363 AC_DEFINE(HAVE_PAM_MISC_H,,Have pam_misc.h)
364 AC_DEFINE(PAM_CONV_FUNC,misc_conv,Have misc_conv)
365 pam_conv_func="misc_conv"
366 fi
367 AC_CHECK_HEADER(security/openpam.h)
368 if test "$ac_cv_header_security_openpam_h" = yes; then
369 AC_DEFINE(HAVE_OPENPAM_H,,Have openpam.h)
370 AC_DEFINE(PAM_CONV_FUNC,openpam_ttyconv,Have openpam_ttyconv)
371 pam_conv_func="openpam_ttyconv"
372 fi
373 if test -z "$ac_cv_header_security_pam_misc_h$ac_cv_header_security_openpam_h" ; then
374 AC_MSG_WARN([*** pam support will not be built ***])
375 with_libpam="no"
376 fi
377 fi
378
379 if test "$with_libpam" = "yes"; then
380 dnl took this test from proftpd's configure.in and suited to our needs
381 dnl -------------------------------------------------------------------------
382 dnl
383 dnl This next check looks funky due to a linker problem with some versions
384 dnl of the PAM library. Prior to 0.72 release, the Linux PAM shared library
385 dnl omitted requiring libdl linking information. PAM-0.72 or better ships
386 dnl with RedHat 6.2 and Debian 2.2 or better.
387 AC_CHECK_LIB(pam, pam_start,
388 [AC_CHECK_LIB(pam, $pam_conv_func,
389 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
390 LIBPAM="-lpam"],
391 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
392 LIBPAM="-lpam -lpam_misc"]
393 )
394 ],
395
396 [AC_CHECK_LIB(pam, pam_end,
397 [AC_CHECK_LIB(pam, $pam_conv_func,
398 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
399 LIBPAM="-lpam -ldl"],
400 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
401 LIBPAM="-lpam -ldl -lpam_misc"]
402 )
403 ],AC_MSG_WARN([*** pam support will not be built ***]),
404 [-ldl])
405 ]
406 )
407 fi
408 AC_SUBST(LIBPAM)
409
410 dnl -------------------------------
411 dnl Endian-ness check
412 dnl -------------------------------
413 AC_WORDS_BIGENDIAN
414
415 dnl -------------------------------
416 dnl check the size in byte of the C
417 dnl -------------------------------
418 dnl AC_CHECK_SIZEOF(char)
419 dnl AC_CHECK_SIZEOF(int)
420 dnl AC_CHECK_SIZEOF(short)
421 dnl AC_CHECK_SIZEOF(long)
422
423 dnl ----------------------------
424 dnl check existance of functions
425 dnl ----------------------------
426 AC_CHECK_FUNCS(memset memcpy strerror inet_aton daemon snprintf vsnprintf \
427 strlcat strlcpy if_nametoindex if_indextoname getifaddrs \
428 fcntl)
429 AC_CHECK_FUNCS(setproctitle, ,
430 [AC_CHECK_LIB(util, setproctitle,
431 [LIBS="$LIBS -lutil"
432 AC_DEFINE(HAVE_SETPROCTITLE,, Have setproctitle)
433 ]
434 )
435 ]
436 )
437
438 dnl ------------------------------------
439 dnl Determine routing get and set method
440 dnl ------------------------------------
441 AC_MSG_CHECKING(zebra between kernel interface method)
442 if test x"$opsys" = x"gnu-linux"; then
443 if test "${enable_netlink}" = "yes";then
444 AC_MSG_RESULT(netlink)
445 RT_METHOD=rt_netlink.o
446 AC_DEFINE(HAVE_NETLINK,,netlink)
447 netlink=yes
448 elif test "${enable_netlink}" = "no"; then
449 AC_MSG_RESULT(ioctl)
450 RT_METHOD=rt_ioctl.o
451 netlink=no
452 else
453 AC_MSG_RESULT(netlink)
454 RT_METHOD=rt_netlink.o
455 AC_DEFINE(HAVE_NETLINK,,netlink)
456 netlink=yes
457 fi
458 elif test x"$opsys" = x"sol2-6";then
459 AC_MSG_RESULT(Route socket)
460 KERNEL_METHOD="kernel_socket.o"
461 RT_METHOD="rt_socket.o"
462 elif test x"$opsys" = x"sol9";then
463 AC_MSG_RESULT(Route socket)
464 KERNEL_METHOD="kernel_socket.o"
465 RT_METHOD="rt_socket.o"
466 elif test "$opsys" = "irix" ; then
467 AC_MSG_RESULT(Route socket)
468 KERNEL_METHOD="kernel_socket.o"
469 RT_METHOD="rt_socket.o"
470 else
471 AC_TRY_RUN([#include <errno.h>
472 #include <sys/types.h>
473 #include <sys/socket.h>
474
475 main ()
476 {
477 int ac_sock;
478
479 ac_sock = socket (AF_ROUTE, SOCK_RAW, 0);
480 if (ac_sock < 0 && errno == EINVAL)
481 exit (1);
482 exit (0);
483 }],
484 [KERNEL_METHOD=kernel_socket.o
485 RT_METHOD=rt_socket.o
486 AC_MSG_RESULT(socket)],
487 [RT_METHOD=rt_ioctl.o
488 AC_MSG_RESULT(ioctl)],
489 [KERNEL_METHOD=kernel_socket.o
490 RT_METHOD=rt_socket.o
491 AC_MSG_RESULT(socket)])
492 fi
493 AC_SUBST(RT_METHOD)
494 AC_SUBST(KERNEL_METHOD)
495 AC_SUBST(OTHER_METHOD)
496
497 dnl ------------------------------------
498 dnl check for broken CMSG_FIRSTHDR macro
499 dnl ------------------------------------
500 AC_MSG_CHECKING(for broken CMSG_FIRSTHDR)
501 AC_TRY_RUN([
502 #ifdef SUNOS_5
503 #define _XPG4_2
504 #define __EXTENSIONS__
505 #endif
506 #include <stdlib.h>
507 #include <sys/types.h>
508 #include <sys/socket.h>
509
510 main()
511 {
512 struct msghdr msg;
513 char buf[4];
514
515 msg.msg_control = buf;
516 msg.msg_controllen = 0;
517
518 if (CMSG_FIRSTHDR(&msg) != NULL)
519 exit(0);
520 exit (1);
521 }],[AC_MSG_RESULT(yes - using workaround) AC_DEFINE(HAVE_BROKEN_CMSG_FIRSTHDR,,Broken CMSG_FIRSTHDR)],
522 [AC_MSG_RESULT(no)])
523
524 dnl ------------------------------
525 dnl check kernel route read method
526 dnl ------------------------------
527 AC_CACHE_CHECK(route read method check, zebra_rtread,
528 [if test "$netlink" = yes; then
529 RTREAD_METHOD="rtread_netlink.o"
530 zebra_rtread="netlink"
531 else
532 for zebra_rtread in /proc/net/route /dev/ip /dev/null;
533 do
534 test x`ls $zebra_rtread 2>/dev/null` = x"$zebra_rtread" && break
535 done
536 case $zebra_rtread in
537 "/proc/net/route") RTREAD_METHOD="rtread_proc.o"
538 zebra_rtread="proc";;
539 "/dev/ip")
540 case "$host" in
541 *-freebsd*) RTREAD_METHOD=rtread_sysctl.o
542 zebra_rtread="sysctl";;
543 *) RTREAD_METHOD="rtread_getmsg.o"
544 zebra_rtread="getmsg";;
545 esac;;
546 *) RTREAD_METHOD="rtread_sysctl.o"
547 zebra_rtread="sysctl";;
548 esac
549 fi])
550 AC_SUBST(RTREAD_METHOD)
551
552 dnl -----------------------------
553 dnl check interface lookup method
554 dnl -----------------------------
555 IOCTL_METHOD=ioctl.o
556 AC_MSG_CHECKING(interface looking up method)
557 if test "$netlink" = yes; then
558 AC_MSG_RESULT(netlink)
559 IF_METHOD=if_netlink.o
560 elif test "$opsys" = "sol2-6";then
561 AC_MSG_RESULT(Solaris GIF)
562 IF_METHOD=if_ioctl.o
563 elif test "$opsys" = "sol9";then
564 AC_MSG_RESULT(Solaris GLIF)
565 IF_METHOD=if_ioctl_solaris.o
566 IOCTL_METHOD=ioctl_solaris.o
567 elif test "$opsys" = "irix" ; then
568 AC_MSG_RESULT(IRIX)
569 IF_METHOD=if_ioctl.o
570 elif test "$opsys" = "openbsd";then
571 AC_MSG_RESULT(openbsd)
572 IF_METHOD=if_ioctl.o
573 elif grep NET_RT_IFLIST /usr/include/sys/socket.h >/dev/null 2>&1; then
574 AC_MSG_RESULT(sysctl)
575 IF_METHOD=if_sysctl.o
576 AC_DEFINE(HAVE_NET_RT_IFLIST,,NET_RT_IFLIST)
577 else
578 AC_MSG_RESULT(ioctl)
579 IF_METHOD=if_ioctl.o
580 fi
581 AC_SUBST(IF_METHOD)
582 AC_SUBST(IOCTL_METHOD)
583
584 dnl -----------------------
585 dnl check proc file system.
586 dnl -----------------------
587 if test -r /proc/net/dev; then
588 AC_DEFINE(HAVE_PROC_NET_DEV,,/proc/net/dev)
589 IF_PROC=if_proc.o
590 fi
591
592 if test -r /proc/net/if_inet6; then
593 AC_DEFINE(HAVE_PROC_NET_IF_INET6,,/proc/net/if_inet6)
594 IF_PROC=if_proc.o
595 fi
596 AC_SUBST(IF_PROC)
597
598 dnl -----------------------------
599 dnl check ipforward detect method
600 dnl -----------------------------
601 AC_CACHE_CHECK(ipforward method check, zebra_ipforward_path,
602 [for zebra_ipforward_path in /proc/net/snmp /dev/ip /dev/null;
603 do
604 test x`ls $zebra_ipforward_path 2>/dev/null` = x"$zebra_ipforward_path" && break
605 done
606 case $zebra_ipforward_path in
607 "/proc/net/snmp") IPFORWARD=ipforward_proc.o
608 zebra_ipforward_path="proc";;
609 "/dev/ip")
610 case "$host" in
611 *-nec-sysv4*) IPFORWARD=ipforward_ews.o
612 zebra_ipforward_path="ews";;
613 *-freebsd*) IPFORWARD=ipforward_sysctl.o
614 zebra_ipforward_path="sysctl";;
615 *) IPFORWARD=ipforward_solaris.o
616 zebra_ipforward_path="solaris";;
617 esac;;
618 *) IPFORWARD=ipforward_sysctl.o
619 zebra_ipforward_path="sysctl";;
620 esac])
621 AC_SUBST(IPFORWARD)
622
623 AC_CHECK_FUNCS(getaddrinfo, [have_getaddrinfo=yes], [have_getaddrinfo=no])
624
625 dnl ----------
626 dnl IPv6 check
627 dnl ----------
628 AC_MSG_CHECKING(whether does this OS have IPv6 stack)
629 if test "${enable_ipv6}" = "no"; then
630 AC_MSG_RESULT(disabled)
631 else
632 dnl ----------
633 dnl INRIA IPv6
634 dnl ----------
635 if grep IPV6_INRIA_VERSION /usr/include/netinet/in.h >/dev/null 2>&1; then
636 zebra_cv_ipv6=yes
637 AC_DEFINE(HAVE_IPV6,1,INRIA IPv6)
638 AC_DEFINE(INRIA_IPV6,1,INRIA IPv6)
639 RIPNGD="ripngd"
640 OSPF6D="ospf6d"
641 LIB_IPV6=""
642 AC_MSG_RESULT(INRIA IPv6)
643 dnl ---------
644 dnl KAME IPv6
645 dnl ---------
646 elif grep WIDE /usr/include/netinet6/in6.h >/dev/null 2>&1; then
647 zebra_cv_ipv6=yes
648 AC_DEFINE(HAVE_IPV6,1,KAME IPv6)
649 AC_DEFINE(KAME,1,KAME IPv6)
650 RIPNGD="ripngd"
651 OSPF6D="ospf6d"
652 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
653 LIB_IPV6="-L/usr/local/v6/lib -linet6"
654 fi
655 AC_MSG_RESULT(KAME)
656 dnl -------------------------
657 dnl MUSICA IPv6
658 dnl default host check
659 dnl It is not used by Kheops
660 dnl -------------------------
661 elif grep MUSICA /usr/include6/netinet6/in6.h >/dev/null 2>&1; then
662 zebra_cv_ipv6=yes
663 AC_DEFINE(HAVE_IPV6,1,Musicia IPv6)
664 AC_DEFINE(MUSICA,1,Musica IPv6 stack)
665 AC_DEFINE(KAME,1,KAME IPv6 stack)
666 RIPNGD="ripngd"
667 OSPF6D="ospf6d"
668 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
669 LIB_IPV6="-L/usr/local/v6/lib -linet6"
670 fi
671 AC_MSG_RESULT(MUSICA)
672 dnl ---------
673 dnl NRL check
674 dnl ---------
675 elif grep NRL /usr/include/netinet6/in6.h >/dev/null 2>&1; then
676 zebra_cv_ipv6=yes
677 AC_DEFINE(HAVE_IPV6,1,NRL IPv6)
678 AC_DEFINE(NRL,1,NRL)
679 RIPNGD="ripngd"
680 OSPF6D="ospf6d"
681 if test x"$opsys" = x"bsdi";then
682 AC_DEFINE(BSDI_NRL,,BSDI)
683 AC_MSG_RESULT(BSDI_NRL)
684 else
685 AC_MSG_RESULT(NRL)
686 fi
687 dnl ------------------------------------
688 dnl Solaris 9, 10 and potentially higher
689 dnl ------------------------------------
690 elif test x"$opsys" = x"sol9"; then
691 zebra_cv_ipv6=yes;
692 AC_DEFINE(HAVE_IPV6, 1, IPv6)
693 AC_DEFINE(SOLARIS_IPV6, 1, Solaris IPv6)
694 RIPNGD="ripngd"
695 OSPF6D="ospf6d"
696 AC_MSG_RESULT(Solaris IPv6)
697 dnl ----------
698 dnl Linux IPv6
699 dnl ----------
700 elif test "${enable_ipv6}" = "yes"; then
701 AC_EGREP_CPP(yes, [
702 #include <linux/version.h>
703 /* 2.1.128 or later */
704 #if LINUX_VERSION_CODE >= 0x020180
705 yes
706 #endif],
707 [zebra_cv_ipv6=yes
708 zebra_cv_linux_ipv6=yes
709 AC_MSG_RESULT(Linux IPv6)])
710 else
711 if test x`ls /proc/net/ipv6_route 2>/dev/null` = x"/proc/net/ipv6_route"
712 then
713 zebra_cv_ipv6=yes
714 zebra_cv_linux_ipv6=yes
715 AC_MSG_RESULT(Linux IPv6)
716 fi
717 fi
718
719 if test "$zebra_cv_linux_ipv6" = "yes";then
720 AC_MSG_CHECKING(for GNU libc >= 2.1)
721 AC_DEFINE(HAVE_IPV6,1,Linux IPv6)
722 AC_EGREP_CPP(yes, [
723 #include <features.h>
724 #if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
725 yes
726 #endif],
727 [glibc=yes
728 AC_DEFINE(LINUX_IPV6,1,Linux IPv6 stack)
729 AC_MSG_RESULT(yes)],
730 AC_MSG_RESULT(no)
731 )
732 RIPNGD="ripngd"
733 OSPF6D="ospf6d"
734 if test "$glibc" != "yes"; then
735 INCLUDES="-I/usr/inet6/include"
736 if test x`ls /usr/inet6/lib/libinet6.a 2>/dev/null` != x;then
737 LIB_IPV6="-L/usr/inet6/lib -linet6"
738 fi
739 fi
740 fi
741
742 dnl -----------------------
743 dnl Set IPv6 related values
744 dnl -----------------------
745 LIBS="$LIB_IPV6 $LIBS"
746 AC_SUBST(LIB_IPV6)
747
748 if test x"$RIPNGD" = x""; then
749 AC_MSG_RESULT(IPv4 only)
750 fi
751 fi
752
753 dnl ------------------
754 dnl IPv6 header checks
755 dnl ------------------
756 if test "x${zebra_cv_ipv6}" = "xyes"; then
757 AC_CHECK_HEADERS([netinet6/in6.h netinet/in6_var.h netinet/icmp6.h \
758 netinet6/in6_var.h netinet6/nd6.h])
759 fi
760
761 dnl --------------------
762 dnl Daemon disable check
763 dnl --------------------
764 if test "${enable_zebra}" = "no";then
765 ZEBRA=""
766 else
767 ZEBRA="zebra"
768 fi
769
770 if test "${enable_bgpd}" = "no";then
771 BGPD=""
772 else
773 BGPD="bgpd"
774 fi
775
776 if test "${enable_ripd}" = "no";then
777 RIPD=""
778 else
779 RIPD="ripd"
780 fi
781
782 if test "${enable_ospfd}" = "no";then
783 OSPFD=""
784 else
785 OSPFD="ospfd"
786 fi
787
788 if test "${enable_watchquagga}" = "no";then
789 WATCHQUAGGA=""
790 else
791 WATCHQUAGGA="watchquagga"
792 fi
793
794 OSPFCLIENT=""
795 if test "${enable_opaque_lsa}" = "yes"; then
796 if test "${enable_ospfapi}" != "no";then
797 AC_DEFINE(SUPPORT_OSPF_API,,OSPFAPI)
798
799 if test "${enable_ospfclient}" != "no";then
800 OSPFCLIENT="ospfclient"
801 fi
802 fi
803
804 fi
805
806 case "${enable_ripngd}" in
807 "yes") RIPNGD="ripngd";;
808 "no" ) RIPNGD="";;
809 * ) ;;
810 esac
811
812 case "${enable_ospf6d}" in
813 "yes") OSPF6D="ospf6d";;
814 "no" ) OSPF6D="";;
815 * ) ;;
816 esac
817
818 case "${enable_isisd}" in
819 "yes") ISISD="isisd";;
820 "no" ) ISISD="";;
821 * ) ;;
822 esac
823
824 if test "${enable_bgp_announce}" = "no";then
825 AC_DEFINE(DISABLE_BGP_ANNOUNCE,,Disable BGP installation to zebra)
826 fi
827
828 AC_SUBST(ZEBRA)
829 AC_SUBST(BGPD)
830 AC_SUBST(RIPD)
831 AC_SUBST(RIPNGD)
832 AC_SUBST(OSPFD)
833 AC_SUBST(OSPF6D)
834 AC_SUBST(WATCHQUAGGA)
835 AC_SUBST(ISISD)
836 AC_SUBST(VTYSH)
837 AC_SUBST(INCLUDES)
838 AC_SUBST(CURSES)
839 AC_SUBST(OSPFCLIENT)
840 AC_SUBST(OSPFAPI)
841 AC_CHECK_LIB(c, inet_ntop, [AC_DEFINE(HAVE_INET_NTOP,,inet_ntop)])
842 AC_CHECK_LIB(c, inet_pton, [AC_DEFINE(HAVE_INET_PTON,,inet_pton)])
843 AC_CHECK_LIB(crypt, crypt)
844 AC_CHECK_LIB(resolv, res_init)
845 AC_CHECK_LIB(m, main)
846
847 dnl ---------------------------------------------------
848 dnl BSD/OS 4.1 define inet_XtoY function as __inet_XtoY
849 dnl ---------------------------------------------------
850 AC_CHECK_FUNC(__inet_ntop, AC_DEFINE(HAVE_INET_NTOP,,__inet_ntop))
851 AC_CHECK_FUNC(__inet_pton, AC_DEFINE(HAVE_INET_PTON,,__inet_pton))
852 AC_CHECK_FUNC(__inet_aton, AC_DEFINE(HAVE_INET_ATON,,__inet_aton))
853
854 dnl ---------------------------
855 dnl check system has GNU regexp
856 dnl ---------------------------
857 dnl AC_MSG_CHECKING(whether system has GNU regex)
858 AC_CHECK_LIB(c, regexec,
859 [AC_DEFINE(HAVE_GNU_REGEX,,GNU regexp library)
860 LIB_REGEX=""],
861 [LIB_REGEX="regex.o"])
862 AC_SUBST(LIB_REGEX)
863
864 dnl ------------------
865 dnl check SNMP library
866 dnl ------------------
867 if test "${enable_snmp}" = "yes";then
868 dnl AC_CHECK_LIB(snmp, asn_parse_int, HAVE_SNMP=yes)
869 if test "${HAVE_SNMP}" = ""; then
870 old_libs="${LIBS}"
871 LIBS="-L/usr/lib"
872 unset ac_cv_lib_snmp_asn_parse_int
873 AC_CHECK_LIB(crypto, main, NEED_CRYPTO=yes, )
874 if test "${NEED_CRYPTO}" = ""; then
875 AC_CHECK_LIB(netsnmp, asn_parse_int, [HAVE_NETSNMP=yes; HAVE_SNMP=yes ])
876 else
877 AC_CHECK_LIB(netsnmp, asn_parse_int, [HAVE_NETSNMP=yes; HAVE_SNMP=yes; NEED_CRYPTO=yes;LIBS="$LIBS -lcrypto" ],,"-lcrypto")
878 fi
879 LIBS="${old_libs}"
880 fi
881 if test "${HAVE_SNMP}" = ""; then
882 old_libs="${LIBS}"
883 LIBS="-L/usr/lib"
884 unset ac_cv_lib_snmp_asn_parse_int
885 AC_CHECK_LIB(snmp, asn_parse_int, HAVE_SNMP=yes, )
886 if test "${HAVE_SNMP}" = ""; then
887 unset ac_cv_lib_snmp_asn_parse_int
888 AC_CHECK_LIB(crypto, main, NEED_CRYPTO=yes, )
889 if test "${NEED_CRYPTO}" = "yes"; then
890 AC_CHECK_LIB(snmp, asn_parse_int, [HAVE_SNMP=yes; NEED_CRYPTO=yes; LIBS="$LIBS -lcrypto" ],,"-lcrypto")
891 fi
892 fi
893 LIBS="${old_libs}"
894 fi
895
896 if test "${HAVE_SNMP}" = ""; then
897 old_libs="${LIBS}"
898 LIBS="-L/usr/local/lib"
899 unset ac_cv_lib_snmp_asn_parse_int
900 AC_CHECK_LIB(snmp, asn_parse_int, HAVE_SNMP=yes)
901 if test "${HAVE_SNMP}" = ""; then
902 unset ac_cv_lib_snmp_asn_parse_int
903 AC_CHECK_LIB(crypto, main, NEED_CRYPTO=yes, )
904 if test "${NEED_CRYPTO}" = "yes"; then
905 AC_CHECK_LIB(snmp, asn_parse_int, [HAVE_SNMP=yes; NEED_CRYPTO=yes; LIBS="$LIBS -lcrypto" ],,"-lcrypto")
906 fi
907 fi
908 LIBS="${old_libs}"
909 fi
910
911 if test "${HAVE_SNMP}" = "yes"; then
912 for ac_snmp in /usr/include/net-snmp/library/asn1.h /usr/include/ucd-snmp/asn1.h /usr/local/include/ucd-snmp/asn1.h /dev/null
913 do
914 test -f "${ac_snmp}" && break
915 done
916
917 case ${ac_snmp} in
918 /usr/include/net-snmp/*)
919 AC_DEFINE(HAVE_SNMP,,SNMP)
920 AC_DEFINE(HAVE_NETSNMP,,SNMP)
921 AC_DEFINE(UCD_COMPATIBLE,,SNMP)
922 CFLAGS="${CFLAGS} -I/usr/include/net-snmp -I/usr/include/net-snmp/library"
923 if test "${HAVE_NETSNMP}" = "yes"; then
924 LIBS="${LIBS} -lnetsnmp"
925 else
926 LIBS="${LIBS} -lsnmp"
927 fi
928 ;;
929 /usr/include/ucd-snmp/*)
930 AC_DEFINE(HAVE_SNMP,,SNMP)
931 CFLAGS="${CFLAGS} -I/usr/include/ucd-snmp"
932 LIBS="${LIBS} -lsnmp"
933 ;;
934 /usr/local/include/ucd-snmp/*)
935 AC_DEFINE(HAVE_SNMP,,SNMP)
936 CFLAGS="${CFLAGS} -I/usr/local/include/ucd-snmp"
937 LIBS="${LIBS} -L/usr/local/lib -lsnmp"
938 ;;
939 /usr/local/include/net-snmp/*)
940 AC_DEFINE(HAVE_SNMP,,SNMP)
941 AC_DEFINE(HAVE_NET_SNMP,,SNMP)
942 AC_DEFINE(UCD_COMPATIBLE,,SNMP)
943 CFLAGS="${CFLAGS} -I/usr/local/include/net-snmp"
944 LIBS="${LIBS} -L/usr/local/lib -lnetsnmp"
945 ;;
946 esac
947 if test "${NEED_CRYPTO}" = "yes"; then
948 LIBS="${LIBS} -lcrypto"
949 fi
950 fi
951 fi
952
953 if test "${enable_snmp}" = "yes" -a "${HAVE_SNMP}" != "yes"; then
954 AC_MSG_ERROR([--enable-snmp given, but cannot find support for SNMP])
955 fi
956
957 dnl ----------------------------
958 dnl check sa_len of sockaddr
959 dnl ----------------------------
960 AC_MSG_CHECKING(whether struct sockaddr has a sa_len field)
961 AC_TRY_COMPILE([#include <sys/types.h>
962 #include <sys/socket.h>
963 ],[static struct sockaddr ac_i;int ac_j = sizeof (ac_i.sa_len);],
964 [AC_MSG_RESULT(yes)
965 AC_DEFINE(HAVE_SA_LEN,,sa_len)],
966 AC_MSG_RESULT(no))
967
968 dnl ----------------------------
969 dnl check sin_len of sockaddr_in
970 dnl ----------------------------
971 AC_MSG_CHECKING(whether struct sockaddr_in has a sin_len field)
972 AC_TRY_COMPILE([#include <sys/types.h>
973 #include <netinet/in.h>
974 ],[static struct sockaddr_in ac_i;int ac_j = sizeof (ac_i.sin_len);],
975 [AC_MSG_RESULT(yes)
976 AC_DEFINE(HAVE_SIN_LEN,,sin_len)],
977 AC_MSG_RESULT(no))
978
979 dnl ----------------------------
980 dnl check sun_len of sockaddr_un
981 dnl ----------------------------
982 AC_MSG_CHECKING(whether struct sockaddr_un has a sun_len field)
983 AC_TRY_COMPILE([#include <sys/types.h>
984 #include <sys/un.h>
985 ],[static struct sockaddr_un ac_i;int ac_j = sizeof (ac_i.sun_len);],
986 [AC_MSG_RESULT(yes)
987 AC_DEFINE(HAVE_SUN_LEN,,sun_len)],
988 AC_MSG_RESULT(no))
989
990 dnl -----------------------------------
991 dnl check sin6_scope_id of sockaddr_in6
992 dnl -----------------------------------
993 if test "$zebra_cv_ipv6" = yes; then
994 AC_MSG_CHECKING(whether struct sockaddr_in6 has a sin6_scope_id field)
995 AC_TRY_COMPILE([#include <sys/types.h>
996 #include <netinet/in.h>
997 ],[static struct sockaddr_in6 ac_i;int ac_j = sizeof (ac_i.sin6_scope_id);],
998 [AC_MSG_RESULT(yes)
999 AC_DEFINE(HAVE_SIN6_SCOPE_ID,,scope id)],
1000 AC_MSG_RESULT(no))
1001 fi
1002
1003 dnl ----------------------------
1004 dnl check socklen_t exist or not
1005 dnl ----------------------------
1006 AC_MSG_CHECKING(whther socklen_t is defined)
1007 AC_TRY_COMPILE([#include <sys/types.h>
1008 #include <sys/socket.h>
1009 #include <netinet/in.h>
1010 ],[socklen_t ac_x;],
1011 [AC_MSG_RESULT(yes)
1012 AC_DEFINE(HAVE_SOCKLEN_T,,socklen_t)],
1013 AC_MSG_RESULT(no))
1014
1015 dnl ------------------------
1016 dnl check struct sockaddr_dl
1017 dnl ------------------------
1018 AC_MSG_CHECKING(whether struct sockaddr_dl exist)
1019 AC_EGREP_HEADER(sockaddr_dl,
1020 net/if_dl.h,
1021 [AC_MSG_RESULT(yes)
1022 AC_DEFINE(HAVE_SOCKADDR_DL,,sockaddr_dl)],
1023 AC_MSG_RESULT(no))
1024
1025 dnl --------------------------
1026 dnl check structure ifaliasreq
1027 dnl --------------------------
1028 AC_MSG_CHECKING(whether struct ifaliasreq exist)
1029 AC_EGREP_HEADER(ifaliasreq,
1030 net/if.h,
1031 [AC_MSG_RESULT(yes)
1032 AC_DEFINE(HAVE_IFALIASREQ,,ifaliasreq)],
1033 AC_MSG_RESULT(no))
1034
1035 dnl ----------------------------
1036 dnl check structure in6_aliasreq
1037 dnl ----------------------------
1038 AC_MSG_CHECKING(whether struct in6_aliasreq exist)
1039 AC_EGREP_HEADER(in6_aliasreq,
1040 netinet6/in6_var.h,
1041 [AC_MSG_RESULT(yes)
1042 AC_DEFINE(HAVE_IN6_ALIASREQ,,in6_aliasreq)],
1043 AC_MSG_RESULT(no))
1044
1045 dnl -----------------------------------
1046 dnl check ifra_lifetime of in6_aliasreq
1047 dnl -----------------------------------
1048 AC_MSG_CHECKING(whether in6_aliasreq.ifra_lifetime exist)
1049 AC_TRY_COMPILE([#include <sys/types.h>
1050 #include <netinet6/in6_var.h>
1051 ],[static struct if6_aliasreq ac_i;int ac_j = sizeof (ac_i.ifra_lifetime);],
1052 [AC_MSG_RESULT(yes)
1053 AC_DEFINE(HAVE_IFRA_LIFETIME,,Have in6_aliasreq.ifra_lifetime)],
1054 AC_MSG_RESULT(no))
1055
1056 dnl ---------------------------
1057 dnl check structure rt_addrinfo
1058 dnl ---------------------------
1059 AC_MSG_CHECKING(whether struct rt_addrinfo exist)
1060 AC_EGREP_HEADER(rt_addrinfo,
1061 net/route.h,
1062 [AC_MSG_RESULT(yes)
1063 AC_DEFINE(HAVE_RT_ADDRINFO,,rt_addrinfo)],
1064 AC_MSG_RESULT(no))
1065
1066 dnl --------------------------
1067 dnl check structure in_pktinfo
1068 dnl --------------------------
1069 AC_MSG_CHECKING(whether struct in_pktinfo exist)
1070 AC_TRY_COMPILE([#include <netinet/in.h>
1071 ],[struct in_pktinfo ac_x;],
1072 [AC_MSG_RESULT(yes)
1073 AC_DEFINE(HAVE_INPKTINFO,,in_pktinfo)],
1074 AC_MSG_RESULT(no))
1075
1076 dnl --------------------------------------
1077 dnl checking for getrusage struct and call
1078 dnl --------------------------------------
1079 AC_MSG_CHECKING(whether getrusage is available)
1080 AC_TRY_COMPILE([#include <sys/resource.h>
1081 ],[struct rusage ac_x; getrusage (RUSAGE_SELF, &ac_x);],
1082 [AC_MSG_RESULT(yes)
1083 AC_DEFINE(HAVE_RUSAGE,,rusage)],
1084 AC_MSG_RESULT(no))
1085
1086 dnl -------------------
1087 dnl capabilities checks
1088 dnl -------------------
1089 if test "${enable_capabilities}" != "no"; then
1090 AC_MSG_CHECKING(whether prctl PR_SET_KEEPCAPS is available)
1091 AC_TRY_COMPILE([#include <sys/prctl.h>],[prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);],
1092 [AC_MSG_RESULT(yes)
1093 AC_DEFINE(HAVE_PR_SET_KEEPCAPS,,prctl)
1094 quagga_ac_keepcaps="yes"],
1095 AC_MSG_RESULT(no)
1096 )
1097 if test x"${quagga_ac_keepcaps}" = x"yes"; then
1098 AC_CHECK_HEADERS(sys/capability.h)
1099 fi
1100 if test x"${ac_cv_header_sys_capability_h}" = x"yes"; then
1101 AC_CHECK_LIB(cap, cap_init,
1102 [AC_DEFINE(HAVE_LCAPS,1,Capabilities)
1103 LIBCAP="-lcap"
1104 ]
1105 )
1106 fi
1107 fi
1108 AC_SUBST(LIBCAP)
1109
1110 dnl -------------------
1111 dnl test for ucontext.h
1112 dnl -------------------
1113 AC_CHECK_HEADERS(ucontext.h)
1114
1115 dnl ---------------------------
1116 dnl check for glibc 'backtrace'
1117 dnl ---------------------------
1118 if test "${glibc}" = "yes"; then
1119 AC_CHECK_HEADER(execinfo.h)
1120 fi
1121 if test x"${ac_cv_header_execinfo_h}" = x"yes"; then
1122 AC_CHECK_FUNC(backtrace,
1123 [AC_DEFINE(HAVE_GLIBC_BACKTRACE,,Glibc backtrace)]
1124 )
1125 fi
1126
1127 dnl ----------
1128 dnl configure date
1129 dnl ----------
1130 CONFDATE=`date '+%Y%m%d'`
1131 AC_SUBST(CONFDATE)
1132
1133 dnl ------------------------------
1134 dnl set paths for state directory
1135 dnl ------------------------------
1136 if test "${prefix}" = "NONE"; then
1137 quagga_statedir_prefix="";
1138 else
1139 quagga_statedir_prefix=${prefix}
1140 fi
1141 if test "${localstatedir}" = '${prefix}/var'; then
1142 AC_CACHE_CHECK(state directory,ac_statedir,
1143 [for QUAGGA_STATE_DIR in ${quagga_statedir_prefix}/var/run dnl
1144 ${quagga_statedir_prefix}/var/adm dnl
1145 ${quagga_statedir_prefix}/etc dnl
1146 /var/run dnl
1147 /var/adm dnl
1148 /etc dnl
1149 /dev/null;
1150 do
1151 test -d $QUAGGA_STATE_DIR && break
1152 done
1153 quagga_statedir=$QUAGGA_STATE_DIR])
1154 else
1155 quagga_statedir=${localstatedir}
1156 AC_MSG_CHECKING(directory to use for state file)
1157 AC_MSG_RESULT(${quagga_statedir})
1158 fi
1159 if test $quagga_statedir = "/dev/null"; then
1160 AC_MSG_ERROR('STATE DIRECTORY NOT FOUND! FIX OR SPECIFY --localstatedir!')
1161 fi
1162
1163 AC_DEFINE_UNQUOTED(PATH_ZEBRA_PID, "$quagga_statedir/zebra.pid",zebra PID)
1164 AC_DEFINE_UNQUOTED(PATH_RIPD_PID, "$quagga_statedir/ripd.pid",ripd PID)
1165 AC_DEFINE_UNQUOTED(PATH_RIPNGD_PID, "$quagga_statedir/ripngd.pid",ripngd PID)
1166 AC_DEFINE_UNQUOTED(PATH_BGPD_PID, "$quagga_statedir/bgpd.pid",bgpd PID)
1167 AC_DEFINE_UNQUOTED(PATH_OSPFD_PID, "$quagga_statedir/ospfd.pid",ospfd PID)
1168 AC_DEFINE_UNQUOTED(PATH_OSPF6D_PID, "$quagga_statedir/ospf6d.pid",ospf6d PID)
1169 AC_DEFINE_UNQUOTED(PATH_ISISD_PID, "$quagga_statedir/isisd.pid",isisd PID)
1170 AC_DEFINE_UNQUOTED(PATH_WATCHQUAGGA_PID, "$quagga_statedir/watchquagga.pid",watchquagga PID)
1171 AC_DEFINE_UNQUOTED(ZEBRA_SERV_PATH, "$quagga_statedir/zserv.api",zebra api socket)
1172 AC_DEFINE_UNQUOTED(ZEBRA_VTYSH_PATH, "$quagga_statedir/zebra.vty",zebra vty socket)
1173 AC_DEFINE_UNQUOTED(RIP_VTYSH_PATH, "$quagga_statedir/ripd.vty",rip vty socket)
1174 AC_DEFINE_UNQUOTED(RIPNG_VTYSH_PATH, "$quagga_statedir/ripngd.vty",ripng vty socket)
1175 AC_DEFINE_UNQUOTED(BGP_VTYSH_PATH, "$quagga_statedir/bgpd.vty",bgpd vty socket)
1176 AC_DEFINE_UNQUOTED(OSPF_VTYSH_PATH, "$quagga_statedir/ospfd.vty",ospfd vty socket)
1177 AC_DEFINE_UNQUOTED(OSPF6_VTYSH_PATH, "$quagga_statedir/ospf6d.vty",ospf6d vty socket)
1178 AC_DEFINE_UNQUOTED(ISIS_VTYSH_PATH, "$quagga_statedir/isisd.vty",isisd vty socket)
1179 AC_DEFINE_UNQUOTED(DAEMON_VTY_DIR, "$quagga_statedir",daemon vty directory)
1180
1181 dnl ---------------------------
1182 dnl Check htonl works correctly
1183 dnl ---------------------------
1184 AC_MSG_CHECKING(for working htonl)
1185 AC_CACHE_VAL(ac_cv_htonl_works, [
1186 AC_TRY_LINK([#ifdef HAVE_SYS_TYPES_H
1187 #include <sys/types.h>
1188 #endif
1189 #ifdef HAVE_NETDB_H
1190 #include <netdb.h>
1191 #endif
1192 #ifdef HAVE_NETINET_IN_H
1193 #include <netinet/in.h>
1194 #endif],
1195 [htonl (0);],
1196 ac_cv_htonl_works=yes,
1197 ac_cv_htonl_works=no)])
1198 AC_MSG_RESULT($ac_cv_htonl_works)
1199
1200 AC_CONFIG_FILES([Makefile lib/Makefile zebra/Makefile ripd/Makefile
1201 ripngd/Makefile bgpd/Makefile ospfd/Makefile watchquagga/Makefile
1202 ospf6d/Makefile isisd/Makefile vtysh/Makefile doc/Makefile
1203 ospfclient/Makefile tests/Makefile m4/Makefile redhat/Makefile
1204 pkgsrc/Makefile
1205 redhat/quagga.spec
1206 lib/version.h
1207 doc/defines.texi
1208 pkgsrc/bgpd.sh pkgsrc/ospf6d.sh pkgsrc/ospfd.sh
1209 pkgsrc/ripd.sh pkgsrc/ripngd.sh pkgsrc/zebra.sh])
1210 AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl])
1211 ## Hack, but working solution to avoid rebuilding of quagga.info.
1212 ## It's already in CVS until texinfo 4.7 is more common.
1213 AC_CONFIG_COMMANDS([info-time],[touch doc/quagga.info])
1214 AC_OUTPUT
1215
1216 echo "
1217 Quagga configuration
1218 --------------------
1219 quagga version : ${PACKAGE_VERSION}
1220 host operationg system : ${host_os}
1221 source code location : ${srcdir}
1222 compiler : ${CC}
1223 compiler flags : ${CFLAGS}
1224 linker flags : ${LDFLAGS} ${LIBS}
1225 state file directory : ${quagga_statedir}
1226 config file directory : `eval echo \`echo ${sysconfdir}\``
1227 example directory : `eval echo \`echo ${exampledir}\``
1228 user to run as : ${enable_user}
1229 group to run as : ${enable_group}
1230 group for vty sockets : ${enable_vty_group}
1231 config file mask : ${enable_configfile_mask}
1232 log file mask : ${enable_logfile_mask}
1233
1234 The above user and group must have read/write access to the state file
1235 directory and to the config files in the config file directory.
1236 "