blob: 6e92bd15086b2400f953f94836d1f80b2ca3e804 [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##
paule8f29842003-08-12 13:08:31 +00008AC_PREREQ(2.53)
paul7ea487b2003-03-17 02:05:07 +00009
David Lamparterd8d54ab2015-03-04 07:30:19 +010010AC_INIT(Quagga, 0.99.25-dev, [https://bugzilla.quagga.net])
David Lamparter7abd8752014-11-22 10:43:29 -080011CONFIG_ARGS="$*"
12AC_SUBST(CONFIG_ARGS)
paulfa1253d2003-09-24 05:09:26 +000013AC_CONFIG_SRCDIR(lib/zebra.h)
Paul Jakma62c9f502009-07-19 17:33:21 +010014AC_CONFIG_MACRO_DIR([m4])
ajsdfb9a542005-04-11 14:55:55 +000015
16dnl -----------------------------------
17dnl Get hostname and other information.
18dnl -----------------------------------
19AC_CANONICAL_BUILD()
20AC_CANONICAL_HOST()
21AC_CANONICAL_TARGET()
22
gdt81b81822004-04-07 22:48:47 +000023AM_INIT_AUTOMAKE(1.6)
David Lampartercc813082015-02-10 11:39:39 +010024AM_SILENT_RULES([yes])
Hasso Tepper303bb002013-01-13 17:45:28 +000025AC_CONFIG_HEADERS(config.h)
paul7ea487b2003-03-17 02:05:07 +000026
David Lamparter0be793e2012-11-27 01:34:56 +000027AC_PATH_PROG(PERL, perl)
Jeremy Jackson7ec57362009-01-21 22:10:40 -050028AC_CHECK_PROG([GAWK],[gawk],[gawk],[not-in-PATH])
29if test "x$GAWK" = "xnot-in-PATH" ; then
30 AC_MSG_ERROR([GNU awk is required for lib/memtype.h made by memtypes.awk.
31BSD awk complains: awk: gensub doesn't support backreferences (subst "\1") ])
32fi
paul03ecfb62005-04-16 15:38:23 +000033AC_ARG_VAR([GAWK],[GNU AWK])
34
gdtd6b72f72003-12-03 17:24:27 +000035dnl default is to match previous behavior
gdtc4f0efe2003-12-04 15:39:25 +000036exampledir=${sysconfdir}
gdtd6b72f72003-12-03 17:24:27 +000037AC_ARG_ENABLE([exampledir],
David Lamparterb6fa7602014-06-28 22:15:59 +020038 AS_HELP_STRING([--enable-exampledir],
gdtd6b72f72003-12-03 17:24:27 +000039 [specify alternate directory for examples]),
40 exampledir="$enableval",)
gdtc4f0efe2003-12-04 15:39:25 +000041dnl XXX add --exampledir to autoconf standard directory list somehow
gdtd6b72f72003-12-03 17:24:27 +000042AC_SUBST(exampledir)
43
gdtcbd04082004-08-31 18:16:36 +000044dnl default is to match previous behavior
45pkgsrcrcdir=""
46pkgsrcdir=""
47AC_ARG_ENABLE([pkgsrcrcdir],
David Lamparterb6fa7602014-06-28 22:15:59 +020048 AS_HELP_STRING([--enable-pkgsrcrcdir],
gdtcbd04082004-08-31 18:16:36 +000049 [specify directory for rc.d scripts]),
50 pkgsrcrcdir="$enableval"; pkgsrcdir="pkgsrc",)
51dnl XXX add --pkgsrcrcdir to autoconf standard directory list somehow
52AC_SUBST(pkgsrcdir)
53AC_SUBST(pkgsrcrcdir)
54
paul7ea487b2003-03-17 02:05:07 +000055dnl ------------
56dnl Check CFLAGS
57dnl ------------
58AC_ARG_WITH(cflags,
59[ --with-cflags Set CFLAGS for use in compilation.])
60if test "x$with_cflags" != "x" ; then
61 CFLAGS="$with_cflags" ; cflags_specified=yes ;
62elif test -n "$CFLAGS" ; then
63 cflags_specified=yes ;
64fi
65
hasso1969e4b2005-03-27 13:07:23 +000066dnl --------------------
67dnl Check CC and friends
68dnl --------------------
Paul P Komkoff Jr46bc0e42008-08-13 16:17:04 +010069AC_LANG([C])
paul7ea487b2003-03-17 02:05:07 +000070AC_PROG_CC
hasso1969e4b2005-03-27 13:07:23 +000071AC_PROG_CPP
Paul P Komkoff Jr46bc0e42008-08-13 16:17:04 +010072AM_PROG_CC_C_O
hasso1969e4b2005-03-27 13:07:23 +000073AC_PROG_EGREP
Greg Troxel553bdfe2007-02-06 20:10:35 +000074
75dnl autoconf 2.59 appears not to support AC_PROG_SED
76dnl AC_PROG_SED
77AC_CHECK_PROG([SED],[sed],[sed],[/bin/false])
hasso1969e4b2005-03-27 13:07:23 +000078
Paul Jakmafa482832012-03-08 13:51:21 +000079dnl pdflatex and latexmk are needed to build HACKING.pdf
80AC_CHECK_PROG([PDFLATEX],[pdflatex],[pdflatex],[/bin/false])
81AC_CHECK_PROG([LATEXMK],[latexmk],[latexmk],[/bin/false])
82if test "x$PDFLATEX" = "x/bin/false" -o "x$LATEXMK" = "x/bin/false"; then
83 AC_MSG_WARN([Will not be able to make PDF versions of TeX documents])
84else
85 HAVE_LATEX=true
86fi
87AM_CONDITIONAL([HAVE_LATEX], [test "x$HAVE_LATEX" = "xtrue"])
88
David Lamparter3a7e83c2015-03-03 09:55:51 +010089if test "x${GCC}" != "xyes" ; then
paul6a4b8832005-11-26 08:28:00 +000090 AC_MSG_CHECKING([whether we are using SunPro compiler])
91 AC_EGREP_CPP([^__SUNPRO_C.*0x5(7|8|9)], ["__SUNPRO_C" __SUNPRO_C],
92 [AC_MSG_RESULT([no])],
93 [COMPILER="SUNPRO"
94 AC_MSG_RESULT([yes])]
95 )
96fi
paul7ea487b2003-03-17 02:05:07 +000097
paula49c0ff2004-09-30 06:08:58 +000098dnl ---------------------------------------------
paul7ea487b2003-03-17 02:05:07 +000099dnl If CLFAGS doesn\'t exist set default value
paula49c0ff2004-09-30 06:08:58 +0000100dnl AC_PROG_CC will have set minimal default
101dnl already, eg "-O2 -g" for gcc, "-g" for others
paul27eebb32004-07-22 18:16:59 +0000102dnl (Wall is gcc specific... have to make sure
103dnl gcc is being used before setting it)
104dnl
paul6a4b8832005-11-26 08:28:00 +0000105dnl Sun Studio 10 / SunPro 5.7 is also supported,
106dnl so lets set some sane CFLAGS for it.
107dnl ---------------------------------------------
hasso1969e4b2005-03-27 13:07:23 +0000108
David Lamparter3a7e83c2015-03-03 09:55:51 +0100109AC_USE_SYSTEM_EXTENSIONS()
110AC_DEFUN([AC_C_FLAG], [{
111 AC_LANG_PUSH(C)
112 ac_c_flag_save="$CFLAGS"
113 CFLAGS="$CFLAGS $1"
114 AC_MSG_CHECKING([[whether $CC supports $1]])
115 AC_COMPILE_IFELSE(
116 [AC_LANG_PROGRAM([[]])],
117 [
118 AC_MSG_RESULT([yes])
119 m4_if([$3], [], [], [
120 CFLAGS="$ac_c_flag_save"
121 $3
122 ])
123 ], [
124 CFLAGS="$ac_c_flag_save"
125 AC_MSG_RESULT([no])
126 $2
127 ])
128 AC_LANG_POP(C)
129 }])
130
paul6a4b8832005-11-26 08:28:00 +0000131AC_MSG_CHECKING([whether to set a default CFLAGS])
132if test "x${cflags_specified}" = "x" ; then
133 case ${COMPILER} in
paul6a4b8832005-11-26 08:28:00 +0000134 "SUNPRO")
David Lamparter3a7e83c2015-03-03 09:55:51 +0100135 CFLAGS="-xO4 -v -g -xspace -xcode=pic32 -xstrconst -xc99"
136 AC_MSG_RESULT([SunPro default])
137 ;;
paul6a4b8832005-11-26 08:28:00 +0000138 *)
David Lamparter3a7e83c2015-03-03 09:55:51 +0100139 AC_MSG_RESULT([autodetecting])
140
141 AC_C_FLAG([-diag-error 10006])
142 AC_C_FLAG([-std=gnu99])
143 AC_C_FLAG([-g])
144 AC_C_FLAG([-Os], [
145 AC_C_FLAG([-O2])
146 ])
147 AC_C_FLAG([-fno-omit-frame-pointer])
148 AC_C_FLAG([-Wall])
149 AC_C_FLAG([-Wextra])
150 AC_C_FLAG([-Wmissing-prototypes])
151 AC_C_FLAG([-Wmissing-declarations])
152 AC_C_FLAG([-Wpointer-arith])
153 AC_C_FLAG([-Wbad-function-cast])
154 AC_C_FLAG([-Wwrite-strings])
155 if test x"${enable_gcc_ultra_verbose}" = x"yes" ; then
156 AC_C_FLAG([-Wcast-qual])
157 AC_C_FLAG([-Wstrict-prototypes])
158 AC_C_FLAG([-Wmissing-noreturn])
159 AC_C_FLAG([-Wmissing-format-attribute])
160 AC_C_FLAG([-Wunreachable-code])
161 AC_C_FLAG([-Wpacked])
162 AC_C_FLAG([-Wpadded])
163 else
164 AC_C_FLAG([-Wno-unused-result])
165 fi
166 AC_C_FLAG([-Wno-unused-parameter])
167 AC_C_FLAG([-Wno-missing-field-initializers])
168 # ICC emits a broken warning for const char *x = a ? "b" : "c";
169 # for some reason the string consts get 'promoted' to char *,
170 # triggering a const to non-const conversion warning.
171 AC_C_FLAG([-diag-disable 3179])
paul6a4b8832005-11-26 08:28:00 +0000172 ;;
173 esac
174else
175 AC_MSG_RESULT([CFLAGS supplied by user])
hasso1969e4b2005-03-27 13:07:23 +0000176fi
177
David Lamparterc0bedeb2015-03-03 10:00:43 +0100178if test x"${enable_werror}" = x"yes" ; then
179 WERROR="-Werror"
180fi
181AC_SUBST(WERROR)
182
paul7ea487b2003-03-17 02:05:07 +0000183dnl --------------
184dnl Check programs
185dnl --------------
paul7ea487b2003-03-17 02:05:07 +0000186AC_PROG_INSTALL
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000187AC_PROG_LN_S
paul7ea487b2003-03-17 02:05:07 +0000188AC_PROG_MAKE_SET
189AC_CHECK_TOOL(AR, ar)
paul7ea487b2003-03-17 02:05:07 +0000190
Paul Jakma105b8232006-05-28 08:02:41 +0000191dnl ---------------------------
192dnl We, perhaps unfortunately,
193dnl depend on GNU Make specific
194dnl constructs.
195dnl Give the user a warning if
196dnl not GNU Make.
197dnl ---------------------------
198AC_CACHE_CHECK([if ${MAKE-make} is GNU make], [quagga_cv_gnu_make],
199 [quagga_cv_gnu_make=no
200 if ${MAKE-make} --version 2>/dev/null | \
201 grep '^GNU Make ' >/dev/null ; then
202 quagga_cv_gnu_make=yes;
203 fi
204 ]
205)
206
Paul Jakmad46d2a22007-05-10 16:53:04 +0000207dnl -----------------
208dnl System extensions
209dnl -----------------
Paul Jakmad46d2a22007-05-10 16:53:04 +0000210AC_GNU_SOURCE
paul7ea487b2003-03-17 02:05:07 +0000211
gdt87efd642004-06-30 17:36:11 +0000212dnl -------
213dnl libtool
214dnl -------
paul0fc42942004-08-19 04:41:21 +0000215AC_PROG_LIBTOOL
gdt87efd642004-06-30 17:36:11 +0000216
paul7ea487b2003-03-17 02:05:07 +0000217dnl ----------------------
218dnl Packages configuration
219dnl ----------------------
Joachim Nilsson1080c132012-05-30 08:15:48 +0200220AC_ARG_WITH(pkg-extra-version,
221 AS_HELP_STRING([--with-pkg-extra-version=VER], [add extra version field, for packagers/distributions]),
222 [EXTRAVERSION=$withval],)
David Lamparter0be793e2012-11-27 01:34:56 +0000223AC_ARG_WITH(pkg-git-version,
224 AS_HELP_STRING([--with-pkg-git-version], [add git information to MOTD and build version string]),
David Lampartera16dcf72012-12-13 11:20:50 +0100225 [ test "x$withval" != "xno" && with_pkg_git_version="yes" ])
paul7ea487b2003-03-17 02:05:07 +0000226AC_ARG_ENABLE(vtysh,
David Lamparterb6fa7602014-06-28 22:15:59 +0200227 AS_HELP_STRING([--enable-vtysh], [include integrated vty shell for Quagga]))
Joakim Tjernlundcbcd9bf2009-02-16 09:40:39 +0100228AC_ARG_ENABLE(doc,
David Lamparterb6fa7602014-06-28 22:15:59 +0200229 AS_HELP_STRING([--disable-doc], [do not build docs]))
paul7ea487b2003-03-17 02:05:07 +0000230AC_ARG_ENABLE(zebra,
David Lamparterb6fa7602014-06-28 22:15:59 +0200231 AS_HELP_STRING([--disable-zebra], [do not build zebra daemon]))
paul7ea487b2003-03-17 02:05:07 +0000232AC_ARG_ENABLE(bgpd,
David Lamparterb6fa7602014-06-28 22:15:59 +0200233 AS_HELP_STRING([--disable-bgpd], [do not build bgpd]))
paul7ea487b2003-03-17 02:05:07 +0000234AC_ARG_ENABLE(ripd,
David Lamparterb6fa7602014-06-28 22:15:59 +0200235 AS_HELP_STRING([--disable-ripd], [do not build ripd]))
paul7ea487b2003-03-17 02:05:07 +0000236AC_ARG_ENABLE(ripngd,
David Lamparterb6fa7602014-06-28 22:15:59 +0200237 AS_HELP_STRING([--disable-ripngd], [do not build ripngd]))
paul7ea487b2003-03-17 02:05:07 +0000238AC_ARG_ENABLE(ospfd,
David Lamparterb6fa7602014-06-28 22:15:59 +0200239 AS_HELP_STRING([--disable-ospfd], [do not build ospfd]))
paul7ea487b2003-03-17 02:05:07 +0000240AC_ARG_ENABLE(ospf6d,
David Lamparterb6fa7602014-06-28 22:15:59 +0200241 AS_HELP_STRING([--disable-ospf6d], [do not build ospf6d]))
ajsd0199432004-12-22 14:03:52 +0000242AC_ARG_ENABLE(watchquagga,
David Lamparterb6fa7602014-06-28 22:15:59 +0200243 AS_HELP_STRING([--disable-watchquagga], [do not build watchquagga]))
jardin9e867fe2003-12-23 08:56:18 +0000244AC_ARG_ENABLE(isisd,
David Lamparter656a2c02015-02-09 11:36:10 +0100245 AS_HELP_STRING([--disable-isisd], [do not build isisd]))
Everton Marques871dbcf2009-08-11 15:43:05 -0300246AC_ARG_ENABLE(pimd,
David Lamparterb6fa7602014-06-28 22:15:59 +0200247 AS_HELP_STRING([--enable-pimd], [build pimd]))
paul7ea487b2003-03-17 02:05:07 +0000248AC_ARG_ENABLE(bgp-announce,
David Lamparterb6fa7602014-06-28 22:15:59 +0200249 AS_HELP_STRING([--disable-bgp-announce,], [turn off BGP route announcement]))
paul7ea487b2003-03-17 02:05:07 +0000250AC_ARG_ENABLE(snmp,
David Lamparterb6fa7602014-06-28 22:15:59 +0200251 AS_HELP_STRING([--enable-snmp=ARG], [enable SNMP support (smux or agentx)]))
paul7ea487b2003-03-17 02:05:07 +0000252AC_ARG_WITH(libpam,
David Lamparterb6fa7602014-06-28 22:15:59 +0200253 AS_HELP_STRING([--with-libpam], [use libpam for PAM support in vtysh]))
hasso71c0fb52003-05-25 20:18:13 +0000254AC_ARG_ENABLE(tcp-zebra,
David Lamparterb6fa7602014-06-28 22:15:59 +0200255 AS_HELP_STRING([--enable-tcp-zebra], [enable TCP/IP socket connection between zebra and protocol daemon]))
paul7ea487b2003-03-17 02:05:07 +0000256AC_ARG_ENABLE(opaque-lsa,
David Lamparterb6fa7602014-06-28 22:15:59 +0200257 AS_HELP_STRING([--disable-opaque-lsa],[do not build OSPF Opaque-LSA with OSPFAPI support (RFC2370)]))
paul1ef74ef2003-03-21 15:16:05 +0000258AC_ARG_ENABLE(ospfapi,
David Lamparterb6fa7602014-06-28 22:15:59 +0200259 AS_HELP_STRING([--disable-ospfapi], [do not build OSPFAPI to access the OSPF LSA Database]))
paul1ef74ef2003-03-21 15:16:05 +0000260AC_ARG_ENABLE(ospfclient,
David Lamparterb6fa7602014-06-28 22:15:59 +0200261 AS_HELP_STRING([--disable-ospfclient], [do not build OSPFAPI client for OSPFAPI,
262 (this is the default if --disable-ospfapi is set)]))
paul7ea487b2003-03-17 02:05:07 +0000263AC_ARG_ENABLE(ospf-te,
David Lamparterb6fa7602014-06-28 22:15:59 +0200264 AS_HELP_STRING([--disable-ospf-te],[disable Traffic Engineering Extension to OSPF]))
paul7ea487b2003-03-17 02:05:07 +0000265AC_ARG_ENABLE(multipath,
David Lamparterb6fa7602014-06-28 22:15:59 +0200266 AS_HELP_STRING([--enable-multipath=ARG], [enable multipath function, ARG must be digit]))
Paul P Komkoff Jrfe86b482008-08-13 16:56:05 +0100267AC_ARG_ENABLE(user,
David Lamparterb6fa7602014-06-28 22:15:59 +0200268 AS_HELP_STRING([--enable-user=USER], [user to run Quagga suite as (default quagga)]))
Paul P Komkoff Jrfe86b482008-08-13 16:56:05 +0100269AC_ARG_ENABLE(group,
David Lamparterb6fa7602014-06-28 22:15:59 +0200270 AS_HELP_STRING([--enable-group=GROUP], [group to run Quagga suite as (default quagga)]))
pauledd7c242003-06-04 13:59:38 +0000271AC_ARG_ENABLE(vty_group,
David Lamparterb6fa7602014-06-28 22:15:59 +0200272 AS_HELP_STRING([--enable-vty-group=ARG], [set vty sockets to have specified group as owner]))
gdtaa593d52003-12-22 20:15:53 +0000273AC_ARG_ENABLE(configfile_mask,
David Lamparterb6fa7602014-06-28 22:15:59 +0200274 AS_HELP_STRING([--enable-configfile-mask=ARG], [set mask for config files]))
gdtaa593d52003-12-22 20:15:53 +0000275AC_ARG_ENABLE(logfile_mask,
David Lamparterb6fa7602014-06-28 22:15:59 +0200276 AS_HELP_STRING([--enable-logfile-mask=ARG], [set mask for log files]))
pauledd7c242003-06-04 13:59:38 +0000277
hasso71c0fb52003-05-25 20:18:13 +0000278AC_ARG_ENABLE(rtadv,
David Lamparterb6fa7602014-06-28 22:15:59 +0200279 AS_HELP_STRING([--disable-rtadv], [disable IPV6 router advertisement feature]))
hassoca776982004-06-12 14:33:05 +0000280AC_ARG_ENABLE(irdp,
David Lamparterb6fa7602014-06-28 22:15:59 +0200281 AS_HELP_STRING([--enable-irdp], [enable IRDP server support in zebra]))
hassof695b012005-04-02 19:03:39 +0000282AC_ARG_ENABLE(isis_topology,
David Lamparterb6fa7602014-06-28 22:15:59 +0200283 AS_HELP_STRING([--enable-isis-topology], [enable IS-IS topology generator]))
hasso41d3fc92004-04-06 11:59:00 +0000284AC_ARG_ENABLE(capabilities,
David Lamparterb6fa7602014-06-28 22:15:59 +0200285 AS_HELP_STRING([--disable-capabilities], [disable using POSIX capabilities]))
Stephen Hemminger47f6aef2013-01-04 22:29:22 +0000286AC_ARG_ENABLE(rusage,
David Lamparterb6fa7602014-06-28 22:15:59 +0200287 AS_HELP_STRING([--disable-rusage], [disable using getrusage]))
paul6b6942f2004-10-22 04:55:05 +0000288AC_ARG_ENABLE(gcc_ultra_verbose,
David Lamparterb6fa7602014-06-28 22:15:59 +0200289 AS_HELP_STRING([--enable-gcc-ultra-verbose], [enable ultra verbose GCC warnings]))
Paul Jakma3453a712009-06-12 14:21:02 +0100290AC_ARG_ENABLE(linux24_tcp_md5,
David Lamparterb6fa7602014-06-28 22:15:59 +0200291 AS_HELP_STRING([--enable-linux24-tcp-md5], [enable support for old, Linux-2.4 RFC2385 patch]))
ajs3cade262004-12-29 17:50:22 +0000292AC_ARG_ENABLE(gcc-rdynamic,
David Lamparterb6fa7602014-06-28 22:15:59 +0200293 AS_HELP_STRING([--enable-gcc-rdynamic], [enable linking with -rdynamic for better backtraces (default if gcc)]))
David Lamparter8c99b4c2013-08-01 07:43:36 +0000294AC_ARG_ENABLE(backtrace,
David Lamparterb6fa7602014-06-28 22:15:59 +0200295 AS_HELP_STRING([--disable-backtrace,], [disable crash backtraces (default autodetect)]))
ajs924b9222005-04-16 17:11:24 +0000296AC_ARG_ENABLE(time-check,
David Lamparterb6fa7602014-06-28 22:15:59 +0200297 AS_HELP_STRING([--disable-time-check], [disable slow thread warning messages]))
Jeremy Jackson25f45882009-01-12 16:06:12 -0500298AC_ARG_ENABLE(pcreposix,
David Lamparterb6fa7602014-06-28 22:15:59 +0200299 AS_HELP_STRING([--enable-pcreposix], [enable using PCRE Posix libs for regex functions]))
Avneesh Sachdev5adc2522012-11-13 22:48:59 +0000300AC_ARG_ENABLE(fpm,
David Lamparterb6fa7602014-06-28 22:15:59 +0200301 AS_HELP_STRING([--enable-fpm], [enable Forwarding Plane Manager support]))
David Lamparterc0bedeb2015-03-03 10:00:43 +0100302AC_ARG_ENABLE(werror,
303 AS_HELP_STRING([--enable-werror], [enable -Werror (recommended for developers only)]))
paul6b6942f2004-10-22 04:55:05 +0000304
David Lamparter8c99b4c2013-08-01 07:43:36 +0000305if test x"${enable_gcc_rdynamic}" != x"no" ; then
306 if test x"${enable_gcc_rdynamic}" = x"yes" -o x"$COMPILER" = x"GCC"; then
307 LDFLAGS="${LDFLAGS} -rdynamic"
308 fi
ajs3cade262004-12-29 17:50:22 +0000309fi
310
ajs924b9222005-04-16 17:11:24 +0000311if test x"${enable_time_check}" != x"no" ; then
312 if test x"${enable_time_check}" = x"yes" -o x"${enable_time_check}" = x ; then
313 AC_DEFINE(CONSUMED_TIME_CHECK,5000000,Consumed Time Check)
314 else
315 AC_DEFINE_UNQUOTED(CONSUMED_TIME_CHECK,$enable_time_check,Consumed Time Check)
316 fi
317fi
318
Avneesh Sachdev5adc2522012-11-13 22:48:59 +0000319if test "${enable_fpm}" = "yes"; then
320 AC_DEFINE(HAVE_FPM,,Forwarding Plane Manager support)
321fi
322
paul7ea487b2003-03-17 02:05:07 +0000323if test "${enable_tcp_zebra}" = "yes"; then
324 AC_DEFINE(HAVE_TCP_ZEBRA,,Use TCP for zebra communication)
325fi
326
Paul Jakma36de2612011-03-22 10:18:05 +0000327if test "${enable_opaque_lsa}" != "no"; then
paul7ea487b2003-03-17 02:05:07 +0000328 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
329fi
330
Paul Jakma36de2612011-03-22 10:18:05 +0000331if test "${enable_ospf_te}" != "no"; then
paul7ea487b2003-03-17 02:05:07 +0000332 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
333 AC_DEFINE(HAVE_OSPF_TE,,OSPF TE)
334fi
335
Paul Jakma3453a712009-06-12 14:21:02 +0100336if test "${enable_linux24_tcp_md5}" = "yes"; then
337 AC_DEFINE(HAVE_TCP_MD5_LINUX24,,Old Linux 2.4 TCP MD5 Signature Patch)
338fi
339
gdtd2a0ccc2003-12-03 18:13:48 +0000340AC_MSG_CHECKING(if zebra should be configurable to send Route Advertisements)
341if test "${enable_rtadv}" != "no"; then
hasso71c0fb52003-05-25 20:18:13 +0000342 AC_MSG_RESULT(yes)
gdtd2a0ccc2003-12-03 18:13:48 +0000343 AC_DEFINE(HAVE_RTADV,,Enable IPv6 Routing Advertisement support)
paul2487bea2003-05-25 23:51:31 +0000344else
345 AC_MSG_RESULT(no)
hasso71c0fb52003-05-25 20:18:13 +0000346fi
paul7ea487b2003-03-17 02:05:07 +0000347
hassoca776982004-06-12 14:33:05 +0000348if test "${enable_irdp}" = "yes"; then
349 AC_DEFINE(HAVE_IRDP,, IRDP )
350fi
351
David Lamparter656a2c02015-02-09 11:36:10 +0100352if test "${enable_isisd}" != "no" && test "${enable_isis_topology}" = yes; then
hassof695b012005-04-02 19:03:39 +0000353 AC_DEFINE(TOPOLOGY_GENERATE,,Enable IS-IS topology generator code)
David Lamparteree1ac2d2012-07-19 12:58:59 +0200354 ISIS_TOPOLOGY_INCLUDES="-I\$(srcdir)/topology"
hassof695b012005-04-02 19:03:39 +0000355 ISIS_TOPOLOGY_DIR="topology"
356 ISIS_TOPOLOGY_LIB="./topology/libtopology.a"
357fi
358
359AC_SUBST(ISIS_TOPOLOGY_INCLUDES)
360AC_SUBST(ISIS_TOPOLOGY_DIR)
361AC_SUBST(ISIS_TOPOLOGY_LIB)
362
paul79cb2162003-06-06 12:19:53 +0000363if test "${enable_user}" = "yes" || test x"${enable_user}" = x""; then
paule8f29842003-08-12 13:08:31 +0000364 enable_user="quagga"
pauledd7c242003-06-04 13:59:38 +0000365elif test "${enable_user}" = "no"; then
366 enable_user="root"
367fi
pauledd7c242003-06-04 13:59:38 +0000368
paul79cb2162003-06-06 12:19:53 +0000369if test "${enable_group}" = "yes" || test x"${enable_group}" = x""; then
paule8f29842003-08-12 13:08:31 +0000370 enable_group="quagga"
pauledd7c242003-06-04 13:59:38 +0000371elif test "${enable_group}" = "no"; then
372 enable_group="root"
373fi
pauledd7c242003-06-04 13:59:38 +0000374
375if test x"${enable_vty_group}" = x"yes" ; then
paul8d4aee52003-06-06 00:30:35 +0000376 AC_MSG_ERROR([--enable-vty-group requires a group as argument, not yes])
paul79cb2162003-06-06 12:19:53 +0000377elif test x"${enable_vty_group}" != x""; then
paul8d4aee52003-06-06 00:30:35 +0000378 if test x"${enable_vty_group}" != x"no"; then
pauledd7c242003-06-04 13:59:38 +0000379 AC_DEFINE_UNQUOTED(VTY_GROUP, "${enable_vty_group}", VTY Sockets Group)
380 fi
381fi
paul26275b02005-04-11 07:10:47 +0000382AC_SUBST([enable_user])
383AC_SUBST([enable_group])
384AC_SUBST([enable_vty_group])
385AC_DEFINE_UNQUOTED(QUAGGA_USER, "${enable_user}", Quagga User)
386AC_DEFINE_UNQUOTED(QUAGGA_GROUP, "${enable_group}", Quagga Group)
pauledd7c242003-06-04 13:59:38 +0000387
gdtaa593d52003-12-22 20:15:53 +0000388enable_configfile_mask=${enable_configfile_mask:-0600}
389AC_DEFINE_UNQUOTED(CONFIGFILE_MASK, ${enable_configfile_mask}, Mask for config files)
390
391enable_logfile_mask=${enable_logfile_mask:-0600}
392AC_DEFINE_UNQUOTED(LOGFILE_MASK, ${enable_logfile_mask}, Mask for log files)
393
paul7ea487b2003-03-17 02:05:07 +0000394MULTIPATH_NUM=1
395
396case "${enable_multipath}" in
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000397 [[0-9]|[1-9][0-9]])
paul7ea487b2003-03-17 02:05:07 +0000398 MULTIPATH_NUM="${enable_multipath}"
399 ;;
400 "")
401 ;;
402 *)
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000403 AC_MSG_FAILURE([Please specify digit to enable multipath ARG])
paul7ea487b2003-03-17 02:05:07 +0000404 ;;
405esac
406
paul7ea487b2003-03-17 02:05:07 +0000407AC_SUBST(MULTIPATH_NUM)
408
Joachim Nilsson1080c132012-05-30 08:15:48 +0200409dnl -----------------------------------
410dnl Add extra version string to package
411dnl name, string and version fields.
412dnl -----------------------------------
413if test "x${EXTRAVERSION}" != "x" ; then
David Lamparter0be793e2012-11-27 01:34:56 +0000414 VERSION="${VERSION}${EXTRAVERSION}"
415 PACKAGE_VERSION="${PACKAGE_VERSION}${EXTRAVERSION}"
416 PACKAGE_STRING="${PACKAGE_STRING}${EXTRAVERSION}"
Joachim Nilsson1080c132012-05-30 08:15:48 +0200417fi
418
David Lampartera16dcf72012-12-13 11:20:50 +0100419if test "x$with_pkg_git_version" = "xyes"; then
420 if test -d "${srcdir}/.git"; then
421 AC_DEFINE(GIT_VERSION, [1], [include git version info])
422 else with_pkg_git_version="no"
423 AC_MSG_WARN([--with-pkg-git-version given, but this is not a git checkout])
424 fi
425fi
426AM_CONDITIONAL([GIT_VERSION], [test "x$with_pkg_git_version" = "xyes"])
David Lamparter0be793e2012-11-27 01:34:56 +0000427
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000428dnl ------------------------------------
429dnl Check C keywords and standard types
430dnl ------------------------------------
431AC_C_CONST
432AC_C_INLINE
433AC_C_RESTRICT
434AC_C_VOLATILE
pauldc7a2bf2003-10-22 00:07:44 +0000435AC_HEADER_STDC
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000436AC_HEADER_TIME
437AC_HEADER_SYS_WAIT
438dnl AC_TYPE_PID_T
439AC_TYPE_UID_T
440AC_TYPE_MODE_T
441AC_TYPE_SIZE_T
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000442AC_STRUCT_TM
pauldc7a2bf2003-10-22 00:07:44 +0000443
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000444dnl -------------------------
445dnl Check other header files.
446dnl -------------------------
447AC_CHECK_HEADERS([stropts.h sys/ksym.h sys/times.h sys/select.h \
448 sys/types.h linux/version.h netdb.h asm/types.h \
Timo Teräs16ffb262014-07-29 09:41:54 +0000449 sys/cdefs.h sys/param.h limits.h signal.h \
Paul Jakma6511cab2009-06-18 17:38:01 +0100450 sys/socket.h netinet/in.h time.h sys/time.h])
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000451
452dnl Utility macro to avoid retyping includes all the time
453m4_define([QUAGGA_INCLUDES],
454[#ifdef SUNOS_5
455#define _XPG4_2
456#define __EXTENSIONS__
457#endif
458#include <stdio.h>
459#if STDC_HEADERS
460# include <stdlib.h>
461# include <stddef.h>
462#else
463# if HAVE_STDLIB_H
464# include <stdlib.h>
465# endif
466#endif
467#if HAVE_SYS_TYPES_H
468# include <sys/types.h>
469#endif
470/* sys/conf.h depends on param.h on FBSD at least */
471#if HAVE_SYS_PARAM_H
472# include <sys/param.h>
473#endif
474/* Required for MAXSIG */
475#if HAVE_SIGNAL_H
476# include <signal.h>
477#endif
478#if HAVE_SYS_SOCKET_H
479# include <sys/socket.h>
480#endif
Hasso Tepperea057672013-01-13 17:45:29 +0000481#ifdef __APPLE__
482# define __APPLE_USE_RFC_3542
483#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000484#if HAVE_NETINET_IN_H
485# include <netinet/in.h>
486#endif
Paul Jakma6511cab2009-06-18 17:38:01 +0100487#ifdef TIME_WITH_SYS_TIME
488# include <sys/time.h>
489# include <time.h>
490#else
491# ifdef HAVE_SYS_TIME_H
492# include <sys/time.h>
493# else
494# include <time.h>
495# endif
496#endif /* TIME_WITH_SYS_TIME */
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000497])dnl
498
Denis Ovsienko2b43bf22011-07-14 16:30:08 +0400499dnl HAVE_NET_IF_H must be discovered by the time the longer AC_CHECK_HEADERS
500dnl round below execution begins, otherwise it doesn't properly detect
501dnl HAVE_NETINET6_IN6_VAR_H, HAVE_NET_IF_VAR_H and HAVE_STRUCT_IN6_ALIASREQ
502dnl on FreeBSD (BZ#408).
503
504AC_CHECK_HEADERS([net/if.h], [], [], QUAGGA_INCLUDES)
505
506m4_define([QUAGGA_INCLUDES],
507QUAGGA_INCLUDES
508[#if HAVE_NET_IF_H
509# include <net/if.h>
510#endif
511])dnl
512
513dnl Same applies for HAVE_NET_IF_VAR_H, which HAVE_NETINET6_ND6_H and
514dnl HAVE_NETINET_IN_VAR_H depend upon. But if_var.h depends on if.h, hence
515dnl an additional round for it.
516
517AC_CHECK_HEADERS([net/if_var.h], [], [], QUAGGA_INCLUDES)
518
519m4_define([QUAGGA_INCLUDES],
520QUAGGA_INCLUDES
521[#if HAVE_NET_IF_VAR_H
522# include <net/if_var.h>
523#endif
524])dnl
525
526AC_CHECK_HEADERS([sys/un.h netinet/in_systm.h netinet/in_var.h \
527 net/if_dl.h net/netopt.h net/route.h \
Paul Jakma11770e12007-06-22 16:14:42 +0000528 inet/nd.h arpa/inet.h netinet/ip_icmp.h \
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000529 fcntl.h stddef.h sys/ioctl.h syslog.h wchar.h wctype.h \
530 sys/sysctl.h sys/sockio.h kvm.h sys/conf.h],
531 [], [], QUAGGA_INCLUDES)
532
533AC_CHECK_HEADERS([ucontext.h], [], [],
534[#ifndef __USE_GNU
535#define __USE_GNU
536#endif /* __USE_GNU */
537QUAGGA_INCLUDES
538])
539
Joakim Tjernlundb166ea22009-06-25 16:40:06 +0100540m4_define([UCONTEXT_INCLUDES],
541[#include <ucontext.h>])dnl
542
543AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.uc_regs],
544 [], [], [UCONTEXT_INCLUDES])
545AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.regs],
546 [AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.regs.nip],
547 [], [], [UCONTEXT_INCLUDES])],
548 [], [UCONTEXT_INCLUDES])
549AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.gregs],
550 [], [], [UCONTEXT_INCLUDES])
551
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000552m4_define([QUAGGA_INCLUDES],
553QUAGGA_INCLUDES
Denis Ovsienko2b43bf22011-07-14 16:30:08 +0400554[#if HAVE_SYS_UN_H
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000555# include <sys/un.h>
556#endif
557#if HAVE_NETINET_IN_SYSTM_H
558# include <netinet/in_systm.h>
559#endif
560#if HAVE_NETINET_IN_VAR_H
561# include <netinet/in_var.h>
562#endif
563#if HAVE_NET_IF_DL_H
564# include <net/if_dl.h>
565#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000566#if HAVE_NET_NETOPT_H
567# include <net/netopt.h>
568#endif
569#if HAVE_NET_ROUTE_H
570# include <net/route.h>
571#endif
572#if HAVE_INET_ND_H
573# include <inet/nd.h>
574#endif
575#if HAVE_ARPA_INET_H
576# include <arpa/inet.h>
577#endif
Paul Jakma11770e12007-06-22 16:14:42 +0000578/* Required for IDRP */
579#if HAVE_NETINET_IP_ICMP_H
580# include <netinet/ip_icmp.h>
581#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000582])dnl
pauldc7a2bf2003-10-22 00:07:44 +0000583
gdtfa3232e2003-12-03 17:52:30 +0000584dnl V6 headers are checked below, after we check for v6
paul7ea487b2003-03-17 02:05:07 +0000585
paul7ea487b2003-03-17 02:05:07 +0000586dnl Some systems (Solaris 2.x) require libnsl (Network Services Library)
587case "$host" in
paulafd8a122005-03-12 06:36:10 +0000588 [*-sunos5.[6-7]*] | [*-solaris2.[6-7]*])
paul7ea487b2003-03-17 02:05:07 +0000589 opsys=sol2-6
paulafd8a122005-03-12 06:36:10 +0000590 AC_DEFINE(SUNOS_56, 1, SunOS 5.6 to 5.7)
paul19877dd2004-05-11 10:49:35 +0000591 AC_DEFINE(SUNOS_5, 1, SunOS 5)
paul7ea487b2003-03-17 02:05:07 +0000592 AC_CHECK_LIB(xnet, main)
593 CURSES=-lcurses
David Lampartere8d0d242014-06-28 22:07:41 +0200594 SOLARIS="solaris"
paul7ea487b2003-03-17 02:05:07 +0000595 ;;
paul1b73de82005-04-10 16:31:51 +0000596 [*-sunos5.[8-9]] \
597 | [*-sunos5.1[0-9]] \
598 | [*-sunos5.1[0-9].[0-9]] \
599 | [*-solaris2.[8-9]] \
600 | [*-solaris2.1[0-9]] \
601 | [*-solaris2.1[0-9].[0-9]])
paulafd8a122005-03-12 06:36:10 +0000602 opsys=sol8
Paul Jakmafb66b292006-05-28 08:26:15 +0000603 AC_DEFINE(SUNOS_59, 1, [SunOS 5.8 up])
604 AC_DEFINE(SUNOS_5, 1, [SunOS 5])
paul19877dd2004-05-11 10:49:35 +0000605 AC_CHECK_LIB(socket, main)
606 AC_CHECK_LIB(nsl, main)
paul1b73de82005-04-10 16:31:51 +0000607 AC_CHECK_LIB(umem, main)
Paul Jakmafb66b292006-05-28 08:26:15 +0000608 AC_CHECK_FUNCS([printstack],
609 [AC_DEFINE([HAVE_PRINTSTACK],1,[Solaris printstack])
610 AC_DEFINE([HAVE_STACK_TRACE],1,[Stack symbols decode functionality])
611 ])
paul19877dd2004-05-11 10:49:35 +0000612 CURSES=-lcurses
David Lampartere8d0d242014-06-28 22:07:41 +0200613 SOLARIS="solaris"
paul19877dd2004-05-11 10:49:35 +0000614 ;;
paul7ea487b2003-03-17 02:05:07 +0000615 *-sunos5* | *-solaris2*)
paul19877dd2004-05-11 10:49:35 +0000616 AC_DEFINE(SUNOS_5,,SunOS 5, Unknown SunOS)
paul7ea487b2003-03-17 02:05:07 +0000617 AC_CHECK_LIB(socket, main)
618 AC_CHECK_LIB(nsl, main)
619 CURSES=-lcurses
David Lampartere8d0d242014-06-28 22:07:41 +0200620 SOLARIS="solaris"
paul7ea487b2003-03-17 02:05:07 +0000621 ;;
hassoc45eb832005-02-19 13:58:06 +0000622 *-linux*)
paul7ea487b2003-03-17 02:05:07 +0000623 opsys=gnu-linux
624 AC_DEFINE(GNU_LINUX,,GNU Linux)
625 ;;
paul7ea487b2003-03-17 02:05:07 +0000626 *-openbsd*)
627 opsys=openbsd
628 AC_DEFINE(OPEN_BSD,,OpenBSD)
629 ;;
paul7ea487b2003-03-17 02:05:07 +0000630esac
631
Paul Jakma62c9f502009-07-19 17:33:21 +0100632AC_SYS_LARGEFILE
633
paul7ea487b2003-03-17 02:05:07 +0000634dnl ---------------------
635dnl Integrated VTY option
636dnl ---------------------
637case "${enable_vtysh}" in
638 "yes") VTYSH="vtysh";
639 AC_DEFINE(VTYSH,,VTY shell)
gdtfc9d0742004-06-30 14:25:12 +0000640dnl Vtysh uses libreadline, which looks for termcap functions at
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000641dnl configure time. We follow readlines search order.
gdtfc9d0742004-06-30 14:25:12 +0000642dnl The required procedures are in libtermcap on NetBSD, in
643dnl [TODO] on Linux, and in [TODO] on Solaris.
hassoc0689392005-08-25 12:00:58 +0000644 AC_CHECK_LIB(termcap, tputs, LIBREADLINE="$LIBREADLINE -ltermcap",
paula9694592005-08-25 14:50:05 +0000645 [AC_CHECK_LIB(tinfo, tputs, LIBREADLINE="$LIBREADLINE -ltinfo",
646 [AC_CHECK_LIB(curses, tputs, LIBREADLINE="$LIBREADLINE -lcurses",
647 [AC_CHECK_LIB(ncurses, tputs,
648 LIBREADLINE="$LIBREADLINE -lncurses")]
649 )]
650 )]
651 )
652 AC_CHECK_LIB(readline, main, LIBREADLINE="$LIBREADLINE -lreadline",,
653 "$LIBREADLINE")
paul7ea487b2003-03-17 02:05:07 +0000654 if test $ac_cv_lib_readline_main = no; then
gdtfc9d0742004-06-30 14:25:12 +0000655 AC_MSG_ERROR([vtysh needs libreadline but was not found and usable on your system.])
paul7ea487b2003-03-17 02:05:07 +0000656 fi
657 AC_CHECK_HEADER(readline/history.h)
658 if test $ac_cv_header_readline_history_h = no;then
659 AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
660 fi
paula9694592005-08-25 14:50:05 +0000661 AC_CHECK_LIB(readline, rl_completion_matches,
662 LIBREADLINE="$LIBREADLINE",, "$LIBREADLINE")
paul3d3de8c2003-05-23 10:33:49 +0000663 if test $ac_cv_lib_readline_rl_completion_matches = no; then
664 AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
665 fi
666 ;;
paul7ea487b2003-03-17 02:05:07 +0000667 "no" ) VTYSH="";;
668 * ) ;;
669esac
hassoc0689392005-08-25 12:00:58 +0000670AC_SUBST(LIBREADLINE)
David Wardf027d332012-04-30 11:36:15 -0400671AM_CONDITIONAL(VTYSH, test "x$VTYSH" = "xvtysh")
paul7ea487b2003-03-17 02:05:07 +0000672
673dnl ----------
674dnl PAM module
Denis Ovsienko61599282011-07-15 00:24:15 +0400675dnl
676dnl Quagga detects the PAM library it is built against by checking for a
677dnl functional pam_misc.h (Linux-PAM) or openpam.h (OpenPAM) header. pam_misc.h
678dnl is known to #include pam_appl.h, the standard header of a PAM library, and
679dnl openpam.h doesn't do that, although depends on the header too. Hence a
680dnl little assistance to AC_CHECK_HEADER is necessary for the proper detection
681dnl of OpenPAM.
paul7ea487b2003-03-17 02:05:07 +0000682dnl ----------
683if test "$with_libpam" = "yes"; then
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000684 AC_CHECK_HEADER([security/pam_misc.h],
685 [AC_DEFINE(HAVE_PAM_MISC_H,,Have pam_misc.h)
686 AC_DEFINE(PAM_CONV_FUNC,misc_conv,Have misc_conv)
687 pam_conv_func="misc_conv"
688 ],
689 [], QUAGGA_INCLUDES)
690 AC_CHECK_HEADER([security/openpam.h],
691 [AC_DEFINE(HAVE_OPENPAM_H,,Have openpam.h)
692 AC_DEFINE(PAM_CONV_FUNC,openpam_ttyconv,Have openpam_ttyconv)
693 pam_conv_func="openpam_ttyconv"
694 ],
Denis Ovsienko61599282011-07-15 00:24:15 +0400695 [], QUAGGA_INCLUDES[#include <security/pam_appl.h>])
paul24cd4352003-05-06 12:16:27 +0000696 if test -z "$ac_cv_header_security_pam_misc_h$ac_cv_header_security_openpam_h" ; then
697 AC_MSG_WARN([*** pam support will not be built ***])
698 with_libpam="no"
699 fi
700fi
701
702if test "$with_libpam" = "yes"; then
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000703dnl took this test from proftpds configure.in and suited to our needs
paul7ea487b2003-03-17 02:05:07 +0000704dnl -------------------------------------------------------------------------
705dnl
706dnl This next check looks funky due to a linker problem with some versions
707dnl of the PAM library. Prior to 0.72 release, the Linux PAM shared library
708dnl omitted requiring libdl linking information. PAM-0.72 or better ships
709dnl with RedHat 6.2 and Debian 2.2 or better.
710AC_CHECK_LIB(pam, pam_start,
paul24cd4352003-05-06 12:16:27 +0000711 [AC_CHECK_LIB(pam, $pam_conv_func,
paul7ea487b2003-03-17 02:05:07 +0000712 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
713 LIBPAM="-lpam"],
714 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
715 LIBPAM="-lpam -lpam_misc"]
716 )
717 ],
718
719 [AC_CHECK_LIB(pam, pam_end,
paul24cd4352003-05-06 12:16:27 +0000720 [AC_CHECK_LIB(pam, $pam_conv_func,
paula159ed92003-06-04 11:01:45 +0000721 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
paul7ea487b2003-03-17 02:05:07 +0000722 LIBPAM="-lpam -ldl"],
paula159ed92003-06-04 11:01:45 +0000723 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
paul7ea487b2003-03-17 02:05:07 +0000724 LIBPAM="-lpam -ldl -lpam_misc"]
725 )
726 ],AC_MSG_WARN([*** pam support will not be built ***]),
727 [-ldl])
728 ]
729)
730fi
731AC_SUBST(LIBPAM)
732
733dnl -------------------------------
734dnl Endian-ness check
735dnl -------------------------------
736AC_WORDS_BIGENDIAN
737
738dnl -------------------------------
739dnl check the size in byte of the C
740dnl -------------------------------
741dnl AC_CHECK_SIZEOF(char)
742dnl AC_CHECK_SIZEOF(int)
743dnl AC_CHECK_SIZEOF(short)
744dnl AC_CHECK_SIZEOF(long)
745
746dnl ----------------------------
747dnl check existance of functions
748dnl ----------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000749AC_FUNC_CHOWN
750AC_FUNC_FNMATCH
751AC_FUNC_FORK
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000752AC_FUNC_MEMCMP
753AC_FUNC_MKTIME
754AC_FUNC_STRFTIME
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000755AC_FUNC_STAT
756AC_FUNC_SELECT_ARGTYPES
757AC_FUNC_STRFTIME
Paul Jakmad46d2a22007-05-10 16:53:04 +0000758dnl Avoid AC_FUNC_STRNLEN because it pulls in AC_SYSTEM_EXTENSIONS which
759dnl can lead to strange side effects. So we just check for strnlen
760dnl directly, see below.
Paul Jakma2b5cb412007-05-10 17:05:16 +0000761dnl AC_FUNC_STRNLENdnl
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000762AC_FUNC_VPRINTF
763
764dnl -------------------------------
765dnl bgpd needs pow() and hence libm
766dnl -------------------------------
767TMPLIBS="$LIBS"
768AC_CHECK_HEADER([math.h],
769 [AC_CHECK_LIB([m], [pow],
770 [LIBM="-lm"
771 LIBS="$LIBS $LIBM"
772 AC_DEFINE(HAVE_LIBM,, Have libm)
773 AC_CHECK_FUNCS(pow,[],[LIBM=""])
774 ])
775])
776if test x"$LIBM" = x ; then
777 AC_MSG_WARN([Unable to find working pow function - bgpd may not link])
778fi
779LIBS="$TMPLIBS"
780AC_SUBST(LIBM)
781
782dnl ---------------
783dnl other functions
784dnl ---------------
785AC_CHECK_FUNCS([dup2 ftruncate getcwd gethostbyname getpagesize gettimeofday \
Paul Jakmad46d2a22007-05-10 16:53:04 +0000786 inet_ntoa inet_aton strnlen \
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000787 memchr memmove memset select socket \
788 strcasecmp strchr strcspn strdup strerror \
789 strncasecmp strndup strrchr strspn strstr \
790 strtol strtoul strlcat strlcpy \
791 daemon snprintf vsnprintf \
792 if_nametoindex if_indextoname getifaddrs \
793 uname fcntl])
794
paula159ed92003-06-04 11:01:45 +0000795AC_CHECK_FUNCS(setproctitle, ,
796 [AC_CHECK_LIB(util, setproctitle,
797 [LIBS="$LIBS -lutil"
798 AC_DEFINE(HAVE_SETPROCTITLE,, Have setproctitle)
799 ]
800 )
801 ]
802)
paul7ea487b2003-03-17 02:05:07 +0000803
Feng Lu55cfa2f2014-07-03 18:24:34 +0800804AC_CHECK_HEADER([asm-generic/unistd.h],
805 [AC_CHECK_DECL(__NR_setns,
806 AC_DEFINE(HAVE_NETNS,, Have netns),,
807 QUAGGA_INCLUDES [#include <asm-generic/unistd.h>
808 ])
809 AC_CHECK_FUNCS(setns, AC_DEFINE(HAVE_SETNS,, Have setns))]
810 )
811
paul7ea487b2003-03-17 02:05:07 +0000812dnl ------------------------------------
813dnl Determine routing get and set method
814dnl ------------------------------------
815AC_MSG_CHECKING(zebra between kernel interface method)
816if test x"$opsys" = x"gnu-linux"; then
David Lamparter2e5ca492014-06-28 20:54:31 +0200817 AC_MSG_RESULT(netlink)
818 RT_METHOD=rt_netlink.o
819 AC_DEFINE(HAVE_NETLINK,,netlink)
820 netlink=yes
paul7ea487b2003-03-17 02:05:07 +0000821else
David Lamparter39b233f2014-06-28 21:49:18 +0200822 AC_MSG_RESULT(Route socket)
823 KERNEL_METHOD="kernel_socket.o"
824 RT_METHOD="rt_socket.o"
paul7ea487b2003-03-17 02:05:07 +0000825fi
826AC_SUBST(RT_METHOD)
827AC_SUBST(KERNEL_METHOD)
Avneesh Sachdev5adc2522012-11-13 22:48:59 +0000828AM_CONDITIONAL([HAVE_NETLINK], [test "x$netlink" = "xyes"])
paul7ea487b2003-03-17 02:05:07 +0000829
Paul Jakma238497f2007-08-07 18:49:18 +0000830dnl --------------------------
831dnl Determine IS-IS I/O method
832dnl --------------------------
David Lamparter745bf052010-02-02 21:49:35 +0100833AC_DEFINE(ISIS_METHOD_PFPACKET, 1, [ constant value for isis method pfpacket ])
834AC_DEFINE(ISIS_METHOD_DLPI, 2, [ constant value for isis method dlpi ])
835AC_DEFINE(ISIS_METHOD_BPF, 3, [ constant value for isis method bpf ])
Paul Jakma238497f2007-08-07 18:49:18 +0000836AC_CHECK_HEADER(net/bpf.h)
837AC_CHECK_HEADER(sys/dlpi.h)
838AC_MSG_CHECKING(zebra IS-IS I/O method)
839if test x"$opsys" = x"gnu-linux"; then
840 AC_MSG_RESULT(pfpacket)
David Lamparter745bf052010-02-02 21:49:35 +0100841 ISIS_METHOD_MACRO="ISIS_METHOD_PFPACKET"
Paul Jakma238497f2007-08-07 18:49:18 +0000842elif test x"$opsys" = x"sol2-6" -o x"$opsys" = x"sol8"; then
843 AC_MSG_RESULT(DLPI)
David Lamparter745bf052010-02-02 21:49:35 +0100844 ISIS_METHOD_MACRO="ISIS_METHOD_DLPI"
Paul Jakma238497f2007-08-07 18:49:18 +0000845else
846 if test $ac_cv_header_net_bpf_h = no; then
847 if test $ac_cv_header_sys_dlpi_h = no; then
848 AC_MSG_RESULT(none)
849 AC_MSG_WARN([*** IS-IS support will not be built ***])
850 ISISD=""
851 else
852 AC_MSG_RESULT(DLPI)
853 fi
David Lamparter745bf052010-02-02 21:49:35 +0100854 ISIS_METHOD_MACRO="ISIS_METHOD_DLPI"
Paul Jakma238497f2007-08-07 18:49:18 +0000855 else
856 AC_MSG_RESULT(BPF)
David Lamparter745bf052010-02-02 21:49:35 +0100857 ISIS_METHOD_MACRO="ISIS_METHOD_BPF"
Paul Jakma238497f2007-08-07 18:49:18 +0000858 fi
859fi
David Lamparter745bf052010-02-02 21:49:35 +0100860AC_DEFINE_UNQUOTED(ISIS_METHOD, $ISIS_METHOD_MACRO, [ selected method for isis, == one of the constants ])
Paul Jakma238497f2007-08-07 18:49:18 +0000861
ajsb99760a2005-01-04 16:24:43 +0000862dnl ------------------------------------
863dnl check for broken CMSG_FIRSTHDR macro
864dnl ------------------------------------
gdt6c200462005-01-04 17:02:48 +0000865AC_MSG_CHECKING(for broken CMSG_FIRSTHDR)
hasso5b087522005-04-03 23:46:37 +0000866AC_RUN_IFELSE([AC_LANG_SOURCE([[
ajsb99760a2005-01-04 16:24:43 +0000867#ifdef SUNOS_5
868#define _XPG4_2
869#define __EXTENSIONS__
870#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000871#ifdef HAVE_STDLIB_H
872# include <stdlib.h>
873#endif
874#ifdef HAVE_SYS_TYPES_H
ajsb99760a2005-01-04 16:24:43 +0000875#include <sys/types.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000876#endif
877#ifdef HAVE_SYS_SOCKET_H
ajsb99760a2005-01-04 16:24:43 +0000878#include <sys/socket.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000879#endif
ajsb99760a2005-01-04 16:24:43 +0000880
881main()
882{
883 struct msghdr msg;
884 char buf[4];
885
886 msg.msg_control = buf;
887 msg.msg_controllen = 0;
888
889 if (CMSG_FIRSTHDR(&msg) != NULL)
890 exit(0);
891 exit (1);
hasso5b087522005-04-03 23:46:37 +0000892}]])],[AC_MSG_RESULT(yes - using workaround) AC_DEFINE(HAVE_BROKEN_CMSG_FIRSTHDR,,Broken CMSG_FIRSTHDR)],
hassod33e8d72005-04-03 13:07:21 +0000893[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
ajsb99760a2005-01-04 16:24:43 +0000894
paul7ea487b2003-03-17 02:05:07 +0000895dnl ------------------------------
896dnl check kernel route read method
897dnl ------------------------------
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500898AC_CACHE_CHECK([route read method], [quagga_cv_rtread_method],
899[if test "x$netlink" = xyes; then
900 quagga_cv_rtread_method="netlink"
paul7ea487b2003-03-17 02:05:07 +0000901else
David Lamparter2e5ca492014-06-28 20:54:31 +0200902for quagga_cv_rtread_method in /dev/ip /dev/null;
paul7ea487b2003-03-17 02:05:07 +0000903do
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500904 test x`ls $quagga_cv_rtread_method 2>/dev/null` = x"$quagga_cv_rtread_method" && break
paul7ea487b2003-03-17 02:05:07 +0000905done
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500906case $quagga_cv_rtread_method in
paul9c30ab62003-07-08 08:36:17 +0000907 "/dev/ip")
908 case "$host" in
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500909 *-freebsd*) quagga_cv_rtread_method="sysctl";;
910 *) quagga_cv_rtread_method="getmsg";;
paul9c30ab62003-07-08 08:36:17 +0000911 esac;;
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500912 *)
913 quagga_cv_rtread_method="sysctl";;
paul7ea487b2003-03-17 02:05:07 +0000914esac
915fi])
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500916RTREAD_METHOD=rtread_${quagga_cv_rtread_method}.o
paul7ea487b2003-03-17 02:05:07 +0000917AC_SUBST(RTREAD_METHOD)
918
919dnl -----------------------------
920dnl check interface lookup method
921dnl -----------------------------
paul19877dd2004-05-11 10:49:35 +0000922IOCTL_METHOD=ioctl.o
paul7ea487b2003-03-17 02:05:07 +0000923AC_MSG_CHECKING(interface looking up method)
924if test "$netlink" = yes; then
925 AC_MSG_RESULT(netlink)
926 IF_METHOD=if_netlink.o
paul19877dd2004-05-11 10:49:35 +0000927elif test "$opsys" = "sol2-6";then
928 AC_MSG_RESULT(Solaris GIF)
929 IF_METHOD=if_ioctl.o
paulafd8a122005-03-12 06:36:10 +0000930elif test "$opsys" = "sol8";then
paul19877dd2004-05-11 10:49:35 +0000931 AC_MSG_RESULT(Solaris GLIF)
932 IF_METHOD=if_ioctl_solaris.o
933 IOCTL_METHOD=ioctl_solaris.o
paul19877dd2004-05-11 10:49:35 +0000934elif test "$opsys" = "openbsd";then
935 AC_MSG_RESULT(openbsd)
936 IF_METHOD=if_ioctl.o
937elif grep NET_RT_IFLIST /usr/include/sys/socket.h >/dev/null 2>&1; then
938 AC_MSG_RESULT(sysctl)
paul7ea487b2003-03-17 02:05:07 +0000939 IF_METHOD=if_sysctl.o
940 AC_DEFINE(HAVE_NET_RT_IFLIST,,NET_RT_IFLIST)
paul19877dd2004-05-11 10:49:35 +0000941else
paul7ea487b2003-03-17 02:05:07 +0000942 AC_MSG_RESULT(ioctl)
943 IF_METHOD=if_ioctl.o
paul7ea487b2003-03-17 02:05:07 +0000944fi
945AC_SUBST(IF_METHOD)
paul19877dd2004-05-11 10:49:35 +0000946AC_SUBST(IOCTL_METHOD)
paul7ea487b2003-03-17 02:05:07 +0000947
paul42c98192005-05-07 02:22:51 +0000948dnl ---------------------------------------------------------------
949dnl figure out how to specify an interface in multicast sockets API
950dnl ---------------------------------------------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000951AC_CHECK_MEMBERS([struct ip_mreqn.imr_ifindex], [], [], QUAGGA_INCLUDES)
paul42c98192005-05-07 02:22:51 +0000952
Donald Sharp1934e782015-06-05 12:15:44 -0700953AC_CHECK_HEADERS([linux/mroute.h], [], [],
954[
955#if HAVE_NETINET_IN_H
956#include<netinet/in.h>
957#endif])
paul42c98192005-05-07 02:22:51 +0000958AC_MSG_CHECKING([for BSD struct ip_mreq hack])
959AC_TRY_COMPILE([#ifdef HAVE_SYS_PARAM_H
960#include <sys/param.h>
Brian Bennettb8a893c2015-02-17 22:32:22 +0000961#endif],[#if (defined(__FreeBSD__) && ((__FreeBSD_version >= 500022 && __FreeBSD_version < 700000) || (__FreeBSD_version < 500000 && __FreeBSD_version >= 440000))) || (defined(__NetBSD__) && defined(__NetBSD_Version__) && __NetBSD_Version__ >= 106010000) || defined(__OpenBSD__) || defined(__APPLE__) || defined(__DragonFly__) || defined(__sun)
paul42c98192005-05-07 02:22:51 +0000962 return (0);
963#else
964 #error No support for BSD struct ip_mreq hack detected
965#endif],[AC_MSG_RESULT(yes)
966AC_DEFINE(HAVE_BSD_STRUCT_IP_MREQ_HACK,,[Can pass ifindex in struct ip_mreq])],
967AC_MSG_RESULT(no))
968
Dmitrij Tejblum10d04cd2011-08-22 11:39:35 +0400969AC_MSG_CHECKING([for RFC3678 protocol-independed API])
970AC_TRY_COMPILE([
971#include <sys/types.h>
972#include <netinet/in.h>
973], [struct group_req gr; int sock; setsockopt(sock, IPPROTO_IP, MCAST_JOIN_GROUP, (void*)&gr, sizeof(gr));
974], [AC_MSG_RESULT(yes)
975AC_DEFINE(HAVE_RFC3678,1,[Have RFC3678 protocol-independed API])],
976AC_MSG_RESULT(no))
977
Andrew J. Schorrc543a172008-01-10 15:24:32 +0000978dnl ---------------------------------------------------------------
979dnl figure out how to check link-state
980dnl ---------------------------------------------------------------
Andrew J. Schorr6418bed2008-01-11 16:33:59 +0000981AC_CHECK_HEADER([net/if.h],
982 [AC_CHECK_HEADER( [net/if_media.h],
983 [m4_define([LINK_DETECT_INCLUDES],
984 QUAGGA_INCLUDES
985 [#include <net/if_media.h>
986 ])
987 AC_CHECK_MEMBERS( [struct ifmediareq.ifm_status],
988 AC_DEFINE(HAVE_BSD_LINK_DETECT,,[BSD link-detect]),
989 [], LINK_DETECT_INCLUDES)],
990 [],
991 QUAGGA_INCLUDES)],
992 [], QUAGGA_INCLUDES )
Andrew J. Schorrc543a172008-01-10 15:24:32 +0000993
Doug VanLeuven9234b382012-10-10 16:12:32 -0700994dnl ---------------------------------------------------------------
995dnl Additional, newer way to check link-state using ifi_link_state.
996dnl Not available in all BSD's when ifmediareq available
997dnl ---------------------------------------------------------------
998AC_CHECK_HEADER([net/if.h],
999 AC_CHECK_MEMBERS([struct if_data.ifi_link_state],
1000 AC_DEFINE(HAVE_BSD_IFI_LINK_STATE,,[BSD ifi_link_state available]),
1001 [], QUAGGA_INCLUDES),
1002 ,)
1003
Paul Jakma0df7c912008-07-21 21:02:49 +00001004dnl ------------------------
1005dnl TCP_MD5SIG socket option
1006dnl ------------------------
1007
1008AC_CHECK_HEADER([netinet/tcp.h],
1009 [m4_define([MD5_INCLUDES],
1010 QUAGGA_INCLUDES
1011 [#include <netinet/tcp.h>
1012 ])
1013 AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)],
1014 [],
1015 QUAGGA_INCLUDES)
1016if test $ac_cv_have_decl_TCP_MD5SIG = no; then
1017 AC_CHECK_HEADER([linux/tcp.h],
1018 [m4_define([MD5_INCLUDES],
1019 QUAGGA_INCLUDES
1020 [#include <linux/tcp.h>
1021 ])
1022 AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)])
1023fi
1024
paul7ea487b2003-03-17 02:05:07 +00001025dnl -----------------------------
1026dnl check ipforward detect method
1027dnl -----------------------------
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001028AC_CACHE_CHECK([ipforward method], [quagga_cv_ipforward_method],
David Lamparterca9f3422009-09-16 02:11:00 +02001029[if test x$cross_compiling = xyes; then
1030 if test x"$opsys" = x"gnu-linux"; then
1031 quagga_cv_ipforward_method=/proc/net/snmp
1032 else
1033 quagga_cv_ipforward_method=/dev/ip
1034 fi
1035else
1036 for quagga_cv_ipforward_method in /proc/net/snmp /dev/ip /dev/null;
1037 do
1038 test x`ls $quagga_cv_ipforward_method 2>/dev/null` = x"$quagga_cv_ipforward_method" && break
1039 done
1040fi
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001041case $quagga_cv_ipforward_method in
1042 "/proc/net/snmp") quagga_cv_ipforward_method="proc";;
paul7ea487b2003-03-17 02:05:07 +00001043 "/dev/ip")
1044 case "$host" in
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001045 *-freebsd*) quagga_cv_ipforward_method="sysctl";;
1046 *) quagga_cv_ipforward_method="solaris";;
paul7ea487b2003-03-17 02:05:07 +00001047 esac;;
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001048 *) quagga_cv_ipforward_method="sysctl";;
paul7ea487b2003-03-17 02:05:07 +00001049esac])
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001050IPFORWARD=ipforward_${quagga_cv_ipforward_method}.o
paul7ea487b2003-03-17 02:05:07 +00001051AC_SUBST(IPFORWARD)
1052
1053AC_CHECK_FUNCS(getaddrinfo, [have_getaddrinfo=yes], [have_getaddrinfo=no])
1054
1055dnl ----------
1056dnl IPv6 check
1057dnl ----------
1058AC_MSG_CHECKING(whether does this OS have IPv6 stack)
paul7ea487b2003-03-17 02:05:07 +00001059dnl ---------
1060dnl KAME IPv6
1061dnl ---------
David Lamparter6d6df302014-06-28 21:12:37 +02001062 if grep WIDE /usr/include/netinet6/in6.h >/dev/null 2>&1; then
paula159ed92003-06-04 11:01:45 +00001063 AC_DEFINE(KAME,1,KAME IPv6)
paula159ed92003-06-04 11:01:45 +00001064 AC_MSG_RESULT(KAME)
paul19877dd2004-05-11 10:49:35 +00001065dnl ------------------------------------
1066dnl Solaris 9, 10 and potentially higher
1067dnl ------------------------------------
paulafd8a122005-03-12 06:36:10 +00001068 elif test x"$opsys" = x"sol8"; then
paul19877dd2004-05-11 10:49:35 +00001069 AC_DEFINE(SOLARIS_IPV6, 1, Solaris IPv6)
paul19877dd2004-05-11 10:49:35 +00001070 AC_MSG_RESULT(Solaris IPv6)
paul7ea487b2003-03-17 02:05:07 +00001071dnl ----------
1072dnl Linux IPv6
1073dnl ----------
David Lamparter29ed6222014-06-28 21:42:25 +02001074 elif test x"$opsys" = x"gnu-linux"; then
Timo Teräs3ef0b872014-07-29 09:41:56 +00001075 AC_DEFINE(LINUX_IPV6,1,Linux IPv6 stack)
David Lamparter29ed6222014-06-28 21:42:25 +02001076 AC_MSG_RESULT(Linux IPv6)
1077 else
David Lamparter7fe17e62014-11-22 10:31:33 -08001078 AC_MSG_ERROR([Failed to detect IPv6 stack])
paula159ed92003-06-04 11:01:45 +00001079 fi
paul7ea487b2003-03-17 02:05:07 +00001080
David Lamparter7fe17e62014-11-22 10:31:33 -08001081dnl this is unconditial, for compatibility
1082AC_DEFINE(HAVE_IPV6,1,IPv6)
paul7ea487b2003-03-17 02:05:07 +00001083
gdtfa3232e2003-12-03 17:52:30 +00001084dnl ------------------
1085dnl IPv6 header checks
1086dnl ------------------
gdtfa3232e2003-12-03 17:52:30 +00001087AC_CHECK_HEADERS([netinet6/in6.h netinet/in6_var.h netinet/icmp6.h \
David Lamparter05a69d22015-05-27 22:15:37 +02001088 netinet6/in6_var.h netinet6/nd6.h], [], [],
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001089 QUAGGA_INCLUDES)
gdtfa3232e2003-12-03 17:52:30 +00001090
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001091m4_define([QUAGGA_INCLUDES],dnl
1092QUAGGA_INCLUDES
1093[#if HAVE_NETINET6_IN6_H
1094#include <netinet6/in6.h>
1095#endif
1096#if HAVE_NETINET_IN6_VAR_H
1097#include <netinet/in6_var.h>
1098#endif
1099#if HAVE_NETINET_ICMP6_H
1100# include <netinet/icmp6.h>
1101#endif
1102#if HAVE_NETINET6_IN6_VAR_H
1103# include <netinet6/in6_var.h>
1104#endif
1105#if HAVE_NETINET6_ND6_H
Hasso Tepperfbf24542007-06-25 19:30:59 +00001106# include <netinet6/nd6.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001107#endif
1108])dnl
1109
Joakim Tjernlundcbcd9bf2009-02-16 09:40:39 +01001110dnl disable doc check
1111if test "${enable_doc}" = "no";then
1112 DOC=""
1113else
1114 DOC="doc"
1115fi
1116
paul7ea487b2003-03-17 02:05:07 +00001117dnl --------------------
1118dnl Daemon disable check
1119dnl --------------------
1120if test "${enable_zebra}" = "no";then
1121 ZEBRA=""
1122else
1123 ZEBRA="zebra"
1124fi
David Wardf027d332012-04-30 11:36:15 -04001125AM_CONDITIONAL(ZEBRA, test "x$ZEBRA" = "xzebra")
paul7ea487b2003-03-17 02:05:07 +00001126
1127if test "${enable_bgpd}" = "no";then
1128 BGPD=""
1129else
1130 BGPD="bgpd"
1131fi
David Wardf027d332012-04-30 11:36:15 -04001132AM_CONDITIONAL(BGPD, test "x$BGPD" = "xbgpd")
paul7ea487b2003-03-17 02:05:07 +00001133
1134if test "${enable_ripd}" = "no";then
1135 RIPD=""
1136else
1137 RIPD="ripd"
1138fi
David Wardf027d332012-04-30 11:36:15 -04001139AM_CONDITIONAL(RIPD, test "x$RIPD" = "xripd")
paul7ea487b2003-03-17 02:05:07 +00001140
1141if test "${enable_ospfd}" = "no";then
1142 OSPFD=""
1143else
1144 OSPFD="ospfd"
1145fi
David Wardf027d332012-04-30 11:36:15 -04001146AM_CONDITIONAL(OSPFD, test "x$OSPFD" = "xospfd")
paul7ea487b2003-03-17 02:05:07 +00001147
ajsd0199432004-12-22 14:03:52 +00001148if test "${enable_watchquagga}" = "no";then
1149 WATCHQUAGGA=""
1150else
1151 WATCHQUAGGA="watchquagga"
1152fi
David Wardf027d332012-04-30 11:36:15 -04001153AM_CONDITIONAL(WATCHQUAGGA, test "x$WATCHQUAGGA" = "xwatchquagga")
ajsd0199432004-12-22 14:03:52 +00001154
paul1ef74ef2003-03-21 15:16:05 +00001155OSPFCLIENT=""
Greg Troxel0d51c7e2011-03-24 10:19:43 -04001156if test "${enable_opaque_lsa}" != "no"; then
paul1ef74ef2003-03-21 15:16:05 +00001157 if test "${enable_ospfapi}" != "no";then
paul9a569842003-03-28 01:45:13 +00001158 AC_DEFINE(SUPPORT_OSPF_API,,OSPFAPI)
paul1ef74ef2003-03-21 15:16:05 +00001159
1160 if test "${enable_ospfclient}" != "no";then
1161 OSPFCLIENT="ospfclient"
1162 fi
1163 fi
1164
paul7ea487b2003-03-17 02:05:07 +00001165fi
David Wardf027d332012-04-30 11:36:15 -04001166AM_CONDITIONAL(OSPFCLIENT, test "x$OSPFCLIENT" = "xospfclient")
paul7ea487b2003-03-17 02:05:07 +00001167
1168case "${enable_ripngd}" in
paul7ea487b2003-03-17 02:05:07 +00001169 "no" ) RIPNGD="";;
David Lamparter7fe17e62014-11-22 10:31:33 -08001170 * ) RIPNGD="ripngd";;
paul7ea487b2003-03-17 02:05:07 +00001171esac
David Wardf027d332012-04-30 11:36:15 -04001172AM_CONDITIONAL(RIPNGD, test "x$RIPNGD" = "xripngd")
paul7ea487b2003-03-17 02:05:07 +00001173
1174case "${enable_ospf6d}" in
paul7ea487b2003-03-17 02:05:07 +00001175 "no" ) OSPF6D="";;
David Lamparter7fe17e62014-11-22 10:31:33 -08001176 * ) OSPF6D="ospf6d";;
paul7ea487b2003-03-17 02:05:07 +00001177esac
David Wardf027d332012-04-30 11:36:15 -04001178AM_CONDITIONAL(OSPF6D, test "x$OSPF6D" = "xospf6d")
paul7ea487b2003-03-17 02:05:07 +00001179
jardin9e867fe2003-12-23 08:56:18 +00001180case "${enable_isisd}" in
jardin9e867fe2003-12-23 08:56:18 +00001181 "no" ) ISISD="";;
David Lamparter656a2c02015-02-09 11:36:10 +01001182 * ) ISISD="isisd";;
jardin9e867fe2003-12-23 08:56:18 +00001183esac
David Wardf027d332012-04-30 11:36:15 -04001184AM_CONDITIONAL(ISISD, test "x$ISISD" = "xisisd")
jardin9e867fe2003-12-23 08:56:18 +00001185
Everton Marques871dbcf2009-08-11 15:43:05 -03001186case "${enable_pimd}" in
1187 "yes") PIMD="pimd";;
1188 "no" ) PIMD="";;
1189 * ) ;;
1190esac
Everton Marquesff57d362014-06-25 15:54:03 -03001191AM_CONDITIONAL(PIMD, test "x$PIMD" = "xpimd")
Everton Marques871dbcf2009-08-11 15:43:05 -03001192
paul7ea487b2003-03-17 02:05:07 +00001193if test "${enable_bgp_announce}" = "no";then
Paul Jakma750e8142008-07-22 21:11:48 +00001194 AC_DEFINE(DISABLE_BGP_ANNOUNCE,1,Disable BGP installation to zebra)
1195else
1196 AC_DEFINE(DISABLE_BGP_ANNOUNCE,0,Disable BGP installation to zebra)
paul7ea487b2003-03-17 02:05:07 +00001197fi
1198
Joakim Tjernlundcbcd9bf2009-02-16 09:40:39 +01001199AC_SUBST(DOC)
paul7ea487b2003-03-17 02:05:07 +00001200AC_SUBST(ZEBRA)
1201AC_SUBST(BGPD)
1202AC_SUBST(RIPD)
1203AC_SUBST(RIPNGD)
1204AC_SUBST(OSPFD)
1205AC_SUBST(OSPF6D)
ajsd0199432004-12-22 14:03:52 +00001206AC_SUBST(WATCHQUAGGA)
jardin9e867fe2003-12-23 08:56:18 +00001207AC_SUBST(ISISD)
Everton Marques871dbcf2009-08-11 15:43:05 -03001208AC_SUBST(PIMD)
Greg Troxel97cee872007-08-02 13:36:56 +00001209AC_SUBST(SOLARIS)
paul7ea487b2003-03-17 02:05:07 +00001210AC_SUBST(VTYSH)
paul7ea487b2003-03-17 02:05:07 +00001211AC_SUBST(CURSES)
1212AC_SUBST(OSPFCLIENT)
paul1ef74ef2003-03-21 15:16:05 +00001213AC_SUBST(OSPFAPI)
paul7ea487b2003-03-17 02:05:07 +00001214AC_CHECK_LIB(c, inet_ntop, [AC_DEFINE(HAVE_INET_NTOP,,inet_ntop)])
1215AC_CHECK_LIB(c, inet_pton, [AC_DEFINE(HAVE_INET_PTON,,inet_pton)])
1216AC_CHECK_LIB(crypt, crypt)
1217AC_CHECK_LIB(resolv, res_init)
paul7ea487b2003-03-17 02:05:07 +00001218
paul7ea487b2003-03-17 02:05:07 +00001219dnl ---------------------------
Jeremy Jackson25f45882009-01-12 16:06:12 -05001220dnl check system has PCRE regexp
1221dnl ---------------------------
1222if test "x$enable_pcreposix" = "xyes"; then
1223 AC_CHECK_LIB(pcreposix, pcreposix_regexec, ,[enable_pcreposix=no
1224 AC_MSG_WARN([*** falling back to other regex library ***]) ])
1225fi
1226
1227if test "x$enable_pcreposix" != "xyes"; then
1228dnl ---------------------------
paul7ea487b2003-03-17 02:05:07 +00001229dnl check system has GNU regexp
1230dnl ---------------------------
Jeremy Jackson25f45882009-01-12 16:06:12 -05001231AC_MSG_CHECKING(whether system has GNU regex)
paul7ea487b2003-03-17 02:05:07 +00001232AC_CHECK_LIB(c, regexec,
1233[AC_DEFINE(HAVE_GNU_REGEX,,GNU regexp library)
1234 LIB_REGEX=""],
1235[LIB_REGEX="regex.o"])
Jeremy Jackson25f45882009-01-12 16:06:12 -05001236fi
1237AC_SUBST(HAVE_LIBPCREPOSIX)
paul7ea487b2003-03-17 02:05:07 +00001238AC_SUBST(LIB_REGEX)
1239
1240dnl ------------------
paulb1fc9ac2006-01-31 10:09:27 +00001241dnl check Net-SNMP library
paul7ea487b2003-03-17 02:05:07 +00001242dnl ------------------
Vincent Bernatd6be5fb2012-05-24 09:44:43 +02001243if test "${enable_snmp}" != ""; then
Vincent Bernat08d7f652012-05-22 22:29:17 +02001244 AC_PATH_TOOL([NETSNMP_CONFIG], [net-snmp-config], [no])
1245 if test x"$NETSNMP_CONFIG" = x"no"; then
1246 AC_MSG_ERROR([--enable-snmp given but unable to find net-snmp-config])
1247 fi
1248 LIBS="$LIBS `${NETSNMP_CONFIG} --agent-libs`"
1249 CFLAGS="`${NETSNMP_CONFIG} --base-cflags` $CFLAGS"
1250 AC_MSG_CHECKING([whether we can link to Net-SNMP])
1251 AC_LINK_IFELSE([AC_LANG_PROGRAM([
1252int main(void);
1253],
1254[
1255{
1256 return 0;
1257}
1258])],[AC_MSG_RESULT(yes)],[
1259 AC_MSG_RESULT(no)
1260 AC_MSG_ERROR([--enable-snmp given but not usable])])
1261 AC_DEFINE(HAVE_SNMP,,SNMP)
Vincent Bernatd6be5fb2012-05-24 09:44:43 +02001262 case "${enable_snmp}" in
1263 yes)
1264 SNMP_METHOD=agentx
1265 ;;
1266 smux|agentx)
1267 SNMP_METHOD="${enable_snmp}"
1268 ;;
1269 *)
1270 AC_MSG_ERROR([--enable-snmp given with an unknown method (${enable_snmp}). Use smux or agentx])
1271 ;;
1272 esac
1273 AH_TEMPLATE([SNMP_SMUX], [Use SNMP SMUX to interface with snmpd])
1274 AH_TEMPLATE([SNMP_AGENTX], [Use SNMP AgentX to interface with snmpd])
1275 AC_DEFINE_UNQUOTED(AS_TR_CPP(SNMP_${SNMP_METHOD}),,SNMP method to interface with snmpd)
paul7ea487b2003-03-17 02:05:07 +00001276fi
1277
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001278dnl ---------------------------
1279dnl sockaddr and netinet checks
1280dnl ---------------------------
1281AC_CHECK_TYPES([struct sockaddr, struct sockaddr_in,
1282 struct sockaddr_in6, struct sockaddr_un, struct sockaddr_dl,
Everton Marques871dbcf2009-08-11 15:43:05 -03001283 socklen_t, struct vifctl, struct mfcctl, struct sioc_sg_req,
1284 vifi_t, struct sioc_vif_req, struct igmpmsg,
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001285 struct ifaliasreq, struct if6_aliasreq, struct in6_aliasreq,
1286 struct nd_opt_adv_interval, struct rt_addrinfo,
Paul Jakma11770e12007-06-22 16:14:42 +00001287 struct nd_opt_homeagent_info, struct nd_opt_adv_interval],
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001288 [], [], QUAGGA_INCLUDES)
paul7ea487b2003-03-17 02:05:07 +00001289
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001290AC_CHECK_MEMBERS([struct sockaddr.sa_len,
1291 struct sockaddr_in.sin_len, struct sockaddr_un.sun_len,
1292 struct sockaddr_in6.sin6_scope_id,
David Lamparterca3ccd82012-09-26 14:52:39 +02001293 struct sockaddr_dl.sdl_len,
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001294 struct if6_aliasreq.ifra_lifetime,
1295 struct nd_opt_adv_interval.nd_opt_ai_type],
1296 [], [], QUAGGA_INCLUDES)
hasso71c0fb52003-05-25 20:18:13 +00001297
paul7ea487b2003-03-17 02:05:07 +00001298dnl ---------------------------
Paul Jakma11770e12007-06-22 16:14:42 +00001299dnl IRDP/pktinfo/icmphdr checks
paul7ea487b2003-03-17 02:05:07 +00001300dnl ---------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001301AC_CHECK_TYPES([struct in_pktinfo],
Paul Jakma11770e12007-06-22 16:14:42 +00001302 [AC_CHECK_TYPES([struct icmphdr],
1303 [if test "${enable_irdp}" != "no"; then
1304 AC_DEFINE(HAVE_IRDP,, IRDP)
1305 fi],
1306 [if test "${enable_irdp}" = "yes"; then
1307 AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
1308 fi], [QUAGGA_INCLUDES])],
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001309 [if test "${enable_irdp}" = "yes"; then
1310 AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
1311 fi], [QUAGGA_INCLUDES])
vincent29c4c9b2005-03-25 13:05:47 +00001312
Everton Marques871dbcf2009-08-11 15:43:05 -03001313dnl -----------------------
1314dnl checking for IP_PKTINFO
1315dnl -----------------------
1316AC_MSG_CHECKING(for IP_PKTINFO)
1317AC_TRY_COMPILE([#include <netdb.h>], [
1318 int opt = IP_PKTINFO;
1319], [
1320 AC_MSG_RESULT(yes)
1321 AC_DEFINE(HAVE_IP_PKTINFO, 1, [Have IP_PKTINFO])
1322], [
1323 AC_MSG_RESULT(no)
1324])
1325
1326dnl ---------------------------
1327dnl checking for IP_RECVDSTADDR
1328dnl ---------------------------
1329AC_MSG_CHECKING(for IP_RECVDSTADDR)
1330AC_TRY_COMPILE([#include <netinet/in.h>], [
1331 int opt = IP_RECVDSTADDR;
1332], [
1333 AC_MSG_RESULT(yes)
1334 AC_DEFINE(HAVE_IP_RECVDSTADDR, 1, [Have IP_RECVDSTADDR])
1335], [
1336 AC_MSG_RESULT(no)
1337])
1338
1339dnl ----------------------
1340dnl checking for IP_RECVIF
1341dnl ----------------------
1342AC_MSG_CHECKING(for IP_RECVIF)
1343AC_TRY_COMPILE([#include <netinet/in.h>], [
1344 int opt = IP_RECVIF;
1345], [
1346 AC_MSG_RESULT(yes)
1347 AC_DEFINE(HAVE_IP_RECVIF, 1, [Have IP_RECVIF])
1348], [
1349 AC_MSG_RESULT(no)
1350])
1351
paul7ea487b2003-03-17 02:05:07 +00001352dnl --------------------------------------
1353dnl checking for getrusage struct and call
1354dnl --------------------------------------
Stephen Hemminger47f6aef2013-01-04 22:29:22 +00001355if test "${enable_rusage}" != "no"; then
1356 AC_MSG_CHECKING(whether getrusage is available)
1357 AC_TRY_COMPILE([#include <sys/resource.h>],[struct rusage ac_x; getrusage (RUSAGE_SELF, &ac_x);],
1358 [AC_MSG_RESULT(yes)
1359 AC_DEFINE(HAVE_RUSAGE,,rusage)],
1360 AC_MSG_RESULT(no))
1361fi
paul7ea487b2003-03-17 02:05:07 +00001362
Stephen Hemmingerc4376c92009-05-28 15:29:10 -07001363dnl --------------------------------------
1364dnl checking for clock_time monotonic struct and call
1365dnl --------------------------------------
Paul Jakma6511cab2009-06-18 17:38:01 +01001366AC_CHECK_DECL(CLOCK_MONOTONIC,
1367 [AC_CHECK_LIB(rt, clock_gettime, [LIBS="$LIBS -lrt"])
Dmitry Tejblum9964fcf2009-11-05 16:50:36 +03001368 AC_DEFINE(HAVE_CLOCK_MONOTONIC,, Have monotonic clock)
Paul Jakma6511cab2009-06-18 17:38:01 +01001369], [AC_MSG_RESULT(no)], [QUAGGA_INCLUDES])
Stephen Hemmingerc4376c92009-05-28 15:29:10 -07001370
pauledd7c242003-06-04 13:59:38 +00001371dnl -------------------
1372dnl capabilities checks
1373dnl -------------------
hasso41d3fc92004-04-06 11:59:00 +00001374if test "${enable_capabilities}" != "no"; then
1375 AC_MSG_CHECKING(whether prctl PR_SET_KEEPCAPS is available)
1376 AC_TRY_COMPILE([#include <sys/prctl.h>],[prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);],
1377 [AC_MSG_RESULT(yes)
1378 AC_DEFINE(HAVE_PR_SET_KEEPCAPS,,prctl)
1379 quagga_ac_keepcaps="yes"],
1380 AC_MSG_RESULT(no)
pauledd7c242003-06-04 13:59:38 +00001381 )
hasso41d3fc92004-04-06 11:59:00 +00001382 if test x"${quagga_ac_keepcaps}" = x"yes"; then
1383 AC_CHECK_HEADERS(sys/capability.h)
1384 fi
1385 if test x"${ac_cv_header_sys_capability_h}" = x"yes"; then
1386 AC_CHECK_LIB(cap, cap_init,
1387 [AC_DEFINE(HAVE_LCAPS,1,Capabilities)
1388 LIBCAP="-lcap"
paulceacedb2005-09-29 14:39:32 +00001389 quagga_ac_lcaps="yes"]
hasso41d3fc92004-04-06 11:59:00 +00001390 )
paulceacedb2005-09-29 14:39:32 +00001391 else
1392 AC_CHECK_HEADERS(priv.h,
1393 [AC_MSG_CHECKING(Solaris style privileges are available)
1394 AC_TRY_COMPILE([#include <priv.h>],[getpflags(PRIV_AWARE);],
1395 [AC_MSG_RESULT(yes)
1396 AC_DEFINE(HAVE_SOLARIS_CAPABILITIES,1,getpflags)
1397 quagga_ac_scaps="yes"],
1398 AC_MSG_RESULT(no)
1399 )
1400 ]
1401 )
1402 fi
1403 if test x"${quagga_ac_scaps}" = x"yes" \
1404 -o x"${quagga_ac_lcaps}" = x"yes"; then
1405 AC_DEFINE(HAVE_CAPABILITIES,1,capabilities)
hasso41d3fc92004-04-06 11:59:00 +00001406 fi
pauledd7c242003-06-04 13:59:38 +00001407fi
1408AC_SUBST(LIBCAP)
1409
Doug VanLeuven327c4cd2012-12-14 14:58:30 +02001410dnl ---------------------------------------------------------------------------
1411dnl http://www.gnu.org/software/autoconf-archive/ax_sys_weak_alias.html
1412dnl Check for and set one of the following = 1
1413dnl HAVE_SYS_WEAK_ALIAS_ATTRIBUTE
1414dnl HAVE_SYS_WEAK_ALIAS_PRAGMA
1415dnl HAVE_SYS_WEAK_ALIAS_HPSECONDARY
1416dnl HAVE_SYS_WEAK_ALIAS_CRIDUPLICATE
1417dnl If any scheme is found, set
1418dnl HAVE_SYS_WEAK_ALIAS=1
1419dnl The following variable is set to text value
1420dnl WEAK_ALIAS = "attribute" || "pragma" || "hpsecondary" || "criduplicate" || "no"
1421dnl If weak alias can cross object file boundaries
1422dnl WEAK_ALIAS_CROSSFILE = "yes" || "no"
1423dnl ---------------------------------------------------------------------------
1424AX_SYS_WEAK_ALIAS
1425
paulfb2d1502003-06-04 09:40:54 +00001426dnl ---------------------------
1427dnl check for glibc 'backtrace'
1428dnl ---------------------------
David Lamparter8c99b4c2013-08-01 07:43:36 +00001429if test x"${enable_backtrace}" != x"no" ; then
1430 backtrace_ok=no
1431 AC_CHECK_HEADER([execinfo.h], [
1432 AC_SEARCH_LIBS([backtrace], [execinfo], [
1433 AC_DEFINE(HAVE_GLIBC_BACKTRACE,,[Glibc backtrace])
1434 AC_DEFINE(HAVE_STACK_TRACE,,[Stack symbol decoding])
1435 backtrace_ok=yes
1436 ],, [-lm])
Dmitrij Tejblumeda35292011-09-15 20:00:33 +04001437 ])
David Lamparter8c99b4c2013-08-01 07:43:36 +00001438
1439 if test x"${enable_backtrace}" = x"yes" -a x"${backtrace_ok}" = x"no"; then
1440 dnl user explicitly requested backtrace but we failed to find support
1441 AC_MSG_FAILURE([failed to find backtrace support])
1442 fi
1443fi
paulfb2d1502003-06-04 09:40:54 +00001444
Paul Jakma41be32b2006-03-30 13:53:59 +00001445dnl -----------------------------------------
1446dnl check for malloc mallinfo struct and call
1447dnl this must try and link using LIBS, in
1448dnl order to check no alternative allocator
1449dnl has been specified, which might not provide
1450dnl mallinfo, e.g. such as Umem on Solaris.
1451dnl -----------------------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001452AC_CHECK_HEADER([malloc.h],
Paul Jakma41be32b2006-03-30 13:53:59 +00001453 [AC_MSG_CHECKING(whether mallinfo is available)
1454 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <malloc.h>]],
1455 [[struct mallinfo ac_x; ac_x = mallinfo ();]])],
1456 [AC_MSG_RESULT(yes)
1457 AC_DEFINE(HAVE_MALLINFO,,mallinfo)],
1458 AC_MSG_RESULT(no)
1459 )
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001460 ], [], QUAGGA_INCLUDES)
Paul Jakma41be32b2006-03-30 13:53:59 +00001461
paul408ad942003-05-20 00:03:33 +00001462dnl ----------
1463dnl configure date
1464dnl ----------
1465CONFDATE=`date '+%Y%m%d'`
1466AC_SUBST(CONFDATE)
1467
Paul P Komkoff Jr46bc0e42008-08-13 16:17:04 +01001468dnl Conditionally enable PIE support for GNU toolchains.
Paul P Komkoff Jr46bc0e42008-08-13 16:17:04 +01001469AC_ARG_ENABLE(pie, AS_HELP_STRING([--disable-pie], [Do not build tools as a Position Independent Executables]))
Paul P Komkoff Jr0e9de562008-09-24 16:42:35 +01001470if test "$enable_pie" != "no"; then
Paul P Komkoff Jr46bc0e42008-08-13 16:17:04 +01001471 AC_CACHE_CHECK([whether $CC accepts PIE flags], [ap_cv_cc_pie], [
1472 save_CFLAGS=$CFLAGS
1473 save_LDFLAGS=$LDFLAGS
1474 CFLAGS="$CFLAGS -fPIE"
1475 LDFLAGS="$LDFLAGS -pie"
1476 AC_LINK_IFELSE([AC_LANG_SOURCE([[static int foo[30000]; int main () { return 0; }]])],
1477 [ap_cv_cc_pie=yes], [ap_cv_cc_pie=no]
1478 )
1479 CFLAGS=$save_CFLAGS
1480 LDFLAGS=$save_LDFLAGS
1481 ])
1482 if test "$ap_cv_cc_pie" = "yes"; then
1483 PICFLAGS="-fPIE"
1484 PILDFLAGS="-pie"
1485 fi
1486fi
1487
1488AC_SUBST(PICFLAGS)
1489AC_SUBST(PILDFLAGS)
1490
David Lamparterf281ab92013-02-26 16:21:20 +01001491dnl -------
1492dnl DejaGNU
1493dnl -------
1494if test x"$DEJAGNU" = x
1495then
1496 DEJAGNU="\$(top_srcdir)/tests/global-conf.exp"
1497fi
1498RUNTESTDEFAULTFLAGS="-x --tool \$\$tool"
1499
1500AC_SUBST(DEJAGNU)
1501AC_SUBST(RUNTESTDEFAULTFLAGS)
1502
paul7ea487b2003-03-17 02:05:07 +00001503dnl ------------------------------
paula159ed92003-06-04 11:01:45 +00001504dnl set paths for state directory
paul23bd12c2003-04-07 06:11:09 +00001505dnl ------------------------------
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001506AC_MSG_CHECKING(directory to use for state file)
paul23bd12c2003-04-07 06:11:09 +00001507if test "${prefix}" = "NONE"; then
paule8f29842003-08-12 13:08:31 +00001508 quagga_statedir_prefix="";
paul23bd12c2003-04-07 06:11:09 +00001509else
paule8f29842003-08-12 13:08:31 +00001510 quagga_statedir_prefix=${prefix}
paul23bd12c2003-04-07 06:11:09 +00001511fi
1512if test "${localstatedir}" = '${prefix}/var'; then
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001513 for QUAGGA_STATE_DIR in ${quagga_statedir_prefix}/var/run dnl
paule8f29842003-08-12 13:08:31 +00001514 ${quagga_statedir_prefix}/var/adm dnl
1515 ${quagga_statedir_prefix}/etc dnl
paula159ed92003-06-04 11:01:45 +00001516 /var/run dnl
1517 /var/adm dnl
1518 /etc dnl
1519 /dev/null;
paul23bd12c2003-04-07 06:11:09 +00001520 do
paule8f29842003-08-12 13:08:31 +00001521 test -d $QUAGGA_STATE_DIR && break
paul23bd12c2003-04-07 06:11:09 +00001522 done
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001523 quagga_statedir=$QUAGGA_STATE_DIR
paul23bd12c2003-04-07 06:11:09 +00001524else
paule8f29842003-08-12 13:08:31 +00001525 quagga_statedir=${localstatedir}
paul23bd12c2003-04-07 06:11:09 +00001526fi
paule8f29842003-08-12 13:08:31 +00001527if test $quagga_statedir = "/dev/null"; then
paula159ed92003-06-04 11:01:45 +00001528 AC_MSG_ERROR('STATE DIRECTORY NOT FOUND! FIX OR SPECIFY --localstatedir!')
1529fi
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001530AC_MSG_RESULT(${quagga_statedir})
1531AC_SUBST(quagga_statedir)
paula159ed92003-06-04 11:01:45 +00001532
paule8f29842003-08-12 13:08:31 +00001533AC_DEFINE_UNQUOTED(PATH_ZEBRA_PID, "$quagga_statedir/zebra.pid",zebra PID)
1534AC_DEFINE_UNQUOTED(PATH_RIPD_PID, "$quagga_statedir/ripd.pid",ripd PID)
1535AC_DEFINE_UNQUOTED(PATH_RIPNGD_PID, "$quagga_statedir/ripngd.pid",ripngd PID)
1536AC_DEFINE_UNQUOTED(PATH_BGPD_PID, "$quagga_statedir/bgpd.pid",bgpd PID)
1537AC_DEFINE_UNQUOTED(PATH_OSPFD_PID, "$quagga_statedir/ospfd.pid",ospfd PID)
1538AC_DEFINE_UNQUOTED(PATH_OSPF6D_PID, "$quagga_statedir/ospf6d.pid",ospf6d PID)
jardin9e867fe2003-12-23 08:56:18 +00001539AC_DEFINE_UNQUOTED(PATH_ISISD_PID, "$quagga_statedir/isisd.pid",isisd PID)
Everton Marques871dbcf2009-08-11 15:43:05 -03001540AC_DEFINE_UNQUOTED(PATH_PIMD_PID, "$quagga_statedir/pimd.pid",pimd PID)
ajsd0199432004-12-22 14:03:52 +00001541AC_DEFINE_UNQUOTED(PATH_WATCHQUAGGA_PID, "$quagga_statedir/watchquagga.pid",watchquagga PID)
paule8f29842003-08-12 13:08:31 +00001542AC_DEFINE_UNQUOTED(ZEBRA_SERV_PATH, "$quagga_statedir/zserv.api",zebra api socket)
1543AC_DEFINE_UNQUOTED(ZEBRA_VTYSH_PATH, "$quagga_statedir/zebra.vty",zebra vty socket)
1544AC_DEFINE_UNQUOTED(RIP_VTYSH_PATH, "$quagga_statedir/ripd.vty",rip vty socket)
1545AC_DEFINE_UNQUOTED(RIPNG_VTYSH_PATH, "$quagga_statedir/ripngd.vty",ripng vty socket)
1546AC_DEFINE_UNQUOTED(BGP_VTYSH_PATH, "$quagga_statedir/bgpd.vty",bgpd vty socket)
1547AC_DEFINE_UNQUOTED(OSPF_VTYSH_PATH, "$quagga_statedir/ospfd.vty",ospfd vty socket)
1548AC_DEFINE_UNQUOTED(OSPF6_VTYSH_PATH, "$quagga_statedir/ospf6d.vty",ospf6d vty socket)
jardin9e867fe2003-12-23 08:56:18 +00001549AC_DEFINE_UNQUOTED(ISIS_VTYSH_PATH, "$quagga_statedir/isisd.vty",isisd vty socket)
Everton Marques871dbcf2009-08-11 15:43:05 -03001550AC_DEFINE_UNQUOTED(PIM_VTYSH_PATH, "$quagga_statedir/pimd.vty",pimd vty socket)
ajs515210b2004-12-22 15:35:12 +00001551AC_DEFINE_UNQUOTED(DAEMON_VTY_DIR, "$quagga_statedir",daemon vty directory)
paul7ea487b2003-03-17 02:05:07 +00001552
paul1eb8ef22005-04-07 07:30:20 +00001553dnl -------------------------------
1554dnl Quagga sources should always be
1555dnl current wrt interfaces. Dont
1556dnl allow deprecated interfaces to
1557dnl be exposed.
1558dnl -------------------------------
1559AC_DEFINE(QUAGGA_NO_DEPRECATED_INTERFACES, 1, Hide deprecated interfaces)
1560
paul7ea487b2003-03-17 02:05:07 +00001561dnl ---------------------------
1562dnl Check htonl works correctly
1563dnl ---------------------------
1564AC_MSG_CHECKING(for working htonl)
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001565AC_CACHE_VAL(ac_cv_htonl_works,
1566 [AC_LINK_IFELSE([AC_LANG_PROGRAM([QUAGGA_INCLUDES],[htonl (0);])],
1567 [ac_cv_htonl_works=yes], [ac_cv_htonl_works=no])
1568 ]
1569)
paul7ea487b2003-03-17 02:05:07 +00001570AC_MSG_RESULT($ac_cv_htonl_works)
1571
paul14c17fd2004-11-07 22:34:23 +00001572AC_CONFIG_FILES([Makefile lib/Makefile zebra/Makefile ripd/Makefile
ajsd0199432004-12-22 14:03:52 +00001573 ripngd/Makefile bgpd/Makefile ospfd/Makefile watchquagga/Makefile
Paul Jakma336724d2015-05-11 15:13:31 +01001574 ospf6d/Makefile isisd/Makefile vtysh/Makefile
David Lamparterf281ab92013-02-26 16:21:20 +01001575 doc/Makefile ospfclient/Makefile tests/Makefile m4/Makefile
Everton Marques871dbcf2009-08-11 15:43:05 -03001576 pimd/Makefile
David Lamparter5bb7e4d2013-02-26 17:53:30 +01001577 tests/bgpd.tests/Makefile
David Lamparterc69905b2013-01-24 01:39:14 +01001578 tests/libzebra.tests/Makefile
David Lamparterf281ab92013-02-26 16:21:20 +01001579 redhat/Makefile
gdt69f1fc22004-08-27 15:57:35 +00001580 pkgsrc/Makefile
paul670bbf12004-11-12 09:05:00 +00001581 redhat/quagga.spec
gdtb7a97f82004-07-23 16:23:56 +00001582 lib/version.h
paul14c17fd2004-11-07 22:34:23 +00001583 doc/defines.texi
hassof695b012005-04-02 19:03:39 +00001584 isisd/topology/Makefile
gdtcbd04082004-08-31 18:16:36 +00001585 pkgsrc/bgpd.sh pkgsrc/ospf6d.sh pkgsrc/ospfd.sh
paulf31293a2004-11-12 09:27:04 +00001586 pkgsrc/ripd.sh pkgsrc/ripngd.sh pkgsrc/zebra.sh])
paul26275b02005-04-11 07:10:47 +00001587AC_CONFIG_FILES([solaris/Makefile])
1588
paul670bbf12004-11-12 09:05:00 +00001589AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl])
hasso48577192004-11-19 06:41:49 +00001590## Hack, but working solution to avoid rebuilding of quagga.info.
1591## It's already in CVS until texinfo 4.7 is more common.
paul14c17fd2004-11-07 22:34:23 +00001592AC_OUTPUT
paul7ea487b2003-03-17 02:05:07 +00001593
1594echo "
hassoc89f6492004-08-26 12:21:28 +00001595Quagga configuration
1596--------------------
1597quagga version : ${PACKAGE_VERSION}
Joachim Nilsson1080c132012-05-30 08:15:48 +02001598host operating system : ${host_os}
paul7ea487b2003-03-17 02:05:07 +00001599source code location : ${srcdir}
1600compiler : ${CC}
1601compiler flags : ${CFLAGS}
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001602make : ${MAKE-make}
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001603linker flags : ${LDFLAGS} ${LIBS} ${LIBCAP} ${LIBREADLINE} ${LIBM}
paule8f29842003-08-12 13:08:31 +00001604state file directory : ${quagga_statedir}
pauldc7a2bf2003-10-22 00:07:44 +00001605config file directory : `eval echo \`echo ${sysconfdir}\``
gdtd6b72f72003-12-03 17:24:27 +00001606example directory : `eval echo \`echo ${exampledir}\``
paul8d4aee52003-06-06 00:30:35 +00001607user to run as : ${enable_user}
1608group to run as : ${enable_group}
1609group for vty sockets : ${enable_vty_group}
gdtaa593d52003-12-22 20:15:53 +00001610config file mask : ${enable_configfile_mask}
1611log file mask : ${enable_logfile_mask}
pauldc7a2bf2003-10-22 00:07:44 +00001612
1613The above user and group must have read/write access to the state file
Paul Jakma105b8232006-05-28 08:02:41 +00001614directory and to the config files in the config file directory."
1615
1616if test x"$quagga_cv_gnu_make" = x"no"; then echo "
1617Warning: The ${MAKE-make} programme detected, either in your path or
1618via the MAKE variable, is not GNU Make. GNU make may be installed as
1619gmake on some systems. and is required to complete a build of Quagga
1620" > /dev/stderr
1621fi