blob: 22077bf78a85b17c200d993f32292a24d72bab23 [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 Troxel0750e812007-02-03 22:30:02 +000067AC_PROG_SED
hasso1969e4b2005-03-27 13:07:23 +000068
69dnl ------------------------------------------------------------------
70dnl Intel compiler check. Although Intel tries really hard to make icc
71dnl look like gcc, there are some differences. It's very verbose with
72dnl -Wall and it doesn't support the individual -W options.
73dnl ------------------------------------------------------------------
paul6a4b8832005-11-26 08:28:00 +000074if test "x${GCC}" = "xyes" ; then
75 COMPILER="GCC"
76 AC_MSG_CHECKING([whether we are using the Intel compiler])
77 AC_EGREP_CPP([^__INTEL_COMPILER], [__INTEL_COMPILER],
78 [AC_MSG_RESULT([no])],
79 [COMPILER="ICC"
80 AC_MSG_RESULT([yes])]
81 )
82else
83 AC_MSG_CHECKING([whether we are using SunPro compiler])
84 AC_EGREP_CPP([^__SUNPRO_C.*0x5(7|8|9)], ["__SUNPRO_C" __SUNPRO_C],
85 [AC_MSG_RESULT([no])],
86 [COMPILER="SUNPRO"
87 AC_MSG_RESULT([yes])]
88 )
89fi
paul7ea487b2003-03-17 02:05:07 +000090
paula49c0ff2004-09-30 06:08:58 +000091dnl ---------------------------------------------
paul7ea487b2003-03-17 02:05:07 +000092dnl If CLFAGS doesn\'t exist set default value
paula49c0ff2004-09-30 06:08:58 +000093dnl AC_PROG_CC will have set minimal default
94dnl already, eg "-O2 -g" for gcc, "-g" for others
paul27eebb32004-07-22 18:16:59 +000095dnl (Wall is gcc specific... have to make sure
96dnl gcc is being used before setting it)
97dnl
paul6a4b8832005-11-26 08:28:00 +000098dnl Intel icc 8.0 also sets __GNUC__,
99dnl but doesn't support all these fancy -W options.
hasso1969e4b2005-03-27 13:07:23 +0000100dnl Intel compiler warnings we ignore:
101dnl 279: controlling expression is constant.
102dnl 869: parameter "xxx" was never referenced - to avoid massive warnings
103dnl about "self", "vty", "argc" and "argv" never referenced in DEFUN
104dnl macro.
105dnl 981: operands are evaluated in unspecified order.
paul6a4b8832005-11-26 08:28:00 +0000106dnl
107dnl Sun Studio 10 / SunPro 5.7 is also supported,
108dnl so lets set some sane CFLAGS for it.
109dnl ---------------------------------------------
hasso1969e4b2005-03-27 13:07:23 +0000110
paul6a4b8832005-11-26 08:28:00 +0000111AC_MSG_CHECKING([whether to set a default CFLAGS])
112if test "x${cflags_specified}" = "x" ; then
113 case ${COMPILER} in
114 "ICC")
115 CFLAGS="-Os -g -Wall -wd 279,869,981"
116 AC_MSG_RESULT([Intel default])
117 ;;
118 "GCC")
119 CFLAGS="-Os -fno-omit-frame-pointer -g -std=c99 -Wall"
120 CFLAGS="${CFLAGS} -Wsign-compare -Wpointer-arith"
121 CFLAGS="${CFLAGS} -Wbad-function-cast -Wwrite-strings"
122 CFLAGS="${CFLAGS} -Wmissing-prototypes -Wmissing-declarations"
123 CFLAGS="${CFLAGS} -Wchar-subscripts -Wcast-qual"
124 # TODO: conditionally addd -Wpacked if handled
125 AC_MSG_RESULT([gcc default])
126 ;;
127 "SUNPRO")
Paul Jakma105b8232006-05-28 08:02:41 +0000128 CFLAGS="-xO4 -v -g -xspace -xcode=pic32 -xstrconst -xc99"
paul6a4b8832005-11-26 08:28:00 +0000129 AC_MSG_RESULT([SunPro default])
130 ;;
131 *)
132 AC_MSG_RESULT([unknown compiler])
133 ;;
134 esac
135else
136 AC_MSG_RESULT([CFLAGS supplied by user])
hasso1969e4b2005-03-27 13:07:23 +0000137fi
138
paul7ea487b2003-03-17 02:05:07 +0000139dnl --------------
140dnl Check programs
141dnl --------------
paul7ea487b2003-03-17 02:05:07 +0000142AC_PROG_INSTALL
143AC_PROG_MAKE_SET
144AC_CHECK_TOOL(AR, ar)
145AC_CHECK_TOOL(RANLIB, ranlib, :)
146
Paul Jakma105b8232006-05-28 08:02:41 +0000147dnl ---------------------------
148dnl We, perhaps unfortunately,
149dnl depend on GNU Make specific
150dnl constructs.
151dnl Give the user a warning if
152dnl not GNU Make.
153dnl ---------------------------
154AC_CACHE_CHECK([if ${MAKE-make} is GNU make], [quagga_cv_gnu_make],
155 [quagga_cv_gnu_make=no
156 if ${MAKE-make} --version 2>/dev/null | \
157 grep '^GNU Make ' >/dev/null ; then
158 quagga_cv_gnu_make=yes;
159 fi
160 ]
161)
162
paul7ea487b2003-03-17 02:05:07 +0000163dnl ---------
164dnl AIX check
165dnl ---------
166AC_AIX
167
gdt87efd642004-06-30 17:36:11 +0000168dnl -------
169dnl libtool
170dnl -------
paul0fc42942004-08-19 04:41:21 +0000171AC_PROG_LIBTOOL
gdt87efd642004-06-30 17:36:11 +0000172
paul7ea487b2003-03-17 02:05:07 +0000173dnl ----------------------
174dnl Packages configuration
175dnl ----------------------
176AC_ARG_ENABLE(vtysh,
gdtfc9d0742004-06-30 14:25:12 +0000177[ --enable-vtysh include integrated vty shell for Quagga])
paul7ea487b2003-03-17 02:05:07 +0000178AC_ARG_ENABLE(ipv6,
179[ --disable-ipv6 turn off IPv6 related features and daemons])
180AC_ARG_ENABLE(zebra,
181[ --disable-zebra do not build zebra daemon])
182AC_ARG_ENABLE(bgpd,
183[ --disable-bgpd do not build bgpd])
184AC_ARG_ENABLE(ripd,
185[ --disable-ripd do not build ripd])
186AC_ARG_ENABLE(ripngd,
187[ --disable-ripngd do not build ripngd])
188AC_ARG_ENABLE(ospfd,
189[ --disable-ospfd do not build ospfd])
paul7ea487b2003-03-17 02:05:07 +0000190AC_ARG_ENABLE(ospf6d,
191[ --disable-ospf6d do not build ospf6d])
ajsd0199432004-12-22 14:03:52 +0000192AC_ARG_ENABLE(watchquagga,
193[ --disable-watchquagga do not build watchquagga])
jardin9e867fe2003-12-23 08:56:18 +0000194AC_ARG_ENABLE(isisd,
hassoae399ab2004-09-13 20:22:18 +0000195[ --enable-isisd build isisd])
paul7ea487b2003-03-17 02:05:07 +0000196AC_ARG_ENABLE(bgp-announce,
197[ --disable-bgp-announce, turn off BGP route announcement])
198AC_ARG_ENABLE(netlink,
199[ --enable-netlink force to use Linux netlink interface])
200AC_ARG_ENABLE(broken-aliases,
201[ --enable-broken-aliases enable aliases as distinct interfaces for Linux 2.2.X])
202AC_ARG_ENABLE(snmp,
203[ --enable-snmp enable SNMP support])
204AC_ARG_WITH(libpam,
205[ --with-libpam use libpam for PAM support in vtysh])
hasso71c0fb52003-05-25 20:18:13 +0000206AC_ARG_ENABLE(tcp-zebra,
paul7ea487b2003-03-17 02:05:07 +0000207[ --enable-tcp-zebra enable TCP/IP socket connection between zebra and protocol daemon])
paul7ea487b2003-03-17 02:05:07 +0000208AC_ARG_ENABLE(opaque-lsa,
paul1ef74ef2003-03-21 15:16:05 +0000209[ --enable-opaque-lsa enable OSPF Opaque-LSA with OSPFAPI support (RFC2370)])
210AC_ARG_ENABLE(ospfapi,
211[ --disable-ospfapi do not build OSPFAPI to access the OSPF LSA Database,
212 (this is the default if --enable-opaque-lsa is not set)])
213AC_ARG_ENABLE(ospfclient,
214[ --disable-ospfclient do not build OSPFAPI client for OSPFAPI,
215 (this is the default if --disable-ospfapi is set)])
paul7ea487b2003-03-17 02:05:07 +0000216AC_ARG_ENABLE(ospf-te,
217[ --enable-ospf-te enable Traffic Engineering Extension to OSPF])
218AC_ARG_ENABLE(multipath,
219[ --enable-multipath=ARG enable multipath function, ARG must be digit])
paule8f29842003-08-12 13:08:31 +0000220AC_ARG_ENABLE(quagga_user,
221[ --enable-user=ARG user to run Quagga suite as (default quagga)])
222AC_ARG_ENABLE(quagga_group,
223[ --enable-group=ARG group to run Quagga suite as (default quagga)])
pauledd7c242003-06-04 13:59:38 +0000224AC_ARG_ENABLE(vty_group,
paul6b6942f2004-10-22 04:55:05 +0000225[ --enable-vty-group=ARG set vty sockets to have specified group as owner])
gdtaa593d52003-12-22 20:15:53 +0000226AC_ARG_ENABLE(configfile_mask,
227[ --enable-configfile-mask=ARG set mask for config files])
228AC_ARG_ENABLE(logfile_mask,
229[ --enable-logfile-mask=ARG set mask for log files])
pauledd7c242003-06-04 13:59:38 +0000230
hasso71c0fb52003-05-25 20:18:13 +0000231AC_ARG_ENABLE(rtadv,
paul6b6942f2004-10-22 04:55:05 +0000232[ --disable-rtadv disable IPV6 router advertisement feature])
hassoca776982004-06-12 14:33:05 +0000233AC_ARG_ENABLE(irdp,
paul6b6942f2004-10-22 04:55:05 +0000234[ --enable-irdp enable IRDP server support in zebra])
hassof695b012005-04-02 19:03:39 +0000235AC_ARG_ENABLE(isis_topology,
236[ --enable-isis-topology enable IS-IS topology generator])
hasso41d3fc92004-04-06 11:59:00 +0000237AC_ARG_ENABLE(capabilities,
238[ --disable-capabilities disable using POSIX capabilities])
paul6b6942f2004-10-22 04:55:05 +0000239AC_ARG_ENABLE(gcc_ultra_verbose,
240[ --enable-gcc-ultra-verbose enable ultra verbose GCC warnings])
ajs3cade262004-12-29 17:50:22 +0000241AC_ARG_ENABLE(gcc-rdynamic,
242[ --enable-gcc-rdynamic enable gcc linking with -rdynamic for better backtraces])
ajs924b9222005-04-16 17:11:24 +0000243AC_ARG_ENABLE(time-check,
244[ --disable-time-check disable slow thread warning messages])
paul6b6942f2004-10-22 04:55:05 +0000245
246if test x"${enable_gcc_ultra_verbose}" = x"yes" ; then
247 CFLAGS="${CFLAGS} -W -Wcast-qual -Wstrict-prototypes"
248 CFLAGS="${CFLAGS} -Wmissing-declarations -Wmissing-noreturn"
249 CFLAGS="${CFLAGS} -Wmissing-format-attribute -Wunreachable-code"
250 CFLAGS="${CFLAGS} -Wpacked -Wpadded"
251fi
paul7ea487b2003-03-17 02:05:07 +0000252
ajs3cade262004-12-29 17:50:22 +0000253if test x"${enable_gcc_rdynamic}" = x"yes" ; then
254 LDFLAGS="${LDFLAGS} -rdynamic"
255fi
256
ajs924b9222005-04-16 17:11:24 +0000257if test x"${enable_time_check}" != x"no" ; then
258 if test x"${enable_time_check}" = x"yes" -o x"${enable_time_check}" = x ; then
259 AC_DEFINE(CONSUMED_TIME_CHECK,5000000,Consumed Time Check)
260 else
261 AC_DEFINE_UNQUOTED(CONSUMED_TIME_CHECK,$enable_time_check,Consumed Time Check)
262 fi
263fi
264
paul7ea487b2003-03-17 02:05:07 +0000265if test "${enable_broken_aliases}" = "yes"; then
266 if test "${enable_netlink}" = "yes"
267 then
268 echo "Sorry, you can't use netlink with broken aliases"
269 exit 1
270 fi
271 AC_DEFINE(HAVE_BROKEN_ALIASES,,Broken Alias)
272 enable_netlink=no
273fi
274
275if test "${enable_tcp_zebra}" = "yes"; then
276 AC_DEFINE(HAVE_TCP_ZEBRA,,Use TCP for zebra communication)
277fi
278
paul7ea487b2003-03-17 02:05:07 +0000279if test "${enable_opaque_lsa}" = "yes"; then
280 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
281fi
282
283if test "${enable_ospf_te}" = "yes"; then
284 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
285 AC_DEFINE(HAVE_OSPF_TE,,OSPF TE)
286fi
287
gdtd2a0ccc2003-12-03 18:13:48 +0000288AC_MSG_CHECKING(if zebra should be configurable to send Route Advertisements)
289if test "${enable_rtadv}" != "no"; then
hasso71c0fb52003-05-25 20:18:13 +0000290 AC_MSG_RESULT(yes)
gdtd2a0ccc2003-12-03 18:13:48 +0000291 AC_DEFINE(HAVE_RTADV,,Enable IPv6 Routing Advertisement support)
paul2487bea2003-05-25 23:51:31 +0000292else
293 AC_MSG_RESULT(no)
hasso71c0fb52003-05-25 20:18:13 +0000294fi
paul7ea487b2003-03-17 02:05:07 +0000295
hassoca776982004-06-12 14:33:05 +0000296if test "${enable_irdp}" = "yes"; then
297 AC_DEFINE(HAVE_IRDP,, IRDP )
298fi
299
hassof695b012005-04-02 19:03:39 +0000300if test "${enable_isisd}" = "yes" && test "${enable_isis_topology}" = yes; then
301 AC_DEFINE(TOPOLOGY_GENERATE,,Enable IS-IS topology generator code)
302 ISIS_TOPOLOGY_INCLUDES="-I./topology"
303 ISIS_TOPOLOGY_DIR="topology"
304 ISIS_TOPOLOGY_LIB="./topology/libtopology.a"
305fi
306
307AC_SUBST(ISIS_TOPOLOGY_INCLUDES)
308AC_SUBST(ISIS_TOPOLOGY_DIR)
309AC_SUBST(ISIS_TOPOLOGY_LIB)
310
paul79cb2162003-06-06 12:19:53 +0000311if test "${enable_user}" = "yes" || test x"${enable_user}" = x""; then
paule8f29842003-08-12 13:08:31 +0000312 enable_user="quagga"
pauledd7c242003-06-04 13:59:38 +0000313elif test "${enable_user}" = "no"; then
314 enable_user="root"
315fi
pauledd7c242003-06-04 13:59:38 +0000316
paul79cb2162003-06-06 12:19:53 +0000317if test "${enable_group}" = "yes" || test x"${enable_group}" = x""; then
paule8f29842003-08-12 13:08:31 +0000318 enable_group="quagga"
pauledd7c242003-06-04 13:59:38 +0000319elif test "${enable_group}" = "no"; then
320 enable_group="root"
321fi
pauledd7c242003-06-04 13:59:38 +0000322
323if test x"${enable_vty_group}" = x"yes" ; then
paul8d4aee52003-06-06 00:30:35 +0000324 AC_MSG_ERROR([--enable-vty-group requires a group as argument, not yes])
paul79cb2162003-06-06 12:19:53 +0000325elif test x"${enable_vty_group}" != x""; then
paul8d4aee52003-06-06 00:30:35 +0000326 if test x"${enable_vty_group}" != x"no"; then
pauledd7c242003-06-04 13:59:38 +0000327 AC_DEFINE_UNQUOTED(VTY_GROUP, "${enable_vty_group}", VTY Sockets Group)
328 fi
329fi
paul26275b02005-04-11 07:10:47 +0000330AC_SUBST([enable_user])
331AC_SUBST([enable_group])
332AC_SUBST([enable_vty_group])
333AC_DEFINE_UNQUOTED(QUAGGA_USER, "${enable_user}", Quagga User)
334AC_DEFINE_UNQUOTED(QUAGGA_GROUP, "${enable_group}", Quagga Group)
pauledd7c242003-06-04 13:59:38 +0000335
gdtaa593d52003-12-22 20:15:53 +0000336enable_configfile_mask=${enable_configfile_mask:-0600}
337AC_DEFINE_UNQUOTED(CONFIGFILE_MASK, ${enable_configfile_mask}, Mask for config files)
338
339enable_logfile_mask=${enable_logfile_mask:-0600}
340AC_DEFINE_UNQUOTED(LOGFILE_MASK, ${enable_logfile_mask}, Mask for log files)
341
paul7ea487b2003-03-17 02:05:07 +0000342changequote(, )dnl
343
344MULTIPATH_NUM=1
345
346case "${enable_multipath}" in
347 [0-9]|[1-9][0-9])
348 MULTIPATH_NUM="${enable_multipath}"
349 ;;
350 "")
351 ;;
352 *)
353 echo "Please specify digit to --enable-multipath ARG."
354 exit 1
355 ;;
356esac
357
358changequote([, ])dnl
359
360AC_SUBST(MULTIPATH_NUM)
361
362dnl -------------------
363dnl Check header files.
364dnl -------------------
pauldc7a2bf2003-10-22 00:07:44 +0000365AC_HEADER_STDC
366AC_CHECK_HEADERS([string.h stropts.h sys/conf.h sys/ksym.h sys/time.h \
367 sys/times.h sys/select.h sys/sysctl.h sys/sockio.h \
368 sys/types.h linux/version.h kvm.h netdb.h asm/types.h \
paul76367ea2005-11-14 14:05:35 +0000369 sys/param.h libutil.h limits.h stdint.h])
pauldc7a2bf2003-10-22 00:07:44 +0000370
paul835b7f12003-10-30 21:59:57 +0000371AC_CHECK_HEADERS([sys/socket.h netinet/in_systm.h netinet/in.h \
paulf3bd1a72003-11-02 07:29:11 +0000372 net/if_dl.h net/netopt.h inet/nd.h net/route.h \
paul835b7f12003-10-30 21:59:57 +0000373 net/if.h net/if_var.h netinet/in_var.h])
pauldc7a2bf2003-10-22 00:07:44 +0000374
gdtfa3232e2003-12-03 17:52:30 +0000375dnl V6 headers are checked below, after we check for v6
paul7ea487b2003-03-17 02:05:07 +0000376
377dnl check some types
378AC_C_CONST
379dnl AC_TYPE_PID_T
380AC_TYPE_SIGNAL
381
382dnl Some systems (Solaris 2.x) require libnsl (Network Services Library)
383case "$host" in
paulafd8a122005-03-12 06:36:10 +0000384 [*-sunos5.[6-7]*] | [*-solaris2.[6-7]*])
paul7ea487b2003-03-17 02:05:07 +0000385 opsys=sol2-6
paulafd8a122005-03-12 06:36:10 +0000386 AC_DEFINE(SUNOS_56, 1, SunOS 5.6 to 5.7)
paul19877dd2004-05-11 10:49:35 +0000387 AC_DEFINE(SUNOS_5, 1, SunOS 5)
paul7ea487b2003-03-17 02:05:07 +0000388 AC_CHECK_LIB(xnet, main)
389 CURSES=-lcurses
390 ;;
paul1b73de82005-04-10 16:31:51 +0000391 [*-sunos5.[8-9]] \
392 | [*-sunos5.1[0-9]] \
393 | [*-sunos5.1[0-9].[0-9]] \
394 | [*-solaris2.[8-9]] \
395 | [*-solaris2.1[0-9]] \
396 | [*-solaris2.1[0-9].[0-9]])
paulafd8a122005-03-12 06:36:10 +0000397 opsys=sol8
Paul Jakmafb66b292006-05-28 08:26:15 +0000398 AC_DEFINE(SUNOS_59, 1, [SunOS 5.8 up])
399 AC_DEFINE(SUNOS_5, 1, [SunOS 5])
paul19877dd2004-05-11 10:49:35 +0000400 AC_CHECK_LIB(socket, main)
401 AC_CHECK_LIB(nsl, main)
paul1b73de82005-04-10 16:31:51 +0000402 AC_CHECK_LIB(umem, main)
Paul Jakmafb66b292006-05-28 08:26:15 +0000403 AC_CHECK_FUNCS([printstack],
404 [AC_DEFINE([HAVE_PRINTSTACK],1,[Solaris printstack])
405 AC_DEFINE([HAVE_STACK_TRACE],1,[Stack symbols decode functionality])
406 ])
paul19877dd2004-05-11 10:49:35 +0000407 CURSES=-lcurses
408 ;;
paul7ea487b2003-03-17 02:05:07 +0000409 *-sunos5* | *-solaris2*)
paul19877dd2004-05-11 10:49:35 +0000410 AC_DEFINE(SUNOS_5,,SunOS 5, Unknown SunOS)
paul7ea487b2003-03-17 02:05:07 +0000411 AC_CHECK_LIB(socket, main)
412 AC_CHECK_LIB(nsl, main)
413 CURSES=-lcurses
414 ;;
hassoc45eb832005-02-19 13:58:06 +0000415 *-linux*)
paul7ea487b2003-03-17 02:05:07 +0000416 opsys=gnu-linux
417 AC_DEFINE(GNU_LINUX,,GNU Linux)
418 ;;
419 *-nec-sysv4*)
420 AC_CHECK_LIB(nsl, gethostbyname)
421 AC_CHECK_LIB(socket, socket)
422 ;;
paul7ea487b2003-03-17 02:05:07 +0000423 *-openbsd*)
424 opsys=openbsd
425 AC_DEFINE(OPEN_BSD,,OpenBSD)
426 ;;
427 *-bsdi*)
428 opsys=bsdi
429 OTHER_METHOD="mtu_kvm.o"
430 AC_CHECK_LIB(kvm, main)
431 ;;
paul49e3b3c2003-10-23 20:39:50 +0000432 *-irix6.5)
pauldc7a2bf2003-10-22 00:07:44 +0000433 opsys=irix
434 AC_DEFINE(IRIX_65,,IRIX 6.5)
435 ;;
paul7ea487b2003-03-17 02:05:07 +0000436esac
437
438dnl ---------------------
439dnl Integrated VTY option
440dnl ---------------------
441case "${enable_vtysh}" in
442 "yes") VTYSH="vtysh";
443 AC_DEFINE(VTYSH,,VTY shell)
gdtfc9d0742004-06-30 14:25:12 +0000444 AC_PATH_PROG(PERL, perl)
445dnl Vtysh uses libreadline, which looks for termcap functions at
446dnl configure time. We follow readline's search order.
447dnl The required procedures are in libtermcap on NetBSD, in
448dnl [TODO] on Linux, and in [TODO] on Solaris.
hassoc0689392005-08-25 12:00:58 +0000449 AC_CHECK_LIB(termcap, tputs, LIBREADLINE="$LIBREADLINE -ltermcap",
paula9694592005-08-25 14:50:05 +0000450 [AC_CHECK_LIB(tinfo, tputs, LIBREADLINE="$LIBREADLINE -ltinfo",
451 [AC_CHECK_LIB(curses, tputs, LIBREADLINE="$LIBREADLINE -lcurses",
452 [AC_CHECK_LIB(ncurses, tputs,
453 LIBREADLINE="$LIBREADLINE -lncurses")]
454 )]
455 )]
456 )
457 AC_CHECK_LIB(readline, main, LIBREADLINE="$LIBREADLINE -lreadline",,
458 "$LIBREADLINE")
paul7ea487b2003-03-17 02:05:07 +0000459 if test $ac_cv_lib_readline_main = no; then
gdtfc9d0742004-06-30 14:25:12 +0000460 AC_MSG_ERROR([vtysh needs libreadline but was not found and usable on your system.])
paul7ea487b2003-03-17 02:05:07 +0000461 fi
462 AC_CHECK_HEADER(readline/history.h)
463 if test $ac_cv_header_readline_history_h = no;then
464 AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
465 fi
paula9694592005-08-25 14:50:05 +0000466 AC_CHECK_LIB(readline, rl_completion_matches,
467 LIBREADLINE="$LIBREADLINE",, "$LIBREADLINE")
paul3d3de8c2003-05-23 10:33:49 +0000468 if test $ac_cv_lib_readline_rl_completion_matches = no; then
469 AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
470 fi
471 ;;
paul7ea487b2003-03-17 02:05:07 +0000472 "no" ) VTYSH="";;
473 * ) ;;
474esac
hassoc0689392005-08-25 12:00:58 +0000475AC_SUBST(LIBREADLINE)
paul7ea487b2003-03-17 02:05:07 +0000476
477dnl ----------
478dnl PAM module
479dnl ----------
480if test "$with_libpam" = "yes"; then
paul24cd4352003-05-06 12:16:27 +0000481 AC_CHECK_HEADER(security/pam_misc.h)
482 if test "$ac_cv_header_security_pam_misc_h" = yes; then
483 AC_DEFINE(HAVE_PAM_MISC_H,,Have pam_misc.h)
484 AC_DEFINE(PAM_CONV_FUNC,misc_conv,Have misc_conv)
485 pam_conv_func="misc_conv"
paul24cd4352003-05-06 12:16:27 +0000486 fi
paul24cd4352003-05-06 12:16:27 +0000487 AC_CHECK_HEADER(security/openpam.h)
488 if test "$ac_cv_header_security_openpam_h" = yes; then
489 AC_DEFINE(HAVE_OPENPAM_H,,Have openpam.h)
490 AC_DEFINE(PAM_CONV_FUNC,openpam_ttyconv,Have openpam_ttyconv)
491 pam_conv_func="openpam_ttyconv"
paul24cd4352003-05-06 12:16:27 +0000492 fi
493 if test -z "$ac_cv_header_security_pam_misc_h$ac_cv_header_security_openpam_h" ; then
494 AC_MSG_WARN([*** pam support will not be built ***])
495 with_libpam="no"
496 fi
497fi
498
499if test "$with_libpam" = "yes"; then
paul7ea487b2003-03-17 02:05:07 +0000500dnl took this test from proftpd's configure.in and suited to our needs
501dnl -------------------------------------------------------------------------
502dnl
503dnl This next check looks funky due to a linker problem with some versions
504dnl of the PAM library. Prior to 0.72 release, the Linux PAM shared library
505dnl omitted requiring libdl linking information. PAM-0.72 or better ships
506dnl with RedHat 6.2 and Debian 2.2 or better.
507AC_CHECK_LIB(pam, pam_start,
paul24cd4352003-05-06 12:16:27 +0000508 [AC_CHECK_LIB(pam, $pam_conv_func,
paul7ea487b2003-03-17 02:05:07 +0000509 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
510 LIBPAM="-lpam"],
511 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
512 LIBPAM="-lpam -lpam_misc"]
513 )
514 ],
515
516 [AC_CHECK_LIB(pam, pam_end,
paul24cd4352003-05-06 12:16:27 +0000517 [AC_CHECK_LIB(pam, $pam_conv_func,
paula159ed92003-06-04 11:01:45 +0000518 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
paul7ea487b2003-03-17 02:05:07 +0000519 LIBPAM="-lpam -ldl"],
paula159ed92003-06-04 11:01:45 +0000520 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
paul7ea487b2003-03-17 02:05:07 +0000521 LIBPAM="-lpam -ldl -lpam_misc"]
522 )
523 ],AC_MSG_WARN([*** pam support will not be built ***]),
524 [-ldl])
525 ]
526)
527fi
528AC_SUBST(LIBPAM)
529
530dnl -------------------------------
531dnl Endian-ness check
532dnl -------------------------------
533AC_WORDS_BIGENDIAN
534
535dnl -------------------------------
536dnl check the size in byte of the C
537dnl -------------------------------
538dnl AC_CHECK_SIZEOF(char)
539dnl AC_CHECK_SIZEOF(int)
540dnl AC_CHECK_SIZEOF(short)
541dnl AC_CHECK_SIZEOF(long)
542
543dnl ----------------------------
544dnl check existance of functions
545dnl ----------------------------
paul49e3b3c2003-10-23 20:39:50 +0000546AC_CHECK_FUNCS(memset memcpy strerror inet_aton daemon snprintf vsnprintf \
paul04bd4842003-10-24 04:24:39 +0000547 strlcat strlcpy if_nametoindex if_indextoname getifaddrs \
hassoe6a4feb2005-09-19 09:53:21 +0000548 fcntl strnlen strndup)
paula159ed92003-06-04 11:01:45 +0000549AC_CHECK_FUNCS(setproctitle, ,
550 [AC_CHECK_LIB(util, setproctitle,
551 [LIBS="$LIBS -lutil"
552 AC_DEFINE(HAVE_SETPROCTITLE,, Have setproctitle)
553 ]
554 )
555 ]
556)
paul7ea487b2003-03-17 02:05:07 +0000557
558dnl ------------------------------------
559dnl Determine routing get and set method
560dnl ------------------------------------
561AC_MSG_CHECKING(zebra between kernel interface method)
562if test x"$opsys" = x"gnu-linux"; then
563 if test "${enable_netlink}" = "yes";then
564 AC_MSG_RESULT(netlink)
565 RT_METHOD=rt_netlink.o
566 AC_DEFINE(HAVE_NETLINK,,netlink)
567 netlink=yes
568 elif test "${enable_netlink}" = "no"; then
569 AC_MSG_RESULT(ioctl)
570 RT_METHOD=rt_ioctl.o
571 netlink=no
572 else
573 AC_MSG_RESULT(netlink)
574 RT_METHOD=rt_netlink.o
575 AC_DEFINE(HAVE_NETLINK,,netlink)
576 netlink=yes
577 fi
paul19877dd2004-05-11 10:49:35 +0000578elif test x"$opsys" = x"sol2-6";then
579 AC_MSG_RESULT(Route socket)
580 KERNEL_METHOD="kernel_socket.o"
581 RT_METHOD="rt_socket.o"
paulafd8a122005-03-12 06:36:10 +0000582elif test x"$opsys" = x"sol8";then
paul19877dd2004-05-11 10:49:35 +0000583 AC_MSG_RESULT(Route socket)
584 KERNEL_METHOD="kernel_socket.o"
585 RT_METHOD="rt_socket.o"
586elif test "$opsys" = "irix" ; then
587 AC_MSG_RESULT(Route socket)
588 KERNEL_METHOD="kernel_socket.o"
589 RT_METHOD="rt_socket.o"
paul7ea487b2003-03-17 02:05:07 +0000590else
paul19877dd2004-05-11 10:49:35 +0000591 AC_TRY_RUN([#include <errno.h>
paul7ea487b2003-03-17 02:05:07 +0000592#include <sys/types.h>
593#include <sys/socket.h>
594
595main ()
596{
597 int ac_sock;
598
599 ac_sock = socket (AF_ROUTE, SOCK_RAW, 0);
600 if (ac_sock < 0 && errno == EINVAL)
601 exit (1);
602 exit (0);
603}],
604 [KERNEL_METHOD=kernel_socket.o
605 RT_METHOD=rt_socket.o
606 AC_MSG_RESULT(socket)],
607 [RT_METHOD=rt_ioctl.o
608 AC_MSG_RESULT(ioctl)],
609 [KERNEL_METHOD=kernel_socket.o
610 RT_METHOD=rt_socket.o
611 AC_MSG_RESULT(socket)])
paul7ea487b2003-03-17 02:05:07 +0000612fi
613AC_SUBST(RT_METHOD)
614AC_SUBST(KERNEL_METHOD)
615AC_SUBST(OTHER_METHOD)
616
ajsb99760a2005-01-04 16:24:43 +0000617dnl ------------------------------------
618dnl check for broken CMSG_FIRSTHDR macro
619dnl ------------------------------------
gdt6c200462005-01-04 17:02:48 +0000620AC_MSG_CHECKING(for broken CMSG_FIRSTHDR)
hasso5b087522005-04-03 23:46:37 +0000621AC_RUN_IFELSE([AC_LANG_SOURCE([[
ajsb99760a2005-01-04 16:24:43 +0000622#ifdef SUNOS_5
623#define _XPG4_2
624#define __EXTENSIONS__
625#endif
626#include <stdlib.h>
627#include <sys/types.h>
628#include <sys/socket.h>
629
630main()
631{
632 struct msghdr msg;
633 char buf[4];
634
635 msg.msg_control = buf;
636 msg.msg_controllen = 0;
637
638 if (CMSG_FIRSTHDR(&msg) != NULL)
639 exit(0);
640 exit (1);
hasso5b087522005-04-03 23:46:37 +0000641}]])],[AC_MSG_RESULT(yes - using workaround) AC_DEFINE(HAVE_BROKEN_CMSG_FIRSTHDR,,Broken CMSG_FIRSTHDR)],
hassod33e8d72005-04-03 13:07:21 +0000642[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
ajsb99760a2005-01-04 16:24:43 +0000643
paul7ea487b2003-03-17 02:05:07 +0000644dnl ------------------------------
645dnl check kernel route read method
646dnl ------------------------------
647AC_CACHE_CHECK(route read method check, zebra_rtread,
648[if test "$netlink" = yes; then
649 RTREAD_METHOD="rtread_netlink.o"
650 zebra_rtread="netlink"
651else
652for zebra_rtread in /proc/net/route /dev/ip /dev/null;
653do
654 test x`ls $zebra_rtread 2>/dev/null` = x"$zebra_rtread" && break
655done
656case $zebra_rtread in
657 "/proc/net/route") RTREAD_METHOD="rtread_proc.o"
658 zebra_rtread="proc";;
paul9c30ab62003-07-08 08:36:17 +0000659 "/dev/ip")
660 case "$host" in
661 *-freebsd*) RTREAD_METHOD=rtread_sysctl.o
662 zebra_rtread="sysctl";;
663 *) RTREAD_METHOD="rtread_getmsg.o"
664 zebra_rtread="getmsg";;
665 esac;;
paul7ea487b2003-03-17 02:05:07 +0000666 *) RTREAD_METHOD="rtread_sysctl.o"
667 zebra_rtread="sysctl";;
668esac
669fi])
670AC_SUBST(RTREAD_METHOD)
671
672dnl -----------------------------
673dnl check interface lookup method
674dnl -----------------------------
paul19877dd2004-05-11 10:49:35 +0000675IOCTL_METHOD=ioctl.o
paul7ea487b2003-03-17 02:05:07 +0000676AC_MSG_CHECKING(interface looking up method)
677if test "$netlink" = yes; then
678 AC_MSG_RESULT(netlink)
679 IF_METHOD=if_netlink.o
paul19877dd2004-05-11 10:49:35 +0000680elif test "$opsys" = "sol2-6";then
681 AC_MSG_RESULT(Solaris GIF)
682 IF_METHOD=if_ioctl.o
paulafd8a122005-03-12 06:36:10 +0000683elif test "$opsys" = "sol8";then
paul19877dd2004-05-11 10:49:35 +0000684 AC_MSG_RESULT(Solaris GLIF)
685 IF_METHOD=if_ioctl_solaris.o
686 IOCTL_METHOD=ioctl_solaris.o
687elif test "$opsys" = "irix" ; then
688 AC_MSG_RESULT(IRIX)
689 IF_METHOD=if_ioctl.o
690elif test "$opsys" = "openbsd";then
691 AC_MSG_RESULT(openbsd)
692 IF_METHOD=if_ioctl.o
693elif grep NET_RT_IFLIST /usr/include/sys/socket.h >/dev/null 2>&1; then
694 AC_MSG_RESULT(sysctl)
paul7ea487b2003-03-17 02:05:07 +0000695 IF_METHOD=if_sysctl.o
696 AC_DEFINE(HAVE_NET_RT_IFLIST,,NET_RT_IFLIST)
paul19877dd2004-05-11 10:49:35 +0000697else
paul7ea487b2003-03-17 02:05:07 +0000698 AC_MSG_RESULT(ioctl)
699 IF_METHOD=if_ioctl.o
paul7ea487b2003-03-17 02:05:07 +0000700fi
701AC_SUBST(IF_METHOD)
paul19877dd2004-05-11 10:49:35 +0000702AC_SUBST(IOCTL_METHOD)
paul7ea487b2003-03-17 02:05:07 +0000703
paul42c98192005-05-07 02:22:51 +0000704dnl ---------------------------------------------------------------
705dnl figure out how to specify an interface in multicast sockets API
706dnl ---------------------------------------------------------------
707AC_CHECK_MEMBERS([struct ip_mreqn.imr_ifindex],,,[#ifdef HAVE_SYS_TYPES_H
708#include <sys/types.h>
709#endif
710#ifdef HAVE_NETINET_IN_H
711#include <netinet/in.h>
712#endif])
713
714AC_MSG_CHECKING([for BSD struct ip_mreq hack])
715AC_TRY_COMPILE([#ifdef HAVE_SYS_PARAM_H
716#include <sys/param.h>
717#endif],[#if (defined(__FreeBSD__) && (__FreeBSD_version >= 500022 || (__FreeBSD_version < 500000 && __FreeBSD_version >= 440000))) || (defined(__NetBSD__) && defined(__NetBSD_Version__) && __NetBSD_Version__ >= 106010000)
718 return (0);
719#else
720 #error No support for BSD struct ip_mreq hack detected
721#endif],[AC_MSG_RESULT(yes)
722AC_DEFINE(HAVE_BSD_STRUCT_IP_MREQ_HACK,,[Can pass ifindex in struct ip_mreq])],
723AC_MSG_RESULT(no))
724
paul7ea487b2003-03-17 02:05:07 +0000725dnl -----------------------
726dnl check proc file system.
727dnl -----------------------
728if test -r /proc/net/dev; then
729 AC_DEFINE(HAVE_PROC_NET_DEV,,/proc/net/dev)
730 IF_PROC=if_proc.o
731fi
732
733if test -r /proc/net/if_inet6; then
734 AC_DEFINE(HAVE_PROC_NET_IF_INET6,,/proc/net/if_inet6)
735 IF_PROC=if_proc.o
736fi
737AC_SUBST(IF_PROC)
738
739dnl -----------------------------
740dnl check ipforward detect method
741dnl -----------------------------
742AC_CACHE_CHECK(ipforward method check, zebra_ipforward_path,
743[for zebra_ipforward_path in /proc/net/snmp /dev/ip /dev/null;
744do
745 test x`ls $zebra_ipforward_path 2>/dev/null` = x"$zebra_ipforward_path" && break
746done
747case $zebra_ipforward_path in
748 "/proc/net/snmp") IPFORWARD=ipforward_proc.o
749 zebra_ipforward_path="proc";;
750 "/dev/ip")
751 case "$host" in
752 *-nec-sysv4*) IPFORWARD=ipforward_ews.o
753 zebra_ipforward_path="ews";;
paul9c30ab62003-07-08 08:36:17 +0000754 *-freebsd*) IPFORWARD=ipforward_sysctl.o
755 zebra_ipforward_path="sysctl";;
paul7ea487b2003-03-17 02:05:07 +0000756 *) IPFORWARD=ipforward_solaris.o
757 zebra_ipforward_path="solaris";;
758 esac;;
759 *) IPFORWARD=ipforward_sysctl.o
760 zebra_ipforward_path="sysctl";;
761esac])
762AC_SUBST(IPFORWARD)
763
764AC_CHECK_FUNCS(getaddrinfo, [have_getaddrinfo=yes], [have_getaddrinfo=no])
765
766dnl ----------
767dnl IPv6 check
768dnl ----------
769AC_MSG_CHECKING(whether does this OS have IPv6 stack)
770if test "${enable_ipv6}" = "no"; then
771 AC_MSG_RESULT(disabled)
772else
773dnl ----------
774dnl INRIA IPv6
775dnl ----------
paula159ed92003-06-04 11:01:45 +0000776 if grep IPV6_INRIA_VERSION /usr/include/netinet/in.h >/dev/null 2>&1; then
777 zebra_cv_ipv6=yes
778 AC_DEFINE(HAVE_IPV6,1,INRIA IPv6)
779 AC_DEFINE(INRIA_IPV6,1,INRIA IPv6)
780 RIPNGD="ripngd"
781 OSPF6D="ospf6d"
782 LIB_IPV6=""
783 AC_MSG_RESULT(INRIA IPv6)
paul7ea487b2003-03-17 02:05:07 +0000784dnl ---------
785dnl KAME IPv6
786dnl ---------
paula159ed92003-06-04 11:01:45 +0000787 elif grep WIDE /usr/include/netinet6/in6.h >/dev/null 2>&1; then
788 zebra_cv_ipv6=yes
789 AC_DEFINE(HAVE_IPV6,1,KAME IPv6)
790 AC_DEFINE(KAME,1,KAME IPv6)
791 RIPNGD="ripngd"
792 OSPF6D="ospf6d"
793 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
paul7ea487b2003-03-17 02:05:07 +0000794 LIB_IPV6="-L/usr/local/v6/lib -linet6"
paula159ed92003-06-04 11:01:45 +0000795 fi
796 AC_MSG_RESULT(KAME)
hasso71c0fb52003-05-25 20:18:13 +0000797dnl -------------------------
798dnl MUSICA IPv6
799dnl default host check
800dnl It is not used by Kheops
801dnl -------------------------
paula159ed92003-06-04 11:01:45 +0000802 elif grep MUSICA /usr/include6/netinet6/in6.h >/dev/null 2>&1; then
803 zebra_cv_ipv6=yes
804 AC_DEFINE(HAVE_IPV6,1,Musicia IPv6)
805 AC_DEFINE(MUSICA,1,Musica IPv6 stack)
806 AC_DEFINE(KAME,1,KAME IPv6 stack)
807 RIPNGD="ripngd"
808 OSPF6D="ospf6d"
809 if test -d /usr/local/v6/lib -a -f /usr/local/v6/lib/libinet6.a; then
hasso71c0fb52003-05-25 20:18:13 +0000810 LIB_IPV6="-L/usr/local/v6/lib -linet6"
paula159ed92003-06-04 11:01:45 +0000811 fi
812 AC_MSG_RESULT(MUSICA)
paul7ea487b2003-03-17 02:05:07 +0000813dnl ---------
814dnl NRL check
815dnl ---------
paula159ed92003-06-04 11:01:45 +0000816 elif grep NRL /usr/include/netinet6/in6.h >/dev/null 2>&1; then
817 zebra_cv_ipv6=yes
818 AC_DEFINE(HAVE_IPV6,1,NRL IPv6)
819 AC_DEFINE(NRL,1,NRL)
820 RIPNGD="ripngd"
821 OSPF6D="ospf6d"
822 if test x"$opsys" = x"bsdi";then
paul7ea487b2003-03-17 02:05:07 +0000823 AC_DEFINE(BSDI_NRL,,BSDI)
824 AC_MSG_RESULT(BSDI_NRL)
paula159ed92003-06-04 11:01:45 +0000825 else
paul7ea487b2003-03-17 02:05:07 +0000826 AC_MSG_RESULT(NRL)
paula159ed92003-06-04 11:01:45 +0000827 fi
paul19877dd2004-05-11 10:49:35 +0000828dnl ------------------------------------
829dnl Solaris 9, 10 and potentially higher
830dnl ------------------------------------
paulafd8a122005-03-12 06:36:10 +0000831 elif test x"$opsys" = x"sol8"; then
paul19877dd2004-05-11 10:49:35 +0000832 zebra_cv_ipv6=yes;
833 AC_DEFINE(HAVE_IPV6, 1, IPv6)
834 AC_DEFINE(SOLARIS_IPV6, 1, Solaris IPv6)
835 RIPNGD="ripngd"
836 OSPF6D="ospf6d"
837 AC_MSG_RESULT(Solaris IPv6)
paul7ea487b2003-03-17 02:05:07 +0000838dnl ----------
839dnl Linux IPv6
840dnl ----------
paula159ed92003-06-04 11:01:45 +0000841 elif test "${enable_ipv6}" = "yes"; then
842 AC_EGREP_CPP(yes, [
843 #include <linux/version.h>
844 /* 2.1.128 or later */
845 #if LINUX_VERSION_CODE >= 0x020180
846 yes
847 #endif],
848 [zebra_cv_ipv6=yes
849 zebra_cv_linux_ipv6=yes
850 AC_MSG_RESULT(Linux IPv6)])
851 else
852 if test x`ls /proc/net/ipv6_route 2>/dev/null` = x"/proc/net/ipv6_route"
853 then
paul7ea487b2003-03-17 02:05:07 +0000854 zebra_cv_ipv6=yes
855 zebra_cv_linux_ipv6=yes
856 AC_MSG_RESULT(Linux IPv6)
paula159ed92003-06-04 11:01:45 +0000857 fi
858 fi
paul7ea487b2003-03-17 02:05:07 +0000859
paula159ed92003-06-04 11:01:45 +0000860 if test "$zebra_cv_linux_ipv6" = "yes";then
hasso850d39f2005-06-30 13:52:20 +0000861 AC_MSG_CHECKING(whether libc has IPv6 support)
862 AC_TRY_LINK([#include <netinet/in.h>
863 ],[ int a; a = (int) in6addr_any.s6_addr[0]; if (a != 12345) return a; ],
864 [AC_MSG_RESULT(yes)
865 zebra_cv_ipv6=yes
866 zebra_cv_linux_ipv6=yes],
867 [AC_MSG_RESULT(no)
868 zebra_cv_ipv6=no
869 zebra_cv_linux_ipv6=no])
870 fi
871
872 if test "$zebra_cv_linux_ipv6" = "yes";then
paula159ed92003-06-04 11:01:45 +0000873 AC_MSG_CHECKING(for GNU libc >= 2.1)
874 AC_DEFINE(HAVE_IPV6,1,Linux IPv6)
875 AC_EGREP_CPP(yes, [
paul7ea487b2003-03-17 02:05:07 +0000876#include <features.h>
877#if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
878 yes
paula159ed92003-06-04 11:01:45 +0000879#endif],
880 [glibc=yes
881 AC_DEFINE(LINUX_IPV6,1,Linux IPv6 stack)
882 AC_MSG_RESULT(yes)],
883 AC_MSG_RESULT(no)
884 )
885 RIPNGD="ripngd"
886 OSPF6D="ospf6d"
887 if test "$glibc" != "yes"; then
paul7ea487b2003-03-17 02:05:07 +0000888 INCLUDES="-I/usr/inet6/include"
889 if test x`ls /usr/inet6/lib/libinet6.a 2>/dev/null` != x;then
890 LIB_IPV6="-L/usr/inet6/lib -linet6"
891 fi
paula159ed92003-06-04 11:01:45 +0000892 fi
893 fi
paul7ea487b2003-03-17 02:05:07 +0000894
895dnl -----------------------
896dnl Set IPv6 related values
897dnl -----------------------
paula159ed92003-06-04 11:01:45 +0000898 LIBS="$LIB_IPV6 $LIBS"
899 AC_SUBST(LIB_IPV6)
paul7ea487b2003-03-17 02:05:07 +0000900
paula159ed92003-06-04 11:01:45 +0000901 if test x"$RIPNGD" = x""; then
902 AC_MSG_RESULT(IPv4 only)
903 fi
paul7ea487b2003-03-17 02:05:07 +0000904fi
905
gdtfa3232e2003-12-03 17:52:30 +0000906dnl ------------------
907dnl IPv6 header checks
908dnl ------------------
909if test "x${zebra_cv_ipv6}" = "xyes"; then
910AC_CHECK_HEADERS([netinet6/in6.h netinet/in6_var.h netinet/icmp6.h \
911 netinet6/in6_var.h netinet6/nd6.h])
912fi
913
paul7ea487b2003-03-17 02:05:07 +0000914dnl --------------------
915dnl Daemon disable check
916dnl --------------------
917if test "${enable_zebra}" = "no";then
918 ZEBRA=""
919else
920 ZEBRA="zebra"
921fi
922
923if test "${enable_bgpd}" = "no";then
924 BGPD=""
925else
926 BGPD="bgpd"
927fi
928
929if test "${enable_ripd}" = "no";then
930 RIPD=""
931else
932 RIPD="ripd"
933fi
934
935if test "${enable_ospfd}" = "no";then
936 OSPFD=""
937else
938 OSPFD="ospfd"
939fi
940
ajsd0199432004-12-22 14:03:52 +0000941if test "${enable_watchquagga}" = "no";then
942 WATCHQUAGGA=""
943else
944 WATCHQUAGGA="watchquagga"
945fi
946
paul1ef74ef2003-03-21 15:16:05 +0000947OSPFCLIENT=""
948if test "${enable_opaque_lsa}" = "yes"; then
949 if test "${enable_ospfapi}" != "no";then
paul9a569842003-03-28 01:45:13 +0000950 AC_DEFINE(SUPPORT_OSPF_API,,OSPFAPI)
paul1ef74ef2003-03-21 15:16:05 +0000951
952 if test "${enable_ospfclient}" != "no";then
953 OSPFCLIENT="ospfclient"
954 fi
955 fi
956
paul7ea487b2003-03-17 02:05:07 +0000957fi
958
959case "${enable_ripngd}" in
960 "yes") RIPNGD="ripngd";;
961 "no" ) RIPNGD="";;
962 * ) ;;
963esac
964
965case "${enable_ospf6d}" in
966 "yes") OSPF6D="ospf6d";;
967 "no" ) OSPF6D="";;
968 * ) ;;
969esac
970
jardin9e867fe2003-12-23 08:56:18 +0000971case "${enable_isisd}" in
972 "yes") ISISD="isisd";;
973 "no" ) ISISD="";;
hassoae399ab2004-09-13 20:22:18 +0000974 * ) ;;
jardin9e867fe2003-12-23 08:56:18 +0000975esac
976
paul7ea487b2003-03-17 02:05:07 +0000977if test "${enable_bgp_announce}" = "no";then
978 AC_DEFINE(DISABLE_BGP_ANNOUNCE,,Disable BGP installation to zebra)
979fi
980
981AC_SUBST(ZEBRA)
982AC_SUBST(BGPD)
983AC_SUBST(RIPD)
984AC_SUBST(RIPNGD)
985AC_SUBST(OSPFD)
986AC_SUBST(OSPF6D)
ajsd0199432004-12-22 14:03:52 +0000987AC_SUBST(WATCHQUAGGA)
jardin9e867fe2003-12-23 08:56:18 +0000988AC_SUBST(ISISD)
paul7ea487b2003-03-17 02:05:07 +0000989AC_SUBST(VTYSH)
990AC_SUBST(INCLUDES)
991AC_SUBST(CURSES)
992AC_SUBST(OSPFCLIENT)
paul1ef74ef2003-03-21 15:16:05 +0000993AC_SUBST(OSPFAPI)
paul7ea487b2003-03-17 02:05:07 +0000994AC_CHECK_LIB(c, inet_ntop, [AC_DEFINE(HAVE_INET_NTOP,,inet_ntop)])
995AC_CHECK_LIB(c, inet_pton, [AC_DEFINE(HAVE_INET_PTON,,inet_pton)])
996AC_CHECK_LIB(crypt, crypt)
997AC_CHECK_LIB(resolv, res_init)
998AC_CHECK_LIB(m, main)
999
1000dnl ---------------------------------------------------
1001dnl BSD/OS 4.1 define inet_XtoY function as __inet_XtoY
1002dnl ---------------------------------------------------
paula159ed92003-06-04 11:01:45 +00001003AC_CHECK_FUNC(__inet_ntop, AC_DEFINE(HAVE_INET_NTOP,,__inet_ntop))
1004AC_CHECK_FUNC(__inet_pton, AC_DEFINE(HAVE_INET_PTON,,__inet_pton))
1005AC_CHECK_FUNC(__inet_aton, AC_DEFINE(HAVE_INET_ATON,,__inet_aton))
paul7ea487b2003-03-17 02:05:07 +00001006
1007dnl ---------------------------
1008dnl check system has GNU regexp
1009dnl ---------------------------
1010dnl AC_MSG_CHECKING(whether system has GNU regex)
1011AC_CHECK_LIB(c, regexec,
1012[AC_DEFINE(HAVE_GNU_REGEX,,GNU regexp library)
1013 LIB_REGEX=""],
1014[LIB_REGEX="regex.o"])
1015AC_SUBST(LIB_REGEX)
1016
1017dnl ------------------
paulb1fc9ac2006-01-31 10:09:27 +00001018dnl check Net-SNMP library
paul7ea487b2003-03-17 02:05:07 +00001019dnl ------------------
paulb1fc9ac2006-01-31 10:09:27 +00001020if test "${enable_snmp}" = "yes"; then
1021 LIBS="${LIBS} -lcrypto"
1022 AC_CHECK_LIB(netsnmp, asn_parse_int,
1023 [AC_DEFINE(HAVE_NETSNMP,,Net SNMP)
1024 AC_DEFINE(HAVE_SNMP,,SNMP)
1025 LIBS="${LIBS} -lnetsnmp"],
1026 [AC_MSG_ERROR([--enable-snmp given, but cannot find support for SNMP])])
1027
1028 for ac_snmp in /usr/include \
1029 /usr/local/include \
1030 /dev/null; do
1031 test -f "${ac_snmp}/net-snmp/library/asn1.h" && break
paul7ea487b2003-03-17 02:05:07 +00001032 done
paulb1fc9ac2006-01-31 10:09:27 +00001033
paul7ea487b2003-03-17 02:05:07 +00001034 case ${ac_snmp} in
paulb1fc9ac2006-01-31 10:09:27 +00001035 /dev/null)
1036 AC_MSG_ERROR([--enable-snmp given, but can not find header])
1037 ;;
1038 *)
1039 SNMP_INCLUDES="-I${ac_snmp}/net-snmp"
1040 SNMP_INCLUDES="${SNMP_INCLUDES} -I${ac_snmp}/net-snmp/library"
1041 ;;
paul7ea487b2003-03-17 02:05:07 +00001042 esac
paulb1fc9ac2006-01-31 10:09:27 +00001043
1044 AC_SUBST(SNMP_INCLUDES)
paul7ea487b2003-03-17 02:05:07 +00001045fi
1046
1047dnl ----------------------------
1048dnl check sa_len of sockaddr
1049dnl ----------------------------
1050AC_MSG_CHECKING(whether struct sockaddr has a sa_len field)
1051AC_TRY_COMPILE([#include <sys/types.h>
1052#include <sys/socket.h>
1053],[static struct sockaddr ac_i;int ac_j = sizeof (ac_i.sa_len);],
1054[AC_MSG_RESULT(yes)
1055 AC_DEFINE(HAVE_SA_LEN,,sa_len)],
1056 AC_MSG_RESULT(no))
1057
1058dnl ----------------------------
1059dnl check sin_len of sockaddr_in
1060dnl ----------------------------
1061AC_MSG_CHECKING(whether struct sockaddr_in has a sin_len field)
1062AC_TRY_COMPILE([#include <sys/types.h>
1063#include <netinet/in.h>
1064],[static struct sockaddr_in ac_i;int ac_j = sizeof (ac_i.sin_len);],
1065[AC_MSG_RESULT(yes)
1066 AC_DEFINE(HAVE_SIN_LEN,,sin_len)],
1067 AC_MSG_RESULT(no))
1068
1069dnl ----------------------------
1070dnl check sun_len of sockaddr_un
1071dnl ----------------------------
1072AC_MSG_CHECKING(whether struct sockaddr_un has a sun_len field)
1073AC_TRY_COMPILE([#include <sys/types.h>
1074#include <sys/un.h>
1075],[static struct sockaddr_un ac_i;int ac_j = sizeof (ac_i.sun_len);],
1076[AC_MSG_RESULT(yes)
1077 AC_DEFINE(HAVE_SUN_LEN,,sun_len)],
1078 AC_MSG_RESULT(no))
1079
1080dnl -----------------------------------
1081dnl check sin6_scope_id of sockaddr_in6
1082dnl -----------------------------------
1083if test "$zebra_cv_ipv6" = yes; then
1084 AC_MSG_CHECKING(whether struct sockaddr_in6 has a sin6_scope_id field)
1085 AC_TRY_COMPILE([#include <sys/types.h>
1086#include <netinet/in.h>
1087],[static struct sockaddr_in6 ac_i;int ac_j = sizeof (ac_i.sin6_scope_id);],
1088[AC_MSG_RESULT(yes)
1089 AC_DEFINE(HAVE_SIN6_SCOPE_ID,,scope id)],
1090 AC_MSG_RESULT(no))
1091fi
1092
1093dnl ----------------------------
1094dnl check socklen_t exist or not
1095dnl ----------------------------
1096AC_MSG_CHECKING(whther socklen_t is defined)
1097AC_TRY_COMPILE([#include <sys/types.h>
1098#include <sys/socket.h>
1099#include <netinet/in.h>
1100],[socklen_t ac_x;],
1101[AC_MSG_RESULT(yes)
1102 AC_DEFINE(HAVE_SOCKLEN_T,,socklen_t)],
1103 AC_MSG_RESULT(no))
1104
1105dnl ------------------------
1106dnl check struct sockaddr_dl
1107dnl ------------------------
1108AC_MSG_CHECKING(whether struct sockaddr_dl exist)
1109AC_EGREP_HEADER(sockaddr_dl,
1110net/if_dl.h,
1111[AC_MSG_RESULT(yes)
1112 AC_DEFINE(HAVE_SOCKADDR_DL,,sockaddr_dl)],
1113 AC_MSG_RESULT(no))
1114
1115dnl --------------------------
1116dnl check structure ifaliasreq
1117dnl --------------------------
1118AC_MSG_CHECKING(whether struct ifaliasreq exist)
1119AC_EGREP_HEADER(ifaliasreq,
1120net/if.h,
1121[AC_MSG_RESULT(yes)
1122 AC_DEFINE(HAVE_IFALIASREQ,,ifaliasreq)],
1123 AC_MSG_RESULT(no))
1124
1125dnl ----------------------------
1126dnl check structure in6_aliasreq
1127dnl ----------------------------
hasso71c0fb52003-05-25 20:18:13 +00001128AC_MSG_CHECKING(whether struct in6_aliasreq exist)
paul7ea487b2003-03-17 02:05:07 +00001129AC_EGREP_HEADER(in6_aliasreq,
1130netinet6/in6_var.h,
1131[AC_MSG_RESULT(yes)
1132 AC_DEFINE(HAVE_IN6_ALIASREQ,,in6_aliasreq)],
1133 AC_MSG_RESULT(no))
1134
hasso71c0fb52003-05-25 20:18:13 +00001135dnl -----------------------------------
1136dnl check ifra_lifetime of in6_aliasreq
1137dnl -----------------------------------
1138AC_MSG_CHECKING(whether in6_aliasreq.ifra_lifetime exist)
1139AC_TRY_COMPILE([#include <sys/types.h>
1140#include <netinet6/in6_var.h>
1141],[static struct if6_aliasreq ac_i;int ac_j = sizeof (ac_i.ifra_lifetime);],
1142[AC_MSG_RESULT(yes)
paula159ed92003-06-04 11:01:45 +00001143 AC_DEFINE(HAVE_IFRA_LIFETIME,,Have in6_aliasreq.ifra_lifetime)],
hasso71c0fb52003-05-25 20:18:13 +00001144 AC_MSG_RESULT(no))
1145
paul7ea487b2003-03-17 02:05:07 +00001146dnl ---------------------------
1147dnl check structure rt_addrinfo
1148dnl ---------------------------
1149AC_MSG_CHECKING(whether struct rt_addrinfo exist)
1150AC_EGREP_HEADER(rt_addrinfo,
1151net/route.h,
1152[AC_MSG_RESULT(yes)
1153 AC_DEFINE(HAVE_RT_ADDRINFO,,rt_addrinfo)],
1154 AC_MSG_RESULT(no))
1155
1156dnl --------------------------
1157dnl check structure in_pktinfo
1158dnl --------------------------
1159AC_MSG_CHECKING(whether struct in_pktinfo exist)
1160AC_TRY_COMPILE([#include <netinet/in.h>
1161],[struct in_pktinfo ac_x;],
1162[AC_MSG_RESULT(yes)
1163 AC_DEFINE(HAVE_INPKTINFO,,in_pktinfo)],
1164 AC_MSG_RESULT(no))
1165
vincent29c4c9b2005-03-25 13:05:47 +00001166dnl ----------------------------------
1167dnl check struct nd_opt_homeagent_info
1168dnl ----------------------------------
1169AC_MSG_CHECKING(whether struct nd_opt_homeagent_info exist)
1170AC_EGREP_HEADER(nd_opt_homeagent_info,
1171netinet/icmp6.h,
1172[AC_MSG_RESULT(yes)
1173 AC_DEFINE(HAVE_ND_OPT_HOMEAGENT_INFO,,nd_opt_homeagent_info)],
1174 AC_MSG_RESULT(no))
1175
1176dnl --------------------------------
1177dnl check struct nd_opt_adv_interval
1178dnl --------------------------------
1179AC_MSG_CHECKING(whether struct nd_opt_adv_interval exist)
1180AC_EGREP_HEADER(nd_opt_adv_interval,
1181netinet/icmp6.h,
1182[AC_MSG_RESULT(yes)
1183 AC_DEFINE(HAVE_ND_OPT_ADV_INTERVAL,,nd_opt_adv_interval)],
1184 AC_MSG_RESULT(no))
1185
1186dnl ------------------------------------
1187dnl check fields in nd_opt_adv_interval
1188dnl ------------------------------------
1189AC_MSG_CHECKING(whether nd_opt_ai_type field exist)
1190AC_EGREP_HEADER(nd_opt_ai_type,
1191netinet/icmp6.h,
1192[AC_MSG_RESULT(yes)
1193 AC_DEFINE(HAVE_ND_OPT_ADV_INTERVAL_AI_FIELDS,,nd_opt_ai_type)],
1194 AC_MSG_RESULT(no))
1195
paul7ea487b2003-03-17 02:05:07 +00001196dnl --------------------------------------
1197dnl checking for getrusage struct and call
1198dnl --------------------------------------
1199AC_MSG_CHECKING(whether getrusage is available)
1200AC_TRY_COMPILE([#include <sys/resource.h>
1201],[struct rusage ac_x; getrusage (RUSAGE_SELF, &ac_x);],
1202[AC_MSG_RESULT(yes)
1203 AC_DEFINE(HAVE_RUSAGE,,rusage)],
1204 AC_MSG_RESULT(no))
1205
pauledd7c242003-06-04 13:59:38 +00001206dnl -------------------
1207dnl capabilities checks
1208dnl -------------------
hasso41d3fc92004-04-06 11:59:00 +00001209if test "${enable_capabilities}" != "no"; then
1210 AC_MSG_CHECKING(whether prctl PR_SET_KEEPCAPS is available)
1211 AC_TRY_COMPILE([#include <sys/prctl.h>],[prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);],
1212 [AC_MSG_RESULT(yes)
1213 AC_DEFINE(HAVE_PR_SET_KEEPCAPS,,prctl)
1214 quagga_ac_keepcaps="yes"],
1215 AC_MSG_RESULT(no)
pauledd7c242003-06-04 13:59:38 +00001216 )
hasso41d3fc92004-04-06 11:59:00 +00001217 if test x"${quagga_ac_keepcaps}" = x"yes"; then
1218 AC_CHECK_HEADERS(sys/capability.h)
1219 fi
1220 if test x"${ac_cv_header_sys_capability_h}" = x"yes"; then
1221 AC_CHECK_LIB(cap, cap_init,
1222 [AC_DEFINE(HAVE_LCAPS,1,Capabilities)
1223 LIBCAP="-lcap"
paulceacedb2005-09-29 14:39:32 +00001224 quagga_ac_lcaps="yes"]
hasso41d3fc92004-04-06 11:59:00 +00001225 )
paulceacedb2005-09-29 14:39:32 +00001226 else
1227 AC_CHECK_HEADERS(priv.h,
1228 [AC_MSG_CHECKING(Solaris style privileges are available)
1229 AC_TRY_COMPILE([#include <priv.h>],[getpflags(PRIV_AWARE);],
1230 [AC_MSG_RESULT(yes)
1231 AC_DEFINE(HAVE_SOLARIS_CAPABILITIES,1,getpflags)
1232 quagga_ac_scaps="yes"],
1233 AC_MSG_RESULT(no)
1234 )
1235 ]
1236 )
1237 fi
1238 if test x"${quagga_ac_scaps}" = x"yes" \
1239 -o x"${quagga_ac_lcaps}" = x"yes"; then
1240 AC_DEFINE(HAVE_CAPABILITIES,1,capabilities)
hasso41d3fc92004-04-06 11:59:00 +00001241 fi
pauledd7c242003-06-04 13:59:38 +00001242fi
1243AC_SUBST(LIBCAP)
1244
ajs40abf232005-01-12 17:27:27 +00001245dnl -------------------
1246dnl test for ucontext.h
1247dnl -------------------
1248AC_CHECK_HEADERS(ucontext.h)
1249
paulfb2d1502003-06-04 09:40:54 +00001250dnl ---------------------------
1251dnl check for glibc 'backtrace'
1252dnl ---------------------------
1253if test "${glibc}" = "yes"; then
Paul Jakmafb66b292006-05-28 08:26:15 +00001254 AC_CHECK_HEADER([execinfo.h],
1255 [AC_CHECK_FUNC([backtrace],
1256 [AC_DEFINE(HAVE_GLIBC_BACKTRACE,,[Glibc backtrace])
1257 AC_DEFINE(HAVE_STACK_TRACE,,[Stack symbol decoding])
1258 ])
1259 ])
paulfb2d1502003-06-04 09:40:54 +00001260fi
1261
Paul Jakma41be32b2006-03-30 13:53:59 +00001262dnl -----------------------------------------
1263dnl check for malloc mallinfo struct and call
1264dnl this must try and link using LIBS, in
1265dnl order to check no alternative allocator
1266dnl has been specified, which might not provide
1267dnl mallinfo, e.g. such as Umem on Solaris.
1268dnl -----------------------------------------
1269AC_CHECK_HEADERS(malloc.h,
1270 [AC_MSG_CHECKING(whether mallinfo is available)
1271 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <malloc.h>]],
1272 [[struct mallinfo ac_x; ac_x = mallinfo ();]])],
1273 [AC_MSG_RESULT(yes)
1274 AC_DEFINE(HAVE_MALLINFO,,mallinfo)],
1275 AC_MSG_RESULT(no)
1276 )
1277 ]
1278)
1279
paul408ad942003-05-20 00:03:33 +00001280dnl ----------
1281dnl configure date
1282dnl ----------
1283CONFDATE=`date '+%Y%m%d'`
1284AC_SUBST(CONFDATE)
1285
paul7ea487b2003-03-17 02:05:07 +00001286dnl ------------------------------
paula159ed92003-06-04 11:01:45 +00001287dnl set paths for state directory
paul23bd12c2003-04-07 06:11:09 +00001288dnl ------------------------------
1289if test "${prefix}" = "NONE"; then
paule8f29842003-08-12 13:08:31 +00001290 quagga_statedir_prefix="";
paul23bd12c2003-04-07 06:11:09 +00001291else
paule8f29842003-08-12 13:08:31 +00001292 quagga_statedir_prefix=${prefix}
paul23bd12c2003-04-07 06:11:09 +00001293fi
1294if test "${localstatedir}" = '${prefix}/var'; then
paula159ed92003-06-04 11:01:45 +00001295 AC_CACHE_CHECK(state directory,ac_statedir,
paule8f29842003-08-12 13:08:31 +00001296 [for QUAGGA_STATE_DIR in ${quagga_statedir_prefix}/var/run dnl
1297 ${quagga_statedir_prefix}/var/adm dnl
1298 ${quagga_statedir_prefix}/etc dnl
paula159ed92003-06-04 11:01:45 +00001299 /var/run dnl
1300 /var/adm dnl
1301 /etc dnl
1302 /dev/null;
paul23bd12c2003-04-07 06:11:09 +00001303 do
paule8f29842003-08-12 13:08:31 +00001304 test -d $QUAGGA_STATE_DIR && break
paul23bd12c2003-04-07 06:11:09 +00001305 done
paule8f29842003-08-12 13:08:31 +00001306 quagga_statedir=$QUAGGA_STATE_DIR])
paul23bd12c2003-04-07 06:11:09 +00001307else
paule8f29842003-08-12 13:08:31 +00001308 quagga_statedir=${localstatedir}
paula159ed92003-06-04 11:01:45 +00001309 AC_MSG_CHECKING(directory to use for state file)
paule8f29842003-08-12 13:08:31 +00001310 AC_MSG_RESULT(${quagga_statedir})
paul26275b02005-04-11 07:10:47 +00001311 AC_SUBST(quagga_statedir)
paul23bd12c2003-04-07 06:11:09 +00001312fi
paule8f29842003-08-12 13:08:31 +00001313if test $quagga_statedir = "/dev/null"; then
paula159ed92003-06-04 11:01:45 +00001314 AC_MSG_ERROR('STATE DIRECTORY NOT FOUND! FIX OR SPECIFY --localstatedir!')
1315fi
1316
paule8f29842003-08-12 13:08:31 +00001317AC_DEFINE_UNQUOTED(PATH_ZEBRA_PID, "$quagga_statedir/zebra.pid",zebra PID)
1318AC_DEFINE_UNQUOTED(PATH_RIPD_PID, "$quagga_statedir/ripd.pid",ripd PID)
1319AC_DEFINE_UNQUOTED(PATH_RIPNGD_PID, "$quagga_statedir/ripngd.pid",ripngd PID)
1320AC_DEFINE_UNQUOTED(PATH_BGPD_PID, "$quagga_statedir/bgpd.pid",bgpd PID)
1321AC_DEFINE_UNQUOTED(PATH_OSPFD_PID, "$quagga_statedir/ospfd.pid",ospfd PID)
1322AC_DEFINE_UNQUOTED(PATH_OSPF6D_PID, "$quagga_statedir/ospf6d.pid",ospf6d PID)
jardin9e867fe2003-12-23 08:56:18 +00001323AC_DEFINE_UNQUOTED(PATH_ISISD_PID, "$quagga_statedir/isisd.pid",isisd PID)
ajsd0199432004-12-22 14:03:52 +00001324AC_DEFINE_UNQUOTED(PATH_WATCHQUAGGA_PID, "$quagga_statedir/watchquagga.pid",watchquagga PID)
paule8f29842003-08-12 13:08:31 +00001325AC_DEFINE_UNQUOTED(ZEBRA_SERV_PATH, "$quagga_statedir/zserv.api",zebra api socket)
1326AC_DEFINE_UNQUOTED(ZEBRA_VTYSH_PATH, "$quagga_statedir/zebra.vty",zebra vty socket)
1327AC_DEFINE_UNQUOTED(RIP_VTYSH_PATH, "$quagga_statedir/ripd.vty",rip vty socket)
1328AC_DEFINE_UNQUOTED(RIPNG_VTYSH_PATH, "$quagga_statedir/ripngd.vty",ripng vty socket)
1329AC_DEFINE_UNQUOTED(BGP_VTYSH_PATH, "$quagga_statedir/bgpd.vty",bgpd vty socket)
1330AC_DEFINE_UNQUOTED(OSPF_VTYSH_PATH, "$quagga_statedir/ospfd.vty",ospfd vty socket)
1331AC_DEFINE_UNQUOTED(OSPF6_VTYSH_PATH, "$quagga_statedir/ospf6d.vty",ospf6d vty socket)
jardin9e867fe2003-12-23 08:56:18 +00001332AC_DEFINE_UNQUOTED(ISIS_VTYSH_PATH, "$quagga_statedir/isisd.vty",isisd vty socket)
ajs515210b2004-12-22 15:35:12 +00001333AC_DEFINE_UNQUOTED(DAEMON_VTY_DIR, "$quagga_statedir",daemon vty directory)
paul7ea487b2003-03-17 02:05:07 +00001334
paul1eb8ef22005-04-07 07:30:20 +00001335dnl -------------------------------
1336dnl Quagga sources should always be
1337dnl current wrt interfaces. Dont
1338dnl allow deprecated interfaces to
1339dnl be exposed.
1340dnl -------------------------------
1341AC_DEFINE(QUAGGA_NO_DEPRECATED_INTERFACES, 1, Hide deprecated interfaces)
1342
paul7ea487b2003-03-17 02:05:07 +00001343dnl ---------------------------
1344dnl Check htonl works correctly
1345dnl ---------------------------
1346AC_MSG_CHECKING(for working htonl)
1347AC_CACHE_VAL(ac_cv_htonl_works, [
1348AC_TRY_LINK([#ifdef HAVE_SYS_TYPES_H
1349#include <sys/types.h>
1350#endif
1351#ifdef HAVE_NETDB_H
1352#include <netdb.h>
1353#endif
1354#ifdef HAVE_NETINET_IN_H
1355#include <netinet/in.h>
1356#endif],
1357[htonl (0);],
1358ac_cv_htonl_works=yes,
1359ac_cv_htonl_works=no)])
1360AC_MSG_RESULT($ac_cv_htonl_works)
1361
paul14c17fd2004-11-07 22:34:23 +00001362AC_CONFIG_FILES([Makefile lib/Makefile zebra/Makefile ripd/Makefile
ajsd0199432004-12-22 14:03:52 +00001363 ripngd/Makefile bgpd/Makefile ospfd/Makefile watchquagga/Makefile
jardin9e867fe2003-12-23 08:56:18 +00001364 ospf6d/Makefile isisd/Makefile vtysh/Makefile doc/Makefile
paul14c17fd2004-11-07 22:34:23 +00001365 ospfclient/Makefile tests/Makefile m4/Makefile redhat/Makefile
gdt69f1fc22004-08-27 15:57:35 +00001366 pkgsrc/Makefile
paul670bbf12004-11-12 09:05:00 +00001367 redhat/quagga.spec
gdtb7a97f82004-07-23 16:23:56 +00001368 lib/version.h
paul14c17fd2004-11-07 22:34:23 +00001369 doc/defines.texi
hassof695b012005-04-02 19:03:39 +00001370 isisd/topology/Makefile
gdtcbd04082004-08-31 18:16:36 +00001371 pkgsrc/bgpd.sh pkgsrc/ospf6d.sh pkgsrc/ospfd.sh
paulf31293a2004-11-12 09:27:04 +00001372 pkgsrc/ripd.sh pkgsrc/ripngd.sh pkgsrc/zebra.sh])
paul26275b02005-04-11 07:10:47 +00001373AC_CONFIG_FILES([solaris/Makefile])
1374
paul670bbf12004-11-12 09:05:00 +00001375AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl])
hasso48577192004-11-19 06:41:49 +00001376## Hack, but working solution to avoid rebuilding of quagga.info.
1377## It's already in CVS until texinfo 4.7 is more common.
paul14c1f182005-05-13 20:11:53 +00001378AC_CONFIG_COMMANDS([info-time],[touch doc/quagga.info])
paul14c17fd2004-11-07 22:34:23 +00001379AC_OUTPUT
paul7ea487b2003-03-17 02:05:07 +00001380
1381echo "
hassoc89f6492004-08-26 12:21:28 +00001382Quagga configuration
1383--------------------
1384quagga version : ${PACKAGE_VERSION}
paul7ea487b2003-03-17 02:05:07 +00001385host operationg system : ${host_os}
1386source code location : ${srcdir}
1387compiler : ${CC}
1388compiler flags : ${CFLAGS}
hasso2d582282005-03-28 15:29:07 +00001389includes : ${INCLUDES} ${SNMP_INCLUDES}
hassoc0689392005-08-25 12:00:58 +00001390linker flags : ${LDFLAGS} ${LIBS} ${LIBCAP} ${LIBREADLINE}
paule8f29842003-08-12 13:08:31 +00001391state file directory : ${quagga_statedir}
pauldc7a2bf2003-10-22 00:07:44 +00001392config file directory : `eval echo \`echo ${sysconfdir}\``
gdtd6b72f72003-12-03 17:24:27 +00001393example directory : `eval echo \`echo ${exampledir}\``
paul8d4aee52003-06-06 00:30:35 +00001394user to run as : ${enable_user}
1395group to run as : ${enable_group}
1396group for vty sockets : ${enable_vty_group}
gdtaa593d52003-12-22 20:15:53 +00001397config file mask : ${enable_configfile_mask}
1398log file mask : ${enable_logfile_mask}
pauldc7a2bf2003-10-22 00:07:44 +00001399
1400The above user and group must have read/write access to the state file
Paul Jakma105b8232006-05-28 08:02:41 +00001401directory and to the config files in the config file directory."
1402
1403if test x"$quagga_cv_gnu_make" = x"no"; then echo "
1404Warning: The ${MAKE-make} programme detected, either in your path or
1405via the MAKE variable, is not GNU Make. GNU make may be installed as
1406gmake on some systems. and is required to complete a build of Quagga
1407" > /dev/stderr
1408fi