blob: e6f49822dc2fc2528a767cfa453607c78e280177 [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
Greg Troxel0750e812007-02-03 22:30:02 +000064
hasso1969e4b2005-03-27 13:07:23 +000065AC_PROG_EGREP
Greg Troxel0750e812007-02-03 22:30:02 +000066AC_PROG_SED
hasso1969e4b2005-03-27 13:07:23 +000067
68dnl ------------------------------------------------------------------
69dnl Intel compiler check. Although Intel tries really hard to make icc
70dnl look like gcc, there are some differences. It's very verbose with
71dnl -Wall and it doesn't support the individual -W options.
72dnl ------------------------------------------------------------------
paul6a4b8832005-11-26 08:28:00 +000073if test "x${GCC}" = "xyes" ; then
74 COMPILER="GCC"
75 AC_MSG_CHECKING([whether we are using the Intel compiler])
76 AC_EGREP_CPP([^__INTEL_COMPILER], [__INTEL_COMPILER],
77 [AC_MSG_RESULT([no])],
78 [COMPILER="ICC"
79 AC_MSG_RESULT([yes])]
80 )
81else
82 AC_MSG_CHECKING([whether we are using SunPro compiler])
83 AC_EGREP_CPP([^__SUNPRO_C.*0x5(7|8|9)], ["__SUNPRO_C" __SUNPRO_C],
84 [AC_MSG_RESULT([no])],
85 [COMPILER="SUNPRO"
86 AC_MSG_RESULT([yes])]
87 )
88fi
paul7ea487b2003-03-17 02:05:07 +000089
paula49c0ff2004-09-30 06:08:58 +000090dnl ---------------------------------------------
paul7ea487b2003-03-17 02:05:07 +000091dnl If CLFAGS doesn\'t exist set default value
paula49c0ff2004-09-30 06:08:58 +000092dnl AC_PROG_CC will have set minimal default
93dnl already, eg "-O2 -g" for gcc, "-g" for others
paul27eebb32004-07-22 18:16:59 +000094dnl (Wall is gcc specific... have to make sure
95dnl gcc is being used before setting it)
96dnl
paul6a4b8832005-11-26 08:28:00 +000097dnl Intel icc 8.0 also sets __GNUC__,
98dnl but doesn't support all these fancy -W options.
hasso1969e4b2005-03-27 13:07:23 +000099dnl Intel compiler warnings we ignore:
100dnl 279: controlling expression is constant.
101dnl 869: parameter "xxx" was never referenced - to avoid massive warnings
102dnl about "self", "vty", "argc" and "argv" never referenced in DEFUN
103dnl macro.
104dnl 981: operands are evaluated in unspecified order.
paul6a4b8832005-11-26 08:28:00 +0000105dnl
106dnl Sun Studio 10 / SunPro 5.7 is also supported,
107dnl so lets set some sane CFLAGS for it.
108dnl ---------------------------------------------
hasso1969e4b2005-03-27 13:07:23 +0000109
paul6a4b8832005-11-26 08:28:00 +0000110AC_MSG_CHECKING([whether to set a default CFLAGS])
111if test "x${cflags_specified}" = "x" ; then
112 case ${COMPILER} in
113 "ICC")
114 CFLAGS="-Os -g -Wall -wd 279,869,981"
115 AC_MSG_RESULT([Intel default])
116 ;;
117 "GCC")
118 CFLAGS="-Os -fno-omit-frame-pointer -g -std=c99 -Wall"
119 CFLAGS="${CFLAGS} -Wsign-compare -Wpointer-arith"
120 CFLAGS="${CFLAGS} -Wbad-function-cast -Wwrite-strings"
121 CFLAGS="${CFLAGS} -Wmissing-prototypes -Wmissing-declarations"
122 CFLAGS="${CFLAGS} -Wchar-subscripts -Wcast-qual"
123 # TODO: conditionally addd -Wpacked if handled
124 AC_MSG_RESULT([gcc default])
125 ;;
126 "SUNPRO")
Paul Jakma105b8232006-05-28 08:02:41 +0000127 CFLAGS="-xO4 -v -g -xspace -xcode=pic32 -xstrconst -xc99"
paul6a4b8832005-11-26 08:28:00 +0000128 AC_MSG_RESULT([SunPro default])
129 ;;
130 *)
131 AC_MSG_RESULT([unknown compiler])
132 ;;
133 esac
134else
135 AC_MSG_RESULT([CFLAGS supplied by user])
hasso1969e4b2005-03-27 13:07:23 +0000136fi
137
paul7ea487b2003-03-17 02:05:07 +0000138dnl --------------
139dnl Check programs
140dnl --------------
paul7ea487b2003-03-17 02:05:07 +0000141AC_PROG_INSTALL
142AC_PROG_MAKE_SET
143AC_CHECK_TOOL(AR, ar)
144AC_CHECK_TOOL(RANLIB, ranlib, :)
145
Paul Jakma105b8232006-05-28 08:02:41 +0000146dnl ---------------------------
147dnl We, perhaps unfortunately,
148dnl depend on GNU Make specific
149dnl constructs.
150dnl Give the user a warning if
151dnl not GNU Make.
152dnl ---------------------------
153AC_CACHE_CHECK([if ${MAKE-make} is GNU make], [quagga_cv_gnu_make],
154 [quagga_cv_gnu_make=no
155 if ${MAKE-make} --version 2>/dev/null | \
156 grep '^GNU Make ' >/dev/null ; then
157 quagga_cv_gnu_make=yes;
158 fi
159 ]
160)
161
paul7ea487b2003-03-17 02:05:07 +0000162dnl ---------
163dnl AIX check
164dnl ---------
165AC_AIX
166
gdt87efd642004-06-30 17:36:11 +0000167dnl -------
168dnl libtool
169dnl -------
paul0fc42942004-08-19 04:41:21 +0000170AC_PROG_LIBTOOL
gdt87efd642004-06-30 17:36:11 +0000171
paul7ea487b2003-03-17 02:05:07 +0000172dnl ----------------------
173dnl Packages configuration
174dnl ----------------------
175AC_ARG_ENABLE(vtysh,
gdtfc9d0742004-06-30 14:25:12 +0000176[ --enable-vtysh include integrated vty shell for Quagga])
paul7ea487b2003-03-17 02:05:07 +0000177AC_ARG_ENABLE(ipv6,
178[ --disable-ipv6 turn off IPv6 related features and daemons])
179AC_ARG_ENABLE(zebra,
180[ --disable-zebra do not build zebra daemon])
181AC_ARG_ENABLE(bgpd,
182[ --disable-bgpd do not build bgpd])
183AC_ARG_ENABLE(ripd,
184[ --disable-ripd do not build ripd])
185AC_ARG_ENABLE(ripngd,
186[ --disable-ripngd do not build ripngd])
187AC_ARG_ENABLE(ospfd,
188[ --disable-ospfd do not build ospfd])
paul7ea487b2003-03-17 02:05:07 +0000189AC_ARG_ENABLE(ospf6d,
190[ --disable-ospf6d do not build ospf6d])
ajsd0199432004-12-22 14:03:52 +0000191AC_ARG_ENABLE(watchquagga,
192[ --disable-watchquagga do not build watchquagga])
jardin9e867fe2003-12-23 08:56:18 +0000193AC_ARG_ENABLE(isisd,
hassoae399ab2004-09-13 20:22:18 +0000194[ --enable-isisd build isisd])
paul7ea487b2003-03-17 02:05:07 +0000195AC_ARG_ENABLE(bgp-announce,
196[ --disable-bgp-announce, turn off BGP route announcement])
197AC_ARG_ENABLE(netlink,
198[ --enable-netlink force to use Linux netlink interface])
199AC_ARG_ENABLE(broken-aliases,
200[ --enable-broken-aliases enable aliases as distinct interfaces for Linux 2.2.X])
201AC_ARG_ENABLE(snmp,
202[ --enable-snmp enable SNMP support])
203AC_ARG_WITH(libpam,
204[ --with-libpam use libpam for PAM support in vtysh])
hasso71c0fb52003-05-25 20:18:13 +0000205AC_ARG_ENABLE(tcp-zebra,
paul7ea487b2003-03-17 02:05:07 +0000206[ --enable-tcp-zebra enable TCP/IP socket connection between zebra and protocol daemon])
paul7ea487b2003-03-17 02:05:07 +0000207AC_ARG_ENABLE(opaque-lsa,
paul1ef74ef2003-03-21 15:16:05 +0000208[ --enable-opaque-lsa enable OSPF Opaque-LSA with OSPFAPI support (RFC2370)])
209AC_ARG_ENABLE(ospfapi,
210[ --disable-ospfapi do not build OSPFAPI to access the OSPF LSA Database,
211 (this is the default if --enable-opaque-lsa is not set)])
212AC_ARG_ENABLE(ospfclient,
213[ --disable-ospfclient do not build OSPFAPI client for OSPFAPI,
214 (this is the default if --disable-ospfapi is set)])
paul7ea487b2003-03-17 02:05:07 +0000215AC_ARG_ENABLE(ospf-te,
216[ --enable-ospf-te enable Traffic Engineering Extension to OSPF])
217AC_ARG_ENABLE(multipath,
218[ --enable-multipath=ARG enable multipath function, ARG must be digit])
paule8f29842003-08-12 13:08:31 +0000219AC_ARG_ENABLE(quagga_user,
220[ --enable-user=ARG user to run Quagga suite as (default quagga)])
221AC_ARG_ENABLE(quagga_group,
222[ --enable-group=ARG group to run Quagga suite as (default quagga)])
pauledd7c242003-06-04 13:59:38 +0000223AC_ARG_ENABLE(vty_group,
paul6b6942f2004-10-22 04:55:05 +0000224[ --enable-vty-group=ARG set vty sockets to have specified group as owner])
gdtaa593d52003-12-22 20:15:53 +0000225AC_ARG_ENABLE(configfile_mask,
226[ --enable-configfile-mask=ARG set mask for config files])
227AC_ARG_ENABLE(logfile_mask,
228[ --enable-logfile-mask=ARG set mask for log files])
pauledd7c242003-06-04 13:59:38 +0000229
hasso71c0fb52003-05-25 20:18:13 +0000230AC_ARG_ENABLE(rtadv,
paul6b6942f2004-10-22 04:55:05 +0000231[ --disable-rtadv disable IPV6 router advertisement feature])
hassoca776982004-06-12 14:33:05 +0000232AC_ARG_ENABLE(irdp,
paul6b6942f2004-10-22 04:55:05 +0000233[ --enable-irdp enable IRDP server support in zebra])
hassof695b012005-04-02 19:03:39 +0000234AC_ARG_ENABLE(isis_topology,
235[ --enable-isis-topology enable IS-IS topology generator])
hasso41d3fc92004-04-06 11:59:00 +0000236AC_ARG_ENABLE(capabilities,
237[ --disable-capabilities disable using POSIX capabilities])
paul6b6942f2004-10-22 04:55:05 +0000238AC_ARG_ENABLE(gcc_ultra_verbose,
239[ --enable-gcc-ultra-verbose enable ultra verbose GCC warnings])
ajs3cade262004-12-29 17:50:22 +0000240AC_ARG_ENABLE(gcc-rdynamic,
241[ --enable-gcc-rdynamic enable gcc linking with -rdynamic for better backtraces])
ajs924b9222005-04-16 17:11:24 +0000242AC_ARG_ENABLE(time-check,
243[ --disable-time-check disable slow thread warning messages])
paul6b6942f2004-10-22 04:55:05 +0000244
245if test x"${enable_gcc_ultra_verbose}" = x"yes" ; then
246 CFLAGS="${CFLAGS} -W -Wcast-qual -Wstrict-prototypes"
247 CFLAGS="${CFLAGS} -Wmissing-declarations -Wmissing-noreturn"
248 CFLAGS="${CFLAGS} -Wmissing-format-attribute -Wunreachable-code"
249 CFLAGS="${CFLAGS} -Wpacked -Wpadded"
250fi
paul7ea487b2003-03-17 02:05:07 +0000251
ajs3cade262004-12-29 17:50:22 +0000252if test x"${enable_gcc_rdynamic}" = x"yes" ; then
253 LDFLAGS="${LDFLAGS} -rdynamic"
254fi
255
ajs924b9222005-04-16 17:11:24 +0000256if test x"${enable_time_check}" != x"no" ; then
257 if test x"${enable_time_check}" = x"yes" -o x"${enable_time_check}" = x ; then
258 AC_DEFINE(CONSUMED_TIME_CHECK,5000000,Consumed Time Check)
259 else
260 AC_DEFINE_UNQUOTED(CONSUMED_TIME_CHECK,$enable_time_check,Consumed Time Check)
261 fi
262fi
263
paul7ea487b2003-03-17 02:05:07 +0000264if test "${enable_broken_aliases}" = "yes"; then
265 if test "${enable_netlink}" = "yes"
266 then
267 echo "Sorry, you can't use netlink with broken aliases"
268 exit 1
269 fi
270 AC_DEFINE(HAVE_BROKEN_ALIASES,,Broken Alias)
271 enable_netlink=no
272fi
273
274if test "${enable_tcp_zebra}" = "yes"; then
275 AC_DEFINE(HAVE_TCP_ZEBRA,,Use TCP for zebra communication)
276fi
277
paul7ea487b2003-03-17 02:05:07 +0000278if test "${enable_opaque_lsa}" = "yes"; then
279 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
280fi
281
282if test "${enable_ospf_te}" = "yes"; then
283 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
284 AC_DEFINE(HAVE_OSPF_TE,,OSPF TE)
285fi
286
gdtd2a0ccc2003-12-03 18:13:48 +0000287AC_MSG_CHECKING(if zebra should be configurable to send Route Advertisements)
288if test "${enable_rtadv}" != "no"; then
hasso71c0fb52003-05-25 20:18:13 +0000289 AC_MSG_RESULT(yes)
gdtd2a0ccc2003-12-03 18:13:48 +0000290 AC_DEFINE(HAVE_RTADV,,Enable IPv6 Routing Advertisement support)
paul2487bea2003-05-25 23:51:31 +0000291else
292 AC_MSG_RESULT(no)
hasso71c0fb52003-05-25 20:18:13 +0000293fi
paul7ea487b2003-03-17 02:05:07 +0000294
hassoca776982004-06-12 14:33:05 +0000295if test "${enable_irdp}" = "yes"; then
296 AC_DEFINE(HAVE_IRDP,, IRDP )
297fi
298
hassof695b012005-04-02 19:03:39 +0000299if test "${enable_isisd}" = "yes" && test "${enable_isis_topology}" = yes; then
300 AC_DEFINE(TOPOLOGY_GENERATE,,Enable IS-IS topology generator code)
301 ISIS_TOPOLOGY_INCLUDES="-I./topology"
302 ISIS_TOPOLOGY_DIR="topology"
303 ISIS_TOPOLOGY_LIB="./topology/libtopology.a"
304fi
305
306AC_SUBST(ISIS_TOPOLOGY_INCLUDES)
307AC_SUBST(ISIS_TOPOLOGY_DIR)
308AC_SUBST(ISIS_TOPOLOGY_LIB)
309
paul79cb2162003-06-06 12:19:53 +0000310if test "${enable_user}" = "yes" || test x"${enable_user}" = x""; then
paule8f29842003-08-12 13:08:31 +0000311 enable_user="quagga"
pauledd7c242003-06-04 13:59:38 +0000312elif test "${enable_user}" = "no"; then
313 enable_user="root"
314fi
pauledd7c242003-06-04 13:59:38 +0000315
paul79cb2162003-06-06 12:19:53 +0000316if test "${enable_group}" = "yes" || test x"${enable_group}" = x""; then
paule8f29842003-08-12 13:08:31 +0000317 enable_group="quagga"
pauledd7c242003-06-04 13:59:38 +0000318elif test "${enable_group}" = "no"; then
319 enable_group="root"
320fi
pauledd7c242003-06-04 13:59:38 +0000321
322if test x"${enable_vty_group}" = x"yes" ; then
paul8d4aee52003-06-06 00:30:35 +0000323 AC_MSG_ERROR([--enable-vty-group requires a group as argument, not yes])
paul79cb2162003-06-06 12:19:53 +0000324elif test x"${enable_vty_group}" != x""; then
paul8d4aee52003-06-06 00:30:35 +0000325 if test x"${enable_vty_group}" != x"no"; then
pauledd7c242003-06-04 13:59:38 +0000326 AC_DEFINE_UNQUOTED(VTY_GROUP, "${enable_vty_group}", VTY Sockets Group)
327 fi
328fi
paul26275b02005-04-11 07:10:47 +0000329AC_SUBST([enable_user])
330AC_SUBST([enable_group])
331AC_SUBST([enable_vty_group])
332AC_DEFINE_UNQUOTED(QUAGGA_USER, "${enable_user}", Quagga User)
333AC_DEFINE_UNQUOTED(QUAGGA_GROUP, "${enable_group}", Quagga Group)
pauledd7c242003-06-04 13:59:38 +0000334
gdtaa593d52003-12-22 20:15:53 +0000335enable_configfile_mask=${enable_configfile_mask:-0600}
336AC_DEFINE_UNQUOTED(CONFIGFILE_MASK, ${enable_configfile_mask}, Mask for config files)
337
338enable_logfile_mask=${enable_logfile_mask:-0600}
339AC_DEFINE_UNQUOTED(LOGFILE_MASK, ${enable_logfile_mask}, Mask for log files)
340
paul7ea487b2003-03-17 02:05:07 +0000341changequote(, )dnl
342
343MULTIPATH_NUM=1
344
345case "${enable_multipath}" in
346 [0-9]|[1-9][0-9])
347 MULTIPATH_NUM="${enable_multipath}"
348 ;;
349 "")
350 ;;
351 *)
352 echo "Please specify digit to --enable-multipath ARG."
353 exit 1
354 ;;
355esac
356
357changequote([, ])dnl
358
359AC_SUBST(MULTIPATH_NUM)
360
361dnl -------------------
362dnl Check header files.
363dnl -------------------
pauldc7a2bf2003-10-22 00:07:44 +0000364AC_HEADER_STDC
365AC_CHECK_HEADERS([string.h stropts.h sys/conf.h sys/ksym.h sys/time.h \
366 sys/times.h sys/select.h sys/sysctl.h sys/sockio.h \
367 sys/types.h linux/version.h kvm.h netdb.h asm/types.h \
paul76367ea2005-11-14 14:05:35 +0000368 sys/param.h libutil.h limits.h stdint.h])
pauldc7a2bf2003-10-22 00:07:44 +0000369
paul835b7f12003-10-30 21:59:57 +0000370AC_CHECK_HEADERS([sys/socket.h netinet/in_systm.h netinet/in.h \
paulf3bd1a72003-11-02 07:29:11 +0000371 net/if_dl.h net/netopt.h inet/nd.h net/route.h \
paul835b7f12003-10-30 21:59:57 +0000372 net/if.h net/if_var.h netinet/in_var.h])
pauldc7a2bf2003-10-22 00:07:44 +0000373
gdtfa3232e2003-12-03 17:52:30 +0000374dnl V6 headers are checked below, after we check for v6
paul7ea487b2003-03-17 02:05:07 +0000375
376dnl check some types
377AC_C_CONST
378dnl AC_TYPE_PID_T
379AC_TYPE_SIGNAL
380
381dnl Some systems (Solaris 2.x) require libnsl (Network Services Library)
382case "$host" in
paulafd8a122005-03-12 06:36:10 +0000383 [*-sunos5.[6-7]*] | [*-solaris2.[6-7]*])
paul7ea487b2003-03-17 02:05:07 +0000384 opsys=sol2-6
paulafd8a122005-03-12 06:36:10 +0000385 AC_DEFINE(SUNOS_56, 1, SunOS 5.6 to 5.7)
paul19877dd2004-05-11 10:49:35 +0000386 AC_DEFINE(SUNOS_5, 1, SunOS 5)
paul7ea487b2003-03-17 02:05:07 +0000387 AC_CHECK_LIB(xnet, main)
388 CURSES=-lcurses
389 ;;
paul1b73de82005-04-10 16:31:51 +0000390 [*-sunos5.[8-9]] \
391 | [*-sunos5.1[0-9]] \
392 | [*-sunos5.1[0-9].[0-9]] \
393 | [*-solaris2.[8-9]] \
394 | [*-solaris2.1[0-9]] \
395 | [*-solaris2.1[0-9].[0-9]])
paulafd8a122005-03-12 06:36:10 +0000396 opsys=sol8
Paul Jakmafb66b292006-05-28 08:26:15 +0000397 AC_DEFINE(SUNOS_59, 1, [SunOS 5.8 up])
398 AC_DEFINE(SUNOS_5, 1, [SunOS 5])
paul19877dd2004-05-11 10:49:35 +0000399 AC_CHECK_LIB(socket, main)
400 AC_CHECK_LIB(nsl, main)
paul1b73de82005-04-10 16:31:51 +0000401 AC_CHECK_LIB(umem, main)
Paul Jakmafb66b292006-05-28 08:26:15 +0000402 AC_CHECK_FUNCS([printstack],
403 [AC_DEFINE([HAVE_PRINTSTACK],1,[Solaris printstack])
404 AC_DEFINE([HAVE_STACK_TRACE],1,[Stack symbols decode functionality])
405 ])
paul19877dd2004-05-11 10:49:35 +0000406 CURSES=-lcurses
407 ;;
paul7ea487b2003-03-17 02:05:07 +0000408 *-sunos5* | *-solaris2*)
paul19877dd2004-05-11 10:49:35 +0000409 AC_DEFINE(SUNOS_5,,SunOS 5, Unknown SunOS)
paul7ea487b2003-03-17 02:05:07 +0000410 AC_CHECK_LIB(socket, main)
411 AC_CHECK_LIB(nsl, main)
412 CURSES=-lcurses
413 ;;
hassoc45eb832005-02-19 13:58:06 +0000414 *-linux*)
paul7ea487b2003-03-17 02:05:07 +0000415 opsys=gnu-linux
416 AC_DEFINE(GNU_LINUX,,GNU Linux)
417 ;;
418 *-nec-sysv4*)
419 AC_CHECK_LIB(nsl, gethostbyname)
420 AC_CHECK_LIB(socket, socket)
421 ;;
paul7ea487b2003-03-17 02:05:07 +0000422 *-openbsd*)
423 opsys=openbsd
424 AC_DEFINE(OPEN_BSD,,OpenBSD)
425 ;;
426 *-bsdi*)
427 opsys=bsdi
428 OTHER_METHOD="mtu_kvm.o"
429 AC_CHECK_LIB(kvm, main)
430 ;;
paul49e3b3c2003-10-23 20:39:50 +0000431 *-irix6.5)
pauldc7a2bf2003-10-22 00:07:44 +0000432 opsys=irix
433 AC_DEFINE(IRIX_65,,IRIX 6.5)
434 ;;
paul7ea487b2003-03-17 02:05:07 +0000435esac
436
437dnl ---------------------
438dnl Integrated VTY option
439dnl ---------------------
440case "${enable_vtysh}" in
441 "yes") VTYSH="vtysh";
442 AC_DEFINE(VTYSH,,VTY shell)
gdtfc9d0742004-06-30 14:25:12 +0000443 AC_PATH_PROG(PERL, perl)
444dnl Vtysh uses libreadline, which looks for termcap functions at
445dnl configure time. We follow readline's search order.
446dnl The required procedures are in libtermcap on NetBSD, in
447dnl [TODO] on Linux, and in [TODO] on Solaris.
hassoc0689392005-08-25 12:00:58 +0000448 AC_CHECK_LIB(termcap, tputs, LIBREADLINE="$LIBREADLINE -ltermcap",
paula9694592005-08-25 14:50:05 +0000449 [AC_CHECK_LIB(tinfo, tputs, LIBREADLINE="$LIBREADLINE -ltinfo",
450 [AC_CHECK_LIB(curses, tputs, LIBREADLINE="$LIBREADLINE -lcurses",
451 [AC_CHECK_LIB(ncurses, tputs,
452 LIBREADLINE="$LIBREADLINE -lncurses")]
453 )]
454 )]
455 )
456 AC_CHECK_LIB(readline, main, LIBREADLINE="$LIBREADLINE -lreadline",,
457 "$LIBREADLINE")
paul7ea487b2003-03-17 02:05:07 +0000458 if test $ac_cv_lib_readline_main = no; then
gdtfc9d0742004-06-30 14:25:12 +0000459 AC_MSG_ERROR([vtysh needs libreadline but was not found and usable on your system.])
paul7ea487b2003-03-17 02:05:07 +0000460 fi
461 AC_CHECK_HEADER(readline/history.h)
462 if test $ac_cv_header_readline_history_h = no;then
463 AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
464 fi
paula9694592005-08-25 14:50:05 +0000465 AC_CHECK_LIB(readline, rl_completion_matches,
466 LIBREADLINE="$LIBREADLINE",, "$LIBREADLINE")
paul3d3de8c2003-05-23 10:33:49 +0000467 if test $ac_cv_lib_readline_rl_completion_matches = no; then
468 AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
469 fi
470 ;;
paul7ea487b2003-03-17 02:05:07 +0000471 "no" ) VTYSH="";;
472 * ) ;;
473esac
hassoc0689392005-08-25 12:00:58 +0000474AC_SUBST(LIBREADLINE)
paul7ea487b2003-03-17 02:05:07 +0000475
476dnl ----------
477dnl PAM module
478dnl ----------
479if test "$with_libpam" = "yes"; then
paul24cd4352003-05-06 12:16:27 +0000480 AC_CHECK_HEADER(security/pam_misc.h)
481 if test "$ac_cv_header_security_pam_misc_h" = yes; then
482 AC_DEFINE(HAVE_PAM_MISC_H,,Have pam_misc.h)
483 AC_DEFINE(PAM_CONV_FUNC,misc_conv,Have misc_conv)
484 pam_conv_func="misc_conv"
paul24cd4352003-05-06 12:16:27 +0000485 fi
paul24cd4352003-05-06 12:16:27 +0000486 AC_CHECK_HEADER(security/openpam.h)
487 if test "$ac_cv_header_security_openpam_h" = yes; then
488 AC_DEFINE(HAVE_OPENPAM_H,,Have openpam.h)
489 AC_DEFINE(PAM_CONV_FUNC,openpam_ttyconv,Have openpam_ttyconv)
490 pam_conv_func="openpam_ttyconv"
paul24cd4352003-05-06 12:16:27 +0000491 fi
492 if test -z "$ac_cv_header_security_pam_misc_h$ac_cv_header_security_openpam_h" ; then
493 AC_MSG_WARN([*** pam support will not be built ***])
494 with_libpam="no"
495 fi
496fi
497
498if test "$with_libpam" = "yes"; then
paul7ea487b2003-03-17 02:05:07 +0000499dnl took this test from proftpd's configure.in and suited to our needs
500dnl -------------------------------------------------------------------------
501dnl
502dnl This next check looks funky due to a linker problem with some versions
503dnl of the PAM library. Prior to 0.72 release, the Linux PAM shared library
504dnl omitted requiring libdl linking information. PAM-0.72 or better ships
505dnl with RedHat 6.2 and Debian 2.2 or better.
506AC_CHECK_LIB(pam, pam_start,
paul24cd4352003-05-06 12:16:27 +0000507 [AC_CHECK_LIB(pam, $pam_conv_func,
paul7ea487b2003-03-17 02:05:07 +0000508 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
509 LIBPAM="-lpam"],
510 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
511 LIBPAM="-lpam -lpam_misc"]
512 )
513 ],
514
515 [AC_CHECK_LIB(pam, pam_end,
paul24cd4352003-05-06 12:16:27 +0000516 [AC_CHECK_LIB(pam, $pam_conv_func,
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"],
paula159ed92003-06-04 11:01:45 +0000519 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
paul7ea487b2003-03-17 02:05:07 +0000520 LIBPAM="-lpam -ldl -lpam_misc"]
521 )
522 ],AC_MSG_WARN([*** pam support will not be built ***]),
523 [-ldl])
524 ]
525)
526fi
527AC_SUBST(LIBPAM)
528
529dnl -------------------------------
530dnl Endian-ness check
531dnl -------------------------------
532AC_WORDS_BIGENDIAN
533
534dnl -------------------------------
535dnl check the size in byte of the C
536dnl -------------------------------
537dnl AC_CHECK_SIZEOF(char)
538dnl AC_CHECK_SIZEOF(int)
539dnl AC_CHECK_SIZEOF(short)
540dnl AC_CHECK_SIZEOF(long)
541
542dnl ----------------------------
543dnl check existance of functions
544dnl ----------------------------
paul49e3b3c2003-10-23 20:39:50 +0000545AC_CHECK_FUNCS(memset memcpy strerror inet_aton daemon snprintf vsnprintf \
paul04bd4842003-10-24 04:24:39 +0000546 strlcat strlcpy if_nametoindex if_indextoname getifaddrs \
hassoe6a4feb2005-09-19 09:53:21 +0000547 fcntl strnlen strndup)
paula159ed92003-06-04 11:01:45 +0000548AC_CHECK_FUNCS(setproctitle, ,
549 [AC_CHECK_LIB(util, setproctitle,
550 [LIBS="$LIBS -lutil"
551 AC_DEFINE(HAVE_SETPROCTITLE,, Have setproctitle)
552 ]
553 )
554 ]
555)
paul7ea487b2003-03-17 02:05:07 +0000556
557dnl ------------------------------------
558dnl Determine routing get and set method
559dnl ------------------------------------
560AC_MSG_CHECKING(zebra between kernel interface method)
561if test x"$opsys" = x"gnu-linux"; then
562 if test "${enable_netlink}" = "yes";then
563 AC_MSG_RESULT(netlink)
564 RT_METHOD=rt_netlink.o
565 AC_DEFINE(HAVE_NETLINK,,netlink)
566 netlink=yes
567 elif test "${enable_netlink}" = "no"; then
568 AC_MSG_RESULT(ioctl)
569 RT_METHOD=rt_ioctl.o
570 netlink=no
571 else
572 AC_MSG_RESULT(netlink)
573 RT_METHOD=rt_netlink.o
574 AC_DEFINE(HAVE_NETLINK,,netlink)
575 netlink=yes
576 fi
paul19877dd2004-05-11 10:49:35 +0000577elif test x"$opsys" = x"sol2-6";then
578 AC_MSG_RESULT(Route socket)
579 KERNEL_METHOD="kernel_socket.o"
580 RT_METHOD="rt_socket.o"
paulafd8a122005-03-12 06:36:10 +0000581elif test x"$opsys" = x"sol8";then
paul19877dd2004-05-11 10:49:35 +0000582 AC_MSG_RESULT(Route socket)
583 KERNEL_METHOD="kernel_socket.o"
584 RT_METHOD="rt_socket.o"
585elif test "$opsys" = "irix" ; then
586 AC_MSG_RESULT(Route socket)
587 KERNEL_METHOD="kernel_socket.o"
588 RT_METHOD="rt_socket.o"
paul7ea487b2003-03-17 02:05:07 +0000589else
paul19877dd2004-05-11 10:49:35 +0000590 AC_TRY_RUN([#include <errno.h>
paul7ea487b2003-03-17 02:05:07 +0000591#include <sys/types.h>
592#include <sys/socket.h>
593
594main ()
595{
596 int ac_sock;
597
598 ac_sock = socket (AF_ROUTE, SOCK_RAW, 0);
599 if (ac_sock < 0 && errno == EINVAL)
600 exit (1);
601 exit (0);
602}],
603 [KERNEL_METHOD=kernel_socket.o
604 RT_METHOD=rt_socket.o
605 AC_MSG_RESULT(socket)],
606 [RT_METHOD=rt_ioctl.o
607 AC_MSG_RESULT(ioctl)],
608 [KERNEL_METHOD=kernel_socket.o
609 RT_METHOD=rt_socket.o
610 AC_MSG_RESULT(socket)])
paul7ea487b2003-03-17 02:05:07 +0000611fi
612AC_SUBST(RT_METHOD)
613AC_SUBST(KERNEL_METHOD)
614AC_SUBST(OTHER_METHOD)
615
ajsb99760a2005-01-04 16:24:43 +0000616dnl ------------------------------------
617dnl check for broken CMSG_FIRSTHDR macro
618dnl ------------------------------------
gdt6c200462005-01-04 17:02:48 +0000619AC_MSG_CHECKING(for broken CMSG_FIRSTHDR)
hasso5b087522005-04-03 23:46:37 +0000620AC_RUN_IFELSE([AC_LANG_SOURCE([[
ajsb99760a2005-01-04 16:24:43 +0000621#ifdef SUNOS_5
622#define _XPG4_2
623#define __EXTENSIONS__
624#endif
625#include <stdlib.h>
626#include <sys/types.h>
627#include <sys/socket.h>
628
629main()
630{
631 struct msghdr msg;
632 char buf[4];
633
634 msg.msg_control = buf;
635 msg.msg_controllen = 0;
636
637 if (CMSG_FIRSTHDR(&msg) != NULL)
638 exit(0);
639 exit (1);
hasso5b087522005-04-03 23:46:37 +0000640}]])],[AC_MSG_RESULT(yes - using workaround) AC_DEFINE(HAVE_BROKEN_CMSG_FIRSTHDR,,Broken CMSG_FIRSTHDR)],
hassod33e8d72005-04-03 13:07:21 +0000641[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
ajsb99760a2005-01-04 16:24:43 +0000642
paul7ea487b2003-03-17 02:05:07 +0000643dnl ------------------------------
644dnl check kernel route read method
645dnl ------------------------------
646AC_CACHE_CHECK(route read method check, zebra_rtread,
647[if test "$netlink" = yes; then
648 RTREAD_METHOD="rtread_netlink.o"
649 zebra_rtread="netlink"
650else
651for zebra_rtread in /proc/net/route /dev/ip /dev/null;
652do
653 test x`ls $zebra_rtread 2>/dev/null` = x"$zebra_rtread" && break
654done
655case $zebra_rtread in
656 "/proc/net/route") RTREAD_METHOD="rtread_proc.o"
657 zebra_rtread="proc";;
paul9c30ab62003-07-08 08:36:17 +0000658 "/dev/ip")
659 case "$host" in
660 *-freebsd*) RTREAD_METHOD=rtread_sysctl.o
661 zebra_rtread="sysctl";;
662 *) RTREAD_METHOD="rtread_getmsg.o"
663 zebra_rtread="getmsg";;
664 esac;;
paul7ea487b2003-03-17 02:05:07 +0000665 *) RTREAD_METHOD="rtread_sysctl.o"
666 zebra_rtread="sysctl";;
667esac
668fi])
669AC_SUBST(RTREAD_METHOD)
670
671dnl -----------------------------
672dnl check interface lookup method
673dnl -----------------------------
paul19877dd2004-05-11 10:49:35 +0000674IOCTL_METHOD=ioctl.o
paul7ea487b2003-03-17 02:05:07 +0000675AC_MSG_CHECKING(interface looking up method)
676if test "$netlink" = yes; then
677 AC_MSG_RESULT(netlink)
678 IF_METHOD=if_netlink.o
paul19877dd2004-05-11 10:49:35 +0000679elif test "$opsys" = "sol2-6";then
680 AC_MSG_RESULT(Solaris GIF)
681 IF_METHOD=if_ioctl.o
paulafd8a122005-03-12 06:36:10 +0000682elif test "$opsys" = "sol8";then
paul19877dd2004-05-11 10:49:35 +0000683 AC_MSG_RESULT(Solaris GLIF)
684 IF_METHOD=if_ioctl_solaris.o
685 IOCTL_METHOD=ioctl_solaris.o
686elif test "$opsys" = "irix" ; then
687 AC_MSG_RESULT(IRIX)
688 IF_METHOD=if_ioctl.o
689elif test "$opsys" = "openbsd";then
690 AC_MSG_RESULT(openbsd)
691 IF_METHOD=if_ioctl.o
692elif grep NET_RT_IFLIST /usr/include/sys/socket.h >/dev/null 2>&1; then
693 AC_MSG_RESULT(sysctl)
paul7ea487b2003-03-17 02:05:07 +0000694 IF_METHOD=if_sysctl.o
695 AC_DEFINE(HAVE_NET_RT_IFLIST,,NET_RT_IFLIST)
paul19877dd2004-05-11 10:49:35 +0000696else
paul7ea487b2003-03-17 02:05:07 +0000697 AC_MSG_RESULT(ioctl)
698 IF_METHOD=if_ioctl.o
paul7ea487b2003-03-17 02:05:07 +0000699fi
700AC_SUBST(IF_METHOD)
paul19877dd2004-05-11 10:49:35 +0000701AC_SUBST(IOCTL_METHOD)
paul7ea487b2003-03-17 02:05:07 +0000702
paul42c98192005-05-07 02:22:51 +0000703dnl ---------------------------------------------------------------
704dnl figure out how to specify an interface in multicast sockets API
705dnl ---------------------------------------------------------------
706AC_CHECK_MEMBERS([struct ip_mreqn.imr_ifindex],,,[#ifdef HAVE_SYS_TYPES_H
707#include <sys/types.h>
708#endif
709#ifdef HAVE_NETINET_IN_H
710#include <netinet/in.h>
711#endif])
712
713AC_MSG_CHECKING([for BSD struct ip_mreq hack])
714AC_TRY_COMPILE([#ifdef HAVE_SYS_PARAM_H
715#include <sys/param.h>
716#endif],[#if (defined(__FreeBSD__) && (__FreeBSD_version >= 500022 || (__FreeBSD_version < 500000 && __FreeBSD_version >= 440000))) || (defined(__NetBSD__) && defined(__NetBSD_Version__) && __NetBSD_Version__ >= 106010000)
717 return (0);
718#else
719 #error No support for BSD struct ip_mreq hack detected
720#endif],[AC_MSG_RESULT(yes)
721AC_DEFINE(HAVE_BSD_STRUCT_IP_MREQ_HACK,,[Can pass ifindex in struct ip_mreq])],
722AC_MSG_RESULT(no))
723
paul7ea487b2003-03-17 02:05:07 +0000724dnl -----------------------
725dnl check proc file system.
726dnl -----------------------
727if test -r /proc/net/dev; then
728 AC_DEFINE(HAVE_PROC_NET_DEV,,/proc/net/dev)
729 IF_PROC=if_proc.o
730fi
731
732if test -r /proc/net/if_inet6; then
733 AC_DEFINE(HAVE_PROC_NET_IF_INET6,,/proc/net/if_inet6)
734 IF_PROC=if_proc.o
735fi
736AC_SUBST(IF_PROC)
737
738dnl -----------------------------
739dnl check ipforward detect method
740dnl -----------------------------
741AC_CACHE_CHECK(ipforward method check, zebra_ipforward_path,
742[for zebra_ipforward_path in /proc/net/snmp /dev/ip /dev/null;
743do
744 test x`ls $zebra_ipforward_path 2>/dev/null` = x"$zebra_ipforward_path" && break
745done
746case $zebra_ipforward_path in
747 "/proc/net/snmp") IPFORWARD=ipforward_proc.o
748 zebra_ipforward_path="proc";;
749 "/dev/ip")
750 case "$host" in
751 *-nec-sysv4*) IPFORWARD=ipforward_ews.o
752 zebra_ipforward_path="ews";;
paul9c30ab62003-07-08 08:36:17 +0000753 *-freebsd*) IPFORWARD=ipforward_sysctl.o
754 zebra_ipforward_path="sysctl";;
paul7ea487b2003-03-17 02:05:07 +0000755 *) IPFORWARD=ipforward_solaris.o
756 zebra_ipforward_path="solaris";;
757 esac;;
758 *) IPFORWARD=ipforward_sysctl.o
759 zebra_ipforward_path="sysctl";;
760esac])
761AC_SUBST(IPFORWARD)
762
763AC_CHECK_FUNCS(getaddrinfo, [have_getaddrinfo=yes], [have_getaddrinfo=no])
764
765dnl ----------
766dnl IPv6 check
767dnl ----------
768AC_MSG_CHECKING(whether does this OS have IPv6 stack)
769if test "${enable_ipv6}" = "no"; then
770 AC_MSG_RESULT(disabled)
771else
772dnl ----------
773dnl INRIA IPv6
774dnl ----------
paula159ed92003-06-04 11:01:45 +0000775 if grep IPV6_INRIA_VERSION /usr/include/netinet/in.h >/dev/null 2>&1; then
776 zebra_cv_ipv6=yes
777 AC_DEFINE(HAVE_IPV6,1,INRIA IPv6)
778 AC_DEFINE(INRIA_IPV6,1,INRIA IPv6)
779 RIPNGD="ripngd"
780 OSPF6D="ospf6d"
781 LIB_IPV6=""
782 AC_MSG_RESULT(INRIA IPv6)
paul7ea487b2003-03-17 02:05:07 +0000783dnl ---------
784dnl KAME IPv6
785dnl ---------
paula159ed92003-06-04 11:01:45 +0000786 elif grep WIDE /usr/include/netinet6/in6.h >/dev/null 2>&1; then
787 zebra_cv_ipv6=yes
788 AC_DEFINE(HAVE_IPV6,1,KAME IPv6)
789 AC_DEFINE(KAME,1,KAME IPv6)
790 RIPNGD="ripngd"
791 OSPF6D="ospf6d"
792 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
paul7ea487b2003-03-17 02:05:07 +0000793 LIB_IPV6="-L/usr/local/v6/lib -linet6"
paula159ed92003-06-04 11:01:45 +0000794 fi
795 AC_MSG_RESULT(KAME)
hasso71c0fb52003-05-25 20:18:13 +0000796dnl -------------------------
797dnl MUSICA IPv6
798dnl default host check
799dnl It is not used by Kheops
800dnl -------------------------
paula159ed92003-06-04 11:01:45 +0000801 elif grep MUSICA /usr/include6/netinet6/in6.h >/dev/null 2>&1; then
802 zebra_cv_ipv6=yes
803 AC_DEFINE(HAVE_IPV6,1,Musicia IPv6)
804 AC_DEFINE(MUSICA,1,Musica IPv6 stack)
805 AC_DEFINE(KAME,1,KAME IPv6 stack)
806 RIPNGD="ripngd"
807 OSPF6D="ospf6d"
808 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
hasso71c0fb52003-05-25 20:18:13 +0000809 LIB_IPV6="-L/usr/local/v6/lib -linet6"
paula159ed92003-06-04 11:01:45 +0000810 fi
811 AC_MSG_RESULT(MUSICA)
paul7ea487b2003-03-17 02:05:07 +0000812dnl ---------
813dnl NRL check
814dnl ---------
paula159ed92003-06-04 11:01:45 +0000815 elif grep NRL /usr/include/netinet6/in6.h >/dev/null 2>&1; then
816 zebra_cv_ipv6=yes
817 AC_DEFINE(HAVE_IPV6,1,NRL IPv6)
818 AC_DEFINE(NRL,1,NRL)
819 RIPNGD="ripngd"
820 OSPF6D="ospf6d"
821 if test x"$opsys" = x"bsdi";then
paul7ea487b2003-03-17 02:05:07 +0000822 AC_DEFINE(BSDI_NRL,,BSDI)
823 AC_MSG_RESULT(BSDI_NRL)
paula159ed92003-06-04 11:01:45 +0000824 else
paul7ea487b2003-03-17 02:05:07 +0000825 AC_MSG_RESULT(NRL)
paula159ed92003-06-04 11:01:45 +0000826 fi
paul19877dd2004-05-11 10:49:35 +0000827dnl ------------------------------------
828dnl Solaris 9, 10 and potentially higher
829dnl ------------------------------------
paulafd8a122005-03-12 06:36:10 +0000830 elif test x"$opsys" = x"sol8"; then
paul19877dd2004-05-11 10:49:35 +0000831 zebra_cv_ipv6=yes;
832 AC_DEFINE(HAVE_IPV6, 1, IPv6)
833 AC_DEFINE(SOLARIS_IPV6, 1, Solaris IPv6)
834 RIPNGD="ripngd"
835 OSPF6D="ospf6d"
836 AC_MSG_RESULT(Solaris IPv6)
paul7ea487b2003-03-17 02:05:07 +0000837dnl ----------
838dnl Linux IPv6
839dnl ----------
paula159ed92003-06-04 11:01:45 +0000840 elif test "${enable_ipv6}" = "yes"; then
841 AC_EGREP_CPP(yes, [
842 #include <linux/version.h>
843 /* 2.1.128 or later */
844 #if LINUX_VERSION_CODE >= 0x020180
845 yes
846 #endif],
847 [zebra_cv_ipv6=yes
848 zebra_cv_linux_ipv6=yes
849 AC_MSG_RESULT(Linux IPv6)])
850 else
851 if test x`ls /proc/net/ipv6_route 2>/dev/null` = x"/proc/net/ipv6_route"
852 then
paul7ea487b2003-03-17 02:05:07 +0000853 zebra_cv_ipv6=yes
854 zebra_cv_linux_ipv6=yes
855 AC_MSG_RESULT(Linux IPv6)
paula159ed92003-06-04 11:01:45 +0000856 fi
857 fi
paul7ea487b2003-03-17 02:05:07 +0000858
paula159ed92003-06-04 11:01:45 +0000859 if test "$zebra_cv_linux_ipv6" = "yes";then
hasso850d39f2005-06-30 13:52:20 +0000860 AC_MSG_CHECKING(whether libc has IPv6 support)
861 AC_TRY_LINK([#include <netinet/in.h>
862 ],[ int a; a = (int) in6addr_any.s6_addr[0]; if (a != 12345) return a; ],
863 [AC_MSG_RESULT(yes)
864 zebra_cv_ipv6=yes
865 zebra_cv_linux_ipv6=yes],
866 [AC_MSG_RESULT(no)
867 zebra_cv_ipv6=no
868 zebra_cv_linux_ipv6=no])
869 fi
870
871 if test "$zebra_cv_linux_ipv6" = "yes";then
paula159ed92003-06-04 11:01:45 +0000872 AC_MSG_CHECKING(for GNU libc >= 2.1)
873 AC_DEFINE(HAVE_IPV6,1,Linux IPv6)
874 AC_EGREP_CPP(yes, [
paul7ea487b2003-03-17 02:05:07 +0000875#include <features.h>
876#if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
877 yes
paula159ed92003-06-04 11:01:45 +0000878#endif],
879 [glibc=yes
880 AC_DEFINE(LINUX_IPV6,1,Linux IPv6 stack)
881 AC_MSG_RESULT(yes)],
882 AC_MSG_RESULT(no)
883 )
884 RIPNGD="ripngd"
885 OSPF6D="ospf6d"
886 if test "$glibc" != "yes"; then
paul7ea487b2003-03-17 02:05:07 +0000887 INCLUDES="-I/usr/inet6/include"
888 if test x`ls /usr/inet6/lib/libinet6.a 2>/dev/null` != x;then
889 LIB_IPV6="-L/usr/inet6/lib -linet6"
890 fi
paula159ed92003-06-04 11:01:45 +0000891 fi
892 fi
paul7ea487b2003-03-17 02:05:07 +0000893
894dnl -----------------------
895dnl Set IPv6 related values
896dnl -----------------------
paula159ed92003-06-04 11:01:45 +0000897 LIBS="$LIB_IPV6 $LIBS"
898 AC_SUBST(LIB_IPV6)
paul7ea487b2003-03-17 02:05:07 +0000899
paula159ed92003-06-04 11:01:45 +0000900 if test x"$RIPNGD" = x""; then
901 AC_MSG_RESULT(IPv4 only)
902 fi
paul7ea487b2003-03-17 02:05:07 +0000903fi
904
gdtfa3232e2003-12-03 17:52:30 +0000905dnl ------------------
906dnl IPv6 header checks
907dnl ------------------
908if test "x${zebra_cv_ipv6}" = "xyes"; then
909AC_CHECK_HEADERS([netinet6/in6.h netinet/in6_var.h netinet/icmp6.h \
910 netinet6/in6_var.h netinet6/nd6.h])
911fi
912
paul7ea487b2003-03-17 02:05:07 +0000913dnl --------------------
914dnl Daemon disable check
915dnl --------------------
916if test "${enable_zebra}" = "no";then
917 ZEBRA=""
918else
919 ZEBRA="zebra"
920fi
921
922if test "${enable_bgpd}" = "no";then
923 BGPD=""
924else
925 BGPD="bgpd"
926fi
927
928if test "${enable_ripd}" = "no";then
929 RIPD=""
930else
931 RIPD="ripd"
932fi
933
934if test "${enable_ospfd}" = "no";then
935 OSPFD=""
936else
937 OSPFD="ospfd"
938fi
939
ajsd0199432004-12-22 14:03:52 +0000940if test "${enable_watchquagga}" = "no";then
941 WATCHQUAGGA=""
942else
943 WATCHQUAGGA="watchquagga"
944fi
945
paul1ef74ef2003-03-21 15:16:05 +0000946OSPFCLIENT=""
947if test "${enable_opaque_lsa}" = "yes"; then
948 if test "${enable_ospfapi}" != "no";then
paul9a569842003-03-28 01:45:13 +0000949 AC_DEFINE(SUPPORT_OSPF_API,,OSPFAPI)
paul1ef74ef2003-03-21 15:16:05 +0000950
951 if test "${enable_ospfclient}" != "no";then
952 OSPFCLIENT="ospfclient"
953 fi
954 fi
955
paul7ea487b2003-03-17 02:05:07 +0000956fi
957
958case "${enable_ripngd}" in
959 "yes") RIPNGD="ripngd";;
960 "no" ) RIPNGD="";;
961 * ) ;;
962esac
963
964case "${enable_ospf6d}" in
965 "yes") OSPF6D="ospf6d";;
966 "no" ) OSPF6D="";;
967 * ) ;;
968esac
969
jardin9e867fe2003-12-23 08:56:18 +0000970case "${enable_isisd}" in
971 "yes") ISISD="isisd";;
972 "no" ) ISISD="";;
hassoae399ab2004-09-13 20:22:18 +0000973 * ) ;;
jardin9e867fe2003-12-23 08:56:18 +0000974esac
975
paul7ea487b2003-03-17 02:05:07 +0000976if test "${enable_bgp_announce}" = "no";then
977 AC_DEFINE(DISABLE_BGP_ANNOUNCE,,Disable BGP installation to zebra)
978fi
979
980AC_SUBST(ZEBRA)
981AC_SUBST(BGPD)
982AC_SUBST(RIPD)
983AC_SUBST(RIPNGD)
984AC_SUBST(OSPFD)
985AC_SUBST(OSPF6D)
ajsd0199432004-12-22 14:03:52 +0000986AC_SUBST(WATCHQUAGGA)
jardin9e867fe2003-12-23 08:56:18 +0000987AC_SUBST(ISISD)
paul7ea487b2003-03-17 02:05:07 +0000988AC_SUBST(VTYSH)
989AC_SUBST(INCLUDES)
990AC_SUBST(CURSES)
991AC_SUBST(OSPFCLIENT)
paul1ef74ef2003-03-21 15:16:05 +0000992AC_SUBST(OSPFAPI)
paul7ea487b2003-03-17 02:05:07 +0000993AC_CHECK_LIB(c, inet_ntop, [AC_DEFINE(HAVE_INET_NTOP,,inet_ntop)])
994AC_CHECK_LIB(c, inet_pton, [AC_DEFINE(HAVE_INET_PTON,,inet_pton)])
995AC_CHECK_LIB(crypt, crypt)
996AC_CHECK_LIB(resolv, res_init)
997AC_CHECK_LIB(m, main)
998
999dnl ---------------------------------------------------
1000dnl BSD/OS 4.1 define inet_XtoY function as __inet_XtoY
1001dnl ---------------------------------------------------
paula159ed92003-06-04 11:01:45 +00001002AC_CHECK_FUNC(__inet_ntop, AC_DEFINE(HAVE_INET_NTOP,,__inet_ntop))
1003AC_CHECK_FUNC(__inet_pton, AC_DEFINE(HAVE_INET_PTON,,__inet_pton))
1004AC_CHECK_FUNC(__inet_aton, AC_DEFINE(HAVE_INET_ATON,,__inet_aton))
paul7ea487b2003-03-17 02:05:07 +00001005
1006dnl ---------------------------
1007dnl check system has GNU regexp
1008dnl ---------------------------
1009dnl AC_MSG_CHECKING(whether system has GNU regex)
1010AC_CHECK_LIB(c, regexec,
1011[AC_DEFINE(HAVE_GNU_REGEX,,GNU regexp library)
1012 LIB_REGEX=""],
1013[LIB_REGEX="regex.o"])
1014AC_SUBST(LIB_REGEX)
1015
1016dnl ------------------
paulb1fc9ac2006-01-31 10:09:27 +00001017dnl check Net-SNMP library
paul7ea487b2003-03-17 02:05:07 +00001018dnl ------------------
paulb1fc9ac2006-01-31 10:09:27 +00001019if test "${enable_snmp}" = "yes"; then
1020 LIBS="${LIBS} -lcrypto"
1021 AC_CHECK_LIB(netsnmp, asn_parse_int,
1022 [AC_DEFINE(HAVE_NETSNMP,,Net SNMP)
1023 AC_DEFINE(HAVE_SNMP,,SNMP)
1024 LIBS="${LIBS} -lnetsnmp"],
1025 [AC_MSG_ERROR([--enable-snmp given, but cannot find support for SNMP])])
1026
1027 for ac_snmp in /usr/include \
1028 /usr/local/include \
1029 /dev/null; do
1030 test -f "${ac_snmp}/net-snmp/library/asn1.h" && break
paul7ea487b2003-03-17 02:05:07 +00001031 done
paulb1fc9ac2006-01-31 10:09:27 +00001032
paul7ea487b2003-03-17 02:05:07 +00001033 case ${ac_snmp} in
paulb1fc9ac2006-01-31 10:09:27 +00001034 /dev/null)
1035 AC_MSG_ERROR([--enable-snmp given, but can not find header])
1036 ;;
1037 *)
1038 SNMP_INCLUDES="-I${ac_snmp}/net-snmp"
1039 SNMP_INCLUDES="${SNMP_INCLUDES} -I${ac_snmp}/net-snmp/library"
1040 ;;
paul7ea487b2003-03-17 02:05:07 +00001041 esac
paulb1fc9ac2006-01-31 10:09:27 +00001042
1043 AC_SUBST(SNMP_INCLUDES)
paul7ea487b2003-03-17 02:05:07 +00001044fi
1045
1046dnl ----------------------------
1047dnl check sa_len of sockaddr
1048dnl ----------------------------
1049AC_MSG_CHECKING(whether struct sockaddr has a sa_len field)
1050AC_TRY_COMPILE([#include <sys/types.h>
1051#include <sys/socket.h>
1052],[static struct sockaddr ac_i;int ac_j = sizeof (ac_i.sa_len);],
1053[AC_MSG_RESULT(yes)
1054 AC_DEFINE(HAVE_SA_LEN,,sa_len)],
1055 AC_MSG_RESULT(no))
1056
1057dnl ----------------------------
1058dnl check sin_len of sockaddr_in
1059dnl ----------------------------
1060AC_MSG_CHECKING(whether struct sockaddr_in has a sin_len field)
1061AC_TRY_COMPILE([#include <sys/types.h>
1062#include <netinet/in.h>
1063],[static struct sockaddr_in ac_i;int ac_j = sizeof (ac_i.sin_len);],
1064[AC_MSG_RESULT(yes)
1065 AC_DEFINE(HAVE_SIN_LEN,,sin_len)],
1066 AC_MSG_RESULT(no))
1067
1068dnl ----------------------------
1069dnl check sun_len of sockaddr_un
1070dnl ----------------------------
1071AC_MSG_CHECKING(whether struct sockaddr_un has a sun_len field)
1072AC_TRY_COMPILE([#include <sys/types.h>
1073#include <sys/un.h>
1074],[static struct sockaddr_un ac_i;int ac_j = sizeof (ac_i.sun_len);],
1075[AC_MSG_RESULT(yes)
1076 AC_DEFINE(HAVE_SUN_LEN,,sun_len)],
1077 AC_MSG_RESULT(no))
1078
1079dnl -----------------------------------
1080dnl check sin6_scope_id of sockaddr_in6
1081dnl -----------------------------------
1082if test "$zebra_cv_ipv6" = yes; then
1083 AC_MSG_CHECKING(whether struct sockaddr_in6 has a sin6_scope_id field)
1084 AC_TRY_COMPILE([#include <sys/types.h>
1085#include <netinet/in.h>
1086],[static struct sockaddr_in6 ac_i;int ac_j = sizeof (ac_i.sin6_scope_id);],
1087[AC_MSG_RESULT(yes)
1088 AC_DEFINE(HAVE_SIN6_SCOPE_ID,,scope id)],
1089 AC_MSG_RESULT(no))
1090fi
1091
1092dnl ----------------------------
1093dnl check socklen_t exist or not
1094dnl ----------------------------
1095AC_MSG_CHECKING(whther socklen_t is defined)
1096AC_TRY_COMPILE([#include <sys/types.h>
1097#include <sys/socket.h>
1098#include <netinet/in.h>
1099],[socklen_t ac_x;],
1100[AC_MSG_RESULT(yes)
1101 AC_DEFINE(HAVE_SOCKLEN_T,,socklen_t)],
1102 AC_MSG_RESULT(no))
1103
1104dnl ------------------------
1105dnl check struct sockaddr_dl
1106dnl ------------------------
1107AC_MSG_CHECKING(whether struct sockaddr_dl exist)
1108AC_EGREP_HEADER(sockaddr_dl,
1109net/if_dl.h,
1110[AC_MSG_RESULT(yes)
1111 AC_DEFINE(HAVE_SOCKADDR_DL,,sockaddr_dl)],
1112 AC_MSG_RESULT(no))
1113
1114dnl --------------------------
1115dnl check structure ifaliasreq
1116dnl --------------------------
1117AC_MSG_CHECKING(whether struct ifaliasreq exist)
1118AC_EGREP_HEADER(ifaliasreq,
1119net/if.h,
1120[AC_MSG_RESULT(yes)
1121 AC_DEFINE(HAVE_IFALIASREQ,,ifaliasreq)],
1122 AC_MSG_RESULT(no))
1123
1124dnl ----------------------------
1125dnl check structure in6_aliasreq
1126dnl ----------------------------
hasso71c0fb52003-05-25 20:18:13 +00001127AC_MSG_CHECKING(whether struct in6_aliasreq exist)
paul7ea487b2003-03-17 02:05:07 +00001128AC_EGREP_HEADER(in6_aliasreq,
1129netinet6/in6_var.h,
1130[AC_MSG_RESULT(yes)
1131 AC_DEFINE(HAVE_IN6_ALIASREQ,,in6_aliasreq)],
1132 AC_MSG_RESULT(no))
1133
hasso71c0fb52003-05-25 20:18:13 +00001134dnl -----------------------------------
1135dnl check ifra_lifetime of in6_aliasreq
1136dnl -----------------------------------
1137AC_MSG_CHECKING(whether in6_aliasreq.ifra_lifetime exist)
1138AC_TRY_COMPILE([#include <sys/types.h>
1139#include <netinet6/in6_var.h>
1140],[static struct if6_aliasreq ac_i;int ac_j = sizeof (ac_i.ifra_lifetime);],
1141[AC_MSG_RESULT(yes)
paula159ed92003-06-04 11:01:45 +00001142 AC_DEFINE(HAVE_IFRA_LIFETIME,,Have in6_aliasreq.ifra_lifetime)],
hasso71c0fb52003-05-25 20:18:13 +00001143 AC_MSG_RESULT(no))
1144
paul7ea487b2003-03-17 02:05:07 +00001145dnl ---------------------------
1146dnl check structure rt_addrinfo
1147dnl ---------------------------
1148AC_MSG_CHECKING(whether struct rt_addrinfo exist)
1149AC_EGREP_HEADER(rt_addrinfo,
1150net/route.h,
1151[AC_MSG_RESULT(yes)
1152 AC_DEFINE(HAVE_RT_ADDRINFO,,rt_addrinfo)],
1153 AC_MSG_RESULT(no))
1154
1155dnl --------------------------
1156dnl check structure in_pktinfo
1157dnl --------------------------
1158AC_MSG_CHECKING(whether struct in_pktinfo exist)
1159AC_TRY_COMPILE([#include <netinet/in.h>
1160],[struct in_pktinfo ac_x;],
1161[AC_MSG_RESULT(yes)
1162 AC_DEFINE(HAVE_INPKTINFO,,in_pktinfo)],
1163 AC_MSG_RESULT(no))
1164
vincent29c4c9b2005-03-25 13:05:47 +00001165dnl ----------------------------------
1166dnl check struct nd_opt_homeagent_info
1167dnl ----------------------------------
1168AC_MSG_CHECKING(whether struct nd_opt_homeagent_info exist)
1169AC_EGREP_HEADER(nd_opt_homeagent_info,
1170netinet/icmp6.h,
1171[AC_MSG_RESULT(yes)
1172 AC_DEFINE(HAVE_ND_OPT_HOMEAGENT_INFO,,nd_opt_homeagent_info)],
1173 AC_MSG_RESULT(no))
1174
1175dnl --------------------------------
1176dnl check struct nd_opt_adv_interval
1177dnl --------------------------------
1178AC_MSG_CHECKING(whether struct nd_opt_adv_interval exist)
1179AC_EGREP_HEADER(nd_opt_adv_interval,
1180netinet/icmp6.h,
1181[AC_MSG_RESULT(yes)
1182 AC_DEFINE(HAVE_ND_OPT_ADV_INTERVAL,,nd_opt_adv_interval)],
1183 AC_MSG_RESULT(no))
1184
1185dnl ------------------------------------
1186dnl check fields in nd_opt_adv_interval
1187dnl ------------------------------------
1188AC_MSG_CHECKING(whether nd_opt_ai_type field exist)
1189AC_EGREP_HEADER(nd_opt_ai_type,
1190netinet/icmp6.h,
1191[AC_MSG_RESULT(yes)
1192 AC_DEFINE(HAVE_ND_OPT_ADV_INTERVAL_AI_FIELDS,,nd_opt_ai_type)],
1193 AC_MSG_RESULT(no))
1194
paul7ea487b2003-03-17 02:05:07 +00001195dnl --------------------------------------
1196dnl checking for getrusage struct and call
1197dnl --------------------------------------
1198AC_MSG_CHECKING(whether getrusage is available)
1199AC_TRY_COMPILE([#include <sys/resource.h>
1200],[struct rusage ac_x; getrusage (RUSAGE_SELF, &ac_x);],
1201[AC_MSG_RESULT(yes)
1202 AC_DEFINE(HAVE_RUSAGE,,rusage)],
1203 AC_MSG_RESULT(no))
1204
pauledd7c242003-06-04 13:59:38 +00001205dnl -------------------
1206dnl capabilities checks
1207dnl -------------------
hasso41d3fc92004-04-06 11:59:00 +00001208if test "${enable_capabilities}" != "no"; then
1209 AC_MSG_CHECKING(whether prctl PR_SET_KEEPCAPS is available)
1210 AC_TRY_COMPILE([#include <sys/prctl.h>],[prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);],
1211 [AC_MSG_RESULT(yes)
1212 AC_DEFINE(HAVE_PR_SET_KEEPCAPS,,prctl)
1213 quagga_ac_keepcaps="yes"],
1214 AC_MSG_RESULT(no)
pauledd7c242003-06-04 13:59:38 +00001215 )
hasso41d3fc92004-04-06 11:59:00 +00001216 if test x"${quagga_ac_keepcaps}" = x"yes"; then
1217 AC_CHECK_HEADERS(sys/capability.h)
1218 fi
1219 if test x"${ac_cv_header_sys_capability_h}" = x"yes"; then
1220 AC_CHECK_LIB(cap, cap_init,
1221 [AC_DEFINE(HAVE_LCAPS,1,Capabilities)
1222 LIBCAP="-lcap"
paulceacedb2005-09-29 14:39:32 +00001223 quagga_ac_lcaps="yes"]
hasso41d3fc92004-04-06 11:59:00 +00001224 )
paulceacedb2005-09-29 14:39:32 +00001225 else
1226 AC_CHECK_HEADERS(priv.h,
1227 [AC_MSG_CHECKING(Solaris style privileges are available)
1228 AC_TRY_COMPILE([#include <priv.h>],[getpflags(PRIV_AWARE);],
1229 [AC_MSG_RESULT(yes)
1230 AC_DEFINE(HAVE_SOLARIS_CAPABILITIES,1,getpflags)
1231 quagga_ac_scaps="yes"],
1232 AC_MSG_RESULT(no)
1233 )
1234 ]
1235 )
1236 fi
1237 if test x"${quagga_ac_scaps}" = x"yes" \
1238 -o x"${quagga_ac_lcaps}" = x"yes"; then
1239 AC_DEFINE(HAVE_CAPABILITIES,1,capabilities)
hasso41d3fc92004-04-06 11:59:00 +00001240 fi
pauledd7c242003-06-04 13:59:38 +00001241fi
1242AC_SUBST(LIBCAP)
1243
ajs40abf232005-01-12 17:27:27 +00001244dnl -------------------
1245dnl test for ucontext.h
1246dnl -------------------
1247AC_CHECK_HEADERS(ucontext.h)
1248
paulfb2d1502003-06-04 09:40:54 +00001249dnl ---------------------------
1250dnl check for glibc 'backtrace'
1251dnl ---------------------------
1252if test "${glibc}" = "yes"; then
Paul Jakmafb66b292006-05-28 08:26:15 +00001253 AC_CHECK_HEADER([execinfo.h],
1254 [AC_CHECK_FUNC([backtrace],
1255 [AC_DEFINE(HAVE_GLIBC_BACKTRACE,,[Glibc backtrace])
1256 AC_DEFINE(HAVE_STACK_TRACE,,[Stack symbol decoding])
1257 ])
1258 ])
paulfb2d1502003-06-04 09:40:54 +00001259fi
1260
Paul Jakma41be32b2006-03-30 13:53:59 +00001261dnl -----------------------------------------
1262dnl check for malloc mallinfo struct and call
1263dnl this must try and link using LIBS, in
1264dnl order to check no alternative allocator
1265dnl has been specified, which might not provide
1266dnl mallinfo, e.g. such as Umem on Solaris.
1267dnl -----------------------------------------
1268AC_CHECK_HEADERS(malloc.h,
1269 [AC_MSG_CHECKING(whether mallinfo is available)
1270 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <malloc.h>]],
1271 [[struct mallinfo ac_x; ac_x = mallinfo ();]])],
1272 [AC_MSG_RESULT(yes)
1273 AC_DEFINE(HAVE_MALLINFO,,mallinfo)],
1274 AC_MSG_RESULT(no)
1275 )
1276 ]
1277)
1278
paul408ad942003-05-20 00:03:33 +00001279dnl ----------
1280dnl configure date
1281dnl ----------
1282CONFDATE=`date '+%Y%m%d'`
1283AC_SUBST(CONFDATE)
1284
paul7ea487b2003-03-17 02:05:07 +00001285dnl ------------------------------
paula159ed92003-06-04 11:01:45 +00001286dnl set paths for state directory
paul23bd12c2003-04-07 06:11:09 +00001287dnl ------------------------------
1288if test "${prefix}" = "NONE"; then
paule8f29842003-08-12 13:08:31 +00001289 quagga_statedir_prefix="";
paul23bd12c2003-04-07 06:11:09 +00001290else
paule8f29842003-08-12 13:08:31 +00001291 quagga_statedir_prefix=${prefix}
paul23bd12c2003-04-07 06:11:09 +00001292fi
1293if test "${localstatedir}" = '${prefix}/var'; then
paula159ed92003-06-04 11:01:45 +00001294 AC_CACHE_CHECK(state directory,ac_statedir,
paule8f29842003-08-12 13:08:31 +00001295 [for QUAGGA_STATE_DIR in ${quagga_statedir_prefix}/var/run dnl
1296 ${quagga_statedir_prefix}/var/adm dnl
1297 ${quagga_statedir_prefix}/etc dnl
paula159ed92003-06-04 11:01:45 +00001298 /var/run dnl
1299 /var/adm dnl
1300 /etc dnl
1301 /dev/null;
paul23bd12c2003-04-07 06:11:09 +00001302 do
paule8f29842003-08-12 13:08:31 +00001303 test -d $QUAGGA_STATE_DIR && break
paul23bd12c2003-04-07 06:11:09 +00001304 done
paule8f29842003-08-12 13:08:31 +00001305 quagga_statedir=$QUAGGA_STATE_DIR])
paul23bd12c2003-04-07 06:11:09 +00001306else
paule8f29842003-08-12 13:08:31 +00001307 quagga_statedir=${localstatedir}
paula159ed92003-06-04 11:01:45 +00001308 AC_MSG_CHECKING(directory to use for state file)
paule8f29842003-08-12 13:08:31 +00001309 AC_MSG_RESULT(${quagga_statedir})
paul26275b02005-04-11 07:10:47 +00001310 AC_SUBST(quagga_statedir)
paul23bd12c2003-04-07 06:11:09 +00001311fi
paule8f29842003-08-12 13:08:31 +00001312if test $quagga_statedir = "/dev/null"; then
paula159ed92003-06-04 11:01:45 +00001313 AC_MSG_ERROR('STATE DIRECTORY NOT FOUND! FIX OR SPECIFY --localstatedir!')
1314fi
1315
paule8f29842003-08-12 13:08:31 +00001316AC_DEFINE_UNQUOTED(PATH_ZEBRA_PID, "$quagga_statedir/zebra.pid",zebra PID)
1317AC_DEFINE_UNQUOTED(PATH_RIPD_PID, "$quagga_statedir/ripd.pid",ripd PID)
1318AC_DEFINE_UNQUOTED(PATH_RIPNGD_PID, "$quagga_statedir/ripngd.pid",ripngd PID)
1319AC_DEFINE_UNQUOTED(PATH_BGPD_PID, "$quagga_statedir/bgpd.pid",bgpd PID)
1320AC_DEFINE_UNQUOTED(PATH_OSPFD_PID, "$quagga_statedir/ospfd.pid",ospfd PID)
1321AC_DEFINE_UNQUOTED(PATH_OSPF6D_PID, "$quagga_statedir/ospf6d.pid",ospf6d PID)
jardin9e867fe2003-12-23 08:56:18 +00001322AC_DEFINE_UNQUOTED(PATH_ISISD_PID, "$quagga_statedir/isisd.pid",isisd PID)
ajsd0199432004-12-22 14:03:52 +00001323AC_DEFINE_UNQUOTED(PATH_WATCHQUAGGA_PID, "$quagga_statedir/watchquagga.pid",watchquagga PID)
paule8f29842003-08-12 13:08:31 +00001324AC_DEFINE_UNQUOTED(ZEBRA_SERV_PATH, "$quagga_statedir/zserv.api",zebra api socket)
1325AC_DEFINE_UNQUOTED(ZEBRA_VTYSH_PATH, "$quagga_statedir/zebra.vty",zebra vty socket)
1326AC_DEFINE_UNQUOTED(RIP_VTYSH_PATH, "$quagga_statedir/ripd.vty",rip vty socket)
1327AC_DEFINE_UNQUOTED(RIPNG_VTYSH_PATH, "$quagga_statedir/ripngd.vty",ripng vty socket)
1328AC_DEFINE_UNQUOTED(BGP_VTYSH_PATH, "$quagga_statedir/bgpd.vty",bgpd vty socket)
1329AC_DEFINE_UNQUOTED(OSPF_VTYSH_PATH, "$quagga_statedir/ospfd.vty",ospfd vty socket)
1330AC_DEFINE_UNQUOTED(OSPF6_VTYSH_PATH, "$quagga_statedir/ospf6d.vty",ospf6d vty socket)
jardin9e867fe2003-12-23 08:56:18 +00001331AC_DEFINE_UNQUOTED(ISIS_VTYSH_PATH, "$quagga_statedir/isisd.vty",isisd vty socket)
ajs515210b2004-12-22 15:35:12 +00001332AC_DEFINE_UNQUOTED(DAEMON_VTY_DIR, "$quagga_statedir",daemon vty directory)
paul7ea487b2003-03-17 02:05:07 +00001333
paul1eb8ef22005-04-07 07:30:20 +00001334dnl -------------------------------
1335dnl Quagga sources should always be
1336dnl current wrt interfaces. Dont
1337dnl allow deprecated interfaces to
1338dnl be exposed.
1339dnl -------------------------------
1340AC_DEFINE(QUAGGA_NO_DEPRECATED_INTERFACES, 1, Hide deprecated interfaces)
1341
paul7ea487b2003-03-17 02:05:07 +00001342dnl ---------------------------
1343dnl Check htonl works correctly
1344dnl ---------------------------
1345AC_MSG_CHECKING(for working htonl)
1346AC_CACHE_VAL(ac_cv_htonl_works, [
1347AC_TRY_LINK([#ifdef HAVE_SYS_TYPES_H
1348#include <sys/types.h>
1349#endif
1350#ifdef HAVE_NETDB_H
1351#include <netdb.h>
1352#endif
1353#ifdef HAVE_NETINET_IN_H
1354#include <netinet/in.h>
1355#endif],
1356[htonl (0);],
1357ac_cv_htonl_works=yes,
1358ac_cv_htonl_works=no)])
1359AC_MSG_RESULT($ac_cv_htonl_works)
1360
paul14c17fd2004-11-07 22:34:23 +00001361AC_CONFIG_FILES([Makefile lib/Makefile zebra/Makefile ripd/Makefile
ajsd0199432004-12-22 14:03:52 +00001362 ripngd/Makefile bgpd/Makefile ospfd/Makefile watchquagga/Makefile
jardin9e867fe2003-12-23 08:56:18 +00001363 ospf6d/Makefile isisd/Makefile vtysh/Makefile doc/Makefile
paul14c17fd2004-11-07 22:34:23 +00001364 ospfclient/Makefile tests/Makefile m4/Makefile redhat/Makefile
gdt69f1fc22004-08-27 15:57:35 +00001365 pkgsrc/Makefile
paul670bbf12004-11-12 09:05:00 +00001366 redhat/quagga.spec
gdtb7a97f82004-07-23 16:23:56 +00001367 lib/version.h
paul14c17fd2004-11-07 22:34:23 +00001368 doc/defines.texi
hassof695b012005-04-02 19:03:39 +00001369 isisd/topology/Makefile
gdtcbd04082004-08-31 18:16:36 +00001370 pkgsrc/bgpd.sh pkgsrc/ospf6d.sh pkgsrc/ospfd.sh
paulf31293a2004-11-12 09:27:04 +00001371 pkgsrc/ripd.sh pkgsrc/ripngd.sh pkgsrc/zebra.sh])
paul26275b02005-04-11 07:10:47 +00001372AC_CONFIG_FILES([solaris/Makefile])
1373
paul670bbf12004-11-12 09:05:00 +00001374AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl])
hasso48577192004-11-19 06:41:49 +00001375## Hack, but working solution to avoid rebuilding of quagga.info.
1376## It's already in CVS until texinfo 4.7 is more common.
paul14c1f182005-05-13 20:11:53 +00001377AC_CONFIG_COMMANDS([info-time],[touch doc/quagga.info])
paul14c17fd2004-11-07 22:34:23 +00001378AC_OUTPUT
paul7ea487b2003-03-17 02:05:07 +00001379
1380echo "
hassoc89f6492004-08-26 12:21:28 +00001381Quagga configuration
1382--------------------
1383quagga version : ${PACKAGE_VERSION}
paul7ea487b2003-03-17 02:05:07 +00001384host operationg system : ${host_os}
1385source code location : ${srcdir}
1386compiler : ${CC}
1387compiler flags : ${CFLAGS}
hasso2d582282005-03-28 15:29:07 +00001388includes : ${INCLUDES} ${SNMP_INCLUDES}
hassoc0689392005-08-25 12:00:58 +00001389linker flags : ${LDFLAGS} ${LIBS} ${LIBCAP} ${LIBREADLINE}
paule8f29842003-08-12 13:08:31 +00001390state file directory : ${quagga_statedir}
pauldc7a2bf2003-10-22 00:07:44 +00001391config file directory : `eval echo \`echo ${sysconfdir}\``
gdtd6b72f72003-12-03 17:24:27 +00001392example directory : `eval echo \`echo ${exampledir}\``
paul8d4aee52003-06-06 00:30:35 +00001393user to run as : ${enable_user}
1394group to run as : ${enable_group}
1395group for vty sockets : ${enable_vty_group}
gdtaa593d52003-12-22 20:15:53 +00001396config file mask : ${enable_configfile_mask}
1397log file mask : ${enable_logfile_mask}
pauldc7a2bf2003-10-22 00:07:44 +00001398
1399The above user and group must have read/write access to the state file
Paul Jakma105b8232006-05-28 08:02:41 +00001400directory and to the config files in the config file directory."
1401
1402if test x"$quagga_cv_gnu_make" = x"no"; then echo "
1403Warning: The ${MAKE-make} programme detected, either in your path or
1404via the MAKE variable, is not GNU Make. GNU make may be installed as
1405gmake on some systems. and is required to complete a build of Quagga
1406" > /dev/stderr
1407fi