blob: 99821109c63322c6e48ad4a8df426f909c92acce [file] [log] [blame]
paul7ea487b2003-03-17 02:05:07 +00001##
paule8f29842003-08-12 13:08:31 +00002## Configure template file for Quagga.
paul7ea487b2003-03-17 02:05:07 +00003## autoconf will generate configure script.
4##
5## Copyright (c) 1996, 97, 98, 99, 2000 Kunihiro Ishiguro <kunihiro@zebra.org>
paule8f29842003-08-12 13:08:31 +00006## Portions Copyright (c) 2003 Paul Jakma <paul@dishone.st>
paul7ea487b2003-03-17 02:05:07 +00007##
Paul Jakma105b8232006-05-28 08:02:41 +00008## $Id$
paule8f29842003-08-12 13:08:31 +00009AC_PREREQ(2.53)
paul7ea487b2003-03-17 02:05:07 +000010
Paul Jakma43cd33a2006-12-08 21:27:08 +000011AC_INIT(Quagga, 0.99.6, [http://bugzilla.quagga.net])
paulfa1253d2003-09-24 05:09:26 +000012AC_CONFIG_SRCDIR(lib/zebra.h)
ajsdfb9a542005-04-11 14:55:55 +000013
14dnl -----------------------------------
15dnl Get hostname and other information.
16dnl -----------------------------------
17AC_CANONICAL_BUILD()
18AC_CANONICAL_HOST()
19AC_CANONICAL_TARGET()
20
gdt81b81822004-04-07 22:48:47 +000021AM_INIT_AUTOMAKE(1.6)
paul7ea487b2003-03-17 02:05:07 +000022AM_CONFIG_HEADER(config.h)
23
paul03ecfb62005-04-16 15:38:23 +000024dnl we need gawk for memtypes.awk
25AC_CHECK_PROG([GAWK],[gawk],[gawk],[/bin/false])
26AC_ARG_VAR([GAWK],[GNU AWK])
27
gdtd6b72f72003-12-03 17:24:27 +000028dnl default is to match previous behavior
gdtc4f0efe2003-12-04 15:39:25 +000029exampledir=${sysconfdir}
gdtd6b72f72003-12-03 17:24:27 +000030AC_ARG_ENABLE([exampledir],
31 AC_HELP_STRING([--enable-exampledir],
32 [specify alternate directory for examples]),
33 exampledir="$enableval",)
gdtc4f0efe2003-12-04 15:39:25 +000034dnl XXX add --exampledir to autoconf standard directory list somehow
gdtd6b72f72003-12-03 17:24:27 +000035AC_SUBST(exampledir)
36
gdtcbd04082004-08-31 18:16:36 +000037dnl default is to match previous behavior
38pkgsrcrcdir=""
39pkgsrcdir=""
40AC_ARG_ENABLE([pkgsrcrcdir],
41 AC_HELP_STRING([--enable-pkgsrcrcdir],
42 [specify directory for rc.d scripts]),
43 pkgsrcrcdir="$enableval"; pkgsrcdir="pkgsrc",)
44dnl XXX add --pkgsrcrcdir to autoconf standard directory list somehow
45AC_SUBST(pkgsrcdir)
46AC_SUBST(pkgsrcrcdir)
47
paul7ea487b2003-03-17 02:05:07 +000048dnl ------------
49dnl Check CFLAGS
50dnl ------------
51AC_ARG_WITH(cflags,
52[ --with-cflags Set CFLAGS for use in compilation.])
53if test "x$with_cflags" != "x" ; then
54 CFLAGS="$with_cflags" ; cflags_specified=yes ;
55elif test -n "$CFLAGS" ; then
56 cflags_specified=yes ;
57fi
58
hasso1969e4b2005-03-27 13:07:23 +000059dnl --------------------
60dnl Check CC and friends
61dnl --------------------
paul7ea487b2003-03-17 02:05:07 +000062AC_PROG_CC
hasso1969e4b2005-03-27 13:07:23 +000063AC_PROG_CPP
64AC_PROG_EGREP
65
66dnl ------------------------------------------------------------------
67dnl Intel compiler check. Although Intel tries really hard to make icc
68dnl look like gcc, there are some differences. It's very verbose with
69dnl -Wall and it doesn't support the individual -W options.
70dnl ------------------------------------------------------------------
paul6a4b8832005-11-26 08:28:00 +000071if test "x${GCC}" = "xyes" ; then
72 COMPILER="GCC"
73 AC_MSG_CHECKING([whether we are using the Intel compiler])
74 AC_EGREP_CPP([^__INTEL_COMPILER], [__INTEL_COMPILER],
75 [AC_MSG_RESULT([no])],
76 [COMPILER="ICC"
77 AC_MSG_RESULT([yes])]
78 )
79else
80 AC_MSG_CHECKING([whether we are using SunPro compiler])
81 AC_EGREP_CPP([^__SUNPRO_C.*0x5(7|8|9)], ["__SUNPRO_C" __SUNPRO_C],
82 [AC_MSG_RESULT([no])],
83 [COMPILER="SUNPRO"
84 AC_MSG_RESULT([yes])]
85 )
86fi
paul7ea487b2003-03-17 02:05:07 +000087
paula49c0ff2004-09-30 06:08:58 +000088dnl ---------------------------------------------
paul7ea487b2003-03-17 02:05:07 +000089dnl If CLFAGS doesn\'t exist set default value
paula49c0ff2004-09-30 06:08:58 +000090dnl AC_PROG_CC will have set minimal default
91dnl already, eg "-O2 -g" for gcc, "-g" for others
paul27eebb32004-07-22 18:16:59 +000092dnl (Wall is gcc specific... have to make sure
93dnl gcc is being used before setting it)
94dnl
paul6a4b8832005-11-26 08:28:00 +000095dnl Intel icc 8.0 also sets __GNUC__,
96dnl but doesn't support all these fancy -W options.
hasso1969e4b2005-03-27 13:07:23 +000097dnl Intel compiler warnings we ignore:
98dnl 279: controlling expression is constant.
99dnl 869: parameter "xxx" was never referenced - to avoid massive warnings
100dnl about "self", "vty", "argc" and "argv" never referenced in DEFUN
101dnl macro.
102dnl 981: operands are evaluated in unspecified order.
paul6a4b8832005-11-26 08:28:00 +0000103dnl
104dnl Sun Studio 10 / SunPro 5.7 is also supported,
105dnl so lets set some sane CFLAGS for it.
106dnl ---------------------------------------------
hasso1969e4b2005-03-27 13:07:23 +0000107
paul6a4b8832005-11-26 08:28:00 +0000108AC_MSG_CHECKING([whether to set a default CFLAGS])
109if test "x${cflags_specified}" = "x" ; then
110 case ${COMPILER} in
111 "ICC")
112 CFLAGS="-Os -g -Wall -wd 279,869,981"
113 AC_MSG_RESULT([Intel default])
114 ;;
115 "GCC")
116 CFLAGS="-Os -fno-omit-frame-pointer -g -std=c99 -Wall"
117 CFLAGS="${CFLAGS} -Wsign-compare -Wpointer-arith"
118 CFLAGS="${CFLAGS} -Wbad-function-cast -Wwrite-strings"
119 CFLAGS="${CFLAGS} -Wmissing-prototypes -Wmissing-declarations"
120 CFLAGS="${CFLAGS} -Wchar-subscripts -Wcast-qual"
121 # TODO: conditionally addd -Wpacked if handled
122 AC_MSG_RESULT([gcc default])
123 ;;
124 "SUNPRO")
Paul Jakma105b8232006-05-28 08:02:41 +0000125 CFLAGS="-xO4 -v -g -xspace -xcode=pic32 -xstrconst -xc99"
paul6a4b8832005-11-26 08:28:00 +0000126 AC_MSG_RESULT([SunPro default])
127 ;;
128 *)
129 AC_MSG_RESULT([unknown compiler])
130 ;;
131 esac
132else
133 AC_MSG_RESULT([CFLAGS supplied by user])
hasso1969e4b2005-03-27 13:07:23 +0000134fi
135
paul7ea487b2003-03-17 02:05:07 +0000136dnl --------------
137dnl Check programs
138dnl --------------
paul7ea487b2003-03-17 02:05:07 +0000139AC_PROG_INSTALL
140AC_PROG_MAKE_SET
141AC_CHECK_TOOL(AR, ar)
142AC_CHECK_TOOL(RANLIB, ranlib, :)
143
Paul Jakma105b8232006-05-28 08:02:41 +0000144dnl ---------------------------
145dnl We, perhaps unfortunately,
146dnl depend on GNU Make specific
147dnl constructs.
148dnl Give the user a warning if
149dnl not GNU Make.
150dnl ---------------------------
151AC_CACHE_CHECK([if ${MAKE-make} is GNU make], [quagga_cv_gnu_make],
152 [quagga_cv_gnu_make=no
153 if ${MAKE-make} --version 2>/dev/null | \
154 grep '^GNU Make ' >/dev/null ; then
155 quagga_cv_gnu_make=yes;
156 fi
157 ]
158)
159
paul7ea487b2003-03-17 02:05:07 +0000160dnl ---------
161dnl AIX check
162dnl ---------
163AC_AIX
164
gdt87efd642004-06-30 17:36:11 +0000165dnl -------
166dnl libtool
167dnl -------
paul0fc42942004-08-19 04:41:21 +0000168AC_PROG_LIBTOOL
gdt87efd642004-06-30 17:36:11 +0000169
paul7ea487b2003-03-17 02:05:07 +0000170dnl ----------------------
171dnl Packages configuration
172dnl ----------------------
173AC_ARG_ENABLE(vtysh,
gdtfc9d0742004-06-30 14:25:12 +0000174[ --enable-vtysh include integrated vty shell for Quagga])
paul7ea487b2003-03-17 02:05:07 +0000175AC_ARG_ENABLE(ipv6,
176[ --disable-ipv6 turn off IPv6 related features and daemons])
177AC_ARG_ENABLE(zebra,
178[ --disable-zebra do not build zebra daemon])
179AC_ARG_ENABLE(bgpd,
180[ --disable-bgpd do not build bgpd])
181AC_ARG_ENABLE(ripd,
182[ --disable-ripd do not build ripd])
183AC_ARG_ENABLE(ripngd,
184[ --disable-ripngd do not build ripngd])
185AC_ARG_ENABLE(ospfd,
186[ --disable-ospfd do not build ospfd])
paul7ea487b2003-03-17 02:05:07 +0000187AC_ARG_ENABLE(ospf6d,
188[ --disable-ospf6d do not build ospf6d])
ajsd0199432004-12-22 14:03:52 +0000189AC_ARG_ENABLE(watchquagga,
190[ --disable-watchquagga do not build watchquagga])
jardin9e867fe2003-12-23 08:56:18 +0000191AC_ARG_ENABLE(isisd,
hassoae399ab2004-09-13 20:22:18 +0000192[ --enable-isisd build isisd])
paul7ea487b2003-03-17 02:05:07 +0000193AC_ARG_ENABLE(bgp-announce,
194[ --disable-bgp-announce, turn off BGP route announcement])
195AC_ARG_ENABLE(netlink,
196[ --enable-netlink force to use Linux netlink interface])
197AC_ARG_ENABLE(broken-aliases,
198[ --enable-broken-aliases enable aliases as distinct interfaces for Linux 2.2.X])
199AC_ARG_ENABLE(snmp,
200[ --enable-snmp enable SNMP support])
201AC_ARG_WITH(libpam,
202[ --with-libpam use libpam for PAM support in vtysh])
hasso71c0fb52003-05-25 20:18:13 +0000203AC_ARG_ENABLE(tcp-zebra,
paul7ea487b2003-03-17 02:05:07 +0000204[ --enable-tcp-zebra enable TCP/IP socket connection between zebra and protocol daemon])
paul7ea487b2003-03-17 02:05:07 +0000205AC_ARG_ENABLE(opaque-lsa,
paul1ef74ef2003-03-21 15:16:05 +0000206[ --enable-opaque-lsa enable OSPF Opaque-LSA with OSPFAPI support (RFC2370)])
207AC_ARG_ENABLE(ospfapi,
208[ --disable-ospfapi do not build OSPFAPI to access the OSPF LSA Database,
209 (this is the default if --enable-opaque-lsa is not set)])
210AC_ARG_ENABLE(ospfclient,
211[ --disable-ospfclient do not build OSPFAPI client for OSPFAPI,
212 (this is the default if --disable-ospfapi is set)])
paul7ea487b2003-03-17 02:05:07 +0000213AC_ARG_ENABLE(ospf-te,
214[ --enable-ospf-te enable Traffic Engineering Extension to OSPF])
215AC_ARG_ENABLE(multipath,
216[ --enable-multipath=ARG enable multipath function, ARG must be digit])
paule8f29842003-08-12 13:08:31 +0000217AC_ARG_ENABLE(quagga_user,
218[ --enable-user=ARG user to run Quagga suite as (default quagga)])
219AC_ARG_ENABLE(quagga_group,
220[ --enable-group=ARG group to run Quagga suite as (default quagga)])
pauledd7c242003-06-04 13:59:38 +0000221AC_ARG_ENABLE(vty_group,
paul6b6942f2004-10-22 04:55:05 +0000222[ --enable-vty-group=ARG set vty sockets to have specified group as owner])
gdtaa593d52003-12-22 20:15:53 +0000223AC_ARG_ENABLE(configfile_mask,
224[ --enable-configfile-mask=ARG set mask for config files])
225AC_ARG_ENABLE(logfile_mask,
226[ --enable-logfile-mask=ARG set mask for log files])
pauledd7c242003-06-04 13:59:38 +0000227
hasso71c0fb52003-05-25 20:18:13 +0000228AC_ARG_ENABLE(rtadv,
paul6b6942f2004-10-22 04:55:05 +0000229[ --disable-rtadv disable IPV6 router advertisement feature])
hassoca776982004-06-12 14:33:05 +0000230AC_ARG_ENABLE(irdp,
paul6b6942f2004-10-22 04:55:05 +0000231[ --enable-irdp enable IRDP server support in zebra])
hassof695b012005-04-02 19:03:39 +0000232AC_ARG_ENABLE(isis_topology,
233[ --enable-isis-topology enable IS-IS topology generator])
hasso41d3fc92004-04-06 11:59:00 +0000234AC_ARG_ENABLE(capabilities,
235[ --disable-capabilities disable using POSIX capabilities])
paul6b6942f2004-10-22 04:55:05 +0000236AC_ARG_ENABLE(gcc_ultra_verbose,
237[ --enable-gcc-ultra-verbose enable ultra verbose GCC warnings])
ajs3cade262004-12-29 17:50:22 +0000238AC_ARG_ENABLE(gcc-rdynamic,
239[ --enable-gcc-rdynamic enable gcc linking with -rdynamic for better backtraces])
ajs924b9222005-04-16 17:11:24 +0000240AC_ARG_ENABLE(time-check,
241[ --disable-time-check disable slow thread warning messages])
paul6b6942f2004-10-22 04:55:05 +0000242
243if test x"${enable_gcc_ultra_verbose}" = x"yes" ; then
244 CFLAGS="${CFLAGS} -W -Wcast-qual -Wstrict-prototypes"
245 CFLAGS="${CFLAGS} -Wmissing-declarations -Wmissing-noreturn"
246 CFLAGS="${CFLAGS} -Wmissing-format-attribute -Wunreachable-code"
247 CFLAGS="${CFLAGS} -Wpacked -Wpadded"
248fi
paul7ea487b2003-03-17 02:05:07 +0000249
ajs3cade262004-12-29 17:50:22 +0000250if test x"${enable_gcc_rdynamic}" = x"yes" ; then
251 LDFLAGS="${LDFLAGS} -rdynamic"
252fi
253
ajs924b9222005-04-16 17:11:24 +0000254if test x"${enable_time_check}" != x"no" ; then
255 if test x"${enable_time_check}" = x"yes" -o x"${enable_time_check}" = x ; then
256 AC_DEFINE(CONSUMED_TIME_CHECK,5000000,Consumed Time Check)
257 else
258 AC_DEFINE_UNQUOTED(CONSUMED_TIME_CHECK,$enable_time_check,Consumed Time Check)
259 fi
260fi
261
paul7ea487b2003-03-17 02:05:07 +0000262if test "${enable_broken_aliases}" = "yes"; then
263 if test "${enable_netlink}" = "yes"
264 then
265 echo "Sorry, you can't use netlink with broken aliases"
266 exit 1
267 fi
268 AC_DEFINE(HAVE_BROKEN_ALIASES,,Broken Alias)
269 enable_netlink=no
270fi
271
272if test "${enable_tcp_zebra}" = "yes"; then
273 AC_DEFINE(HAVE_TCP_ZEBRA,,Use TCP for zebra communication)
274fi
275
paul7ea487b2003-03-17 02:05:07 +0000276if test "${enable_opaque_lsa}" = "yes"; then
277 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
278fi
279
280if test "${enable_ospf_te}" = "yes"; then
281 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
282 AC_DEFINE(HAVE_OSPF_TE,,OSPF TE)
283fi
284
gdtd2a0ccc2003-12-03 18:13:48 +0000285AC_MSG_CHECKING(if zebra should be configurable to send Route Advertisements)
286if test "${enable_rtadv}" != "no"; then
hasso71c0fb52003-05-25 20:18:13 +0000287 AC_MSG_RESULT(yes)
gdtd2a0ccc2003-12-03 18:13:48 +0000288 AC_DEFINE(HAVE_RTADV,,Enable IPv6 Routing Advertisement support)
paul2487bea2003-05-25 23:51:31 +0000289else
290 AC_MSG_RESULT(no)
hasso71c0fb52003-05-25 20:18:13 +0000291fi
paul7ea487b2003-03-17 02:05:07 +0000292
hassoca776982004-06-12 14:33:05 +0000293if test "${enable_irdp}" = "yes"; then
294 AC_DEFINE(HAVE_IRDP,, IRDP )
295fi
296
hassof695b012005-04-02 19:03:39 +0000297if test "${enable_isisd}" = "yes" && test "${enable_isis_topology}" = yes; then
298 AC_DEFINE(TOPOLOGY_GENERATE,,Enable IS-IS topology generator code)
299 ISIS_TOPOLOGY_INCLUDES="-I./topology"
300 ISIS_TOPOLOGY_DIR="topology"
301 ISIS_TOPOLOGY_LIB="./topology/libtopology.a"
302fi
303
304AC_SUBST(ISIS_TOPOLOGY_INCLUDES)
305AC_SUBST(ISIS_TOPOLOGY_DIR)
306AC_SUBST(ISIS_TOPOLOGY_LIB)
307
paul79cb2162003-06-06 12:19:53 +0000308if test "${enable_user}" = "yes" || test x"${enable_user}" = x""; then
paule8f29842003-08-12 13:08:31 +0000309 enable_user="quagga"
pauledd7c242003-06-04 13:59:38 +0000310elif test "${enable_user}" = "no"; then
311 enable_user="root"
312fi
pauledd7c242003-06-04 13:59:38 +0000313
paul79cb2162003-06-06 12:19:53 +0000314if test "${enable_group}" = "yes" || test x"${enable_group}" = x""; then
paule8f29842003-08-12 13:08:31 +0000315 enable_group="quagga"
pauledd7c242003-06-04 13:59:38 +0000316elif test "${enable_group}" = "no"; then
317 enable_group="root"
318fi
pauledd7c242003-06-04 13:59:38 +0000319
320if test x"${enable_vty_group}" = x"yes" ; then
paul8d4aee52003-06-06 00:30:35 +0000321 AC_MSG_ERROR([--enable-vty-group requires a group as argument, not yes])
paul79cb2162003-06-06 12:19:53 +0000322elif test x"${enable_vty_group}" != x""; then
paul8d4aee52003-06-06 00:30:35 +0000323 if test x"${enable_vty_group}" != x"no"; then
pauledd7c242003-06-04 13:59:38 +0000324 AC_DEFINE_UNQUOTED(VTY_GROUP, "${enable_vty_group}", VTY Sockets Group)
325 fi
326fi
paul26275b02005-04-11 07:10:47 +0000327AC_SUBST([enable_user])
328AC_SUBST([enable_group])
329AC_SUBST([enable_vty_group])
330AC_DEFINE_UNQUOTED(QUAGGA_USER, "${enable_user}", Quagga User)
331AC_DEFINE_UNQUOTED(QUAGGA_GROUP, "${enable_group}", Quagga Group)
pauledd7c242003-06-04 13:59:38 +0000332
gdtaa593d52003-12-22 20:15:53 +0000333enable_configfile_mask=${enable_configfile_mask:-0600}
334AC_DEFINE_UNQUOTED(CONFIGFILE_MASK, ${enable_configfile_mask}, Mask for config files)
335
336enable_logfile_mask=${enable_logfile_mask:-0600}
337AC_DEFINE_UNQUOTED(LOGFILE_MASK, ${enable_logfile_mask}, Mask for log files)
338
paul7ea487b2003-03-17 02:05:07 +0000339changequote(, )dnl
340
341MULTIPATH_NUM=1
342
343case "${enable_multipath}" in
344 [0-9]|[1-9][0-9])
345 MULTIPATH_NUM="${enable_multipath}"
346 ;;
347 "")
348 ;;
349 *)
350 echo "Please specify digit to --enable-multipath ARG."
351 exit 1
352 ;;
353esac
354
355changequote([, ])dnl
356
357AC_SUBST(MULTIPATH_NUM)
358
359dnl -------------------
360dnl Check header files.
361dnl -------------------
pauldc7a2bf2003-10-22 00:07:44 +0000362AC_HEADER_STDC
363AC_CHECK_HEADERS([string.h stropts.h sys/conf.h sys/ksym.h sys/time.h \
364 sys/times.h sys/select.h sys/sysctl.h sys/sockio.h \
365 sys/types.h linux/version.h kvm.h netdb.h asm/types.h \
paul76367ea2005-11-14 14:05:35 +0000366 sys/param.h libutil.h limits.h stdint.h])
pauldc7a2bf2003-10-22 00:07:44 +0000367
paul835b7f12003-10-30 21:59:57 +0000368AC_CHECK_HEADERS([sys/socket.h netinet/in_systm.h netinet/in.h \
paulf3bd1a72003-11-02 07:29:11 +0000369 net/if_dl.h net/netopt.h inet/nd.h net/route.h \
paul835b7f12003-10-30 21:59:57 +0000370 net/if.h net/if_var.h netinet/in_var.h])
pauldc7a2bf2003-10-22 00:07:44 +0000371
gdtfa3232e2003-12-03 17:52:30 +0000372dnl V6 headers are checked below, after we check for v6
paul7ea487b2003-03-17 02:05:07 +0000373
374dnl check some types
375AC_C_CONST
376dnl AC_TYPE_PID_T
377AC_TYPE_SIGNAL
378
379dnl Some systems (Solaris 2.x) require libnsl (Network Services Library)
380case "$host" in
paulafd8a122005-03-12 06:36:10 +0000381 [*-sunos5.[6-7]*] | [*-solaris2.[6-7]*])
paul7ea487b2003-03-17 02:05:07 +0000382 opsys=sol2-6
paulafd8a122005-03-12 06:36:10 +0000383 AC_DEFINE(SUNOS_56, 1, SunOS 5.6 to 5.7)
paul19877dd2004-05-11 10:49:35 +0000384 AC_DEFINE(SUNOS_5, 1, SunOS 5)
paul7ea487b2003-03-17 02:05:07 +0000385 AC_CHECK_LIB(xnet, main)
386 CURSES=-lcurses
387 ;;
paul1b73de82005-04-10 16:31:51 +0000388 [*-sunos5.[8-9]] \
389 | [*-sunos5.1[0-9]] \
390 | [*-sunos5.1[0-9].[0-9]] \
391 | [*-solaris2.[8-9]] \
392 | [*-solaris2.1[0-9]] \
393 | [*-solaris2.1[0-9].[0-9]])
paulafd8a122005-03-12 06:36:10 +0000394 opsys=sol8
Paul Jakmafb66b292006-05-28 08:26:15 +0000395 AC_DEFINE(SUNOS_59, 1, [SunOS 5.8 up])
396 AC_DEFINE(SUNOS_5, 1, [SunOS 5])
paul19877dd2004-05-11 10:49:35 +0000397 AC_CHECK_LIB(socket, main)
398 AC_CHECK_LIB(nsl, main)
paul1b73de82005-04-10 16:31:51 +0000399 AC_CHECK_LIB(umem, main)
Paul Jakmafb66b292006-05-28 08:26:15 +0000400 AC_CHECK_FUNCS([printstack],
401 [AC_DEFINE([HAVE_PRINTSTACK],1,[Solaris printstack])
402 AC_DEFINE([HAVE_STACK_TRACE],1,[Stack symbols decode functionality])
403 ])
paul19877dd2004-05-11 10:49:35 +0000404 CURSES=-lcurses
405 ;;
paul7ea487b2003-03-17 02:05:07 +0000406 *-sunos5* | *-solaris2*)
paul19877dd2004-05-11 10:49:35 +0000407 AC_DEFINE(SUNOS_5,,SunOS 5, Unknown SunOS)
paul7ea487b2003-03-17 02:05:07 +0000408 AC_CHECK_LIB(socket, main)
409 AC_CHECK_LIB(nsl, main)
410 CURSES=-lcurses
411 ;;
hassoc45eb832005-02-19 13:58:06 +0000412 *-linux*)
paul7ea487b2003-03-17 02:05:07 +0000413 opsys=gnu-linux
414 AC_DEFINE(GNU_LINUX,,GNU Linux)
415 ;;
416 *-nec-sysv4*)
417 AC_CHECK_LIB(nsl, gethostbyname)
418 AC_CHECK_LIB(socket, socket)
419 ;;
paul7ea487b2003-03-17 02:05:07 +0000420 *-openbsd*)
421 opsys=openbsd
422 AC_DEFINE(OPEN_BSD,,OpenBSD)
423 ;;
424 *-bsdi*)
425 opsys=bsdi
426 OTHER_METHOD="mtu_kvm.o"
427 AC_CHECK_LIB(kvm, main)
428 ;;
paul49e3b3c2003-10-23 20:39:50 +0000429 *-irix6.5)
pauldc7a2bf2003-10-22 00:07:44 +0000430 opsys=irix
431 AC_DEFINE(IRIX_65,,IRIX 6.5)
432 ;;
paul7ea487b2003-03-17 02:05:07 +0000433esac
434
435dnl ---------------------
436dnl Integrated VTY option
437dnl ---------------------
438case "${enable_vtysh}" in
439 "yes") VTYSH="vtysh";
440 AC_DEFINE(VTYSH,,VTY shell)
gdtfc9d0742004-06-30 14:25:12 +0000441 AC_PATH_PROG(PERL, perl)
442dnl Vtysh uses libreadline, which looks for termcap functions at
443dnl configure time. We follow readline's search order.
444dnl The required procedures are in libtermcap on NetBSD, in
445dnl [TODO] on Linux, and in [TODO] on Solaris.
hassoc0689392005-08-25 12:00:58 +0000446 AC_CHECK_LIB(termcap, tputs, LIBREADLINE="$LIBREADLINE -ltermcap",
paula9694592005-08-25 14:50:05 +0000447 [AC_CHECK_LIB(tinfo, tputs, LIBREADLINE="$LIBREADLINE -ltinfo",
448 [AC_CHECK_LIB(curses, tputs, LIBREADLINE="$LIBREADLINE -lcurses",
449 [AC_CHECK_LIB(ncurses, tputs,
450 LIBREADLINE="$LIBREADLINE -lncurses")]
451 )]
452 )]
453 )
454 AC_CHECK_LIB(readline, main, LIBREADLINE="$LIBREADLINE -lreadline",,
455 "$LIBREADLINE")
paul7ea487b2003-03-17 02:05:07 +0000456 if test $ac_cv_lib_readline_main = no; then
gdtfc9d0742004-06-30 14:25:12 +0000457 AC_MSG_ERROR([vtysh needs libreadline but was not found and usable on your system.])
paul7ea487b2003-03-17 02:05:07 +0000458 fi
459 AC_CHECK_HEADER(readline/history.h)
460 if test $ac_cv_header_readline_history_h = no;then
461 AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
462 fi
paula9694592005-08-25 14:50:05 +0000463 AC_CHECK_LIB(readline, rl_completion_matches,
464 LIBREADLINE="$LIBREADLINE",, "$LIBREADLINE")
paul3d3de8c2003-05-23 10:33:49 +0000465 if test $ac_cv_lib_readline_rl_completion_matches = no; then
466 AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
467 fi
468 ;;
paul7ea487b2003-03-17 02:05:07 +0000469 "no" ) VTYSH="";;
470 * ) ;;
471esac
hassoc0689392005-08-25 12:00:58 +0000472AC_SUBST(LIBREADLINE)
paul7ea487b2003-03-17 02:05:07 +0000473
474dnl ----------
475dnl PAM module
476dnl ----------
477if test "$with_libpam" = "yes"; then
paul24cd4352003-05-06 12:16:27 +0000478 AC_CHECK_HEADER(security/pam_misc.h)
479 if test "$ac_cv_header_security_pam_misc_h" = yes; then
480 AC_DEFINE(HAVE_PAM_MISC_H,,Have pam_misc.h)
481 AC_DEFINE(PAM_CONV_FUNC,misc_conv,Have misc_conv)
482 pam_conv_func="misc_conv"
paul24cd4352003-05-06 12:16:27 +0000483 fi
paul24cd4352003-05-06 12:16:27 +0000484 AC_CHECK_HEADER(security/openpam.h)
485 if test "$ac_cv_header_security_openpam_h" = yes; then
486 AC_DEFINE(HAVE_OPENPAM_H,,Have openpam.h)
487 AC_DEFINE(PAM_CONV_FUNC,openpam_ttyconv,Have openpam_ttyconv)
488 pam_conv_func="openpam_ttyconv"
paul24cd4352003-05-06 12:16:27 +0000489 fi
490 if test -z "$ac_cv_header_security_pam_misc_h$ac_cv_header_security_openpam_h" ; then
491 AC_MSG_WARN([*** pam support will not be built ***])
492 with_libpam="no"
493 fi
494fi
495
496if test "$with_libpam" = "yes"; then
paul7ea487b2003-03-17 02:05:07 +0000497dnl took this test from proftpd's configure.in and suited to our needs
498dnl -------------------------------------------------------------------------
499dnl
500dnl This next check looks funky due to a linker problem with some versions
501dnl of the PAM library. Prior to 0.72 release, the Linux PAM shared library
502dnl omitted requiring libdl linking information. PAM-0.72 or better ships
503dnl with RedHat 6.2 and Debian 2.2 or better.
504AC_CHECK_LIB(pam, pam_start,
paul24cd4352003-05-06 12:16:27 +0000505 [AC_CHECK_LIB(pam, $pam_conv_func,
paul7ea487b2003-03-17 02:05:07 +0000506 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
507 LIBPAM="-lpam"],
508 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
509 LIBPAM="-lpam -lpam_misc"]
510 )
511 ],
512
513 [AC_CHECK_LIB(pam, pam_end,
paul24cd4352003-05-06 12:16:27 +0000514 [AC_CHECK_LIB(pam, $pam_conv_func,
paula159ed92003-06-04 11:01:45 +0000515 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
paul7ea487b2003-03-17 02:05:07 +0000516 LIBPAM="-lpam -ldl"],
paula159ed92003-06-04 11:01:45 +0000517 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
paul7ea487b2003-03-17 02:05:07 +0000518 LIBPAM="-lpam -ldl -lpam_misc"]
519 )
520 ],AC_MSG_WARN([*** pam support will not be built ***]),
521 [-ldl])
522 ]
523)
524fi
525AC_SUBST(LIBPAM)
526
527dnl -------------------------------
528dnl Endian-ness check
529dnl -------------------------------
530AC_WORDS_BIGENDIAN
531
532dnl -------------------------------
533dnl check the size in byte of the C
534dnl -------------------------------
535dnl AC_CHECK_SIZEOF(char)
536dnl AC_CHECK_SIZEOF(int)
537dnl AC_CHECK_SIZEOF(short)
538dnl AC_CHECK_SIZEOF(long)
539
540dnl ----------------------------
541dnl check existance of functions
542dnl ----------------------------
paul49e3b3c2003-10-23 20:39:50 +0000543AC_CHECK_FUNCS(memset memcpy strerror inet_aton daemon snprintf vsnprintf \
paul04bd4842003-10-24 04:24:39 +0000544 strlcat strlcpy if_nametoindex if_indextoname getifaddrs \
hassoe6a4feb2005-09-19 09:53:21 +0000545 fcntl strnlen strndup)
paula159ed92003-06-04 11:01:45 +0000546AC_CHECK_FUNCS(setproctitle, ,
547 [AC_CHECK_LIB(util, setproctitle,
548 [LIBS="$LIBS -lutil"
549 AC_DEFINE(HAVE_SETPROCTITLE,, Have setproctitle)
550 ]
551 )
552 ]
553)
paul7ea487b2003-03-17 02:05:07 +0000554
555dnl ------------------------------------
556dnl Determine routing get and set method
557dnl ------------------------------------
558AC_MSG_CHECKING(zebra between kernel interface method)
559if test x"$opsys" = x"gnu-linux"; then
560 if test "${enable_netlink}" = "yes";then
561 AC_MSG_RESULT(netlink)
562 RT_METHOD=rt_netlink.o
563 AC_DEFINE(HAVE_NETLINK,,netlink)
564 netlink=yes
565 elif test "${enable_netlink}" = "no"; then
566 AC_MSG_RESULT(ioctl)
567 RT_METHOD=rt_ioctl.o
568 netlink=no
569 else
570 AC_MSG_RESULT(netlink)
571 RT_METHOD=rt_netlink.o
572 AC_DEFINE(HAVE_NETLINK,,netlink)
573 netlink=yes
574 fi
paul19877dd2004-05-11 10:49:35 +0000575elif test x"$opsys" = x"sol2-6";then
576 AC_MSG_RESULT(Route socket)
577 KERNEL_METHOD="kernel_socket.o"
578 RT_METHOD="rt_socket.o"
paulafd8a122005-03-12 06:36:10 +0000579elif test x"$opsys" = x"sol8";then
paul19877dd2004-05-11 10:49:35 +0000580 AC_MSG_RESULT(Route socket)
581 KERNEL_METHOD="kernel_socket.o"
582 RT_METHOD="rt_socket.o"
583elif test "$opsys" = "irix" ; then
584 AC_MSG_RESULT(Route socket)
585 KERNEL_METHOD="kernel_socket.o"
586 RT_METHOD="rt_socket.o"
paul7ea487b2003-03-17 02:05:07 +0000587else
paul19877dd2004-05-11 10:49:35 +0000588 AC_TRY_RUN([#include <errno.h>
paul7ea487b2003-03-17 02:05:07 +0000589#include <sys/types.h>
590#include <sys/socket.h>
591
592main ()
593{
594 int ac_sock;
595
596 ac_sock = socket (AF_ROUTE, SOCK_RAW, 0);
597 if (ac_sock < 0 && errno == EINVAL)
598 exit (1);
599 exit (0);
600}],
601 [KERNEL_METHOD=kernel_socket.o
602 RT_METHOD=rt_socket.o
603 AC_MSG_RESULT(socket)],
604 [RT_METHOD=rt_ioctl.o
605 AC_MSG_RESULT(ioctl)],
606 [KERNEL_METHOD=kernel_socket.o
607 RT_METHOD=rt_socket.o
608 AC_MSG_RESULT(socket)])
paul7ea487b2003-03-17 02:05:07 +0000609fi
610AC_SUBST(RT_METHOD)
611AC_SUBST(KERNEL_METHOD)
612AC_SUBST(OTHER_METHOD)
613
ajsb99760a2005-01-04 16:24:43 +0000614dnl ------------------------------------
615dnl check for broken CMSG_FIRSTHDR macro
616dnl ------------------------------------
gdt6c200462005-01-04 17:02:48 +0000617AC_MSG_CHECKING(for broken CMSG_FIRSTHDR)
hasso5b087522005-04-03 23:46:37 +0000618AC_RUN_IFELSE([AC_LANG_SOURCE([[
ajsb99760a2005-01-04 16:24:43 +0000619#ifdef SUNOS_5
620#define _XPG4_2
621#define __EXTENSIONS__
622#endif
623#include <stdlib.h>
624#include <sys/types.h>
625#include <sys/socket.h>
626
627main()
628{
629 struct msghdr msg;
630 char buf[4];
631
632 msg.msg_control = buf;
633 msg.msg_controllen = 0;
634
635 if (CMSG_FIRSTHDR(&msg) != NULL)
636 exit(0);
637 exit (1);
hasso5b087522005-04-03 23:46:37 +0000638}]])],[AC_MSG_RESULT(yes - using workaround) AC_DEFINE(HAVE_BROKEN_CMSG_FIRSTHDR,,Broken CMSG_FIRSTHDR)],
hassod33e8d72005-04-03 13:07:21 +0000639[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
ajsb99760a2005-01-04 16:24:43 +0000640
paul7ea487b2003-03-17 02:05:07 +0000641dnl ------------------------------
642dnl check kernel route read method
643dnl ------------------------------
644AC_CACHE_CHECK(route read method check, zebra_rtread,
645[if test "$netlink" = yes; then
646 RTREAD_METHOD="rtread_netlink.o"
647 zebra_rtread="netlink"
648else
649for zebra_rtread in /proc/net/route /dev/ip /dev/null;
650do
651 test x`ls $zebra_rtread 2>/dev/null` = x"$zebra_rtread" && break
652done
653case $zebra_rtread in
654 "/proc/net/route") RTREAD_METHOD="rtread_proc.o"
655 zebra_rtread="proc";;
paul9c30ab62003-07-08 08:36:17 +0000656 "/dev/ip")
657 case "$host" in
658 *-freebsd*) RTREAD_METHOD=rtread_sysctl.o
659 zebra_rtread="sysctl";;
660 *) RTREAD_METHOD="rtread_getmsg.o"
661 zebra_rtread="getmsg";;
662 esac;;
paul7ea487b2003-03-17 02:05:07 +0000663 *) RTREAD_METHOD="rtread_sysctl.o"
664 zebra_rtread="sysctl";;
665esac
666fi])
667AC_SUBST(RTREAD_METHOD)
668
669dnl -----------------------------
670dnl check interface lookup method
671dnl -----------------------------
paul19877dd2004-05-11 10:49:35 +0000672IOCTL_METHOD=ioctl.o
paul7ea487b2003-03-17 02:05:07 +0000673AC_MSG_CHECKING(interface looking up method)
674if test "$netlink" = yes; then
675 AC_MSG_RESULT(netlink)
676 IF_METHOD=if_netlink.o
paul19877dd2004-05-11 10:49:35 +0000677elif test "$opsys" = "sol2-6";then
678 AC_MSG_RESULT(Solaris GIF)
679 IF_METHOD=if_ioctl.o
paulafd8a122005-03-12 06:36:10 +0000680elif test "$opsys" = "sol8";then
paul19877dd2004-05-11 10:49:35 +0000681 AC_MSG_RESULT(Solaris GLIF)
682 IF_METHOD=if_ioctl_solaris.o
683 IOCTL_METHOD=ioctl_solaris.o
684elif test "$opsys" = "irix" ; then
685 AC_MSG_RESULT(IRIX)
686 IF_METHOD=if_ioctl.o
687elif test "$opsys" = "openbsd";then
688 AC_MSG_RESULT(openbsd)
689 IF_METHOD=if_ioctl.o
690elif grep NET_RT_IFLIST /usr/include/sys/socket.h >/dev/null 2>&1; then
691 AC_MSG_RESULT(sysctl)
paul7ea487b2003-03-17 02:05:07 +0000692 IF_METHOD=if_sysctl.o
693 AC_DEFINE(HAVE_NET_RT_IFLIST,,NET_RT_IFLIST)
paul19877dd2004-05-11 10:49:35 +0000694else
paul7ea487b2003-03-17 02:05:07 +0000695 AC_MSG_RESULT(ioctl)
696 IF_METHOD=if_ioctl.o
paul7ea487b2003-03-17 02:05:07 +0000697fi
698AC_SUBST(IF_METHOD)
paul19877dd2004-05-11 10:49:35 +0000699AC_SUBST(IOCTL_METHOD)
paul7ea487b2003-03-17 02:05:07 +0000700
paul42c98192005-05-07 02:22:51 +0000701dnl ---------------------------------------------------------------
702dnl figure out how to specify an interface in multicast sockets API
703dnl ---------------------------------------------------------------
704AC_CHECK_MEMBERS([struct ip_mreqn.imr_ifindex],,,[#ifdef HAVE_SYS_TYPES_H
705#include <sys/types.h>
706#endif
707#ifdef HAVE_NETINET_IN_H
708#include <netinet/in.h>
709#endif])
710
711AC_MSG_CHECKING([for BSD struct ip_mreq hack])
712AC_TRY_COMPILE([#ifdef HAVE_SYS_PARAM_H
713#include <sys/param.h>
714#endif],[#if (defined(__FreeBSD__) && (__FreeBSD_version >= 500022 || (__FreeBSD_version < 500000 && __FreeBSD_version >= 440000))) || (defined(__NetBSD__) && defined(__NetBSD_Version__) && __NetBSD_Version__ >= 106010000)
715 return (0);
716#else
717 #error No support for BSD struct ip_mreq hack detected
718#endif],[AC_MSG_RESULT(yes)
719AC_DEFINE(HAVE_BSD_STRUCT_IP_MREQ_HACK,,[Can pass ifindex in struct ip_mreq])],
720AC_MSG_RESULT(no))
721
paul7ea487b2003-03-17 02:05:07 +0000722dnl -----------------------
723dnl check proc file system.
724dnl -----------------------
725if test -r /proc/net/dev; then
726 AC_DEFINE(HAVE_PROC_NET_DEV,,/proc/net/dev)
727 IF_PROC=if_proc.o
728fi
729
730if test -r /proc/net/if_inet6; then
731 AC_DEFINE(HAVE_PROC_NET_IF_INET6,,/proc/net/if_inet6)
732 IF_PROC=if_proc.o
733fi
734AC_SUBST(IF_PROC)
735
736dnl -----------------------------
737dnl check ipforward detect method
738dnl -----------------------------
739AC_CACHE_CHECK(ipforward method check, zebra_ipforward_path,
740[for zebra_ipforward_path in /proc/net/snmp /dev/ip /dev/null;
741do
742 test x`ls $zebra_ipforward_path 2>/dev/null` = x"$zebra_ipforward_path" && break
743done
744case $zebra_ipforward_path in
745 "/proc/net/snmp") IPFORWARD=ipforward_proc.o
746 zebra_ipforward_path="proc";;
747 "/dev/ip")
748 case "$host" in
749 *-nec-sysv4*) IPFORWARD=ipforward_ews.o
750 zebra_ipforward_path="ews";;
paul9c30ab62003-07-08 08:36:17 +0000751 *-freebsd*) IPFORWARD=ipforward_sysctl.o
752 zebra_ipforward_path="sysctl";;
paul7ea487b2003-03-17 02:05:07 +0000753 *) IPFORWARD=ipforward_solaris.o
754 zebra_ipforward_path="solaris";;
755 esac;;
756 *) IPFORWARD=ipforward_sysctl.o
757 zebra_ipforward_path="sysctl";;
758esac])
759AC_SUBST(IPFORWARD)
760
761AC_CHECK_FUNCS(getaddrinfo, [have_getaddrinfo=yes], [have_getaddrinfo=no])
762
763dnl ----------
764dnl IPv6 check
765dnl ----------
766AC_MSG_CHECKING(whether does this OS have IPv6 stack)
767if test "${enable_ipv6}" = "no"; then
768 AC_MSG_RESULT(disabled)
769else
770dnl ----------
771dnl INRIA IPv6
772dnl ----------
paula159ed92003-06-04 11:01:45 +0000773 if grep IPV6_INRIA_VERSION /usr/include/netinet/in.h >/dev/null 2>&1; then
774 zebra_cv_ipv6=yes
775 AC_DEFINE(HAVE_IPV6,1,INRIA IPv6)
776 AC_DEFINE(INRIA_IPV6,1,INRIA IPv6)
777 RIPNGD="ripngd"
778 OSPF6D="ospf6d"
779 LIB_IPV6=""
780 AC_MSG_RESULT(INRIA IPv6)
paul7ea487b2003-03-17 02:05:07 +0000781dnl ---------
782dnl KAME IPv6
783dnl ---------
paula159ed92003-06-04 11:01:45 +0000784 elif grep WIDE /usr/include/netinet6/in6.h >/dev/null 2>&1; then
785 zebra_cv_ipv6=yes
786 AC_DEFINE(HAVE_IPV6,1,KAME IPv6)
787 AC_DEFINE(KAME,1,KAME IPv6)
788 RIPNGD="ripngd"
789 OSPF6D="ospf6d"
790 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
paul7ea487b2003-03-17 02:05:07 +0000791 LIB_IPV6="-L/usr/local/v6/lib -linet6"
paula159ed92003-06-04 11:01:45 +0000792 fi
793 AC_MSG_RESULT(KAME)
hasso71c0fb52003-05-25 20:18:13 +0000794dnl -------------------------
795dnl MUSICA IPv6
796dnl default host check
797dnl It is not used by Kheops
798dnl -------------------------
paula159ed92003-06-04 11:01:45 +0000799 elif grep MUSICA /usr/include6/netinet6/in6.h >/dev/null 2>&1; then
800 zebra_cv_ipv6=yes
801 AC_DEFINE(HAVE_IPV6,1,Musicia IPv6)
802 AC_DEFINE(MUSICA,1,Musica IPv6 stack)
803 AC_DEFINE(KAME,1,KAME IPv6 stack)
804 RIPNGD="ripngd"
805 OSPF6D="ospf6d"
806 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
hasso71c0fb52003-05-25 20:18:13 +0000807 LIB_IPV6="-L/usr/local/v6/lib -linet6"
paula159ed92003-06-04 11:01:45 +0000808 fi
809 AC_MSG_RESULT(MUSICA)
paul7ea487b2003-03-17 02:05:07 +0000810dnl ---------
811dnl NRL check
812dnl ---------
paula159ed92003-06-04 11:01:45 +0000813 elif grep NRL /usr/include/netinet6/in6.h >/dev/null 2>&1; then
814 zebra_cv_ipv6=yes
815 AC_DEFINE(HAVE_IPV6,1,NRL IPv6)
816 AC_DEFINE(NRL,1,NRL)
817 RIPNGD="ripngd"
818 OSPF6D="ospf6d"
819 if test x"$opsys" = x"bsdi";then
paul7ea487b2003-03-17 02:05:07 +0000820 AC_DEFINE(BSDI_NRL,,BSDI)
821 AC_MSG_RESULT(BSDI_NRL)
paula159ed92003-06-04 11:01:45 +0000822 else
paul7ea487b2003-03-17 02:05:07 +0000823 AC_MSG_RESULT(NRL)
paula159ed92003-06-04 11:01:45 +0000824 fi
paul19877dd2004-05-11 10:49:35 +0000825dnl ------------------------------------
826dnl Solaris 9, 10 and potentially higher
827dnl ------------------------------------
paulafd8a122005-03-12 06:36:10 +0000828 elif test x"$opsys" = x"sol8"; then
paul19877dd2004-05-11 10:49:35 +0000829 zebra_cv_ipv6=yes;
830 AC_DEFINE(HAVE_IPV6, 1, IPv6)
831 AC_DEFINE(SOLARIS_IPV6, 1, Solaris IPv6)
832 RIPNGD="ripngd"
833 OSPF6D="ospf6d"
834 AC_MSG_RESULT(Solaris IPv6)
paul7ea487b2003-03-17 02:05:07 +0000835dnl ----------
836dnl Linux IPv6
837dnl ----------
paula159ed92003-06-04 11:01:45 +0000838 elif test "${enable_ipv6}" = "yes"; then
839 AC_EGREP_CPP(yes, [
840 #include <linux/version.h>
841 /* 2.1.128 or later */
842 #if LINUX_VERSION_CODE >= 0x020180
843 yes
844 #endif],
845 [zebra_cv_ipv6=yes
846 zebra_cv_linux_ipv6=yes
847 AC_MSG_RESULT(Linux IPv6)])
848 else
849 if test x`ls /proc/net/ipv6_route 2>/dev/null` = x"/proc/net/ipv6_route"
850 then
paul7ea487b2003-03-17 02:05:07 +0000851 zebra_cv_ipv6=yes
852 zebra_cv_linux_ipv6=yes
853 AC_MSG_RESULT(Linux IPv6)
paula159ed92003-06-04 11:01:45 +0000854 fi
855 fi
paul7ea487b2003-03-17 02:05:07 +0000856
paula159ed92003-06-04 11:01:45 +0000857 if test "$zebra_cv_linux_ipv6" = "yes";then
hasso850d39f2005-06-30 13:52:20 +0000858 AC_MSG_CHECKING(whether libc has IPv6 support)
859 AC_TRY_LINK([#include <netinet/in.h>
860 ],[ int a; a = (int) in6addr_any.s6_addr[0]; if (a != 12345) return a; ],
861 [AC_MSG_RESULT(yes)
862 zebra_cv_ipv6=yes
863 zebra_cv_linux_ipv6=yes],
864 [AC_MSG_RESULT(no)
865 zebra_cv_ipv6=no
866 zebra_cv_linux_ipv6=no])
867 fi
868
869 if test "$zebra_cv_linux_ipv6" = "yes";then
paula159ed92003-06-04 11:01:45 +0000870 AC_MSG_CHECKING(for GNU libc >= 2.1)
871 AC_DEFINE(HAVE_IPV6,1,Linux IPv6)
872 AC_EGREP_CPP(yes, [
paul7ea487b2003-03-17 02:05:07 +0000873#include <features.h>
874#if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
875 yes
paula159ed92003-06-04 11:01:45 +0000876#endif],
877 [glibc=yes
878 AC_DEFINE(LINUX_IPV6,1,Linux IPv6 stack)
879 AC_MSG_RESULT(yes)],
880 AC_MSG_RESULT(no)
881 )
882 RIPNGD="ripngd"
883 OSPF6D="ospf6d"
884 if test "$glibc" != "yes"; then
paul7ea487b2003-03-17 02:05:07 +0000885 INCLUDES="-I/usr/inet6/include"
886 if test x`ls /usr/inet6/lib/libinet6.a 2>/dev/null` != x;then
887 LIB_IPV6="-L/usr/inet6/lib -linet6"
888 fi
paula159ed92003-06-04 11:01:45 +0000889 fi
890 fi
paul7ea487b2003-03-17 02:05:07 +0000891
892dnl -----------------------
893dnl Set IPv6 related values
894dnl -----------------------
paula159ed92003-06-04 11:01:45 +0000895 LIBS="$LIB_IPV6 $LIBS"
896 AC_SUBST(LIB_IPV6)
paul7ea487b2003-03-17 02:05:07 +0000897
paula159ed92003-06-04 11:01:45 +0000898 if test x"$RIPNGD" = x""; then
899 AC_MSG_RESULT(IPv4 only)
900 fi
paul7ea487b2003-03-17 02:05:07 +0000901fi
902
gdtfa3232e2003-12-03 17:52:30 +0000903dnl ------------------
904dnl IPv6 header checks
905dnl ------------------
906if test "x${zebra_cv_ipv6}" = "xyes"; then
907AC_CHECK_HEADERS([netinet6/in6.h netinet/in6_var.h netinet/icmp6.h \
908 netinet6/in6_var.h netinet6/nd6.h])
909fi
910
paul7ea487b2003-03-17 02:05:07 +0000911dnl --------------------
912dnl Daemon disable check
913dnl --------------------
914if test "${enable_zebra}" = "no";then
915 ZEBRA=""
916else
917 ZEBRA="zebra"
918fi
919
920if test "${enable_bgpd}" = "no";then
921 BGPD=""
922else
923 BGPD="bgpd"
924fi
925
926if test "${enable_ripd}" = "no";then
927 RIPD=""
928else
929 RIPD="ripd"
930fi
931
932if test "${enable_ospfd}" = "no";then
933 OSPFD=""
934else
935 OSPFD="ospfd"
936fi
937
ajsd0199432004-12-22 14:03:52 +0000938if test "${enable_watchquagga}" = "no";then
939 WATCHQUAGGA=""
940else
941 WATCHQUAGGA="watchquagga"
942fi
943
paul1ef74ef2003-03-21 15:16:05 +0000944OSPFCLIENT=""
945if test "${enable_opaque_lsa}" = "yes"; then
946 if test "${enable_ospfapi}" != "no";then
paul9a569842003-03-28 01:45:13 +0000947 AC_DEFINE(SUPPORT_OSPF_API,,OSPFAPI)
paul1ef74ef2003-03-21 15:16:05 +0000948
949 if test "${enable_ospfclient}" != "no";then
950 OSPFCLIENT="ospfclient"
951 fi
952 fi
953
paul7ea487b2003-03-17 02:05:07 +0000954fi
955
956case "${enable_ripngd}" in
957 "yes") RIPNGD="ripngd";;
958 "no" ) RIPNGD="";;
959 * ) ;;
960esac
961
962case "${enable_ospf6d}" in
963 "yes") OSPF6D="ospf6d";;
964 "no" ) OSPF6D="";;
965 * ) ;;
966esac
967
jardin9e867fe2003-12-23 08:56:18 +0000968case "${enable_isisd}" in
969 "yes") ISISD="isisd";;
970 "no" ) ISISD="";;
hassoae399ab2004-09-13 20:22:18 +0000971 * ) ;;
jardin9e867fe2003-12-23 08:56:18 +0000972esac
973
paul7ea487b2003-03-17 02:05:07 +0000974if test "${enable_bgp_announce}" = "no";then
975 AC_DEFINE(DISABLE_BGP_ANNOUNCE,,Disable BGP installation to zebra)
976fi
977
978AC_SUBST(ZEBRA)
979AC_SUBST(BGPD)
980AC_SUBST(RIPD)
981AC_SUBST(RIPNGD)
982AC_SUBST(OSPFD)
983AC_SUBST(OSPF6D)
ajsd0199432004-12-22 14:03:52 +0000984AC_SUBST(WATCHQUAGGA)
jardin9e867fe2003-12-23 08:56:18 +0000985AC_SUBST(ISISD)
paul7ea487b2003-03-17 02:05:07 +0000986AC_SUBST(VTYSH)
987AC_SUBST(INCLUDES)
988AC_SUBST(CURSES)
989AC_SUBST(OSPFCLIENT)
paul1ef74ef2003-03-21 15:16:05 +0000990AC_SUBST(OSPFAPI)
paul7ea487b2003-03-17 02:05:07 +0000991AC_CHECK_LIB(c, inet_ntop, [AC_DEFINE(HAVE_INET_NTOP,,inet_ntop)])
992AC_CHECK_LIB(c, inet_pton, [AC_DEFINE(HAVE_INET_PTON,,inet_pton)])
993AC_CHECK_LIB(crypt, crypt)
994AC_CHECK_LIB(resolv, res_init)
995AC_CHECK_LIB(m, main)
996
997dnl ---------------------------------------------------
998dnl BSD/OS 4.1 define inet_XtoY function as __inet_XtoY
999dnl ---------------------------------------------------
paula159ed92003-06-04 11:01:45 +00001000AC_CHECK_FUNC(__inet_ntop, AC_DEFINE(HAVE_INET_NTOP,,__inet_ntop))
1001AC_CHECK_FUNC(__inet_pton, AC_DEFINE(HAVE_INET_PTON,,__inet_pton))
1002AC_CHECK_FUNC(__inet_aton, AC_DEFINE(HAVE_INET_ATON,,__inet_aton))
paul7ea487b2003-03-17 02:05:07 +00001003
1004dnl ---------------------------
1005dnl check system has GNU regexp
1006dnl ---------------------------
1007dnl AC_MSG_CHECKING(whether system has GNU regex)
1008AC_CHECK_LIB(c, regexec,
1009[AC_DEFINE(HAVE_GNU_REGEX,,GNU regexp library)
1010 LIB_REGEX=""],
1011[LIB_REGEX="regex.o"])
1012AC_SUBST(LIB_REGEX)
1013
1014dnl ------------------
paulb1fc9ac2006-01-31 10:09:27 +00001015dnl check Net-SNMP library
paul7ea487b2003-03-17 02:05:07 +00001016dnl ------------------
paulb1fc9ac2006-01-31 10:09:27 +00001017if test "${enable_snmp}" = "yes"; then
1018 LIBS="${LIBS} -lcrypto"
1019 AC_CHECK_LIB(netsnmp, asn_parse_int,
1020 [AC_DEFINE(HAVE_NETSNMP,,Net SNMP)
1021 AC_DEFINE(HAVE_SNMP,,SNMP)
1022 LIBS="${LIBS} -lnetsnmp"],
1023 [AC_MSG_ERROR([--enable-snmp given, but cannot find support for SNMP])])
1024
1025 for ac_snmp in /usr/include \
1026 /usr/local/include \
1027 /dev/null; do
1028 test -f "${ac_snmp}/net-snmp/library/asn1.h" && break
paul7ea487b2003-03-17 02:05:07 +00001029 done
paulb1fc9ac2006-01-31 10:09:27 +00001030
paul7ea487b2003-03-17 02:05:07 +00001031 case ${ac_snmp} in
paulb1fc9ac2006-01-31 10:09:27 +00001032 /dev/null)
1033 AC_MSG_ERROR([--enable-snmp given, but can not find header])
1034 ;;
1035 *)
1036 SNMP_INCLUDES="-I${ac_snmp}/net-snmp"
1037 SNMP_INCLUDES="${SNMP_INCLUDES} -I${ac_snmp}/net-snmp/library"
1038 ;;
paul7ea487b2003-03-17 02:05:07 +00001039 esac
paulb1fc9ac2006-01-31 10:09:27 +00001040
1041 AC_SUBST(SNMP_INCLUDES)
paul7ea487b2003-03-17 02:05:07 +00001042fi
1043
1044dnl ----------------------------
1045dnl check sa_len of sockaddr
1046dnl ----------------------------
1047AC_MSG_CHECKING(whether struct sockaddr has a sa_len field)
1048AC_TRY_COMPILE([#include <sys/types.h>
1049#include <sys/socket.h>
1050],[static struct sockaddr ac_i;int ac_j = sizeof (ac_i.sa_len);],
1051[AC_MSG_RESULT(yes)
1052 AC_DEFINE(HAVE_SA_LEN,,sa_len)],
1053 AC_MSG_RESULT(no))
1054
1055dnl ----------------------------
1056dnl check sin_len of sockaddr_in
1057dnl ----------------------------
1058AC_MSG_CHECKING(whether struct sockaddr_in has a sin_len field)
1059AC_TRY_COMPILE([#include <sys/types.h>
1060#include <netinet/in.h>
1061],[static struct sockaddr_in ac_i;int ac_j = sizeof (ac_i.sin_len);],
1062[AC_MSG_RESULT(yes)
1063 AC_DEFINE(HAVE_SIN_LEN,,sin_len)],
1064 AC_MSG_RESULT(no))
1065
1066dnl ----------------------------
1067dnl check sun_len of sockaddr_un
1068dnl ----------------------------
1069AC_MSG_CHECKING(whether struct sockaddr_un has a sun_len field)
1070AC_TRY_COMPILE([#include <sys/types.h>
1071#include <sys/un.h>
1072],[static struct sockaddr_un ac_i;int ac_j = sizeof (ac_i.sun_len);],
1073[AC_MSG_RESULT(yes)
1074 AC_DEFINE(HAVE_SUN_LEN,,sun_len)],
1075 AC_MSG_RESULT(no))
1076
1077dnl -----------------------------------
1078dnl check sin6_scope_id of sockaddr_in6
1079dnl -----------------------------------
1080if test "$zebra_cv_ipv6" = yes; then
1081 AC_MSG_CHECKING(whether struct sockaddr_in6 has a sin6_scope_id field)
1082 AC_TRY_COMPILE([#include <sys/types.h>
1083#include <netinet/in.h>
1084],[static struct sockaddr_in6 ac_i;int ac_j = sizeof (ac_i.sin6_scope_id);],
1085[AC_MSG_RESULT(yes)
1086 AC_DEFINE(HAVE_SIN6_SCOPE_ID,,scope id)],
1087 AC_MSG_RESULT(no))
1088fi
1089
1090dnl ----------------------------
1091dnl check socklen_t exist or not
1092dnl ----------------------------
1093AC_MSG_CHECKING(whther socklen_t is defined)
1094AC_TRY_COMPILE([#include <sys/types.h>
1095#include <sys/socket.h>
1096#include <netinet/in.h>
1097],[socklen_t ac_x;],
1098[AC_MSG_RESULT(yes)
1099 AC_DEFINE(HAVE_SOCKLEN_T,,socklen_t)],
1100 AC_MSG_RESULT(no))
1101
1102dnl ------------------------
1103dnl check struct sockaddr_dl
1104dnl ------------------------
1105AC_MSG_CHECKING(whether struct sockaddr_dl exist)
1106AC_EGREP_HEADER(sockaddr_dl,
1107net/if_dl.h,
1108[AC_MSG_RESULT(yes)
1109 AC_DEFINE(HAVE_SOCKADDR_DL,,sockaddr_dl)],
1110 AC_MSG_RESULT(no))
1111
1112dnl --------------------------
1113dnl check structure ifaliasreq
1114dnl --------------------------
1115AC_MSG_CHECKING(whether struct ifaliasreq exist)
1116AC_EGREP_HEADER(ifaliasreq,
1117net/if.h,
1118[AC_MSG_RESULT(yes)
1119 AC_DEFINE(HAVE_IFALIASREQ,,ifaliasreq)],
1120 AC_MSG_RESULT(no))
1121
1122dnl ----------------------------
1123dnl check structure in6_aliasreq
1124dnl ----------------------------
hasso71c0fb52003-05-25 20:18:13 +00001125AC_MSG_CHECKING(whether struct in6_aliasreq exist)
paul7ea487b2003-03-17 02:05:07 +00001126AC_EGREP_HEADER(in6_aliasreq,
1127netinet6/in6_var.h,
1128[AC_MSG_RESULT(yes)
1129 AC_DEFINE(HAVE_IN6_ALIASREQ,,in6_aliasreq)],
1130 AC_MSG_RESULT(no))
1131
hasso71c0fb52003-05-25 20:18:13 +00001132dnl -----------------------------------
1133dnl check ifra_lifetime of in6_aliasreq
1134dnl -----------------------------------
1135AC_MSG_CHECKING(whether in6_aliasreq.ifra_lifetime exist)
1136AC_TRY_COMPILE([#include <sys/types.h>
1137#include <netinet6/in6_var.h>
1138],[static struct if6_aliasreq ac_i;int ac_j = sizeof (ac_i.ifra_lifetime);],
1139[AC_MSG_RESULT(yes)
paula159ed92003-06-04 11:01:45 +00001140 AC_DEFINE(HAVE_IFRA_LIFETIME,,Have in6_aliasreq.ifra_lifetime)],
hasso71c0fb52003-05-25 20:18:13 +00001141 AC_MSG_RESULT(no))
1142
paul7ea487b2003-03-17 02:05:07 +00001143dnl ---------------------------
1144dnl check structure rt_addrinfo
1145dnl ---------------------------
1146AC_MSG_CHECKING(whether struct rt_addrinfo exist)
1147AC_EGREP_HEADER(rt_addrinfo,
1148net/route.h,
1149[AC_MSG_RESULT(yes)
1150 AC_DEFINE(HAVE_RT_ADDRINFO,,rt_addrinfo)],
1151 AC_MSG_RESULT(no))
1152
1153dnl --------------------------
1154dnl check structure in_pktinfo
1155dnl --------------------------
1156AC_MSG_CHECKING(whether struct in_pktinfo exist)
1157AC_TRY_COMPILE([#include <netinet/in.h>
1158],[struct in_pktinfo ac_x;],
1159[AC_MSG_RESULT(yes)
1160 AC_DEFINE(HAVE_INPKTINFO,,in_pktinfo)],
1161 AC_MSG_RESULT(no))
1162
vincent29c4c9b2005-03-25 13:05:47 +00001163dnl ----------------------------------
1164dnl check struct nd_opt_homeagent_info
1165dnl ----------------------------------
1166AC_MSG_CHECKING(whether struct nd_opt_homeagent_info exist)
1167AC_EGREP_HEADER(nd_opt_homeagent_info,
1168netinet/icmp6.h,
1169[AC_MSG_RESULT(yes)
1170 AC_DEFINE(HAVE_ND_OPT_HOMEAGENT_INFO,,nd_opt_homeagent_info)],
1171 AC_MSG_RESULT(no))
1172
1173dnl --------------------------------
1174dnl check struct nd_opt_adv_interval
1175dnl --------------------------------
1176AC_MSG_CHECKING(whether struct nd_opt_adv_interval exist)
1177AC_EGREP_HEADER(nd_opt_adv_interval,
1178netinet/icmp6.h,
1179[AC_MSG_RESULT(yes)
1180 AC_DEFINE(HAVE_ND_OPT_ADV_INTERVAL,,nd_opt_adv_interval)],
1181 AC_MSG_RESULT(no))
1182
1183dnl ------------------------------------
1184dnl check fields in nd_opt_adv_interval
1185dnl ------------------------------------
1186AC_MSG_CHECKING(whether nd_opt_ai_type field exist)
1187AC_EGREP_HEADER(nd_opt_ai_type,
1188netinet/icmp6.h,
1189[AC_MSG_RESULT(yes)
1190 AC_DEFINE(HAVE_ND_OPT_ADV_INTERVAL_AI_FIELDS,,nd_opt_ai_type)],
1191 AC_MSG_RESULT(no))
1192
paul7ea487b2003-03-17 02:05:07 +00001193dnl --------------------------------------
1194dnl checking for getrusage struct and call
1195dnl --------------------------------------
1196AC_MSG_CHECKING(whether getrusage is available)
1197AC_TRY_COMPILE([#include <sys/resource.h>
1198],[struct rusage ac_x; getrusage (RUSAGE_SELF, &ac_x);],
1199[AC_MSG_RESULT(yes)
1200 AC_DEFINE(HAVE_RUSAGE,,rusage)],
1201 AC_MSG_RESULT(no))
1202
pauledd7c242003-06-04 13:59:38 +00001203dnl -------------------
1204dnl capabilities checks
1205dnl -------------------
hasso41d3fc92004-04-06 11:59:00 +00001206if test "${enable_capabilities}" != "no"; then
1207 AC_MSG_CHECKING(whether prctl PR_SET_KEEPCAPS is available)
1208 AC_TRY_COMPILE([#include <sys/prctl.h>],[prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);],
1209 [AC_MSG_RESULT(yes)
1210 AC_DEFINE(HAVE_PR_SET_KEEPCAPS,,prctl)
1211 quagga_ac_keepcaps="yes"],
1212 AC_MSG_RESULT(no)
pauledd7c242003-06-04 13:59:38 +00001213 )
hasso41d3fc92004-04-06 11:59:00 +00001214 if test x"${quagga_ac_keepcaps}" = x"yes"; then
1215 AC_CHECK_HEADERS(sys/capability.h)
1216 fi
1217 if test x"${ac_cv_header_sys_capability_h}" = x"yes"; then
1218 AC_CHECK_LIB(cap, cap_init,
1219 [AC_DEFINE(HAVE_LCAPS,1,Capabilities)
1220 LIBCAP="-lcap"
paulceacedb2005-09-29 14:39:32 +00001221 quagga_ac_lcaps="yes"]
hasso41d3fc92004-04-06 11:59:00 +00001222 )
paulceacedb2005-09-29 14:39:32 +00001223 else
1224 AC_CHECK_HEADERS(priv.h,
1225 [AC_MSG_CHECKING(Solaris style privileges are available)
1226 AC_TRY_COMPILE([#include <priv.h>],[getpflags(PRIV_AWARE);],
1227 [AC_MSG_RESULT(yes)
1228 AC_DEFINE(HAVE_SOLARIS_CAPABILITIES,1,getpflags)
1229 quagga_ac_scaps="yes"],
1230 AC_MSG_RESULT(no)
1231 )
1232 ]
1233 )
1234 fi
1235 if test x"${quagga_ac_scaps}" = x"yes" \
1236 -o x"${quagga_ac_lcaps}" = x"yes"; then
1237 AC_DEFINE(HAVE_CAPABILITIES,1,capabilities)
hasso41d3fc92004-04-06 11:59:00 +00001238 fi
pauledd7c242003-06-04 13:59:38 +00001239fi
1240AC_SUBST(LIBCAP)
1241
ajs40abf232005-01-12 17:27:27 +00001242dnl -------------------
1243dnl test for ucontext.h
1244dnl -------------------
1245AC_CHECK_HEADERS(ucontext.h)
1246
paulfb2d1502003-06-04 09:40:54 +00001247dnl ---------------------------
1248dnl check for glibc 'backtrace'
1249dnl ---------------------------
1250if test "${glibc}" = "yes"; then
Paul Jakmafb66b292006-05-28 08:26:15 +00001251 AC_CHECK_HEADER([execinfo.h],
1252 [AC_CHECK_FUNC([backtrace],
1253 [AC_DEFINE(HAVE_GLIBC_BACKTRACE,,[Glibc backtrace])
1254 AC_DEFINE(HAVE_STACK_TRACE,,[Stack symbol decoding])
1255 ])
1256 ])
paulfb2d1502003-06-04 09:40:54 +00001257fi
1258
Paul Jakma41be32b2006-03-30 13:53:59 +00001259dnl -----------------------------------------
1260dnl check for malloc mallinfo struct and call
1261dnl this must try and link using LIBS, in
1262dnl order to check no alternative allocator
1263dnl has been specified, which might not provide
1264dnl mallinfo, e.g. such as Umem on Solaris.
1265dnl -----------------------------------------
1266AC_CHECK_HEADERS(malloc.h,
1267 [AC_MSG_CHECKING(whether mallinfo is available)
1268 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <malloc.h>]],
1269 [[struct mallinfo ac_x; ac_x = mallinfo ();]])],
1270 [AC_MSG_RESULT(yes)
1271 AC_DEFINE(HAVE_MALLINFO,,mallinfo)],
1272 AC_MSG_RESULT(no)
1273 )
1274 ]
1275)
1276
paul408ad942003-05-20 00:03:33 +00001277dnl ----------
1278dnl configure date
1279dnl ----------
1280CONFDATE=`date '+%Y%m%d'`
1281AC_SUBST(CONFDATE)
1282
paul7ea487b2003-03-17 02:05:07 +00001283dnl ------------------------------
paula159ed92003-06-04 11:01:45 +00001284dnl set paths for state directory
paul23bd12c2003-04-07 06:11:09 +00001285dnl ------------------------------
1286if test "${prefix}" = "NONE"; then
paule8f29842003-08-12 13:08:31 +00001287 quagga_statedir_prefix="";
paul23bd12c2003-04-07 06:11:09 +00001288else
paule8f29842003-08-12 13:08:31 +00001289 quagga_statedir_prefix=${prefix}
paul23bd12c2003-04-07 06:11:09 +00001290fi
1291if test "${localstatedir}" = '${prefix}/var'; then
paula159ed92003-06-04 11:01:45 +00001292 AC_CACHE_CHECK(state directory,ac_statedir,
paule8f29842003-08-12 13:08:31 +00001293 [for QUAGGA_STATE_DIR in ${quagga_statedir_prefix}/var/run dnl
1294 ${quagga_statedir_prefix}/var/adm dnl
1295 ${quagga_statedir_prefix}/etc dnl
paula159ed92003-06-04 11:01:45 +00001296 /var/run dnl
1297 /var/adm dnl
1298 /etc dnl
1299 /dev/null;
paul23bd12c2003-04-07 06:11:09 +00001300 do
paule8f29842003-08-12 13:08:31 +00001301 test -d $QUAGGA_STATE_DIR && break
paul23bd12c2003-04-07 06:11:09 +00001302 done
paule8f29842003-08-12 13:08:31 +00001303 quagga_statedir=$QUAGGA_STATE_DIR])
paul23bd12c2003-04-07 06:11:09 +00001304else
paule8f29842003-08-12 13:08:31 +00001305 quagga_statedir=${localstatedir}
paula159ed92003-06-04 11:01:45 +00001306 AC_MSG_CHECKING(directory to use for state file)
paule8f29842003-08-12 13:08:31 +00001307 AC_MSG_RESULT(${quagga_statedir})
paul26275b02005-04-11 07:10:47 +00001308 AC_SUBST(quagga_statedir)
paul23bd12c2003-04-07 06:11:09 +00001309fi
paule8f29842003-08-12 13:08:31 +00001310if test $quagga_statedir = "/dev/null"; then
paula159ed92003-06-04 11:01:45 +00001311 AC_MSG_ERROR('STATE DIRECTORY NOT FOUND! FIX OR SPECIFY --localstatedir!')
1312fi
1313
paule8f29842003-08-12 13:08:31 +00001314AC_DEFINE_UNQUOTED(PATH_ZEBRA_PID, "$quagga_statedir/zebra.pid",zebra PID)
1315AC_DEFINE_UNQUOTED(PATH_RIPD_PID, "$quagga_statedir/ripd.pid",ripd PID)
1316AC_DEFINE_UNQUOTED(PATH_RIPNGD_PID, "$quagga_statedir/ripngd.pid",ripngd PID)
1317AC_DEFINE_UNQUOTED(PATH_BGPD_PID, "$quagga_statedir/bgpd.pid",bgpd PID)
1318AC_DEFINE_UNQUOTED(PATH_OSPFD_PID, "$quagga_statedir/ospfd.pid",ospfd PID)
1319AC_DEFINE_UNQUOTED(PATH_OSPF6D_PID, "$quagga_statedir/ospf6d.pid",ospf6d PID)
jardin9e867fe2003-12-23 08:56:18 +00001320AC_DEFINE_UNQUOTED(PATH_ISISD_PID, "$quagga_statedir/isisd.pid",isisd PID)
ajsd0199432004-12-22 14:03:52 +00001321AC_DEFINE_UNQUOTED(PATH_WATCHQUAGGA_PID, "$quagga_statedir/watchquagga.pid",watchquagga PID)
paule8f29842003-08-12 13:08:31 +00001322AC_DEFINE_UNQUOTED(ZEBRA_SERV_PATH, "$quagga_statedir/zserv.api",zebra api socket)
1323AC_DEFINE_UNQUOTED(ZEBRA_VTYSH_PATH, "$quagga_statedir/zebra.vty",zebra vty socket)
1324AC_DEFINE_UNQUOTED(RIP_VTYSH_PATH, "$quagga_statedir/ripd.vty",rip vty socket)
1325AC_DEFINE_UNQUOTED(RIPNG_VTYSH_PATH, "$quagga_statedir/ripngd.vty",ripng vty socket)
1326AC_DEFINE_UNQUOTED(BGP_VTYSH_PATH, "$quagga_statedir/bgpd.vty",bgpd vty socket)
1327AC_DEFINE_UNQUOTED(OSPF_VTYSH_PATH, "$quagga_statedir/ospfd.vty",ospfd vty socket)
1328AC_DEFINE_UNQUOTED(OSPF6_VTYSH_PATH, "$quagga_statedir/ospf6d.vty",ospf6d vty socket)
jardin9e867fe2003-12-23 08:56:18 +00001329AC_DEFINE_UNQUOTED(ISIS_VTYSH_PATH, "$quagga_statedir/isisd.vty",isisd vty socket)
ajs515210b2004-12-22 15:35:12 +00001330AC_DEFINE_UNQUOTED(DAEMON_VTY_DIR, "$quagga_statedir",daemon vty directory)
paul7ea487b2003-03-17 02:05:07 +00001331
paul1eb8ef22005-04-07 07:30:20 +00001332dnl -------------------------------
1333dnl Quagga sources should always be
1334dnl current wrt interfaces. Dont
1335dnl allow deprecated interfaces to
1336dnl be exposed.
1337dnl -------------------------------
1338AC_DEFINE(QUAGGA_NO_DEPRECATED_INTERFACES, 1, Hide deprecated interfaces)
1339
paul7ea487b2003-03-17 02:05:07 +00001340dnl ---------------------------
1341dnl Check htonl works correctly
1342dnl ---------------------------
1343AC_MSG_CHECKING(for working htonl)
1344AC_CACHE_VAL(ac_cv_htonl_works, [
1345AC_TRY_LINK([#ifdef HAVE_SYS_TYPES_H
1346#include <sys/types.h>
1347#endif
1348#ifdef HAVE_NETDB_H
1349#include <netdb.h>
1350#endif
1351#ifdef HAVE_NETINET_IN_H
1352#include <netinet/in.h>
1353#endif],
1354[htonl (0);],
1355ac_cv_htonl_works=yes,
1356ac_cv_htonl_works=no)])
1357AC_MSG_RESULT($ac_cv_htonl_works)
1358
paul14c17fd2004-11-07 22:34:23 +00001359AC_CONFIG_FILES([Makefile lib/Makefile zebra/Makefile ripd/Makefile
ajsd0199432004-12-22 14:03:52 +00001360 ripngd/Makefile bgpd/Makefile ospfd/Makefile watchquagga/Makefile
jardin9e867fe2003-12-23 08:56:18 +00001361 ospf6d/Makefile isisd/Makefile vtysh/Makefile doc/Makefile
paul14c17fd2004-11-07 22:34:23 +00001362 ospfclient/Makefile tests/Makefile m4/Makefile redhat/Makefile
gdt69f1fc22004-08-27 15:57:35 +00001363 pkgsrc/Makefile
paul670bbf12004-11-12 09:05:00 +00001364 redhat/quagga.spec
gdtb7a97f82004-07-23 16:23:56 +00001365 lib/version.h
paul14c17fd2004-11-07 22:34:23 +00001366 doc/defines.texi
hassof695b012005-04-02 19:03:39 +00001367 isisd/topology/Makefile
gdtcbd04082004-08-31 18:16:36 +00001368 pkgsrc/bgpd.sh pkgsrc/ospf6d.sh pkgsrc/ospfd.sh
paulf31293a2004-11-12 09:27:04 +00001369 pkgsrc/ripd.sh pkgsrc/ripngd.sh pkgsrc/zebra.sh])
paul26275b02005-04-11 07:10:47 +00001370AC_CONFIG_FILES([solaris/Makefile])
1371
paul670bbf12004-11-12 09:05:00 +00001372AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl])
hasso48577192004-11-19 06:41:49 +00001373## Hack, but working solution to avoid rebuilding of quagga.info.
1374## It's already in CVS until texinfo 4.7 is more common.
paul14c1f182005-05-13 20:11:53 +00001375AC_CONFIG_COMMANDS([info-time],[touch doc/quagga.info])
paul14c17fd2004-11-07 22:34:23 +00001376AC_OUTPUT
paul7ea487b2003-03-17 02:05:07 +00001377
1378echo "
hassoc89f6492004-08-26 12:21:28 +00001379Quagga configuration
1380--------------------
1381quagga version : ${PACKAGE_VERSION}
paul7ea487b2003-03-17 02:05:07 +00001382host operationg system : ${host_os}
1383source code location : ${srcdir}
1384compiler : ${CC}
1385compiler flags : ${CFLAGS}
hasso2d582282005-03-28 15:29:07 +00001386includes : ${INCLUDES} ${SNMP_INCLUDES}
hassoc0689392005-08-25 12:00:58 +00001387linker flags : ${LDFLAGS} ${LIBS} ${LIBCAP} ${LIBREADLINE}
paule8f29842003-08-12 13:08:31 +00001388state file directory : ${quagga_statedir}
pauldc7a2bf2003-10-22 00:07:44 +00001389config file directory : `eval echo \`echo ${sysconfdir}\``
gdtd6b72f72003-12-03 17:24:27 +00001390example directory : `eval echo \`echo ${exampledir}\``
paul8d4aee52003-06-06 00:30:35 +00001391user to run as : ${enable_user}
1392group to run as : ${enable_group}
1393group for vty sockets : ${enable_vty_group}
gdtaa593d52003-12-22 20:15:53 +00001394config file mask : ${enable_configfile_mask}
1395log file mask : ${enable_logfile_mask}
pauldc7a2bf2003-10-22 00:07:44 +00001396
1397The above user and group must have read/write access to the state file
Paul Jakma105b8232006-05-28 08:02:41 +00001398directory and to the config files in the config file directory."
1399
1400if test x"$quagga_cv_gnu_make" = x"no"; then echo "
1401Warning: The ${MAKE-make} programme detected, either in your path or
1402via the MAKE variable, is not GNU Make. GNU make may be installed as
1403gmake on some systems. and is required to complete a build of Quagga
1404" > /dev/stderr
1405fi