blob: ade81321f32c0e9ecf60d9c018564b27b4d19f5d [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
Greg Troxel1bbaa8c2007-02-06 19:36:47 +000024dnl GNU awk is required for lib/memtype.h made by memtypes.awk.
25dnl BSD awk complains: awk: gensub doesn't support backreferences (subst "\1")
paul03ecfb62005-04-16 15:38:23 +000026AC_CHECK_PROG([GAWK],[gawk],[gawk],[/bin/false])
27AC_ARG_VAR([GAWK],[GNU AWK])
28
gdtd6b72f72003-12-03 17:24:27 +000029dnl default is to match previous behavior
gdtc4f0efe2003-12-04 15:39:25 +000030exampledir=${sysconfdir}
gdtd6b72f72003-12-03 17:24:27 +000031AC_ARG_ENABLE([exampledir],
32 AC_HELP_STRING([--enable-exampledir],
33 [specify alternate directory for examples]),
34 exampledir="$enableval",)
gdtc4f0efe2003-12-04 15:39:25 +000035dnl XXX add --exampledir to autoconf standard directory list somehow
gdtd6b72f72003-12-03 17:24:27 +000036AC_SUBST(exampledir)
37
gdtcbd04082004-08-31 18:16:36 +000038dnl default is to match previous behavior
39pkgsrcrcdir=""
40pkgsrcdir=""
41AC_ARG_ENABLE([pkgsrcrcdir],
42 AC_HELP_STRING([--enable-pkgsrcrcdir],
43 [specify directory for rc.d scripts]),
44 pkgsrcrcdir="$enableval"; pkgsrcdir="pkgsrc",)
45dnl XXX add --pkgsrcrcdir to autoconf standard directory list somehow
46AC_SUBST(pkgsrcdir)
47AC_SUBST(pkgsrcrcdir)
48
paul7ea487b2003-03-17 02:05:07 +000049dnl ------------
50dnl Check CFLAGS
51dnl ------------
52AC_ARG_WITH(cflags,
53[ --with-cflags Set CFLAGS for use in compilation.])
54if test "x$with_cflags" != "x" ; then
55 CFLAGS="$with_cflags" ; cflags_specified=yes ;
56elif test -n "$CFLAGS" ; then
57 cflags_specified=yes ;
58fi
59
hasso1969e4b2005-03-27 13:07:23 +000060dnl --------------------
61dnl Check CC and friends
62dnl --------------------
paul7ea487b2003-03-17 02:05:07 +000063AC_PROG_CC
hasso1969e4b2005-03-27 13:07:23 +000064AC_PROG_CPP
Greg Troxel0750e812007-02-03 22:30:02 +000065
hasso1969e4b2005-03-27 13:07:23 +000066AC_PROG_EGREP
Greg Troxel553bdfe2007-02-06 20:10:35 +000067
68dnl autoconf 2.59 appears not to support AC_PROG_SED
69dnl AC_PROG_SED
70AC_CHECK_PROG([SED],[sed],[sed],[/bin/false])
hasso1969e4b2005-03-27 13:07:23 +000071
72dnl ------------------------------------------------------------------
73dnl Intel compiler check. Although Intel tries really hard to make icc
74dnl look like gcc, there are some differences. It's very verbose with
75dnl -Wall and it doesn't support the individual -W options.
76dnl ------------------------------------------------------------------
paul6a4b8832005-11-26 08:28:00 +000077if test "x${GCC}" = "xyes" ; then
78 COMPILER="GCC"
79 AC_MSG_CHECKING([whether we are using the Intel compiler])
80 AC_EGREP_CPP([^__INTEL_COMPILER], [__INTEL_COMPILER],
81 [AC_MSG_RESULT([no])],
82 [COMPILER="ICC"
83 AC_MSG_RESULT([yes])]
84 )
85else
86 AC_MSG_CHECKING([whether we are using SunPro compiler])
87 AC_EGREP_CPP([^__SUNPRO_C.*0x5(7|8|9)], ["__SUNPRO_C" __SUNPRO_C],
88 [AC_MSG_RESULT([no])],
89 [COMPILER="SUNPRO"
90 AC_MSG_RESULT([yes])]
91 )
92fi
paul7ea487b2003-03-17 02:05:07 +000093
paula49c0ff2004-09-30 06:08:58 +000094dnl ---------------------------------------------
paul7ea487b2003-03-17 02:05:07 +000095dnl If CLFAGS doesn\'t exist set default value
paula49c0ff2004-09-30 06:08:58 +000096dnl AC_PROG_CC will have set minimal default
97dnl already, eg "-O2 -g" for gcc, "-g" for others
paul27eebb32004-07-22 18:16:59 +000098dnl (Wall is gcc specific... have to make sure
99dnl gcc is being used before setting it)
100dnl
paul6a4b8832005-11-26 08:28:00 +0000101dnl Intel icc 8.0 also sets __GNUC__,
102dnl but doesn't support all these fancy -W options.
hasso1969e4b2005-03-27 13:07:23 +0000103dnl Intel compiler warnings we ignore:
104dnl 279: controlling expression is constant.
105dnl 869: parameter "xxx" was never referenced - to avoid massive warnings
106dnl about "self", "vty", "argc" and "argv" never referenced in DEFUN
107dnl macro.
108dnl 981: operands are evaluated in unspecified order.
paul6a4b8832005-11-26 08:28:00 +0000109dnl
110dnl Sun Studio 10 / SunPro 5.7 is also supported,
111dnl so lets set some sane CFLAGS for it.
112dnl ---------------------------------------------
hasso1969e4b2005-03-27 13:07:23 +0000113
paul6a4b8832005-11-26 08:28:00 +0000114AC_MSG_CHECKING([whether to set a default CFLAGS])
115if test "x${cflags_specified}" = "x" ; then
116 case ${COMPILER} in
117 "ICC")
118 CFLAGS="-Os -g -Wall -wd 279,869,981"
119 AC_MSG_RESULT([Intel default])
120 ;;
121 "GCC")
122 CFLAGS="-Os -fno-omit-frame-pointer -g -std=c99 -Wall"
123 CFLAGS="${CFLAGS} -Wsign-compare -Wpointer-arith"
124 CFLAGS="${CFLAGS} -Wbad-function-cast -Wwrite-strings"
125 CFLAGS="${CFLAGS} -Wmissing-prototypes -Wmissing-declarations"
126 CFLAGS="${CFLAGS} -Wchar-subscripts -Wcast-qual"
127 # TODO: conditionally addd -Wpacked if handled
128 AC_MSG_RESULT([gcc default])
129 ;;
130 "SUNPRO")
Paul Jakma105b8232006-05-28 08:02:41 +0000131 CFLAGS="-xO4 -v -g -xspace -xcode=pic32 -xstrconst -xc99"
paul6a4b8832005-11-26 08:28:00 +0000132 AC_MSG_RESULT([SunPro default])
133 ;;
134 *)
135 AC_MSG_RESULT([unknown compiler])
136 ;;
137 esac
138else
139 AC_MSG_RESULT([CFLAGS supplied by user])
hasso1969e4b2005-03-27 13:07:23 +0000140fi
141
paul7ea487b2003-03-17 02:05:07 +0000142dnl --------------
143dnl Check programs
144dnl --------------
paul7ea487b2003-03-17 02:05:07 +0000145AC_PROG_INSTALL
146AC_PROG_MAKE_SET
147AC_CHECK_TOOL(AR, ar)
148AC_CHECK_TOOL(RANLIB, ranlib, :)
149
Paul Jakma105b8232006-05-28 08:02:41 +0000150dnl ---------------------------
151dnl We, perhaps unfortunately,
152dnl depend on GNU Make specific
153dnl constructs.
154dnl Give the user a warning if
155dnl not GNU Make.
156dnl ---------------------------
157AC_CACHE_CHECK([if ${MAKE-make} is GNU make], [quagga_cv_gnu_make],
158 [quagga_cv_gnu_make=no
159 if ${MAKE-make} --version 2>/dev/null | \
160 grep '^GNU Make ' >/dev/null ; then
161 quagga_cv_gnu_make=yes;
162 fi
163 ]
164)
165
paul7ea487b2003-03-17 02:05:07 +0000166dnl ---------
167dnl AIX check
168dnl ---------
169AC_AIX
170
gdt87efd642004-06-30 17:36:11 +0000171dnl -------
172dnl libtool
173dnl -------
paul0fc42942004-08-19 04:41:21 +0000174AC_PROG_LIBTOOL
gdt87efd642004-06-30 17:36:11 +0000175
paul7ea487b2003-03-17 02:05:07 +0000176dnl ----------------------
177dnl Packages configuration
178dnl ----------------------
179AC_ARG_ENABLE(vtysh,
gdtfc9d0742004-06-30 14:25:12 +0000180[ --enable-vtysh include integrated vty shell for Quagga])
paul7ea487b2003-03-17 02:05:07 +0000181AC_ARG_ENABLE(ipv6,
182[ --disable-ipv6 turn off IPv6 related features and daemons])
183AC_ARG_ENABLE(zebra,
184[ --disable-zebra do not build zebra daemon])
185AC_ARG_ENABLE(bgpd,
186[ --disable-bgpd do not build bgpd])
187AC_ARG_ENABLE(ripd,
188[ --disable-ripd do not build ripd])
189AC_ARG_ENABLE(ripngd,
190[ --disable-ripngd do not build ripngd])
191AC_ARG_ENABLE(ospfd,
192[ --disable-ospfd do not build ospfd])
paul7ea487b2003-03-17 02:05:07 +0000193AC_ARG_ENABLE(ospf6d,
194[ --disable-ospf6d do not build ospf6d])
ajsd0199432004-12-22 14:03:52 +0000195AC_ARG_ENABLE(watchquagga,
196[ --disable-watchquagga do not build watchquagga])
jardin9e867fe2003-12-23 08:56:18 +0000197AC_ARG_ENABLE(isisd,
hassoae399ab2004-09-13 20:22:18 +0000198[ --enable-isisd build isisd])
paul7ea487b2003-03-17 02:05:07 +0000199AC_ARG_ENABLE(bgp-announce,
200[ --disable-bgp-announce, turn off BGP route announcement])
201AC_ARG_ENABLE(netlink,
202[ --enable-netlink force to use Linux netlink interface])
203AC_ARG_ENABLE(broken-aliases,
204[ --enable-broken-aliases enable aliases as distinct interfaces for Linux 2.2.X])
205AC_ARG_ENABLE(snmp,
206[ --enable-snmp enable SNMP support])
207AC_ARG_WITH(libpam,
208[ --with-libpam use libpam for PAM support in vtysh])
hasso71c0fb52003-05-25 20:18:13 +0000209AC_ARG_ENABLE(tcp-zebra,
paul7ea487b2003-03-17 02:05:07 +0000210[ --enable-tcp-zebra enable TCP/IP socket connection between zebra and protocol daemon])
paul7ea487b2003-03-17 02:05:07 +0000211AC_ARG_ENABLE(opaque-lsa,
paul1ef74ef2003-03-21 15:16:05 +0000212[ --enable-opaque-lsa enable OSPF Opaque-LSA with OSPFAPI support (RFC2370)])
213AC_ARG_ENABLE(ospfapi,
214[ --disable-ospfapi do not build OSPFAPI to access the OSPF LSA Database,
215 (this is the default if --enable-opaque-lsa is not set)])
216AC_ARG_ENABLE(ospfclient,
217[ --disable-ospfclient do not build OSPFAPI client for OSPFAPI,
218 (this is the default if --disable-ospfapi is set)])
paul7ea487b2003-03-17 02:05:07 +0000219AC_ARG_ENABLE(ospf-te,
220[ --enable-ospf-te enable Traffic Engineering Extension to OSPF])
221AC_ARG_ENABLE(multipath,
222[ --enable-multipath=ARG enable multipath function, ARG must be digit])
paule8f29842003-08-12 13:08:31 +0000223AC_ARG_ENABLE(quagga_user,
224[ --enable-user=ARG user to run Quagga suite as (default quagga)])
225AC_ARG_ENABLE(quagga_group,
226[ --enable-group=ARG group to run Quagga suite as (default quagga)])
pauledd7c242003-06-04 13:59:38 +0000227AC_ARG_ENABLE(vty_group,
paul6b6942f2004-10-22 04:55:05 +0000228[ --enable-vty-group=ARG set vty sockets to have specified group as owner])
gdtaa593d52003-12-22 20:15:53 +0000229AC_ARG_ENABLE(configfile_mask,
230[ --enable-configfile-mask=ARG set mask for config files])
231AC_ARG_ENABLE(logfile_mask,
232[ --enable-logfile-mask=ARG set mask for log files])
pauledd7c242003-06-04 13:59:38 +0000233
hasso71c0fb52003-05-25 20:18:13 +0000234AC_ARG_ENABLE(rtadv,
paul6b6942f2004-10-22 04:55:05 +0000235[ --disable-rtadv disable IPV6 router advertisement feature])
hassoca776982004-06-12 14:33:05 +0000236AC_ARG_ENABLE(irdp,
paul6b6942f2004-10-22 04:55:05 +0000237[ --enable-irdp enable IRDP server support in zebra])
hassof695b012005-04-02 19:03:39 +0000238AC_ARG_ENABLE(isis_topology,
239[ --enable-isis-topology enable IS-IS topology generator])
hasso41d3fc92004-04-06 11:59:00 +0000240AC_ARG_ENABLE(capabilities,
241[ --disable-capabilities disable using POSIX capabilities])
paul6b6942f2004-10-22 04:55:05 +0000242AC_ARG_ENABLE(gcc_ultra_verbose,
243[ --enable-gcc-ultra-verbose enable ultra verbose GCC warnings])
ajs3cade262004-12-29 17:50:22 +0000244AC_ARG_ENABLE(gcc-rdynamic,
245[ --enable-gcc-rdynamic enable gcc linking with -rdynamic for better backtraces])
ajs924b9222005-04-16 17:11:24 +0000246AC_ARG_ENABLE(time-check,
247[ --disable-time-check disable slow thread warning messages])
paul6b6942f2004-10-22 04:55:05 +0000248
249if test x"${enable_gcc_ultra_verbose}" = x"yes" ; then
250 CFLAGS="${CFLAGS} -W -Wcast-qual -Wstrict-prototypes"
251 CFLAGS="${CFLAGS} -Wmissing-declarations -Wmissing-noreturn"
252 CFLAGS="${CFLAGS} -Wmissing-format-attribute -Wunreachable-code"
253 CFLAGS="${CFLAGS} -Wpacked -Wpadded"
254fi
paul7ea487b2003-03-17 02:05:07 +0000255
ajs3cade262004-12-29 17:50:22 +0000256if test x"${enable_gcc_rdynamic}" = x"yes" ; then
257 LDFLAGS="${LDFLAGS} -rdynamic"
258fi
259
ajs924b9222005-04-16 17:11:24 +0000260if test x"${enable_time_check}" != x"no" ; then
261 if test x"${enable_time_check}" = x"yes" -o x"${enable_time_check}" = x ; then
262 AC_DEFINE(CONSUMED_TIME_CHECK,5000000,Consumed Time Check)
263 else
264 AC_DEFINE_UNQUOTED(CONSUMED_TIME_CHECK,$enable_time_check,Consumed Time Check)
265 fi
266fi
267
paul7ea487b2003-03-17 02:05:07 +0000268if test "${enable_broken_aliases}" = "yes"; then
269 if test "${enable_netlink}" = "yes"
270 then
271 echo "Sorry, you can't use netlink with broken aliases"
272 exit 1
273 fi
274 AC_DEFINE(HAVE_BROKEN_ALIASES,,Broken Alias)
275 enable_netlink=no
276fi
277
278if test "${enable_tcp_zebra}" = "yes"; then
279 AC_DEFINE(HAVE_TCP_ZEBRA,,Use TCP for zebra communication)
280fi
281
paul7ea487b2003-03-17 02:05:07 +0000282if test "${enable_opaque_lsa}" = "yes"; then
283 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
284fi
285
286if test "${enable_ospf_te}" = "yes"; then
287 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
288 AC_DEFINE(HAVE_OSPF_TE,,OSPF TE)
289fi
290
gdtd2a0ccc2003-12-03 18:13:48 +0000291AC_MSG_CHECKING(if zebra should be configurable to send Route Advertisements)
292if test "${enable_rtadv}" != "no"; then
hasso71c0fb52003-05-25 20:18:13 +0000293 AC_MSG_RESULT(yes)
gdtd2a0ccc2003-12-03 18:13:48 +0000294 AC_DEFINE(HAVE_RTADV,,Enable IPv6 Routing Advertisement support)
paul2487bea2003-05-25 23:51:31 +0000295else
296 AC_MSG_RESULT(no)
hasso71c0fb52003-05-25 20:18:13 +0000297fi
paul7ea487b2003-03-17 02:05:07 +0000298
hassoca776982004-06-12 14:33:05 +0000299if test "${enable_irdp}" = "yes"; then
300 AC_DEFINE(HAVE_IRDP,, IRDP )
301fi
302
hassof695b012005-04-02 19:03:39 +0000303if test "${enable_isisd}" = "yes" && test "${enable_isis_topology}" = yes; then
304 AC_DEFINE(TOPOLOGY_GENERATE,,Enable IS-IS topology generator code)
305 ISIS_TOPOLOGY_INCLUDES="-I./topology"
306 ISIS_TOPOLOGY_DIR="topology"
307 ISIS_TOPOLOGY_LIB="./topology/libtopology.a"
308fi
309
310AC_SUBST(ISIS_TOPOLOGY_INCLUDES)
311AC_SUBST(ISIS_TOPOLOGY_DIR)
312AC_SUBST(ISIS_TOPOLOGY_LIB)
313
paul79cb2162003-06-06 12:19:53 +0000314if test "${enable_user}" = "yes" || test x"${enable_user}" = x""; then
paule8f29842003-08-12 13:08:31 +0000315 enable_user="quagga"
pauledd7c242003-06-04 13:59:38 +0000316elif test "${enable_user}" = "no"; then
317 enable_user="root"
318fi
pauledd7c242003-06-04 13:59:38 +0000319
paul79cb2162003-06-06 12:19:53 +0000320if test "${enable_group}" = "yes" || test x"${enable_group}" = x""; then
paule8f29842003-08-12 13:08:31 +0000321 enable_group="quagga"
pauledd7c242003-06-04 13:59:38 +0000322elif test "${enable_group}" = "no"; then
323 enable_group="root"
324fi
pauledd7c242003-06-04 13:59:38 +0000325
326if test x"${enable_vty_group}" = x"yes" ; then
paul8d4aee52003-06-06 00:30:35 +0000327 AC_MSG_ERROR([--enable-vty-group requires a group as argument, not yes])
paul79cb2162003-06-06 12:19:53 +0000328elif test x"${enable_vty_group}" != x""; then
paul8d4aee52003-06-06 00:30:35 +0000329 if test x"${enable_vty_group}" != x"no"; then
pauledd7c242003-06-04 13:59:38 +0000330 AC_DEFINE_UNQUOTED(VTY_GROUP, "${enable_vty_group}", VTY Sockets Group)
331 fi
332fi
paul26275b02005-04-11 07:10:47 +0000333AC_SUBST([enable_user])
334AC_SUBST([enable_group])
335AC_SUBST([enable_vty_group])
336AC_DEFINE_UNQUOTED(QUAGGA_USER, "${enable_user}", Quagga User)
337AC_DEFINE_UNQUOTED(QUAGGA_GROUP, "${enable_group}", Quagga Group)
pauledd7c242003-06-04 13:59:38 +0000338
gdtaa593d52003-12-22 20:15:53 +0000339enable_configfile_mask=${enable_configfile_mask:-0600}
340AC_DEFINE_UNQUOTED(CONFIGFILE_MASK, ${enable_configfile_mask}, Mask for config files)
341
342enable_logfile_mask=${enable_logfile_mask:-0600}
343AC_DEFINE_UNQUOTED(LOGFILE_MASK, ${enable_logfile_mask}, Mask for log files)
344
paul7ea487b2003-03-17 02:05:07 +0000345changequote(, )dnl
346
347MULTIPATH_NUM=1
348
349case "${enable_multipath}" in
350 [0-9]|[1-9][0-9])
351 MULTIPATH_NUM="${enable_multipath}"
352 ;;
353 "")
354 ;;
355 *)
356 echo "Please specify digit to --enable-multipath ARG."
357 exit 1
358 ;;
359esac
360
361changequote([, ])dnl
362
363AC_SUBST(MULTIPATH_NUM)
364
365dnl -------------------
366dnl Check header files.
367dnl -------------------
pauldc7a2bf2003-10-22 00:07:44 +0000368AC_HEADER_STDC
369AC_CHECK_HEADERS([string.h stropts.h sys/conf.h sys/ksym.h sys/time.h \
370 sys/times.h sys/select.h sys/sysctl.h sys/sockio.h \
371 sys/types.h linux/version.h kvm.h netdb.h asm/types.h \
paul76367ea2005-11-14 14:05:35 +0000372 sys/param.h libutil.h limits.h stdint.h])
pauldc7a2bf2003-10-22 00:07:44 +0000373
paul835b7f12003-10-30 21:59:57 +0000374AC_CHECK_HEADERS([sys/socket.h netinet/in_systm.h netinet/in.h \
paulf3bd1a72003-11-02 07:29:11 +0000375 net/if_dl.h net/netopt.h inet/nd.h net/route.h \
paul835b7f12003-10-30 21:59:57 +0000376 net/if.h net/if_var.h netinet/in_var.h])
pauldc7a2bf2003-10-22 00:07:44 +0000377
gdtfa3232e2003-12-03 17:52:30 +0000378dnl V6 headers are checked below, after we check for v6
paul7ea487b2003-03-17 02:05:07 +0000379
380dnl check some types
381AC_C_CONST
382dnl AC_TYPE_PID_T
383AC_TYPE_SIGNAL
384
385dnl Some systems (Solaris 2.x) require libnsl (Network Services Library)
386case "$host" in
paulafd8a122005-03-12 06:36:10 +0000387 [*-sunos5.[6-7]*] | [*-solaris2.[6-7]*])
paul7ea487b2003-03-17 02:05:07 +0000388 opsys=sol2-6
paulafd8a122005-03-12 06:36:10 +0000389 AC_DEFINE(SUNOS_56, 1, SunOS 5.6 to 5.7)
paul19877dd2004-05-11 10:49:35 +0000390 AC_DEFINE(SUNOS_5, 1, SunOS 5)
paul7ea487b2003-03-17 02:05:07 +0000391 AC_CHECK_LIB(xnet, main)
392 CURSES=-lcurses
393 ;;
paul1b73de82005-04-10 16:31:51 +0000394 [*-sunos5.[8-9]] \
395 | [*-sunos5.1[0-9]] \
396 | [*-sunos5.1[0-9].[0-9]] \
397 | [*-solaris2.[8-9]] \
398 | [*-solaris2.1[0-9]] \
399 | [*-solaris2.1[0-9].[0-9]])
paulafd8a122005-03-12 06:36:10 +0000400 opsys=sol8
Paul Jakmafb66b292006-05-28 08:26:15 +0000401 AC_DEFINE(SUNOS_59, 1, [SunOS 5.8 up])
402 AC_DEFINE(SUNOS_5, 1, [SunOS 5])
paul19877dd2004-05-11 10:49:35 +0000403 AC_CHECK_LIB(socket, main)
404 AC_CHECK_LIB(nsl, main)
paul1b73de82005-04-10 16:31:51 +0000405 AC_CHECK_LIB(umem, main)
Paul Jakmafb66b292006-05-28 08:26:15 +0000406 AC_CHECK_FUNCS([printstack],
407 [AC_DEFINE([HAVE_PRINTSTACK],1,[Solaris printstack])
408 AC_DEFINE([HAVE_STACK_TRACE],1,[Stack symbols decode functionality])
409 ])
paul19877dd2004-05-11 10:49:35 +0000410 CURSES=-lcurses
411 ;;
paul7ea487b2003-03-17 02:05:07 +0000412 *-sunos5* | *-solaris2*)
paul19877dd2004-05-11 10:49:35 +0000413 AC_DEFINE(SUNOS_5,,SunOS 5, Unknown SunOS)
paul7ea487b2003-03-17 02:05:07 +0000414 AC_CHECK_LIB(socket, main)
415 AC_CHECK_LIB(nsl, main)
416 CURSES=-lcurses
417 ;;
hassoc45eb832005-02-19 13:58:06 +0000418 *-linux*)
paul7ea487b2003-03-17 02:05:07 +0000419 opsys=gnu-linux
420 AC_DEFINE(GNU_LINUX,,GNU Linux)
421 ;;
422 *-nec-sysv4*)
423 AC_CHECK_LIB(nsl, gethostbyname)
424 AC_CHECK_LIB(socket, socket)
425 ;;
paul7ea487b2003-03-17 02:05:07 +0000426 *-openbsd*)
427 opsys=openbsd
428 AC_DEFINE(OPEN_BSD,,OpenBSD)
429 ;;
430 *-bsdi*)
431 opsys=bsdi
432 OTHER_METHOD="mtu_kvm.o"
433 AC_CHECK_LIB(kvm, main)
434 ;;
paul49e3b3c2003-10-23 20:39:50 +0000435 *-irix6.5)
pauldc7a2bf2003-10-22 00:07:44 +0000436 opsys=irix
437 AC_DEFINE(IRIX_65,,IRIX 6.5)
438 ;;
paul7ea487b2003-03-17 02:05:07 +0000439esac
440
441dnl ---------------------
442dnl Integrated VTY option
443dnl ---------------------
444case "${enable_vtysh}" in
445 "yes") VTYSH="vtysh";
446 AC_DEFINE(VTYSH,,VTY shell)
gdtfc9d0742004-06-30 14:25:12 +0000447 AC_PATH_PROG(PERL, perl)
448dnl Vtysh uses libreadline, which looks for termcap functions at
449dnl configure time. We follow readline's search order.
450dnl The required procedures are in libtermcap on NetBSD, in
451dnl [TODO] on Linux, and in [TODO] on Solaris.
hassoc0689392005-08-25 12:00:58 +0000452 AC_CHECK_LIB(termcap, tputs, LIBREADLINE="$LIBREADLINE -ltermcap",
paula9694592005-08-25 14:50:05 +0000453 [AC_CHECK_LIB(tinfo, tputs, LIBREADLINE="$LIBREADLINE -ltinfo",
454 [AC_CHECK_LIB(curses, tputs, LIBREADLINE="$LIBREADLINE -lcurses",
455 [AC_CHECK_LIB(ncurses, tputs,
456 LIBREADLINE="$LIBREADLINE -lncurses")]
457 )]
458 )]
459 )
460 AC_CHECK_LIB(readline, main, LIBREADLINE="$LIBREADLINE -lreadline",,
461 "$LIBREADLINE")
paul7ea487b2003-03-17 02:05:07 +0000462 if test $ac_cv_lib_readline_main = no; then
gdtfc9d0742004-06-30 14:25:12 +0000463 AC_MSG_ERROR([vtysh needs libreadline but was not found and usable on your system.])
paul7ea487b2003-03-17 02:05:07 +0000464 fi
465 AC_CHECK_HEADER(readline/history.h)
466 if test $ac_cv_header_readline_history_h = no;then
467 AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
468 fi
paula9694592005-08-25 14:50:05 +0000469 AC_CHECK_LIB(readline, rl_completion_matches,
470 LIBREADLINE="$LIBREADLINE",, "$LIBREADLINE")
paul3d3de8c2003-05-23 10:33:49 +0000471 if test $ac_cv_lib_readline_rl_completion_matches = no; then
472 AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
473 fi
474 ;;
paul7ea487b2003-03-17 02:05:07 +0000475 "no" ) VTYSH="";;
476 * ) ;;
477esac
hassoc0689392005-08-25 12:00:58 +0000478AC_SUBST(LIBREADLINE)
paul7ea487b2003-03-17 02:05:07 +0000479
480dnl ----------
481dnl PAM module
482dnl ----------
483if test "$with_libpam" = "yes"; then
paul24cd4352003-05-06 12:16:27 +0000484 AC_CHECK_HEADER(security/pam_misc.h)
485 if test "$ac_cv_header_security_pam_misc_h" = yes; then
486 AC_DEFINE(HAVE_PAM_MISC_H,,Have pam_misc.h)
487 AC_DEFINE(PAM_CONV_FUNC,misc_conv,Have misc_conv)
488 pam_conv_func="misc_conv"
paul24cd4352003-05-06 12:16:27 +0000489 fi
paul24cd4352003-05-06 12:16:27 +0000490 AC_CHECK_HEADER(security/openpam.h)
491 if test "$ac_cv_header_security_openpam_h" = yes; then
492 AC_DEFINE(HAVE_OPENPAM_H,,Have openpam.h)
493 AC_DEFINE(PAM_CONV_FUNC,openpam_ttyconv,Have openpam_ttyconv)
494 pam_conv_func="openpam_ttyconv"
paul24cd4352003-05-06 12:16:27 +0000495 fi
496 if test -z "$ac_cv_header_security_pam_misc_h$ac_cv_header_security_openpam_h" ; then
497 AC_MSG_WARN([*** pam support will not be built ***])
498 with_libpam="no"
499 fi
500fi
501
502if test "$with_libpam" = "yes"; then
paul7ea487b2003-03-17 02:05:07 +0000503dnl took this test from proftpd's configure.in and suited to our needs
504dnl -------------------------------------------------------------------------
505dnl
506dnl This next check looks funky due to a linker problem with some versions
507dnl of the PAM library. Prior to 0.72 release, the Linux PAM shared library
508dnl omitted requiring libdl linking information. PAM-0.72 or better ships
509dnl with RedHat 6.2 and Debian 2.2 or better.
510AC_CHECK_LIB(pam, pam_start,
paul24cd4352003-05-06 12:16:27 +0000511 [AC_CHECK_LIB(pam, $pam_conv_func,
paul7ea487b2003-03-17 02:05:07 +0000512 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
513 LIBPAM="-lpam"],
514 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
515 LIBPAM="-lpam -lpam_misc"]
516 )
517 ],
518
519 [AC_CHECK_LIB(pam, pam_end,
paul24cd4352003-05-06 12:16:27 +0000520 [AC_CHECK_LIB(pam, $pam_conv_func,
paula159ed92003-06-04 11:01:45 +0000521 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
paul7ea487b2003-03-17 02:05:07 +0000522 LIBPAM="-lpam -ldl"],
paula159ed92003-06-04 11:01:45 +0000523 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
paul7ea487b2003-03-17 02:05:07 +0000524 LIBPAM="-lpam -ldl -lpam_misc"]
525 )
526 ],AC_MSG_WARN([*** pam support will not be built ***]),
527 [-ldl])
528 ]
529)
530fi
531AC_SUBST(LIBPAM)
532
533dnl -------------------------------
534dnl Endian-ness check
535dnl -------------------------------
536AC_WORDS_BIGENDIAN
537
538dnl -------------------------------
539dnl check the size in byte of the C
540dnl -------------------------------
541dnl AC_CHECK_SIZEOF(char)
542dnl AC_CHECK_SIZEOF(int)
543dnl AC_CHECK_SIZEOF(short)
544dnl AC_CHECK_SIZEOF(long)
545
546dnl ----------------------------
547dnl check existance of functions
548dnl ----------------------------
paul49e3b3c2003-10-23 20:39:50 +0000549AC_CHECK_FUNCS(memset memcpy strerror inet_aton daemon snprintf vsnprintf \
paul04bd4842003-10-24 04:24:39 +0000550 strlcat strlcpy if_nametoindex if_indextoname getifaddrs \
hassoe6a4feb2005-09-19 09:53:21 +0000551 fcntl strnlen strndup)
paula159ed92003-06-04 11:01:45 +0000552AC_CHECK_FUNCS(setproctitle, ,
553 [AC_CHECK_LIB(util, setproctitle,
554 [LIBS="$LIBS -lutil"
555 AC_DEFINE(HAVE_SETPROCTITLE,, Have setproctitle)
556 ]
557 )
558 ]
559)
paul7ea487b2003-03-17 02:05:07 +0000560
561dnl ------------------------------------
562dnl Determine routing get and set method
563dnl ------------------------------------
564AC_MSG_CHECKING(zebra between kernel interface method)
565if test x"$opsys" = x"gnu-linux"; then
566 if test "${enable_netlink}" = "yes";then
567 AC_MSG_RESULT(netlink)
568 RT_METHOD=rt_netlink.o
569 AC_DEFINE(HAVE_NETLINK,,netlink)
570 netlink=yes
571 elif test "${enable_netlink}" = "no"; then
572 AC_MSG_RESULT(ioctl)
573 RT_METHOD=rt_ioctl.o
574 netlink=no
575 else
576 AC_MSG_RESULT(netlink)
577 RT_METHOD=rt_netlink.o
578 AC_DEFINE(HAVE_NETLINK,,netlink)
579 netlink=yes
580 fi
paul19877dd2004-05-11 10:49:35 +0000581elif test x"$opsys" = x"sol2-6";then
582 AC_MSG_RESULT(Route socket)
583 KERNEL_METHOD="kernel_socket.o"
584 RT_METHOD="rt_socket.o"
paulafd8a122005-03-12 06:36:10 +0000585elif test x"$opsys" = x"sol8";then
paul19877dd2004-05-11 10:49:35 +0000586 AC_MSG_RESULT(Route socket)
587 KERNEL_METHOD="kernel_socket.o"
588 RT_METHOD="rt_socket.o"
589elif test "$opsys" = "irix" ; then
590 AC_MSG_RESULT(Route socket)
591 KERNEL_METHOD="kernel_socket.o"
592 RT_METHOD="rt_socket.o"
paul7ea487b2003-03-17 02:05:07 +0000593else
paul19877dd2004-05-11 10:49:35 +0000594 AC_TRY_RUN([#include <errno.h>
paul7ea487b2003-03-17 02:05:07 +0000595#include <sys/types.h>
596#include <sys/socket.h>
597
598main ()
599{
600 int ac_sock;
601
602 ac_sock = socket (AF_ROUTE, SOCK_RAW, 0);
603 if (ac_sock < 0 && errno == EINVAL)
604 exit (1);
605 exit (0);
606}],
607 [KERNEL_METHOD=kernel_socket.o
608 RT_METHOD=rt_socket.o
609 AC_MSG_RESULT(socket)],
610 [RT_METHOD=rt_ioctl.o
611 AC_MSG_RESULT(ioctl)],
612 [KERNEL_METHOD=kernel_socket.o
613 RT_METHOD=rt_socket.o
614 AC_MSG_RESULT(socket)])
paul7ea487b2003-03-17 02:05:07 +0000615fi
616AC_SUBST(RT_METHOD)
617AC_SUBST(KERNEL_METHOD)
618AC_SUBST(OTHER_METHOD)
619
ajsb99760a2005-01-04 16:24:43 +0000620dnl ------------------------------------
621dnl check for broken CMSG_FIRSTHDR macro
622dnl ------------------------------------
gdt6c200462005-01-04 17:02:48 +0000623AC_MSG_CHECKING(for broken CMSG_FIRSTHDR)
hasso5b087522005-04-03 23:46:37 +0000624AC_RUN_IFELSE([AC_LANG_SOURCE([[
ajsb99760a2005-01-04 16:24:43 +0000625#ifdef SUNOS_5
626#define _XPG4_2
627#define __EXTENSIONS__
628#endif
629#include <stdlib.h>
630#include <sys/types.h>
631#include <sys/socket.h>
632
633main()
634{
635 struct msghdr msg;
636 char buf[4];
637
638 msg.msg_control = buf;
639 msg.msg_controllen = 0;
640
641 if (CMSG_FIRSTHDR(&msg) != NULL)
642 exit(0);
643 exit (1);
hasso5b087522005-04-03 23:46:37 +0000644}]])],[AC_MSG_RESULT(yes - using workaround) AC_DEFINE(HAVE_BROKEN_CMSG_FIRSTHDR,,Broken CMSG_FIRSTHDR)],
hassod33e8d72005-04-03 13:07:21 +0000645[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
ajsb99760a2005-01-04 16:24:43 +0000646
paul7ea487b2003-03-17 02:05:07 +0000647dnl ------------------------------
648dnl check kernel route read method
649dnl ------------------------------
650AC_CACHE_CHECK(route read method check, zebra_rtread,
651[if test "$netlink" = yes; then
652 RTREAD_METHOD="rtread_netlink.o"
653 zebra_rtread="netlink"
654else
655for zebra_rtread in /proc/net/route /dev/ip /dev/null;
656do
657 test x`ls $zebra_rtread 2>/dev/null` = x"$zebra_rtread" && break
658done
659case $zebra_rtread in
660 "/proc/net/route") RTREAD_METHOD="rtread_proc.o"
661 zebra_rtread="proc";;
paul9c30ab62003-07-08 08:36:17 +0000662 "/dev/ip")
663 case "$host" in
664 *-freebsd*) RTREAD_METHOD=rtread_sysctl.o
665 zebra_rtread="sysctl";;
666 *) RTREAD_METHOD="rtread_getmsg.o"
667 zebra_rtread="getmsg";;
668 esac;;
paul7ea487b2003-03-17 02:05:07 +0000669 *) RTREAD_METHOD="rtread_sysctl.o"
670 zebra_rtread="sysctl";;
671esac
672fi])
673AC_SUBST(RTREAD_METHOD)
674
675dnl -----------------------------
676dnl check interface lookup method
677dnl -----------------------------
paul19877dd2004-05-11 10:49:35 +0000678IOCTL_METHOD=ioctl.o
paul7ea487b2003-03-17 02:05:07 +0000679AC_MSG_CHECKING(interface looking up method)
680if test "$netlink" = yes; then
681 AC_MSG_RESULT(netlink)
682 IF_METHOD=if_netlink.o
paul19877dd2004-05-11 10:49:35 +0000683elif test "$opsys" = "sol2-6";then
684 AC_MSG_RESULT(Solaris GIF)
685 IF_METHOD=if_ioctl.o
paulafd8a122005-03-12 06:36:10 +0000686elif test "$opsys" = "sol8";then
paul19877dd2004-05-11 10:49:35 +0000687 AC_MSG_RESULT(Solaris GLIF)
688 IF_METHOD=if_ioctl_solaris.o
689 IOCTL_METHOD=ioctl_solaris.o
690elif test "$opsys" = "irix" ; then
691 AC_MSG_RESULT(IRIX)
692 IF_METHOD=if_ioctl.o
693elif test "$opsys" = "openbsd";then
694 AC_MSG_RESULT(openbsd)
695 IF_METHOD=if_ioctl.o
696elif grep NET_RT_IFLIST /usr/include/sys/socket.h >/dev/null 2>&1; then
697 AC_MSG_RESULT(sysctl)
paul7ea487b2003-03-17 02:05:07 +0000698 IF_METHOD=if_sysctl.o
699 AC_DEFINE(HAVE_NET_RT_IFLIST,,NET_RT_IFLIST)
paul19877dd2004-05-11 10:49:35 +0000700else
paul7ea487b2003-03-17 02:05:07 +0000701 AC_MSG_RESULT(ioctl)
702 IF_METHOD=if_ioctl.o
paul7ea487b2003-03-17 02:05:07 +0000703fi
704AC_SUBST(IF_METHOD)
paul19877dd2004-05-11 10:49:35 +0000705AC_SUBST(IOCTL_METHOD)
paul7ea487b2003-03-17 02:05:07 +0000706
paul42c98192005-05-07 02:22:51 +0000707dnl ---------------------------------------------------------------
708dnl figure out how to specify an interface in multicast sockets API
709dnl ---------------------------------------------------------------
710AC_CHECK_MEMBERS([struct ip_mreqn.imr_ifindex],,,[#ifdef HAVE_SYS_TYPES_H
711#include <sys/types.h>
712#endif
713#ifdef HAVE_NETINET_IN_H
714#include <netinet/in.h>
715#endif])
716
717AC_MSG_CHECKING([for BSD struct ip_mreq hack])
718AC_TRY_COMPILE([#ifdef HAVE_SYS_PARAM_H
719#include <sys/param.h>
720#endif],[#if (defined(__FreeBSD__) && (__FreeBSD_version >= 500022 || (__FreeBSD_version < 500000 && __FreeBSD_version >= 440000))) || (defined(__NetBSD__) && defined(__NetBSD_Version__) && __NetBSD_Version__ >= 106010000)
721 return (0);
722#else
723 #error No support for BSD struct ip_mreq hack detected
724#endif],[AC_MSG_RESULT(yes)
725AC_DEFINE(HAVE_BSD_STRUCT_IP_MREQ_HACK,,[Can pass ifindex in struct ip_mreq])],
726AC_MSG_RESULT(no))
727
paul7ea487b2003-03-17 02:05:07 +0000728dnl -----------------------
729dnl check proc file system.
730dnl -----------------------
731if test -r /proc/net/dev; then
732 AC_DEFINE(HAVE_PROC_NET_DEV,,/proc/net/dev)
733 IF_PROC=if_proc.o
734fi
735
736if test -r /proc/net/if_inet6; then
737 AC_DEFINE(HAVE_PROC_NET_IF_INET6,,/proc/net/if_inet6)
738 IF_PROC=if_proc.o
739fi
740AC_SUBST(IF_PROC)
741
742dnl -----------------------------
743dnl check ipforward detect method
744dnl -----------------------------
745AC_CACHE_CHECK(ipforward method check, zebra_ipforward_path,
746[for zebra_ipforward_path in /proc/net/snmp /dev/ip /dev/null;
747do
748 test x`ls $zebra_ipforward_path 2>/dev/null` = x"$zebra_ipforward_path" && break
749done
750case $zebra_ipforward_path in
751 "/proc/net/snmp") IPFORWARD=ipforward_proc.o
752 zebra_ipforward_path="proc";;
753 "/dev/ip")
754 case "$host" in
755 *-nec-sysv4*) IPFORWARD=ipforward_ews.o
756 zebra_ipforward_path="ews";;
paul9c30ab62003-07-08 08:36:17 +0000757 *-freebsd*) IPFORWARD=ipforward_sysctl.o
758 zebra_ipforward_path="sysctl";;
paul7ea487b2003-03-17 02:05:07 +0000759 *) IPFORWARD=ipforward_solaris.o
760 zebra_ipforward_path="solaris";;
761 esac;;
762 *) IPFORWARD=ipforward_sysctl.o
763 zebra_ipforward_path="sysctl";;
764esac])
765AC_SUBST(IPFORWARD)
766
767AC_CHECK_FUNCS(getaddrinfo, [have_getaddrinfo=yes], [have_getaddrinfo=no])
768
769dnl ----------
770dnl IPv6 check
771dnl ----------
772AC_MSG_CHECKING(whether does this OS have IPv6 stack)
773if test "${enable_ipv6}" = "no"; then
774 AC_MSG_RESULT(disabled)
775else
776dnl ----------
777dnl INRIA IPv6
778dnl ----------
paula159ed92003-06-04 11:01:45 +0000779 if grep IPV6_INRIA_VERSION /usr/include/netinet/in.h >/dev/null 2>&1; then
780 zebra_cv_ipv6=yes
781 AC_DEFINE(HAVE_IPV6,1,INRIA IPv6)
782 AC_DEFINE(INRIA_IPV6,1,INRIA IPv6)
783 RIPNGD="ripngd"
784 OSPF6D="ospf6d"
785 LIB_IPV6=""
786 AC_MSG_RESULT(INRIA IPv6)
paul7ea487b2003-03-17 02:05:07 +0000787dnl ---------
788dnl KAME IPv6
789dnl ---------
paula159ed92003-06-04 11:01:45 +0000790 elif grep WIDE /usr/include/netinet6/in6.h >/dev/null 2>&1; then
791 zebra_cv_ipv6=yes
792 AC_DEFINE(HAVE_IPV6,1,KAME IPv6)
793 AC_DEFINE(KAME,1,KAME IPv6)
794 RIPNGD="ripngd"
795 OSPF6D="ospf6d"
796 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
paul7ea487b2003-03-17 02:05:07 +0000797 LIB_IPV6="-L/usr/local/v6/lib -linet6"
paula159ed92003-06-04 11:01:45 +0000798 fi
799 AC_MSG_RESULT(KAME)
hasso71c0fb52003-05-25 20:18:13 +0000800dnl -------------------------
801dnl MUSICA IPv6
802dnl default host check
803dnl It is not used by Kheops
804dnl -------------------------
paula159ed92003-06-04 11:01:45 +0000805 elif grep MUSICA /usr/include6/netinet6/in6.h >/dev/null 2>&1; then
806 zebra_cv_ipv6=yes
807 AC_DEFINE(HAVE_IPV6,1,Musicia IPv6)
808 AC_DEFINE(MUSICA,1,Musica IPv6 stack)
809 AC_DEFINE(KAME,1,KAME IPv6 stack)
810 RIPNGD="ripngd"
811 OSPF6D="ospf6d"
812 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
hasso71c0fb52003-05-25 20:18:13 +0000813 LIB_IPV6="-L/usr/local/v6/lib -linet6"
paula159ed92003-06-04 11:01:45 +0000814 fi
815 AC_MSG_RESULT(MUSICA)
paul7ea487b2003-03-17 02:05:07 +0000816dnl ---------
817dnl NRL check
818dnl ---------
paula159ed92003-06-04 11:01:45 +0000819 elif grep NRL /usr/include/netinet6/in6.h >/dev/null 2>&1; then
820 zebra_cv_ipv6=yes
821 AC_DEFINE(HAVE_IPV6,1,NRL IPv6)
822 AC_DEFINE(NRL,1,NRL)
823 RIPNGD="ripngd"
824 OSPF6D="ospf6d"
825 if test x"$opsys" = x"bsdi";then
paul7ea487b2003-03-17 02:05:07 +0000826 AC_DEFINE(BSDI_NRL,,BSDI)
827 AC_MSG_RESULT(BSDI_NRL)
paula159ed92003-06-04 11:01:45 +0000828 else
paul7ea487b2003-03-17 02:05:07 +0000829 AC_MSG_RESULT(NRL)
paula159ed92003-06-04 11:01:45 +0000830 fi
paul19877dd2004-05-11 10:49:35 +0000831dnl ------------------------------------
832dnl Solaris 9, 10 and potentially higher
833dnl ------------------------------------
paulafd8a122005-03-12 06:36:10 +0000834 elif test x"$opsys" = x"sol8"; then
paul19877dd2004-05-11 10:49:35 +0000835 zebra_cv_ipv6=yes;
836 AC_DEFINE(HAVE_IPV6, 1, IPv6)
837 AC_DEFINE(SOLARIS_IPV6, 1, Solaris IPv6)
838 RIPNGD="ripngd"
839 OSPF6D="ospf6d"
840 AC_MSG_RESULT(Solaris IPv6)
paul7ea487b2003-03-17 02:05:07 +0000841dnl ----------
842dnl Linux IPv6
843dnl ----------
paula159ed92003-06-04 11:01:45 +0000844 elif test "${enable_ipv6}" = "yes"; then
845 AC_EGREP_CPP(yes, [
846 #include <linux/version.h>
847 /* 2.1.128 or later */
848 #if LINUX_VERSION_CODE >= 0x020180
849 yes
850 #endif],
851 [zebra_cv_ipv6=yes
852 zebra_cv_linux_ipv6=yes
853 AC_MSG_RESULT(Linux IPv6)])
854 else
855 if test x`ls /proc/net/ipv6_route 2>/dev/null` = x"/proc/net/ipv6_route"
856 then
paul7ea487b2003-03-17 02:05:07 +0000857 zebra_cv_ipv6=yes
858 zebra_cv_linux_ipv6=yes
859 AC_MSG_RESULT(Linux IPv6)
paula159ed92003-06-04 11:01:45 +0000860 fi
861 fi
paul7ea487b2003-03-17 02:05:07 +0000862
paula159ed92003-06-04 11:01:45 +0000863 if test "$zebra_cv_linux_ipv6" = "yes";then
hasso850d39f2005-06-30 13:52:20 +0000864 AC_MSG_CHECKING(whether libc has IPv6 support)
865 AC_TRY_LINK([#include <netinet/in.h>
866 ],[ int a; a = (int) in6addr_any.s6_addr[0]; if (a != 12345) return a; ],
867 [AC_MSG_RESULT(yes)
868 zebra_cv_ipv6=yes
869 zebra_cv_linux_ipv6=yes],
870 [AC_MSG_RESULT(no)
871 zebra_cv_ipv6=no
872 zebra_cv_linux_ipv6=no])
873 fi
874
875 if test "$zebra_cv_linux_ipv6" = "yes";then
paula159ed92003-06-04 11:01:45 +0000876 AC_MSG_CHECKING(for GNU libc >= 2.1)
877 AC_DEFINE(HAVE_IPV6,1,Linux IPv6)
878 AC_EGREP_CPP(yes, [
paul7ea487b2003-03-17 02:05:07 +0000879#include <features.h>
880#if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
881 yes
paula159ed92003-06-04 11:01:45 +0000882#endif],
883 [glibc=yes
884 AC_DEFINE(LINUX_IPV6,1,Linux IPv6 stack)
885 AC_MSG_RESULT(yes)],
886 AC_MSG_RESULT(no)
887 )
888 RIPNGD="ripngd"
889 OSPF6D="ospf6d"
890 if test "$glibc" != "yes"; then
paul7ea487b2003-03-17 02:05:07 +0000891 INCLUDES="-I/usr/inet6/include"
892 if test x`ls /usr/inet6/lib/libinet6.a 2>/dev/null` != x;then
893 LIB_IPV6="-L/usr/inet6/lib -linet6"
894 fi
paula159ed92003-06-04 11:01:45 +0000895 fi
896 fi
paul7ea487b2003-03-17 02:05:07 +0000897
898dnl -----------------------
899dnl Set IPv6 related values
900dnl -----------------------
paula159ed92003-06-04 11:01:45 +0000901 LIBS="$LIB_IPV6 $LIBS"
902 AC_SUBST(LIB_IPV6)
paul7ea487b2003-03-17 02:05:07 +0000903
paula159ed92003-06-04 11:01:45 +0000904 if test x"$RIPNGD" = x""; then
905 AC_MSG_RESULT(IPv4 only)
906 fi
paul7ea487b2003-03-17 02:05:07 +0000907fi
908
gdtfa3232e2003-12-03 17:52:30 +0000909dnl ------------------
910dnl IPv6 header checks
911dnl ------------------
912if test "x${zebra_cv_ipv6}" = "xyes"; then
913AC_CHECK_HEADERS([netinet6/in6.h netinet/in6_var.h netinet/icmp6.h \
914 netinet6/in6_var.h netinet6/nd6.h])
915fi
916
paul7ea487b2003-03-17 02:05:07 +0000917dnl --------------------
918dnl Daemon disable check
919dnl --------------------
920if test "${enable_zebra}" = "no";then
921 ZEBRA=""
922else
923 ZEBRA="zebra"
924fi
925
926if test "${enable_bgpd}" = "no";then
927 BGPD=""
928else
929 BGPD="bgpd"
930fi
931
932if test "${enable_ripd}" = "no";then
933 RIPD=""
934else
935 RIPD="ripd"
936fi
937
938if test "${enable_ospfd}" = "no";then
939 OSPFD=""
940else
941 OSPFD="ospfd"
942fi
943
ajsd0199432004-12-22 14:03:52 +0000944if test "${enable_watchquagga}" = "no";then
945 WATCHQUAGGA=""
946else
947 WATCHQUAGGA="watchquagga"
948fi
949
paul1ef74ef2003-03-21 15:16:05 +0000950OSPFCLIENT=""
951if test "${enable_opaque_lsa}" = "yes"; then
952 if test "${enable_ospfapi}" != "no";then
paul9a569842003-03-28 01:45:13 +0000953 AC_DEFINE(SUPPORT_OSPF_API,,OSPFAPI)
paul1ef74ef2003-03-21 15:16:05 +0000954
955 if test "${enable_ospfclient}" != "no";then
956 OSPFCLIENT="ospfclient"
957 fi
958 fi
959
paul7ea487b2003-03-17 02:05:07 +0000960fi
961
962case "${enable_ripngd}" in
963 "yes") RIPNGD="ripngd";;
964 "no" ) RIPNGD="";;
965 * ) ;;
966esac
967
968case "${enable_ospf6d}" in
969 "yes") OSPF6D="ospf6d";;
970 "no" ) OSPF6D="";;
971 * ) ;;
972esac
973
jardin9e867fe2003-12-23 08:56:18 +0000974case "${enable_isisd}" in
975 "yes") ISISD="isisd";;
976 "no" ) ISISD="";;
hassoae399ab2004-09-13 20:22:18 +0000977 * ) ;;
jardin9e867fe2003-12-23 08:56:18 +0000978esac
979
paul7ea487b2003-03-17 02:05:07 +0000980if test "${enable_bgp_announce}" = "no";then
981 AC_DEFINE(DISABLE_BGP_ANNOUNCE,,Disable BGP installation to zebra)
982fi
983
984AC_SUBST(ZEBRA)
985AC_SUBST(BGPD)
986AC_SUBST(RIPD)
987AC_SUBST(RIPNGD)
988AC_SUBST(OSPFD)
989AC_SUBST(OSPF6D)
ajsd0199432004-12-22 14:03:52 +0000990AC_SUBST(WATCHQUAGGA)
jardin9e867fe2003-12-23 08:56:18 +0000991AC_SUBST(ISISD)
paul7ea487b2003-03-17 02:05:07 +0000992AC_SUBST(VTYSH)
993AC_SUBST(INCLUDES)
994AC_SUBST(CURSES)
995AC_SUBST(OSPFCLIENT)
paul1ef74ef2003-03-21 15:16:05 +0000996AC_SUBST(OSPFAPI)
paul7ea487b2003-03-17 02:05:07 +0000997AC_CHECK_LIB(c, inet_ntop, [AC_DEFINE(HAVE_INET_NTOP,,inet_ntop)])
998AC_CHECK_LIB(c, inet_pton, [AC_DEFINE(HAVE_INET_PTON,,inet_pton)])
999AC_CHECK_LIB(crypt, crypt)
1000AC_CHECK_LIB(resolv, res_init)
1001AC_CHECK_LIB(m, main)
1002
1003dnl ---------------------------------------------------
1004dnl BSD/OS 4.1 define inet_XtoY function as __inet_XtoY
1005dnl ---------------------------------------------------
paula159ed92003-06-04 11:01:45 +00001006AC_CHECK_FUNC(__inet_ntop, AC_DEFINE(HAVE_INET_NTOP,,__inet_ntop))
1007AC_CHECK_FUNC(__inet_pton, AC_DEFINE(HAVE_INET_PTON,,__inet_pton))
1008AC_CHECK_FUNC(__inet_aton, AC_DEFINE(HAVE_INET_ATON,,__inet_aton))
paul7ea487b2003-03-17 02:05:07 +00001009
1010dnl ---------------------------
1011dnl check system has GNU regexp
1012dnl ---------------------------
1013dnl AC_MSG_CHECKING(whether system has GNU regex)
1014AC_CHECK_LIB(c, regexec,
1015[AC_DEFINE(HAVE_GNU_REGEX,,GNU regexp library)
1016 LIB_REGEX=""],
1017[LIB_REGEX="regex.o"])
1018AC_SUBST(LIB_REGEX)
1019
1020dnl ------------------
paulb1fc9ac2006-01-31 10:09:27 +00001021dnl check Net-SNMP library
paul7ea487b2003-03-17 02:05:07 +00001022dnl ------------------
paulb1fc9ac2006-01-31 10:09:27 +00001023if test "${enable_snmp}" = "yes"; then
1024 LIBS="${LIBS} -lcrypto"
1025 AC_CHECK_LIB(netsnmp, asn_parse_int,
1026 [AC_DEFINE(HAVE_NETSNMP,,Net SNMP)
1027 AC_DEFINE(HAVE_SNMP,,SNMP)
1028 LIBS="${LIBS} -lnetsnmp"],
1029 [AC_MSG_ERROR([--enable-snmp given, but cannot find support for SNMP])])
1030
1031 for ac_snmp in /usr/include \
1032 /usr/local/include \
1033 /dev/null; do
1034 test -f "${ac_snmp}/net-snmp/library/asn1.h" && break
paul7ea487b2003-03-17 02:05:07 +00001035 done
paulb1fc9ac2006-01-31 10:09:27 +00001036
paul7ea487b2003-03-17 02:05:07 +00001037 case ${ac_snmp} in
paulb1fc9ac2006-01-31 10:09:27 +00001038 /dev/null)
1039 AC_MSG_ERROR([--enable-snmp given, but can not find header])
1040 ;;
1041 *)
1042 SNMP_INCLUDES="-I${ac_snmp}/net-snmp"
1043 SNMP_INCLUDES="${SNMP_INCLUDES} -I${ac_snmp}/net-snmp/library"
1044 ;;
paul7ea487b2003-03-17 02:05:07 +00001045 esac
paulb1fc9ac2006-01-31 10:09:27 +00001046
1047 AC_SUBST(SNMP_INCLUDES)
paul7ea487b2003-03-17 02:05:07 +00001048fi
1049
1050dnl ----------------------------
1051dnl check sa_len of sockaddr
1052dnl ----------------------------
1053AC_MSG_CHECKING(whether struct sockaddr has a sa_len field)
1054AC_TRY_COMPILE([#include <sys/types.h>
1055#include <sys/socket.h>
1056],[static struct sockaddr ac_i;int ac_j = sizeof (ac_i.sa_len);],
1057[AC_MSG_RESULT(yes)
1058 AC_DEFINE(HAVE_SA_LEN,,sa_len)],
1059 AC_MSG_RESULT(no))
1060
1061dnl ----------------------------
1062dnl check sin_len of sockaddr_in
1063dnl ----------------------------
1064AC_MSG_CHECKING(whether struct sockaddr_in has a sin_len field)
1065AC_TRY_COMPILE([#include <sys/types.h>
1066#include <netinet/in.h>
1067],[static struct sockaddr_in ac_i;int ac_j = sizeof (ac_i.sin_len);],
1068[AC_MSG_RESULT(yes)
1069 AC_DEFINE(HAVE_SIN_LEN,,sin_len)],
1070 AC_MSG_RESULT(no))
1071
1072dnl ----------------------------
1073dnl check sun_len of sockaddr_un
1074dnl ----------------------------
1075AC_MSG_CHECKING(whether struct sockaddr_un has a sun_len field)
1076AC_TRY_COMPILE([#include <sys/types.h>
1077#include <sys/un.h>
1078],[static struct sockaddr_un ac_i;int ac_j = sizeof (ac_i.sun_len);],
1079[AC_MSG_RESULT(yes)
1080 AC_DEFINE(HAVE_SUN_LEN,,sun_len)],
1081 AC_MSG_RESULT(no))
1082
1083dnl -----------------------------------
1084dnl check sin6_scope_id of sockaddr_in6
1085dnl -----------------------------------
1086if test "$zebra_cv_ipv6" = yes; then
1087 AC_MSG_CHECKING(whether struct sockaddr_in6 has a sin6_scope_id field)
1088 AC_TRY_COMPILE([#include <sys/types.h>
1089#include <netinet/in.h>
1090],[static struct sockaddr_in6 ac_i;int ac_j = sizeof (ac_i.sin6_scope_id);],
1091[AC_MSG_RESULT(yes)
1092 AC_DEFINE(HAVE_SIN6_SCOPE_ID,,scope id)],
1093 AC_MSG_RESULT(no))
1094fi
1095
1096dnl ----------------------------
1097dnl check socklen_t exist or not
1098dnl ----------------------------
1099AC_MSG_CHECKING(whther socklen_t is defined)
1100AC_TRY_COMPILE([#include <sys/types.h>
1101#include <sys/socket.h>
1102#include <netinet/in.h>
1103],[socklen_t ac_x;],
1104[AC_MSG_RESULT(yes)
1105 AC_DEFINE(HAVE_SOCKLEN_T,,socklen_t)],
1106 AC_MSG_RESULT(no))
1107
1108dnl ------------------------
1109dnl check struct sockaddr_dl
1110dnl ------------------------
1111AC_MSG_CHECKING(whether struct sockaddr_dl exist)
1112AC_EGREP_HEADER(sockaddr_dl,
1113net/if_dl.h,
1114[AC_MSG_RESULT(yes)
1115 AC_DEFINE(HAVE_SOCKADDR_DL,,sockaddr_dl)],
1116 AC_MSG_RESULT(no))
1117
1118dnl --------------------------
1119dnl check structure ifaliasreq
1120dnl --------------------------
1121AC_MSG_CHECKING(whether struct ifaliasreq exist)
1122AC_EGREP_HEADER(ifaliasreq,
1123net/if.h,
1124[AC_MSG_RESULT(yes)
1125 AC_DEFINE(HAVE_IFALIASREQ,,ifaliasreq)],
1126 AC_MSG_RESULT(no))
1127
1128dnl ----------------------------
1129dnl check structure in6_aliasreq
1130dnl ----------------------------
hasso71c0fb52003-05-25 20:18:13 +00001131AC_MSG_CHECKING(whether struct in6_aliasreq exist)
paul7ea487b2003-03-17 02:05:07 +00001132AC_EGREP_HEADER(in6_aliasreq,
1133netinet6/in6_var.h,
1134[AC_MSG_RESULT(yes)
1135 AC_DEFINE(HAVE_IN6_ALIASREQ,,in6_aliasreq)],
1136 AC_MSG_RESULT(no))
1137
hasso71c0fb52003-05-25 20:18:13 +00001138dnl -----------------------------------
1139dnl check ifra_lifetime of in6_aliasreq
1140dnl -----------------------------------
1141AC_MSG_CHECKING(whether in6_aliasreq.ifra_lifetime exist)
1142AC_TRY_COMPILE([#include <sys/types.h>
1143#include <netinet6/in6_var.h>
1144],[static struct if6_aliasreq ac_i;int ac_j = sizeof (ac_i.ifra_lifetime);],
1145[AC_MSG_RESULT(yes)
paula159ed92003-06-04 11:01:45 +00001146 AC_DEFINE(HAVE_IFRA_LIFETIME,,Have in6_aliasreq.ifra_lifetime)],
hasso71c0fb52003-05-25 20:18:13 +00001147 AC_MSG_RESULT(no))
1148
paul7ea487b2003-03-17 02:05:07 +00001149dnl ---------------------------
1150dnl check structure rt_addrinfo
1151dnl ---------------------------
1152AC_MSG_CHECKING(whether struct rt_addrinfo exist)
1153AC_EGREP_HEADER(rt_addrinfo,
1154net/route.h,
1155[AC_MSG_RESULT(yes)
1156 AC_DEFINE(HAVE_RT_ADDRINFO,,rt_addrinfo)],
1157 AC_MSG_RESULT(no))
1158
1159dnl --------------------------
1160dnl check structure in_pktinfo
1161dnl --------------------------
1162AC_MSG_CHECKING(whether struct in_pktinfo exist)
1163AC_TRY_COMPILE([#include <netinet/in.h>
1164],[struct in_pktinfo ac_x;],
1165[AC_MSG_RESULT(yes)
1166 AC_DEFINE(HAVE_INPKTINFO,,in_pktinfo)],
1167 AC_MSG_RESULT(no))
1168
vincent29c4c9b2005-03-25 13:05:47 +00001169dnl ----------------------------------
1170dnl check struct nd_opt_homeagent_info
1171dnl ----------------------------------
1172AC_MSG_CHECKING(whether struct nd_opt_homeagent_info exist)
1173AC_EGREP_HEADER(nd_opt_homeagent_info,
1174netinet/icmp6.h,
1175[AC_MSG_RESULT(yes)
1176 AC_DEFINE(HAVE_ND_OPT_HOMEAGENT_INFO,,nd_opt_homeagent_info)],
1177 AC_MSG_RESULT(no))
1178
1179dnl --------------------------------
1180dnl check struct nd_opt_adv_interval
1181dnl --------------------------------
1182AC_MSG_CHECKING(whether struct nd_opt_adv_interval exist)
1183AC_EGREP_HEADER(nd_opt_adv_interval,
1184netinet/icmp6.h,
1185[AC_MSG_RESULT(yes)
1186 AC_DEFINE(HAVE_ND_OPT_ADV_INTERVAL,,nd_opt_adv_interval)],
1187 AC_MSG_RESULT(no))
1188
1189dnl ------------------------------------
1190dnl check fields in nd_opt_adv_interval
1191dnl ------------------------------------
1192AC_MSG_CHECKING(whether nd_opt_ai_type field exist)
1193AC_EGREP_HEADER(nd_opt_ai_type,
1194netinet/icmp6.h,
1195[AC_MSG_RESULT(yes)
1196 AC_DEFINE(HAVE_ND_OPT_ADV_INTERVAL_AI_FIELDS,,nd_opt_ai_type)],
1197 AC_MSG_RESULT(no))
1198
paul7ea487b2003-03-17 02:05:07 +00001199dnl --------------------------------------
1200dnl checking for getrusage struct and call
1201dnl --------------------------------------
1202AC_MSG_CHECKING(whether getrusage is available)
1203AC_TRY_COMPILE([#include <sys/resource.h>
1204],[struct rusage ac_x; getrusage (RUSAGE_SELF, &ac_x);],
1205[AC_MSG_RESULT(yes)
1206 AC_DEFINE(HAVE_RUSAGE,,rusage)],
1207 AC_MSG_RESULT(no))
1208
pauledd7c242003-06-04 13:59:38 +00001209dnl -------------------
1210dnl capabilities checks
1211dnl -------------------
hasso41d3fc92004-04-06 11:59:00 +00001212if test "${enable_capabilities}" != "no"; then
1213 AC_MSG_CHECKING(whether prctl PR_SET_KEEPCAPS is available)
1214 AC_TRY_COMPILE([#include <sys/prctl.h>],[prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);],
1215 [AC_MSG_RESULT(yes)
1216 AC_DEFINE(HAVE_PR_SET_KEEPCAPS,,prctl)
1217 quagga_ac_keepcaps="yes"],
1218 AC_MSG_RESULT(no)
pauledd7c242003-06-04 13:59:38 +00001219 )
hasso41d3fc92004-04-06 11:59:00 +00001220 if test x"${quagga_ac_keepcaps}" = x"yes"; then
1221 AC_CHECK_HEADERS(sys/capability.h)
1222 fi
1223 if test x"${ac_cv_header_sys_capability_h}" = x"yes"; then
1224 AC_CHECK_LIB(cap, cap_init,
1225 [AC_DEFINE(HAVE_LCAPS,1,Capabilities)
1226 LIBCAP="-lcap"
paulceacedb2005-09-29 14:39:32 +00001227 quagga_ac_lcaps="yes"]
hasso41d3fc92004-04-06 11:59:00 +00001228 )
paulceacedb2005-09-29 14:39:32 +00001229 else
1230 AC_CHECK_HEADERS(priv.h,
1231 [AC_MSG_CHECKING(Solaris style privileges are available)
1232 AC_TRY_COMPILE([#include <priv.h>],[getpflags(PRIV_AWARE);],
1233 [AC_MSG_RESULT(yes)
1234 AC_DEFINE(HAVE_SOLARIS_CAPABILITIES,1,getpflags)
1235 quagga_ac_scaps="yes"],
1236 AC_MSG_RESULT(no)
1237 )
1238 ]
1239 )
1240 fi
1241 if test x"${quagga_ac_scaps}" = x"yes" \
1242 -o x"${quagga_ac_lcaps}" = x"yes"; then
1243 AC_DEFINE(HAVE_CAPABILITIES,1,capabilities)
hasso41d3fc92004-04-06 11:59:00 +00001244 fi
pauledd7c242003-06-04 13:59:38 +00001245fi
1246AC_SUBST(LIBCAP)
1247
ajs40abf232005-01-12 17:27:27 +00001248dnl -------------------
1249dnl test for ucontext.h
1250dnl -------------------
1251AC_CHECK_HEADERS(ucontext.h)
1252
paulfb2d1502003-06-04 09:40:54 +00001253dnl ---------------------------
1254dnl check for glibc 'backtrace'
1255dnl ---------------------------
1256if test "${glibc}" = "yes"; then
Paul Jakmafb66b292006-05-28 08:26:15 +00001257 AC_CHECK_HEADER([execinfo.h],
1258 [AC_CHECK_FUNC([backtrace],
1259 [AC_DEFINE(HAVE_GLIBC_BACKTRACE,,[Glibc backtrace])
1260 AC_DEFINE(HAVE_STACK_TRACE,,[Stack symbol decoding])
1261 ])
1262 ])
paulfb2d1502003-06-04 09:40:54 +00001263fi
1264
Paul Jakma41be32b2006-03-30 13:53:59 +00001265dnl -----------------------------------------
1266dnl check for malloc mallinfo struct and call
1267dnl this must try and link using LIBS, in
1268dnl order to check no alternative allocator
1269dnl has been specified, which might not provide
1270dnl mallinfo, e.g. such as Umem on Solaris.
1271dnl -----------------------------------------
1272AC_CHECK_HEADERS(malloc.h,
1273 [AC_MSG_CHECKING(whether mallinfo is available)
1274 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <malloc.h>]],
1275 [[struct mallinfo ac_x; ac_x = mallinfo ();]])],
1276 [AC_MSG_RESULT(yes)
1277 AC_DEFINE(HAVE_MALLINFO,,mallinfo)],
1278 AC_MSG_RESULT(no)
1279 )
1280 ]
1281)
1282
paul408ad942003-05-20 00:03:33 +00001283dnl ----------
1284dnl configure date
1285dnl ----------
1286CONFDATE=`date '+%Y%m%d'`
1287AC_SUBST(CONFDATE)
1288
paul7ea487b2003-03-17 02:05:07 +00001289dnl ------------------------------
paula159ed92003-06-04 11:01:45 +00001290dnl set paths for state directory
paul23bd12c2003-04-07 06:11:09 +00001291dnl ------------------------------
1292if test "${prefix}" = "NONE"; then
paule8f29842003-08-12 13:08:31 +00001293 quagga_statedir_prefix="";
paul23bd12c2003-04-07 06:11:09 +00001294else
paule8f29842003-08-12 13:08:31 +00001295 quagga_statedir_prefix=${prefix}
paul23bd12c2003-04-07 06:11:09 +00001296fi
1297if test "${localstatedir}" = '${prefix}/var'; then
paula159ed92003-06-04 11:01:45 +00001298 AC_CACHE_CHECK(state directory,ac_statedir,
paule8f29842003-08-12 13:08:31 +00001299 [for QUAGGA_STATE_DIR in ${quagga_statedir_prefix}/var/run dnl
1300 ${quagga_statedir_prefix}/var/adm dnl
1301 ${quagga_statedir_prefix}/etc dnl
paula159ed92003-06-04 11:01:45 +00001302 /var/run dnl
1303 /var/adm dnl
1304 /etc dnl
1305 /dev/null;
paul23bd12c2003-04-07 06:11:09 +00001306 do
paule8f29842003-08-12 13:08:31 +00001307 test -d $QUAGGA_STATE_DIR && break
paul23bd12c2003-04-07 06:11:09 +00001308 done
paule8f29842003-08-12 13:08:31 +00001309 quagga_statedir=$QUAGGA_STATE_DIR])
paul23bd12c2003-04-07 06:11:09 +00001310else
paule8f29842003-08-12 13:08:31 +00001311 quagga_statedir=${localstatedir}
paula159ed92003-06-04 11:01:45 +00001312 AC_MSG_CHECKING(directory to use for state file)
paule8f29842003-08-12 13:08:31 +00001313 AC_MSG_RESULT(${quagga_statedir})
paul26275b02005-04-11 07:10:47 +00001314 AC_SUBST(quagga_statedir)
paul23bd12c2003-04-07 06:11:09 +00001315fi
paule8f29842003-08-12 13:08:31 +00001316if test $quagga_statedir = "/dev/null"; then
paula159ed92003-06-04 11:01:45 +00001317 AC_MSG_ERROR('STATE DIRECTORY NOT FOUND! FIX OR SPECIFY --localstatedir!')
1318fi
1319
paule8f29842003-08-12 13:08:31 +00001320AC_DEFINE_UNQUOTED(PATH_ZEBRA_PID, "$quagga_statedir/zebra.pid",zebra PID)
1321AC_DEFINE_UNQUOTED(PATH_RIPD_PID, "$quagga_statedir/ripd.pid",ripd PID)
1322AC_DEFINE_UNQUOTED(PATH_RIPNGD_PID, "$quagga_statedir/ripngd.pid",ripngd PID)
1323AC_DEFINE_UNQUOTED(PATH_BGPD_PID, "$quagga_statedir/bgpd.pid",bgpd PID)
1324AC_DEFINE_UNQUOTED(PATH_OSPFD_PID, "$quagga_statedir/ospfd.pid",ospfd PID)
1325AC_DEFINE_UNQUOTED(PATH_OSPF6D_PID, "$quagga_statedir/ospf6d.pid",ospf6d PID)
jardin9e867fe2003-12-23 08:56:18 +00001326AC_DEFINE_UNQUOTED(PATH_ISISD_PID, "$quagga_statedir/isisd.pid",isisd PID)
ajsd0199432004-12-22 14:03:52 +00001327AC_DEFINE_UNQUOTED(PATH_WATCHQUAGGA_PID, "$quagga_statedir/watchquagga.pid",watchquagga PID)
paule8f29842003-08-12 13:08:31 +00001328AC_DEFINE_UNQUOTED(ZEBRA_SERV_PATH, "$quagga_statedir/zserv.api",zebra api socket)
1329AC_DEFINE_UNQUOTED(ZEBRA_VTYSH_PATH, "$quagga_statedir/zebra.vty",zebra vty socket)
1330AC_DEFINE_UNQUOTED(RIP_VTYSH_PATH, "$quagga_statedir/ripd.vty",rip vty socket)
1331AC_DEFINE_UNQUOTED(RIPNG_VTYSH_PATH, "$quagga_statedir/ripngd.vty",ripng vty socket)
1332AC_DEFINE_UNQUOTED(BGP_VTYSH_PATH, "$quagga_statedir/bgpd.vty",bgpd vty socket)
1333AC_DEFINE_UNQUOTED(OSPF_VTYSH_PATH, "$quagga_statedir/ospfd.vty",ospfd vty socket)
1334AC_DEFINE_UNQUOTED(OSPF6_VTYSH_PATH, "$quagga_statedir/ospf6d.vty",ospf6d vty socket)
jardin9e867fe2003-12-23 08:56:18 +00001335AC_DEFINE_UNQUOTED(ISIS_VTYSH_PATH, "$quagga_statedir/isisd.vty",isisd vty socket)
ajs515210b2004-12-22 15:35:12 +00001336AC_DEFINE_UNQUOTED(DAEMON_VTY_DIR, "$quagga_statedir",daemon vty directory)
paul7ea487b2003-03-17 02:05:07 +00001337
paul1eb8ef22005-04-07 07:30:20 +00001338dnl -------------------------------
1339dnl Quagga sources should always be
1340dnl current wrt interfaces. Dont
1341dnl allow deprecated interfaces to
1342dnl be exposed.
1343dnl -------------------------------
1344AC_DEFINE(QUAGGA_NO_DEPRECATED_INTERFACES, 1, Hide deprecated interfaces)
1345
paul7ea487b2003-03-17 02:05:07 +00001346dnl ---------------------------
1347dnl Check htonl works correctly
1348dnl ---------------------------
1349AC_MSG_CHECKING(for working htonl)
1350AC_CACHE_VAL(ac_cv_htonl_works, [
1351AC_TRY_LINK([#ifdef HAVE_SYS_TYPES_H
1352#include <sys/types.h>
1353#endif
1354#ifdef HAVE_NETDB_H
1355#include <netdb.h>
1356#endif
1357#ifdef HAVE_NETINET_IN_H
1358#include <netinet/in.h>
1359#endif],
1360[htonl (0);],
1361ac_cv_htonl_works=yes,
1362ac_cv_htonl_works=no)])
1363AC_MSG_RESULT($ac_cv_htonl_works)
1364
paul14c17fd2004-11-07 22:34:23 +00001365AC_CONFIG_FILES([Makefile lib/Makefile zebra/Makefile ripd/Makefile
ajsd0199432004-12-22 14:03:52 +00001366 ripngd/Makefile bgpd/Makefile ospfd/Makefile watchquagga/Makefile
jardin9e867fe2003-12-23 08:56:18 +00001367 ospf6d/Makefile isisd/Makefile vtysh/Makefile doc/Makefile
paul14c17fd2004-11-07 22:34:23 +00001368 ospfclient/Makefile tests/Makefile m4/Makefile redhat/Makefile
gdt69f1fc22004-08-27 15:57:35 +00001369 pkgsrc/Makefile
paul670bbf12004-11-12 09:05:00 +00001370 redhat/quagga.spec
gdtb7a97f82004-07-23 16:23:56 +00001371 lib/version.h
paul14c17fd2004-11-07 22:34:23 +00001372 doc/defines.texi
hassof695b012005-04-02 19:03:39 +00001373 isisd/topology/Makefile
gdtcbd04082004-08-31 18:16:36 +00001374 pkgsrc/bgpd.sh pkgsrc/ospf6d.sh pkgsrc/ospfd.sh
paulf31293a2004-11-12 09:27:04 +00001375 pkgsrc/ripd.sh pkgsrc/ripngd.sh pkgsrc/zebra.sh])
paul26275b02005-04-11 07:10:47 +00001376AC_CONFIG_FILES([solaris/Makefile])
1377
paul670bbf12004-11-12 09:05:00 +00001378AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl])
hasso48577192004-11-19 06:41:49 +00001379## Hack, but working solution to avoid rebuilding of quagga.info.
1380## It's already in CVS until texinfo 4.7 is more common.
paul14c1f182005-05-13 20:11:53 +00001381AC_CONFIG_COMMANDS([info-time],[touch doc/quagga.info])
paul14c17fd2004-11-07 22:34:23 +00001382AC_OUTPUT
paul7ea487b2003-03-17 02:05:07 +00001383
1384echo "
hassoc89f6492004-08-26 12:21:28 +00001385Quagga configuration
1386--------------------
1387quagga version : ${PACKAGE_VERSION}
paul7ea487b2003-03-17 02:05:07 +00001388host operationg system : ${host_os}
1389source code location : ${srcdir}
1390compiler : ${CC}
1391compiler flags : ${CFLAGS}
hasso2d582282005-03-28 15:29:07 +00001392includes : ${INCLUDES} ${SNMP_INCLUDES}
hassoc0689392005-08-25 12:00:58 +00001393linker flags : ${LDFLAGS} ${LIBS} ${LIBCAP} ${LIBREADLINE}
paule8f29842003-08-12 13:08:31 +00001394state file directory : ${quagga_statedir}
pauldc7a2bf2003-10-22 00:07:44 +00001395config file directory : `eval echo \`echo ${sysconfdir}\``
gdtd6b72f72003-12-03 17:24:27 +00001396example directory : `eval echo \`echo ${exampledir}\``
paul8d4aee52003-06-06 00:30:35 +00001397user to run as : ${enable_user}
1398group to run as : ${enable_group}
1399group for vty sockets : ${enable_vty_group}
gdtaa593d52003-12-22 20:15:53 +00001400config file mask : ${enable_configfile_mask}
1401log file mask : ${enable_logfile_mask}
pauldc7a2bf2003-10-22 00:07:44 +00001402
1403The above user and group must have read/write access to the state file
Paul Jakma105b8232006-05-28 08:02:41 +00001404directory and to the config files in the config file directory."
1405
1406if test x"$quagga_cv_gnu_make" = x"no"; then echo "
1407Warning: The ${MAKE-make} programme detected, either in your path or
1408via the MAKE variable, is not GNU Make. GNU make may be installed as
1409gmake on some systems. and is required to complete a build of Quagga
1410" > /dev/stderr
1411fi