blob: a82470cd0f6f11fc442fb18392eb25be7effb9c1 [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]))
Paul Jakma57345092011-12-25 17:52:09 +0100242AC_ARG_ENABLE(babeld,
David Lamparterb6fa7602014-06-28 22:15:59 +0200243 AS_HELP_STRING([--disable-babeld], [do not build babeld]))
ajsd0199432004-12-22 14:03:52 +0000244AC_ARG_ENABLE(watchquagga,
David Lamparterb6fa7602014-06-28 22:15:59 +0200245 AS_HELP_STRING([--disable-watchquagga], [do not build watchquagga]))
jardin9e867fe2003-12-23 08:56:18 +0000246AC_ARG_ENABLE(isisd,
David Lamparter656a2c02015-02-09 11:36:10 +0100247 AS_HELP_STRING([--disable-isisd], [do not build isisd]))
Everton Marques871dbcf2009-08-11 15:43:05 -0300248AC_ARG_ENABLE(pimd,
David Lamparterb6fa7602014-06-28 22:15:59 +0200249 AS_HELP_STRING([--enable-pimd], [build pimd]))
paul7ea487b2003-03-17 02:05:07 +0000250AC_ARG_ENABLE(bgp-announce,
David Lamparterb6fa7602014-06-28 22:15:59 +0200251 AS_HELP_STRING([--disable-bgp-announce,], [turn off BGP route announcement]))
paul7ea487b2003-03-17 02:05:07 +0000252AC_ARG_ENABLE(snmp,
David Lamparterb6fa7602014-06-28 22:15:59 +0200253 AS_HELP_STRING([--enable-snmp=ARG], [enable SNMP support (smux or agentx)]))
paul7ea487b2003-03-17 02:05:07 +0000254AC_ARG_WITH(libpam,
David Lamparterb6fa7602014-06-28 22:15:59 +0200255 AS_HELP_STRING([--with-libpam], [use libpam for PAM support in vtysh]))
hasso71c0fb52003-05-25 20:18:13 +0000256AC_ARG_ENABLE(tcp-zebra,
David Lamparterb6fa7602014-06-28 22:15:59 +0200257 AS_HELP_STRING([--enable-tcp-zebra], [enable TCP/IP socket connection between zebra and protocol daemon]))
paul7ea487b2003-03-17 02:05:07 +0000258AC_ARG_ENABLE(opaque-lsa,
David Lamparterb6fa7602014-06-28 22:15:59 +0200259 AS_HELP_STRING([--disable-opaque-lsa],[do not build OSPF Opaque-LSA with OSPFAPI support (RFC2370)]))
paul1ef74ef2003-03-21 15:16:05 +0000260AC_ARG_ENABLE(ospfapi,
David Lamparterb6fa7602014-06-28 22:15:59 +0200261 AS_HELP_STRING([--disable-ospfapi], [do not build OSPFAPI to access the OSPF LSA Database]))
paul1ef74ef2003-03-21 15:16:05 +0000262AC_ARG_ENABLE(ospfclient,
David Lamparterb6fa7602014-06-28 22:15:59 +0200263 AS_HELP_STRING([--disable-ospfclient], [do not build OSPFAPI client for OSPFAPI,
264 (this is the default if --disable-ospfapi is set)]))
paul7ea487b2003-03-17 02:05:07 +0000265AC_ARG_ENABLE(ospf-te,
David Lamparterb6fa7602014-06-28 22:15:59 +0200266 AS_HELP_STRING([--disable-ospf-te],[disable Traffic Engineering Extension to OSPF]))
paul7ea487b2003-03-17 02:05:07 +0000267AC_ARG_ENABLE(multipath,
David Lamparterb6fa7602014-06-28 22:15:59 +0200268 AS_HELP_STRING([--enable-multipath=ARG], [enable multipath function, ARG must be digit]))
Paul P Komkoff Jrfe86b482008-08-13 16:56:05 +0100269AC_ARG_ENABLE(user,
David Lamparterb6fa7602014-06-28 22:15:59 +0200270 AS_HELP_STRING([--enable-user=USER], [user to run Quagga suite as (default quagga)]))
Paul P Komkoff Jrfe86b482008-08-13 16:56:05 +0100271AC_ARG_ENABLE(group,
David Lamparterb6fa7602014-06-28 22:15:59 +0200272 AS_HELP_STRING([--enable-group=GROUP], [group to run Quagga suite as (default quagga)]))
pauledd7c242003-06-04 13:59:38 +0000273AC_ARG_ENABLE(vty_group,
David Lamparterb6fa7602014-06-28 22:15:59 +0200274 AS_HELP_STRING([--enable-vty-group=ARG], [set vty sockets to have specified group as owner]))
gdtaa593d52003-12-22 20:15:53 +0000275AC_ARG_ENABLE(configfile_mask,
David Lamparterb6fa7602014-06-28 22:15:59 +0200276 AS_HELP_STRING([--enable-configfile-mask=ARG], [set mask for config files]))
gdtaa593d52003-12-22 20:15:53 +0000277AC_ARG_ENABLE(logfile_mask,
David Lamparterb6fa7602014-06-28 22:15:59 +0200278 AS_HELP_STRING([--enable-logfile-mask=ARG], [set mask for log files]))
pauledd7c242003-06-04 13:59:38 +0000279
hasso71c0fb52003-05-25 20:18:13 +0000280AC_ARG_ENABLE(rtadv,
David Lamparterb6fa7602014-06-28 22:15:59 +0200281 AS_HELP_STRING([--disable-rtadv], [disable IPV6 router advertisement feature]))
hassoca776982004-06-12 14:33:05 +0000282AC_ARG_ENABLE(irdp,
David Lamparterb6fa7602014-06-28 22:15:59 +0200283 AS_HELP_STRING([--enable-irdp], [enable IRDP server support in zebra]))
hassof695b012005-04-02 19:03:39 +0000284AC_ARG_ENABLE(isis_topology,
David Lamparterb6fa7602014-06-28 22:15:59 +0200285 AS_HELP_STRING([--enable-isis-topology], [enable IS-IS topology generator]))
hasso41d3fc92004-04-06 11:59:00 +0000286AC_ARG_ENABLE(capabilities,
David Lamparterb6fa7602014-06-28 22:15:59 +0200287 AS_HELP_STRING([--disable-capabilities], [disable using POSIX capabilities]))
Stephen Hemminger47f6aef2013-01-04 22:29:22 +0000288AC_ARG_ENABLE(rusage,
David Lamparterb6fa7602014-06-28 22:15:59 +0200289 AS_HELP_STRING([--disable-rusage], [disable using getrusage]))
paul6b6942f2004-10-22 04:55:05 +0000290AC_ARG_ENABLE(gcc_ultra_verbose,
David Lamparterb6fa7602014-06-28 22:15:59 +0200291 AS_HELP_STRING([--enable-gcc-ultra-verbose], [enable ultra verbose GCC warnings]))
Paul Jakma3453a712009-06-12 14:21:02 +0100292AC_ARG_ENABLE(linux24_tcp_md5,
David Lamparterb6fa7602014-06-28 22:15:59 +0200293 AS_HELP_STRING([--enable-linux24-tcp-md5], [enable support for old, Linux-2.4 RFC2385 patch]))
ajs3cade262004-12-29 17:50:22 +0000294AC_ARG_ENABLE(gcc-rdynamic,
David Lamparterb6fa7602014-06-28 22:15:59 +0200295 AS_HELP_STRING([--enable-gcc-rdynamic], [enable linking with -rdynamic for better backtraces (default if gcc)]))
David Lamparter8c99b4c2013-08-01 07:43:36 +0000296AC_ARG_ENABLE(backtrace,
David Lamparterb6fa7602014-06-28 22:15:59 +0200297 AS_HELP_STRING([--disable-backtrace,], [disable crash backtraces (default autodetect)]))
ajs924b9222005-04-16 17:11:24 +0000298AC_ARG_ENABLE(time-check,
David Lamparterb6fa7602014-06-28 22:15:59 +0200299 AS_HELP_STRING([--disable-time-check], [disable slow thread warning messages]))
Jeremy Jackson25f45882009-01-12 16:06:12 -0500300AC_ARG_ENABLE(pcreposix,
David Lamparterb6fa7602014-06-28 22:15:59 +0200301 AS_HELP_STRING([--enable-pcreposix], [enable using PCRE Posix libs for regex functions]))
Avneesh Sachdev5adc2522012-11-13 22:48:59 +0000302AC_ARG_ENABLE(fpm,
David Lamparterb6fa7602014-06-28 22:15:59 +0200303 AS_HELP_STRING([--enable-fpm], [enable Forwarding Plane Manager support]))
David Lamparterc0bedeb2015-03-03 10:00:43 +0100304AC_ARG_ENABLE(werror,
305 AS_HELP_STRING([--enable-werror], [enable -Werror (recommended for developers only)]))
paul6b6942f2004-10-22 04:55:05 +0000306
David Lamparter8c99b4c2013-08-01 07:43:36 +0000307if test x"${enable_gcc_rdynamic}" != x"no" ; then
308 if test x"${enable_gcc_rdynamic}" = x"yes" -o x"$COMPILER" = x"GCC"; then
309 LDFLAGS="${LDFLAGS} -rdynamic"
310 fi
ajs3cade262004-12-29 17:50:22 +0000311fi
312
ajs924b9222005-04-16 17:11:24 +0000313if test x"${enable_time_check}" != x"no" ; then
314 if test x"${enable_time_check}" = x"yes" -o x"${enable_time_check}" = x ; then
315 AC_DEFINE(CONSUMED_TIME_CHECK,5000000,Consumed Time Check)
316 else
317 AC_DEFINE_UNQUOTED(CONSUMED_TIME_CHECK,$enable_time_check,Consumed Time Check)
318 fi
319fi
320
Avneesh Sachdev5adc2522012-11-13 22:48:59 +0000321if test "${enable_fpm}" = "yes"; then
322 AC_DEFINE(HAVE_FPM,,Forwarding Plane Manager support)
323fi
324
paul7ea487b2003-03-17 02:05:07 +0000325if test "${enable_tcp_zebra}" = "yes"; then
326 AC_DEFINE(HAVE_TCP_ZEBRA,,Use TCP for zebra communication)
327fi
328
Paul Jakma36de2612011-03-22 10:18:05 +0000329if test "${enable_opaque_lsa}" != "no"; then
paul7ea487b2003-03-17 02:05:07 +0000330 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
331fi
332
Paul Jakma36de2612011-03-22 10:18:05 +0000333if test "${enable_ospf_te}" != "no"; then
paul7ea487b2003-03-17 02:05:07 +0000334 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
335 AC_DEFINE(HAVE_OSPF_TE,,OSPF TE)
336fi
337
Paul Jakma3453a712009-06-12 14:21:02 +0100338if test "${enable_linux24_tcp_md5}" = "yes"; then
339 AC_DEFINE(HAVE_TCP_MD5_LINUX24,,Old Linux 2.4 TCP MD5 Signature Patch)
340fi
341
gdtd2a0ccc2003-12-03 18:13:48 +0000342AC_MSG_CHECKING(if zebra should be configurable to send Route Advertisements)
343if test "${enable_rtadv}" != "no"; then
hasso71c0fb52003-05-25 20:18:13 +0000344 AC_MSG_RESULT(yes)
gdtd2a0ccc2003-12-03 18:13:48 +0000345 AC_DEFINE(HAVE_RTADV,,Enable IPv6 Routing Advertisement support)
paul2487bea2003-05-25 23:51:31 +0000346else
347 AC_MSG_RESULT(no)
hasso71c0fb52003-05-25 20:18:13 +0000348fi
paul7ea487b2003-03-17 02:05:07 +0000349
hassoca776982004-06-12 14:33:05 +0000350if test "${enable_irdp}" = "yes"; then
351 AC_DEFINE(HAVE_IRDP,, IRDP )
352fi
353
David Lamparter656a2c02015-02-09 11:36:10 +0100354if test "${enable_isisd}" != "no" && test "${enable_isis_topology}" = yes; then
hassof695b012005-04-02 19:03:39 +0000355 AC_DEFINE(TOPOLOGY_GENERATE,,Enable IS-IS topology generator code)
David Lamparteree1ac2d2012-07-19 12:58:59 +0200356 ISIS_TOPOLOGY_INCLUDES="-I\$(srcdir)/topology"
hassof695b012005-04-02 19:03:39 +0000357 ISIS_TOPOLOGY_DIR="topology"
358 ISIS_TOPOLOGY_LIB="./topology/libtopology.a"
359fi
360
361AC_SUBST(ISIS_TOPOLOGY_INCLUDES)
362AC_SUBST(ISIS_TOPOLOGY_DIR)
363AC_SUBST(ISIS_TOPOLOGY_LIB)
364
paul79cb2162003-06-06 12:19:53 +0000365if test "${enable_user}" = "yes" || test x"${enable_user}" = x""; then
paule8f29842003-08-12 13:08:31 +0000366 enable_user="quagga"
pauledd7c242003-06-04 13:59:38 +0000367elif test "${enable_user}" = "no"; then
368 enable_user="root"
369fi
pauledd7c242003-06-04 13:59:38 +0000370
paul79cb2162003-06-06 12:19:53 +0000371if test "${enable_group}" = "yes" || test x"${enable_group}" = x""; then
paule8f29842003-08-12 13:08:31 +0000372 enable_group="quagga"
pauledd7c242003-06-04 13:59:38 +0000373elif test "${enable_group}" = "no"; then
374 enable_group="root"
375fi
pauledd7c242003-06-04 13:59:38 +0000376
377if test x"${enable_vty_group}" = x"yes" ; then
paul8d4aee52003-06-06 00:30:35 +0000378 AC_MSG_ERROR([--enable-vty-group requires a group as argument, not yes])
paul79cb2162003-06-06 12:19:53 +0000379elif test x"${enable_vty_group}" != x""; then
paul8d4aee52003-06-06 00:30:35 +0000380 if test x"${enable_vty_group}" != x"no"; then
pauledd7c242003-06-04 13:59:38 +0000381 AC_DEFINE_UNQUOTED(VTY_GROUP, "${enable_vty_group}", VTY Sockets Group)
382 fi
383fi
paul26275b02005-04-11 07:10:47 +0000384AC_SUBST([enable_user])
385AC_SUBST([enable_group])
386AC_SUBST([enable_vty_group])
387AC_DEFINE_UNQUOTED(QUAGGA_USER, "${enable_user}", Quagga User)
388AC_DEFINE_UNQUOTED(QUAGGA_GROUP, "${enable_group}", Quagga Group)
pauledd7c242003-06-04 13:59:38 +0000389
gdtaa593d52003-12-22 20:15:53 +0000390enable_configfile_mask=${enable_configfile_mask:-0600}
391AC_DEFINE_UNQUOTED(CONFIGFILE_MASK, ${enable_configfile_mask}, Mask for config files)
392
393enable_logfile_mask=${enable_logfile_mask:-0600}
394AC_DEFINE_UNQUOTED(LOGFILE_MASK, ${enable_logfile_mask}, Mask for log files)
395
paul7ea487b2003-03-17 02:05:07 +0000396MULTIPATH_NUM=1
397
398case "${enable_multipath}" in
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000399 [[0-9]|[1-9][0-9]])
paul7ea487b2003-03-17 02:05:07 +0000400 MULTIPATH_NUM="${enable_multipath}"
401 ;;
402 "")
403 ;;
404 *)
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000405 AC_MSG_FAILURE([Please specify digit to enable multipath ARG])
paul7ea487b2003-03-17 02:05:07 +0000406 ;;
407esac
408
paul7ea487b2003-03-17 02:05:07 +0000409AC_SUBST(MULTIPATH_NUM)
410
Joachim Nilsson1080c132012-05-30 08:15:48 +0200411dnl -----------------------------------
412dnl Add extra version string to package
413dnl name, string and version fields.
414dnl -----------------------------------
415if test "x${EXTRAVERSION}" != "x" ; then
David Lamparter0be793e2012-11-27 01:34:56 +0000416 VERSION="${VERSION}${EXTRAVERSION}"
417 PACKAGE_VERSION="${PACKAGE_VERSION}${EXTRAVERSION}"
418 PACKAGE_STRING="${PACKAGE_STRING}${EXTRAVERSION}"
Joachim Nilsson1080c132012-05-30 08:15:48 +0200419fi
420
David Lampartera16dcf72012-12-13 11:20:50 +0100421if test "x$with_pkg_git_version" = "xyes"; then
422 if test -d "${srcdir}/.git"; then
423 AC_DEFINE(GIT_VERSION, [1], [include git version info])
424 else with_pkg_git_version="no"
425 AC_MSG_WARN([--with-pkg-git-version given, but this is not a git checkout])
426 fi
427fi
428AM_CONDITIONAL([GIT_VERSION], [test "x$with_pkg_git_version" = "xyes"])
David Lamparter0be793e2012-11-27 01:34:56 +0000429
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000430dnl ------------------------------------
431dnl Check C keywords and standard types
432dnl ------------------------------------
433AC_C_CONST
434AC_C_INLINE
435AC_C_RESTRICT
436AC_C_VOLATILE
pauldc7a2bf2003-10-22 00:07:44 +0000437AC_HEADER_STDC
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000438AC_HEADER_TIME
439AC_HEADER_SYS_WAIT
440dnl AC_TYPE_PID_T
441AC_TYPE_UID_T
442AC_TYPE_MODE_T
443AC_TYPE_SIZE_T
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000444AC_STRUCT_TM
pauldc7a2bf2003-10-22 00:07:44 +0000445
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000446dnl -------------------------
447dnl Check other header files.
448dnl -------------------------
449AC_CHECK_HEADERS([stropts.h sys/ksym.h sys/times.h sys/select.h \
450 sys/types.h linux/version.h netdb.h asm/types.h \
Timo Teräs16ffb262014-07-29 09:41:54 +0000451 sys/cdefs.h sys/param.h limits.h signal.h \
Paul Jakma6511cab2009-06-18 17:38:01 +0100452 sys/socket.h netinet/in.h time.h sys/time.h])
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000453
454dnl Utility macro to avoid retyping includes all the time
455m4_define([QUAGGA_INCLUDES],
456[#ifdef SUNOS_5
457#define _XPG4_2
458#define __EXTENSIONS__
459#endif
460#include <stdio.h>
461#if STDC_HEADERS
462# include <stdlib.h>
463# include <stddef.h>
464#else
465# if HAVE_STDLIB_H
466# include <stdlib.h>
467# endif
468#endif
469#if HAVE_SYS_TYPES_H
470# include <sys/types.h>
471#endif
472/* sys/conf.h depends on param.h on FBSD at least */
473#if HAVE_SYS_PARAM_H
474# include <sys/param.h>
475#endif
476/* Required for MAXSIG */
477#if HAVE_SIGNAL_H
478# include <signal.h>
479#endif
480#if HAVE_SYS_SOCKET_H
481# include <sys/socket.h>
482#endif
Hasso Tepperea057672013-01-13 17:45:29 +0000483#ifdef __APPLE__
484# define __APPLE_USE_RFC_3542
485#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000486#if HAVE_NETINET_IN_H
487# include <netinet/in.h>
488#endif
Paul Jakma6511cab2009-06-18 17:38:01 +0100489#ifdef TIME_WITH_SYS_TIME
490# include <sys/time.h>
491# include <time.h>
492#else
493# ifdef HAVE_SYS_TIME_H
494# include <sys/time.h>
495# else
496# include <time.h>
497# endif
498#endif /* TIME_WITH_SYS_TIME */
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000499])dnl
500
Denis Ovsienko2b43bf22011-07-14 16:30:08 +0400501dnl HAVE_NET_IF_H must be discovered by the time the longer AC_CHECK_HEADERS
502dnl round below execution begins, otherwise it doesn't properly detect
503dnl HAVE_NETINET6_IN6_VAR_H, HAVE_NET_IF_VAR_H and HAVE_STRUCT_IN6_ALIASREQ
504dnl on FreeBSD (BZ#408).
505
506AC_CHECK_HEADERS([net/if.h], [], [], QUAGGA_INCLUDES)
507
508m4_define([QUAGGA_INCLUDES],
509QUAGGA_INCLUDES
510[#if HAVE_NET_IF_H
511# include <net/if.h>
512#endif
513])dnl
514
515dnl Same applies for HAVE_NET_IF_VAR_H, which HAVE_NETINET6_ND6_H and
516dnl HAVE_NETINET_IN_VAR_H depend upon. But if_var.h depends on if.h, hence
517dnl an additional round for it.
518
519AC_CHECK_HEADERS([net/if_var.h], [], [], QUAGGA_INCLUDES)
520
521m4_define([QUAGGA_INCLUDES],
522QUAGGA_INCLUDES
523[#if HAVE_NET_IF_VAR_H
524# include <net/if_var.h>
525#endif
526])dnl
527
528AC_CHECK_HEADERS([sys/un.h netinet/in_systm.h netinet/in_var.h \
529 net/if_dl.h net/netopt.h net/route.h \
Paul Jakma11770e12007-06-22 16:14:42 +0000530 inet/nd.h arpa/inet.h netinet/ip_icmp.h \
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000531 fcntl.h stddef.h sys/ioctl.h syslog.h wchar.h wctype.h \
532 sys/sysctl.h sys/sockio.h kvm.h sys/conf.h],
533 [], [], QUAGGA_INCLUDES)
534
535AC_CHECK_HEADERS([ucontext.h], [], [],
536[#ifndef __USE_GNU
537#define __USE_GNU
538#endif /* __USE_GNU */
539QUAGGA_INCLUDES
540])
541
Joakim Tjernlundb166ea22009-06-25 16:40:06 +0100542m4_define([UCONTEXT_INCLUDES],
543[#include <ucontext.h>])dnl
544
545AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.uc_regs],
546 [], [], [UCONTEXT_INCLUDES])
547AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.regs],
548 [AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.regs.nip],
549 [], [], [UCONTEXT_INCLUDES])],
550 [], [UCONTEXT_INCLUDES])
551AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.gregs],
552 [], [], [UCONTEXT_INCLUDES])
553
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000554m4_define([QUAGGA_INCLUDES],
555QUAGGA_INCLUDES
Denis Ovsienko2b43bf22011-07-14 16:30:08 +0400556[#if HAVE_SYS_UN_H
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000557# include <sys/un.h>
558#endif
559#if HAVE_NETINET_IN_SYSTM_H
560# include <netinet/in_systm.h>
561#endif
562#if HAVE_NETINET_IN_VAR_H
563# include <netinet/in_var.h>
564#endif
565#if HAVE_NET_IF_DL_H
566# include <net/if_dl.h>
567#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000568#if HAVE_NET_NETOPT_H
569# include <net/netopt.h>
570#endif
571#if HAVE_NET_ROUTE_H
572# include <net/route.h>
573#endif
574#if HAVE_INET_ND_H
575# include <inet/nd.h>
576#endif
577#if HAVE_ARPA_INET_H
578# include <arpa/inet.h>
579#endif
Paul Jakma11770e12007-06-22 16:14:42 +0000580/* Required for IDRP */
581#if HAVE_NETINET_IP_ICMP_H
582# include <netinet/ip_icmp.h>
583#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000584])dnl
pauldc7a2bf2003-10-22 00:07:44 +0000585
gdtfa3232e2003-12-03 17:52:30 +0000586dnl V6 headers are checked below, after we check for v6
paul7ea487b2003-03-17 02:05:07 +0000587
paul7ea487b2003-03-17 02:05:07 +0000588dnl Some systems (Solaris 2.x) require libnsl (Network Services Library)
589case "$host" in
paulafd8a122005-03-12 06:36:10 +0000590 [*-sunos5.[6-7]*] | [*-solaris2.[6-7]*])
paul7ea487b2003-03-17 02:05:07 +0000591 opsys=sol2-6
paulafd8a122005-03-12 06:36:10 +0000592 AC_DEFINE(SUNOS_56, 1, SunOS 5.6 to 5.7)
paul19877dd2004-05-11 10:49:35 +0000593 AC_DEFINE(SUNOS_5, 1, SunOS 5)
paul7ea487b2003-03-17 02:05:07 +0000594 AC_CHECK_LIB(xnet, main)
595 CURSES=-lcurses
David Lampartere8d0d242014-06-28 22:07:41 +0200596 SOLARIS="solaris"
paul7ea487b2003-03-17 02:05:07 +0000597 ;;
paul1b73de82005-04-10 16:31:51 +0000598 [*-sunos5.[8-9]] \
599 | [*-sunos5.1[0-9]] \
600 | [*-sunos5.1[0-9].[0-9]] \
601 | [*-solaris2.[8-9]] \
602 | [*-solaris2.1[0-9]] \
603 | [*-solaris2.1[0-9].[0-9]])
paulafd8a122005-03-12 06:36:10 +0000604 opsys=sol8
Paul Jakmafb66b292006-05-28 08:26:15 +0000605 AC_DEFINE(SUNOS_59, 1, [SunOS 5.8 up])
606 AC_DEFINE(SUNOS_5, 1, [SunOS 5])
paul19877dd2004-05-11 10:49:35 +0000607 AC_CHECK_LIB(socket, main)
608 AC_CHECK_LIB(nsl, main)
paul1b73de82005-04-10 16:31:51 +0000609 AC_CHECK_LIB(umem, main)
Paul Jakmafb66b292006-05-28 08:26:15 +0000610 AC_CHECK_FUNCS([printstack],
611 [AC_DEFINE([HAVE_PRINTSTACK],1,[Solaris printstack])
612 AC_DEFINE([HAVE_STACK_TRACE],1,[Stack symbols decode functionality])
613 ])
paul19877dd2004-05-11 10:49:35 +0000614 CURSES=-lcurses
David Lampartere8d0d242014-06-28 22:07:41 +0200615 SOLARIS="solaris"
paul19877dd2004-05-11 10:49:35 +0000616 ;;
paul7ea487b2003-03-17 02:05:07 +0000617 *-sunos5* | *-solaris2*)
paul19877dd2004-05-11 10:49:35 +0000618 AC_DEFINE(SUNOS_5,,SunOS 5, Unknown SunOS)
paul7ea487b2003-03-17 02:05:07 +0000619 AC_CHECK_LIB(socket, main)
620 AC_CHECK_LIB(nsl, main)
621 CURSES=-lcurses
David Lampartere8d0d242014-06-28 22:07:41 +0200622 SOLARIS="solaris"
paul7ea487b2003-03-17 02:05:07 +0000623 ;;
hassoc45eb832005-02-19 13:58:06 +0000624 *-linux*)
paul7ea487b2003-03-17 02:05:07 +0000625 opsys=gnu-linux
626 AC_DEFINE(GNU_LINUX,,GNU Linux)
627 ;;
paul7ea487b2003-03-17 02:05:07 +0000628 *-openbsd*)
629 opsys=openbsd
630 AC_DEFINE(OPEN_BSD,,OpenBSD)
631 ;;
paul7ea487b2003-03-17 02:05:07 +0000632esac
633
Paul Jakma62c9f502009-07-19 17:33:21 +0100634AC_SYS_LARGEFILE
635
paul7ea487b2003-03-17 02:05:07 +0000636dnl ---------------------
637dnl Integrated VTY option
638dnl ---------------------
639case "${enable_vtysh}" in
640 "yes") VTYSH="vtysh";
641 AC_DEFINE(VTYSH,,VTY shell)
gdtfc9d0742004-06-30 14:25:12 +0000642dnl Vtysh uses libreadline, which looks for termcap functions at
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000643dnl configure time. We follow readlines search order.
gdtfc9d0742004-06-30 14:25:12 +0000644dnl The required procedures are in libtermcap on NetBSD, in
645dnl [TODO] on Linux, and in [TODO] on Solaris.
hassoc0689392005-08-25 12:00:58 +0000646 AC_CHECK_LIB(termcap, tputs, LIBREADLINE="$LIBREADLINE -ltermcap",
paula9694592005-08-25 14:50:05 +0000647 [AC_CHECK_LIB(tinfo, tputs, LIBREADLINE="$LIBREADLINE -ltinfo",
648 [AC_CHECK_LIB(curses, tputs, LIBREADLINE="$LIBREADLINE -lcurses",
649 [AC_CHECK_LIB(ncurses, tputs,
650 LIBREADLINE="$LIBREADLINE -lncurses")]
651 )]
652 )]
653 )
654 AC_CHECK_LIB(readline, main, LIBREADLINE="$LIBREADLINE -lreadline",,
655 "$LIBREADLINE")
paul7ea487b2003-03-17 02:05:07 +0000656 if test $ac_cv_lib_readline_main = no; then
gdtfc9d0742004-06-30 14:25:12 +0000657 AC_MSG_ERROR([vtysh needs libreadline but was not found and usable on your system.])
paul7ea487b2003-03-17 02:05:07 +0000658 fi
659 AC_CHECK_HEADER(readline/history.h)
660 if test $ac_cv_header_readline_history_h = no;then
661 AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
662 fi
paula9694592005-08-25 14:50:05 +0000663 AC_CHECK_LIB(readline, rl_completion_matches,
664 LIBREADLINE="$LIBREADLINE",, "$LIBREADLINE")
paul3d3de8c2003-05-23 10:33:49 +0000665 if test $ac_cv_lib_readline_rl_completion_matches = no; then
666 AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
667 fi
668 ;;
paul7ea487b2003-03-17 02:05:07 +0000669 "no" ) VTYSH="";;
670 * ) ;;
671esac
hassoc0689392005-08-25 12:00:58 +0000672AC_SUBST(LIBREADLINE)
David Wardf027d332012-04-30 11:36:15 -0400673AM_CONDITIONAL(VTYSH, test "x$VTYSH" = "xvtysh")
paul7ea487b2003-03-17 02:05:07 +0000674
675dnl ----------
676dnl PAM module
Denis Ovsienko61599282011-07-15 00:24:15 +0400677dnl
678dnl Quagga detects the PAM library it is built against by checking for a
679dnl functional pam_misc.h (Linux-PAM) or openpam.h (OpenPAM) header. pam_misc.h
680dnl is known to #include pam_appl.h, the standard header of a PAM library, and
681dnl openpam.h doesn't do that, although depends on the header too. Hence a
682dnl little assistance to AC_CHECK_HEADER is necessary for the proper detection
683dnl of OpenPAM.
paul7ea487b2003-03-17 02:05:07 +0000684dnl ----------
685if test "$with_libpam" = "yes"; then
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000686 AC_CHECK_HEADER([security/pam_misc.h],
687 [AC_DEFINE(HAVE_PAM_MISC_H,,Have pam_misc.h)
688 AC_DEFINE(PAM_CONV_FUNC,misc_conv,Have misc_conv)
689 pam_conv_func="misc_conv"
690 ],
691 [], QUAGGA_INCLUDES)
692 AC_CHECK_HEADER([security/openpam.h],
693 [AC_DEFINE(HAVE_OPENPAM_H,,Have openpam.h)
694 AC_DEFINE(PAM_CONV_FUNC,openpam_ttyconv,Have openpam_ttyconv)
695 pam_conv_func="openpam_ttyconv"
696 ],
Denis Ovsienko61599282011-07-15 00:24:15 +0400697 [], QUAGGA_INCLUDES[#include <security/pam_appl.h>])
paul24cd4352003-05-06 12:16:27 +0000698 if test -z "$ac_cv_header_security_pam_misc_h$ac_cv_header_security_openpam_h" ; then
699 AC_MSG_WARN([*** pam support will not be built ***])
700 with_libpam="no"
701 fi
702fi
703
704if test "$with_libpam" = "yes"; then
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000705dnl took this test from proftpds configure.in and suited to our needs
paul7ea487b2003-03-17 02:05:07 +0000706dnl -------------------------------------------------------------------------
707dnl
708dnl This next check looks funky due to a linker problem with some versions
709dnl of the PAM library. Prior to 0.72 release, the Linux PAM shared library
710dnl omitted requiring libdl linking information. PAM-0.72 or better ships
711dnl with RedHat 6.2 and Debian 2.2 or better.
712AC_CHECK_LIB(pam, pam_start,
paul24cd4352003-05-06 12:16:27 +0000713 [AC_CHECK_LIB(pam, $pam_conv_func,
paul7ea487b2003-03-17 02:05:07 +0000714 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
715 LIBPAM="-lpam"],
716 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
717 LIBPAM="-lpam -lpam_misc"]
718 )
719 ],
720
721 [AC_CHECK_LIB(pam, pam_end,
paul24cd4352003-05-06 12:16:27 +0000722 [AC_CHECK_LIB(pam, $pam_conv_func,
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"],
paula159ed92003-06-04 11:01:45 +0000725 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
paul7ea487b2003-03-17 02:05:07 +0000726 LIBPAM="-lpam -ldl -lpam_misc"]
727 )
728 ],AC_MSG_WARN([*** pam support will not be built ***]),
729 [-ldl])
730 ]
731)
732fi
733AC_SUBST(LIBPAM)
734
735dnl -------------------------------
736dnl Endian-ness check
737dnl -------------------------------
738AC_WORDS_BIGENDIAN
739
740dnl -------------------------------
741dnl check the size in byte of the C
742dnl -------------------------------
743dnl AC_CHECK_SIZEOF(char)
744dnl AC_CHECK_SIZEOF(int)
745dnl AC_CHECK_SIZEOF(short)
746dnl AC_CHECK_SIZEOF(long)
747
748dnl ----------------------------
749dnl check existance of functions
750dnl ----------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000751AC_FUNC_CHOWN
752AC_FUNC_FNMATCH
753AC_FUNC_FORK
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000754AC_FUNC_MEMCMP
755AC_FUNC_MKTIME
756AC_FUNC_STRFTIME
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000757AC_FUNC_STAT
758AC_FUNC_SELECT_ARGTYPES
759AC_FUNC_STRFTIME
Paul Jakmad46d2a22007-05-10 16:53:04 +0000760dnl Avoid AC_FUNC_STRNLEN because it pulls in AC_SYSTEM_EXTENSIONS which
761dnl can lead to strange side effects. So we just check for strnlen
762dnl directly, see below.
Paul Jakma2b5cb412007-05-10 17:05:16 +0000763dnl AC_FUNC_STRNLENdnl
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000764AC_FUNC_VPRINTF
765
766dnl -------------------------------
767dnl bgpd needs pow() and hence libm
768dnl -------------------------------
769TMPLIBS="$LIBS"
770AC_CHECK_HEADER([math.h],
771 [AC_CHECK_LIB([m], [pow],
772 [LIBM="-lm"
773 LIBS="$LIBS $LIBM"
774 AC_DEFINE(HAVE_LIBM,, Have libm)
775 AC_CHECK_FUNCS(pow,[],[LIBM=""])
776 ])
777])
778if test x"$LIBM" = x ; then
779 AC_MSG_WARN([Unable to find working pow function - bgpd may not link])
780fi
781LIBS="$TMPLIBS"
782AC_SUBST(LIBM)
783
784dnl ---------------
785dnl other functions
786dnl ---------------
787AC_CHECK_FUNCS([dup2 ftruncate getcwd gethostbyname getpagesize gettimeofday \
Paul Jakmad46d2a22007-05-10 16:53:04 +0000788 inet_ntoa inet_aton strnlen \
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000789 memchr memmove memset select socket \
790 strcasecmp strchr strcspn strdup strerror \
791 strncasecmp strndup strrchr strspn strstr \
792 strtol strtoul strlcat strlcpy \
793 daemon snprintf vsnprintf \
794 if_nametoindex if_indextoname getifaddrs \
795 uname fcntl])
796
paula159ed92003-06-04 11:01:45 +0000797AC_CHECK_FUNCS(setproctitle, ,
798 [AC_CHECK_LIB(util, setproctitle,
799 [LIBS="$LIBS -lutil"
800 AC_DEFINE(HAVE_SETPROCTITLE,, Have setproctitle)
801 ]
802 )
803 ]
804)
paul7ea487b2003-03-17 02:05:07 +0000805
806dnl ------------------------------------
807dnl Determine routing get and set method
808dnl ------------------------------------
809AC_MSG_CHECKING(zebra between kernel interface method)
810if test x"$opsys" = x"gnu-linux"; then
David Lamparter2e5ca492014-06-28 20:54:31 +0200811 AC_MSG_RESULT(netlink)
812 RT_METHOD=rt_netlink.o
813 AC_DEFINE(HAVE_NETLINK,,netlink)
814 netlink=yes
paul7ea487b2003-03-17 02:05:07 +0000815else
David Lamparter39b233f2014-06-28 21:49:18 +0200816 AC_MSG_RESULT(Route socket)
817 KERNEL_METHOD="kernel_socket.o"
818 RT_METHOD="rt_socket.o"
paul7ea487b2003-03-17 02:05:07 +0000819fi
820AC_SUBST(RT_METHOD)
821AC_SUBST(KERNEL_METHOD)
Avneesh Sachdev5adc2522012-11-13 22:48:59 +0000822AM_CONDITIONAL([HAVE_NETLINK], [test "x$netlink" = "xyes"])
paul7ea487b2003-03-17 02:05:07 +0000823
Paul Jakma238497f2007-08-07 18:49:18 +0000824dnl --------------------------
825dnl Determine IS-IS I/O method
826dnl --------------------------
David Lamparter745bf052010-02-02 21:49:35 +0100827AC_DEFINE(ISIS_METHOD_PFPACKET, 1, [ constant value for isis method pfpacket ])
828AC_DEFINE(ISIS_METHOD_DLPI, 2, [ constant value for isis method dlpi ])
829AC_DEFINE(ISIS_METHOD_BPF, 3, [ constant value for isis method bpf ])
Paul Jakma238497f2007-08-07 18:49:18 +0000830AC_CHECK_HEADER(net/bpf.h)
831AC_CHECK_HEADER(sys/dlpi.h)
832AC_MSG_CHECKING(zebra IS-IS I/O method)
833if test x"$opsys" = x"gnu-linux"; then
834 AC_MSG_RESULT(pfpacket)
David Lamparter745bf052010-02-02 21:49:35 +0100835 ISIS_METHOD_MACRO="ISIS_METHOD_PFPACKET"
Paul Jakma238497f2007-08-07 18:49:18 +0000836elif test x"$opsys" = x"sol2-6" -o x"$opsys" = x"sol8"; then
837 AC_MSG_RESULT(DLPI)
David Lamparter745bf052010-02-02 21:49:35 +0100838 ISIS_METHOD_MACRO="ISIS_METHOD_DLPI"
Paul Jakma238497f2007-08-07 18:49:18 +0000839else
840 if test $ac_cv_header_net_bpf_h = no; then
841 if test $ac_cv_header_sys_dlpi_h = no; then
842 AC_MSG_RESULT(none)
843 AC_MSG_WARN([*** IS-IS support will not be built ***])
844 ISISD=""
845 else
846 AC_MSG_RESULT(DLPI)
847 fi
David Lamparter745bf052010-02-02 21:49:35 +0100848 ISIS_METHOD_MACRO="ISIS_METHOD_DLPI"
Paul Jakma238497f2007-08-07 18:49:18 +0000849 else
850 AC_MSG_RESULT(BPF)
David Lamparter745bf052010-02-02 21:49:35 +0100851 ISIS_METHOD_MACRO="ISIS_METHOD_BPF"
Paul Jakma238497f2007-08-07 18:49:18 +0000852 fi
853fi
David Lamparter745bf052010-02-02 21:49:35 +0100854AC_DEFINE_UNQUOTED(ISIS_METHOD, $ISIS_METHOD_MACRO, [ selected method for isis, == one of the constants ])
Paul Jakma238497f2007-08-07 18:49:18 +0000855
ajsb99760a2005-01-04 16:24:43 +0000856dnl ------------------------------------
857dnl check for broken CMSG_FIRSTHDR macro
858dnl ------------------------------------
gdt6c200462005-01-04 17:02:48 +0000859AC_MSG_CHECKING(for broken CMSG_FIRSTHDR)
hasso5b087522005-04-03 23:46:37 +0000860AC_RUN_IFELSE([AC_LANG_SOURCE([[
ajsb99760a2005-01-04 16:24:43 +0000861#ifdef SUNOS_5
862#define _XPG4_2
863#define __EXTENSIONS__
864#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000865#ifdef HAVE_STDLIB_H
866# include <stdlib.h>
867#endif
868#ifdef HAVE_SYS_TYPES_H
ajsb99760a2005-01-04 16:24:43 +0000869#include <sys/types.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000870#endif
871#ifdef HAVE_SYS_SOCKET_H
ajsb99760a2005-01-04 16:24:43 +0000872#include <sys/socket.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000873#endif
ajsb99760a2005-01-04 16:24:43 +0000874
875main()
876{
877 struct msghdr msg;
878 char buf[4];
879
880 msg.msg_control = buf;
881 msg.msg_controllen = 0;
882
883 if (CMSG_FIRSTHDR(&msg) != NULL)
884 exit(0);
885 exit (1);
hasso5b087522005-04-03 23:46:37 +0000886}]])],[AC_MSG_RESULT(yes - using workaround) AC_DEFINE(HAVE_BROKEN_CMSG_FIRSTHDR,,Broken CMSG_FIRSTHDR)],
hassod33e8d72005-04-03 13:07:21 +0000887[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
ajsb99760a2005-01-04 16:24:43 +0000888
paul7ea487b2003-03-17 02:05:07 +0000889dnl ------------------------------
890dnl check kernel route read method
891dnl ------------------------------
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500892AC_CACHE_CHECK([route read method], [quagga_cv_rtread_method],
893[if test "x$netlink" = xyes; then
894 quagga_cv_rtread_method="netlink"
paul7ea487b2003-03-17 02:05:07 +0000895else
David Lamparter2e5ca492014-06-28 20:54:31 +0200896for quagga_cv_rtread_method in /dev/ip /dev/null;
paul7ea487b2003-03-17 02:05:07 +0000897do
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500898 test x`ls $quagga_cv_rtread_method 2>/dev/null` = x"$quagga_cv_rtread_method" && break
paul7ea487b2003-03-17 02:05:07 +0000899done
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500900case $quagga_cv_rtread_method in
paul9c30ab62003-07-08 08:36:17 +0000901 "/dev/ip")
902 case "$host" in
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500903 *-freebsd*) quagga_cv_rtread_method="sysctl";;
904 *) quagga_cv_rtread_method="getmsg";;
paul9c30ab62003-07-08 08:36:17 +0000905 esac;;
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500906 *)
907 quagga_cv_rtread_method="sysctl";;
paul7ea487b2003-03-17 02:05:07 +0000908esac
909fi])
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500910RTREAD_METHOD=rtread_${quagga_cv_rtread_method}.o
paul7ea487b2003-03-17 02:05:07 +0000911AC_SUBST(RTREAD_METHOD)
912
913dnl -----------------------------
914dnl check interface lookup method
915dnl -----------------------------
paul19877dd2004-05-11 10:49:35 +0000916IOCTL_METHOD=ioctl.o
paul7ea487b2003-03-17 02:05:07 +0000917AC_MSG_CHECKING(interface looking up method)
918if test "$netlink" = yes; then
919 AC_MSG_RESULT(netlink)
920 IF_METHOD=if_netlink.o
paul19877dd2004-05-11 10:49:35 +0000921elif test "$opsys" = "sol2-6";then
922 AC_MSG_RESULT(Solaris GIF)
923 IF_METHOD=if_ioctl.o
paulafd8a122005-03-12 06:36:10 +0000924elif test "$opsys" = "sol8";then
paul19877dd2004-05-11 10:49:35 +0000925 AC_MSG_RESULT(Solaris GLIF)
926 IF_METHOD=if_ioctl_solaris.o
927 IOCTL_METHOD=ioctl_solaris.o
paul19877dd2004-05-11 10:49:35 +0000928elif test "$opsys" = "openbsd";then
929 AC_MSG_RESULT(openbsd)
930 IF_METHOD=if_ioctl.o
931elif grep NET_RT_IFLIST /usr/include/sys/socket.h >/dev/null 2>&1; then
932 AC_MSG_RESULT(sysctl)
paul7ea487b2003-03-17 02:05:07 +0000933 IF_METHOD=if_sysctl.o
934 AC_DEFINE(HAVE_NET_RT_IFLIST,,NET_RT_IFLIST)
paul19877dd2004-05-11 10:49:35 +0000935else
paul7ea487b2003-03-17 02:05:07 +0000936 AC_MSG_RESULT(ioctl)
937 IF_METHOD=if_ioctl.o
paul7ea487b2003-03-17 02:05:07 +0000938fi
939AC_SUBST(IF_METHOD)
paul19877dd2004-05-11 10:49:35 +0000940AC_SUBST(IOCTL_METHOD)
paul7ea487b2003-03-17 02:05:07 +0000941
paul42c98192005-05-07 02:22:51 +0000942dnl ---------------------------------------------------------------
943dnl figure out how to specify an interface in multicast sockets API
944dnl ---------------------------------------------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000945AC_CHECK_MEMBERS([struct ip_mreqn.imr_ifindex], [], [], QUAGGA_INCLUDES)
paul42c98192005-05-07 02:22:51 +0000946
947AC_MSG_CHECKING([for BSD struct ip_mreq hack])
948AC_TRY_COMPILE([#ifdef HAVE_SYS_PARAM_H
949#include <sys/param.h>
Brian Bennettb8a893c2015-02-17 22:32:22 +0000950#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 +0000951 return (0);
952#else
953 #error No support for BSD struct ip_mreq hack detected
954#endif],[AC_MSG_RESULT(yes)
955AC_DEFINE(HAVE_BSD_STRUCT_IP_MREQ_HACK,,[Can pass ifindex in struct ip_mreq])],
956AC_MSG_RESULT(no))
957
Dmitrij Tejblum10d04cd2011-08-22 11:39:35 +0400958AC_MSG_CHECKING([for RFC3678 protocol-independed API])
959AC_TRY_COMPILE([
960#include <sys/types.h>
961#include <netinet/in.h>
962], [struct group_req gr; int sock; setsockopt(sock, IPPROTO_IP, MCAST_JOIN_GROUP, (void*)&gr, sizeof(gr));
963], [AC_MSG_RESULT(yes)
964AC_DEFINE(HAVE_RFC3678,1,[Have RFC3678 protocol-independed API])],
965AC_MSG_RESULT(no))
966
Andrew J. Schorrc543a172008-01-10 15:24:32 +0000967dnl ---------------------------------------------------------------
968dnl figure out how to check link-state
969dnl ---------------------------------------------------------------
Andrew J. Schorr6418bed2008-01-11 16:33:59 +0000970AC_CHECK_HEADER([net/if.h],
971 [AC_CHECK_HEADER( [net/if_media.h],
972 [m4_define([LINK_DETECT_INCLUDES],
973 QUAGGA_INCLUDES
974 [#include <net/if_media.h>
975 ])
976 AC_CHECK_MEMBERS( [struct ifmediareq.ifm_status],
977 AC_DEFINE(HAVE_BSD_LINK_DETECT,,[BSD link-detect]),
978 [], LINK_DETECT_INCLUDES)],
979 [],
980 QUAGGA_INCLUDES)],
981 [], QUAGGA_INCLUDES )
Andrew J. Schorrc543a172008-01-10 15:24:32 +0000982
Doug VanLeuven9234b382012-10-10 16:12:32 -0700983dnl ---------------------------------------------------------------
984dnl Additional, newer way to check link-state using ifi_link_state.
985dnl Not available in all BSD's when ifmediareq available
986dnl ---------------------------------------------------------------
987AC_CHECK_HEADER([net/if.h],
988 AC_CHECK_MEMBERS([struct if_data.ifi_link_state],
989 AC_DEFINE(HAVE_BSD_IFI_LINK_STATE,,[BSD ifi_link_state available]),
990 [], QUAGGA_INCLUDES),
991 ,)
992
Paul Jakma0df7c912008-07-21 21:02:49 +0000993dnl ------------------------
994dnl TCP_MD5SIG socket option
995dnl ------------------------
996
997AC_CHECK_HEADER([netinet/tcp.h],
998 [m4_define([MD5_INCLUDES],
999 QUAGGA_INCLUDES
1000 [#include <netinet/tcp.h>
1001 ])
1002 AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)],
1003 [],
1004 QUAGGA_INCLUDES)
1005if test $ac_cv_have_decl_TCP_MD5SIG = no; then
1006 AC_CHECK_HEADER([linux/tcp.h],
1007 [m4_define([MD5_INCLUDES],
1008 QUAGGA_INCLUDES
1009 [#include <linux/tcp.h>
1010 ])
1011 AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)])
1012fi
1013
paul7ea487b2003-03-17 02:05:07 +00001014dnl -----------------------------
1015dnl check ipforward detect method
1016dnl -----------------------------
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001017AC_CACHE_CHECK([ipforward method], [quagga_cv_ipforward_method],
David Lamparterca9f3422009-09-16 02:11:00 +02001018[if test x$cross_compiling = xyes; then
1019 if test x"$opsys" = x"gnu-linux"; then
1020 quagga_cv_ipforward_method=/proc/net/snmp
1021 else
1022 quagga_cv_ipforward_method=/dev/ip
1023 fi
1024else
1025 for quagga_cv_ipforward_method in /proc/net/snmp /dev/ip /dev/null;
1026 do
1027 test x`ls $quagga_cv_ipforward_method 2>/dev/null` = x"$quagga_cv_ipforward_method" && break
1028 done
1029fi
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001030case $quagga_cv_ipforward_method in
1031 "/proc/net/snmp") quagga_cv_ipforward_method="proc";;
paul7ea487b2003-03-17 02:05:07 +00001032 "/dev/ip")
1033 case "$host" in
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001034 *-freebsd*) quagga_cv_ipforward_method="sysctl";;
1035 *) quagga_cv_ipforward_method="solaris";;
paul7ea487b2003-03-17 02:05:07 +00001036 esac;;
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001037 *) quagga_cv_ipforward_method="sysctl";;
paul7ea487b2003-03-17 02:05:07 +00001038esac])
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001039IPFORWARD=ipforward_${quagga_cv_ipforward_method}.o
paul7ea487b2003-03-17 02:05:07 +00001040AC_SUBST(IPFORWARD)
1041
1042AC_CHECK_FUNCS(getaddrinfo, [have_getaddrinfo=yes], [have_getaddrinfo=no])
1043
1044dnl ----------
1045dnl IPv6 check
1046dnl ----------
1047AC_MSG_CHECKING(whether does this OS have IPv6 stack)
paul7ea487b2003-03-17 02:05:07 +00001048dnl ---------
1049dnl KAME IPv6
1050dnl ---------
David Lamparter6d6df302014-06-28 21:12:37 +02001051 if grep WIDE /usr/include/netinet6/in6.h >/dev/null 2>&1; then
paula159ed92003-06-04 11:01:45 +00001052 AC_DEFINE(KAME,1,KAME IPv6)
paula159ed92003-06-04 11:01:45 +00001053 AC_MSG_RESULT(KAME)
paul19877dd2004-05-11 10:49:35 +00001054dnl ------------------------------------
1055dnl Solaris 9, 10 and potentially higher
1056dnl ------------------------------------
paulafd8a122005-03-12 06:36:10 +00001057 elif test x"$opsys" = x"sol8"; then
paul19877dd2004-05-11 10:49:35 +00001058 AC_DEFINE(SOLARIS_IPV6, 1, Solaris IPv6)
paul19877dd2004-05-11 10:49:35 +00001059 AC_MSG_RESULT(Solaris IPv6)
paul7ea487b2003-03-17 02:05:07 +00001060dnl ----------
1061dnl Linux IPv6
1062dnl ----------
David Lamparter29ed6222014-06-28 21:42:25 +02001063 elif test x"$opsys" = x"gnu-linux"; then
Timo Teräs3ef0b872014-07-29 09:41:56 +00001064 AC_DEFINE(LINUX_IPV6,1,Linux IPv6 stack)
David Lamparter29ed6222014-06-28 21:42:25 +02001065 AC_MSG_RESULT(Linux IPv6)
1066 else
David Lamparter7fe17e62014-11-22 10:31:33 -08001067 AC_MSG_ERROR([Failed to detect IPv6 stack])
paula159ed92003-06-04 11:01:45 +00001068 fi
paul7ea487b2003-03-17 02:05:07 +00001069
David Lamparter7fe17e62014-11-22 10:31:33 -08001070dnl this is unconditial, for compatibility
1071AC_DEFINE(HAVE_IPV6,1,IPv6)
paul7ea487b2003-03-17 02:05:07 +00001072
gdtfa3232e2003-12-03 17:52:30 +00001073dnl ------------------
1074dnl IPv6 header checks
1075dnl ------------------
gdtfa3232e2003-12-03 17:52:30 +00001076AC_CHECK_HEADERS([netinet6/in6.h netinet/in6_var.h netinet/icmp6.h \
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001077 netinet6/in6_var.h netinet6/nd6.h], [], [],
1078 QUAGGA_INCLUDES)
gdtfa3232e2003-12-03 17:52:30 +00001079
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001080m4_define([QUAGGA_INCLUDES],dnl
1081QUAGGA_INCLUDES
1082[#if HAVE_NETINET6_IN6_H
1083#include <netinet6/in6.h>
1084#endif
1085#if HAVE_NETINET_IN6_VAR_H
1086#include <netinet/in6_var.h>
1087#endif
1088#if HAVE_NETINET_ICMP6_H
1089# include <netinet/icmp6.h>
1090#endif
1091#if HAVE_NETINET6_IN6_VAR_H
1092# include <netinet6/in6_var.h>
1093#endif
1094#if HAVE_NETINET6_ND6_H
Hasso Tepperfbf24542007-06-25 19:30:59 +00001095# include <netinet6/nd6.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001096#endif
1097])dnl
1098
Joakim Tjernlundcbcd9bf2009-02-16 09:40:39 +01001099dnl disable doc check
1100if test "${enable_doc}" = "no";then
1101 DOC=""
1102else
1103 DOC="doc"
1104fi
1105
paul7ea487b2003-03-17 02:05:07 +00001106dnl --------------------
1107dnl Daemon disable check
1108dnl --------------------
1109if test "${enable_zebra}" = "no";then
1110 ZEBRA=""
1111else
1112 ZEBRA="zebra"
1113fi
David Wardf027d332012-04-30 11:36:15 -04001114AM_CONDITIONAL(ZEBRA, test "x$ZEBRA" = "xzebra")
paul7ea487b2003-03-17 02:05:07 +00001115
1116if test "${enable_bgpd}" = "no";then
1117 BGPD=""
1118else
1119 BGPD="bgpd"
1120fi
David Wardf027d332012-04-30 11:36:15 -04001121AM_CONDITIONAL(BGPD, test "x$BGPD" = "xbgpd")
paul7ea487b2003-03-17 02:05:07 +00001122
1123if test "${enable_ripd}" = "no";then
1124 RIPD=""
1125else
1126 RIPD="ripd"
1127fi
David Wardf027d332012-04-30 11:36:15 -04001128AM_CONDITIONAL(RIPD, test "x$RIPD" = "xripd")
paul7ea487b2003-03-17 02:05:07 +00001129
1130if test "${enable_ospfd}" = "no";then
1131 OSPFD=""
1132else
1133 OSPFD="ospfd"
1134fi
David Wardf027d332012-04-30 11:36:15 -04001135AM_CONDITIONAL(OSPFD, test "x$OSPFD" = "xospfd")
paul7ea487b2003-03-17 02:05:07 +00001136
Paul Jakma57345092011-12-25 17:52:09 +01001137if test "${enable_babeld}" = "no";then
1138 BABELD=""
1139else
1140 BABELD="babeld"
1141fi
David Wardf027d332012-04-30 11:36:15 -04001142AM_CONDITIONAL(BABELD, test "x$BABELD" = "xbabeld")
Paul Jakma57345092011-12-25 17:52:09 +01001143
ajsd0199432004-12-22 14:03:52 +00001144if test "${enable_watchquagga}" = "no";then
1145 WATCHQUAGGA=""
1146else
1147 WATCHQUAGGA="watchquagga"
1148fi
David Wardf027d332012-04-30 11:36:15 -04001149AM_CONDITIONAL(WATCHQUAGGA, test "x$WATCHQUAGGA" = "xwatchquagga")
ajsd0199432004-12-22 14:03:52 +00001150
paul1ef74ef2003-03-21 15:16:05 +00001151OSPFCLIENT=""
Greg Troxel0d51c7e2011-03-24 10:19:43 -04001152if test "${enable_opaque_lsa}" != "no"; then
paul1ef74ef2003-03-21 15:16:05 +00001153 if test "${enable_ospfapi}" != "no";then
paul9a569842003-03-28 01:45:13 +00001154 AC_DEFINE(SUPPORT_OSPF_API,,OSPFAPI)
paul1ef74ef2003-03-21 15:16:05 +00001155
1156 if test "${enable_ospfclient}" != "no";then
1157 OSPFCLIENT="ospfclient"
1158 fi
1159 fi
1160
paul7ea487b2003-03-17 02:05:07 +00001161fi
David Wardf027d332012-04-30 11:36:15 -04001162AM_CONDITIONAL(OSPFCLIENT, test "x$OSPFCLIENT" = "xospfclient")
paul7ea487b2003-03-17 02:05:07 +00001163
1164case "${enable_ripngd}" in
paul7ea487b2003-03-17 02:05:07 +00001165 "no" ) RIPNGD="";;
David Lamparter7fe17e62014-11-22 10:31:33 -08001166 * ) RIPNGD="ripngd";;
paul7ea487b2003-03-17 02:05:07 +00001167esac
David Wardf027d332012-04-30 11:36:15 -04001168AM_CONDITIONAL(RIPNGD, test "x$RIPNGD" = "xripngd")
paul7ea487b2003-03-17 02:05:07 +00001169
1170case "${enable_ospf6d}" in
paul7ea487b2003-03-17 02:05:07 +00001171 "no" ) OSPF6D="";;
David Lamparter7fe17e62014-11-22 10:31:33 -08001172 * ) OSPF6D="ospf6d";;
paul7ea487b2003-03-17 02:05:07 +00001173esac
David Wardf027d332012-04-30 11:36:15 -04001174AM_CONDITIONAL(OSPF6D, test "x$OSPF6D" = "xospf6d")
paul7ea487b2003-03-17 02:05:07 +00001175
jardin9e867fe2003-12-23 08:56:18 +00001176case "${enable_isisd}" in
jardin9e867fe2003-12-23 08:56:18 +00001177 "no" ) ISISD="";;
David Lamparter656a2c02015-02-09 11:36:10 +01001178 * ) ISISD="isisd";;
jardin9e867fe2003-12-23 08:56:18 +00001179esac
David Wardf027d332012-04-30 11:36:15 -04001180AM_CONDITIONAL(ISISD, test "x$ISISD" = "xisisd")
jardin9e867fe2003-12-23 08:56:18 +00001181
Everton Marques871dbcf2009-08-11 15:43:05 -03001182case "${enable_pimd}" in
1183 "yes") PIMD="pimd";;
1184 "no" ) PIMD="";;
1185 * ) ;;
1186esac
Everton Marquesff57d362014-06-25 15:54:03 -03001187AM_CONDITIONAL(PIMD, test "x$PIMD" = "xpimd")
Everton Marques871dbcf2009-08-11 15:43:05 -03001188
paul7ea487b2003-03-17 02:05:07 +00001189if test "${enable_bgp_announce}" = "no";then
Paul Jakma750e8142008-07-22 21:11:48 +00001190 AC_DEFINE(DISABLE_BGP_ANNOUNCE,1,Disable BGP installation to zebra)
1191else
1192 AC_DEFINE(DISABLE_BGP_ANNOUNCE,0,Disable BGP installation to zebra)
paul7ea487b2003-03-17 02:05:07 +00001193fi
1194
Joakim Tjernlundcbcd9bf2009-02-16 09:40:39 +01001195AC_SUBST(DOC)
paul7ea487b2003-03-17 02:05:07 +00001196AC_SUBST(ZEBRA)
1197AC_SUBST(BGPD)
1198AC_SUBST(RIPD)
1199AC_SUBST(RIPNGD)
1200AC_SUBST(OSPFD)
1201AC_SUBST(OSPF6D)
Paul Jakma57345092011-12-25 17:52:09 +01001202AC_SUBST(BABELD)
ajsd0199432004-12-22 14:03:52 +00001203AC_SUBST(WATCHQUAGGA)
jardin9e867fe2003-12-23 08:56:18 +00001204AC_SUBST(ISISD)
Everton Marques871dbcf2009-08-11 15:43:05 -03001205AC_SUBST(PIMD)
Greg Troxel97cee872007-08-02 13:36:56 +00001206AC_SUBST(SOLARIS)
paul7ea487b2003-03-17 02:05:07 +00001207AC_SUBST(VTYSH)
paul7ea487b2003-03-17 02:05:07 +00001208AC_SUBST(CURSES)
1209AC_SUBST(OSPFCLIENT)
paul1ef74ef2003-03-21 15:16:05 +00001210AC_SUBST(OSPFAPI)
paul7ea487b2003-03-17 02:05:07 +00001211AC_CHECK_LIB(c, inet_ntop, [AC_DEFINE(HAVE_INET_NTOP,,inet_ntop)])
1212AC_CHECK_LIB(c, inet_pton, [AC_DEFINE(HAVE_INET_PTON,,inet_pton)])
1213AC_CHECK_LIB(crypt, crypt)
1214AC_CHECK_LIB(resolv, res_init)
paul7ea487b2003-03-17 02:05:07 +00001215
paul7ea487b2003-03-17 02:05:07 +00001216dnl ---------------------------
Jeremy Jackson25f45882009-01-12 16:06:12 -05001217dnl check system has PCRE regexp
1218dnl ---------------------------
1219if test "x$enable_pcreposix" = "xyes"; then
1220 AC_CHECK_LIB(pcreposix, pcreposix_regexec, ,[enable_pcreposix=no
1221 AC_MSG_WARN([*** falling back to other regex library ***]) ])
1222fi
1223
1224if test "x$enable_pcreposix" != "xyes"; then
1225dnl ---------------------------
paul7ea487b2003-03-17 02:05:07 +00001226dnl check system has GNU regexp
1227dnl ---------------------------
Jeremy Jackson25f45882009-01-12 16:06:12 -05001228AC_MSG_CHECKING(whether system has GNU regex)
paul7ea487b2003-03-17 02:05:07 +00001229AC_CHECK_LIB(c, regexec,
1230[AC_DEFINE(HAVE_GNU_REGEX,,GNU regexp library)
1231 LIB_REGEX=""],
1232[LIB_REGEX="regex.o"])
Jeremy Jackson25f45882009-01-12 16:06:12 -05001233fi
1234AC_SUBST(HAVE_LIBPCREPOSIX)
paul7ea487b2003-03-17 02:05:07 +00001235AC_SUBST(LIB_REGEX)
1236
1237dnl ------------------
paulb1fc9ac2006-01-31 10:09:27 +00001238dnl check Net-SNMP library
paul7ea487b2003-03-17 02:05:07 +00001239dnl ------------------
Vincent Bernatd6be5fb2012-05-24 09:44:43 +02001240if test "${enable_snmp}" != ""; then
Vincent Bernat08d7f652012-05-22 22:29:17 +02001241 AC_PATH_TOOL([NETSNMP_CONFIG], [net-snmp-config], [no])
1242 if test x"$NETSNMP_CONFIG" = x"no"; then
1243 AC_MSG_ERROR([--enable-snmp given but unable to find net-snmp-config])
1244 fi
1245 LIBS="$LIBS `${NETSNMP_CONFIG} --agent-libs`"
1246 CFLAGS="`${NETSNMP_CONFIG} --base-cflags` $CFLAGS"
1247 AC_MSG_CHECKING([whether we can link to Net-SNMP])
1248 AC_LINK_IFELSE([AC_LANG_PROGRAM([
1249int main(void);
1250],
1251[
1252{
1253 return 0;
1254}
1255])],[AC_MSG_RESULT(yes)],[
1256 AC_MSG_RESULT(no)
1257 AC_MSG_ERROR([--enable-snmp given but not usable])])
1258 AC_DEFINE(HAVE_SNMP,,SNMP)
Vincent Bernatd6be5fb2012-05-24 09:44:43 +02001259 case "${enable_snmp}" in
1260 yes)
1261 SNMP_METHOD=agentx
1262 ;;
1263 smux|agentx)
1264 SNMP_METHOD="${enable_snmp}"
1265 ;;
1266 *)
1267 AC_MSG_ERROR([--enable-snmp given with an unknown method (${enable_snmp}). Use smux or agentx])
1268 ;;
1269 esac
1270 AH_TEMPLATE([SNMP_SMUX], [Use SNMP SMUX to interface with snmpd])
1271 AH_TEMPLATE([SNMP_AGENTX], [Use SNMP AgentX to interface with snmpd])
1272 AC_DEFINE_UNQUOTED(AS_TR_CPP(SNMP_${SNMP_METHOD}),,SNMP method to interface with snmpd)
paul7ea487b2003-03-17 02:05:07 +00001273fi
1274
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001275dnl ---------------------------
1276dnl sockaddr and netinet checks
1277dnl ---------------------------
1278AC_CHECK_TYPES([struct sockaddr, struct sockaddr_in,
1279 struct sockaddr_in6, struct sockaddr_un, struct sockaddr_dl,
Everton Marques871dbcf2009-08-11 15:43:05 -03001280 socklen_t, struct vifctl, struct mfcctl, struct sioc_sg_req,
1281 vifi_t, struct sioc_vif_req, struct igmpmsg,
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001282 struct ifaliasreq, struct if6_aliasreq, struct in6_aliasreq,
1283 struct nd_opt_adv_interval, struct rt_addrinfo,
Paul Jakma11770e12007-06-22 16:14:42 +00001284 struct nd_opt_homeagent_info, struct nd_opt_adv_interval],
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001285 [], [], QUAGGA_INCLUDES)
paul7ea487b2003-03-17 02:05:07 +00001286
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001287AC_CHECK_MEMBERS([struct sockaddr.sa_len,
1288 struct sockaddr_in.sin_len, struct sockaddr_un.sun_len,
1289 struct sockaddr_in6.sin6_scope_id,
David Lamparterca3ccd82012-09-26 14:52:39 +02001290 struct sockaddr_dl.sdl_len,
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001291 struct if6_aliasreq.ifra_lifetime,
1292 struct nd_opt_adv_interval.nd_opt_ai_type],
1293 [], [], QUAGGA_INCLUDES)
hasso71c0fb52003-05-25 20:18:13 +00001294
paul7ea487b2003-03-17 02:05:07 +00001295dnl ---------------------------
Paul Jakma11770e12007-06-22 16:14:42 +00001296dnl IRDP/pktinfo/icmphdr checks
paul7ea487b2003-03-17 02:05:07 +00001297dnl ---------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001298AC_CHECK_TYPES([struct in_pktinfo],
Paul Jakma11770e12007-06-22 16:14:42 +00001299 [AC_CHECK_TYPES([struct icmphdr],
1300 [if test "${enable_irdp}" != "no"; then
1301 AC_DEFINE(HAVE_IRDP,, IRDP)
1302 fi],
1303 [if test "${enable_irdp}" = "yes"; then
1304 AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
1305 fi], [QUAGGA_INCLUDES])],
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001306 [if test "${enable_irdp}" = "yes"; then
1307 AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
1308 fi], [QUAGGA_INCLUDES])
vincent29c4c9b2005-03-25 13:05:47 +00001309
Everton Marques871dbcf2009-08-11 15:43:05 -03001310dnl -----------------------
1311dnl checking for IP_PKTINFO
1312dnl -----------------------
1313AC_MSG_CHECKING(for IP_PKTINFO)
1314AC_TRY_COMPILE([#include <netdb.h>], [
1315 int opt = IP_PKTINFO;
1316], [
1317 AC_MSG_RESULT(yes)
1318 AC_DEFINE(HAVE_IP_PKTINFO, 1, [Have IP_PKTINFO])
1319], [
1320 AC_MSG_RESULT(no)
1321])
1322
1323dnl ---------------------------
1324dnl checking for IP_RECVDSTADDR
1325dnl ---------------------------
1326AC_MSG_CHECKING(for IP_RECVDSTADDR)
1327AC_TRY_COMPILE([#include <netinet/in.h>], [
1328 int opt = IP_RECVDSTADDR;
1329], [
1330 AC_MSG_RESULT(yes)
1331 AC_DEFINE(HAVE_IP_RECVDSTADDR, 1, [Have IP_RECVDSTADDR])
1332], [
1333 AC_MSG_RESULT(no)
1334])
1335
1336dnl ----------------------
1337dnl checking for IP_RECVIF
1338dnl ----------------------
1339AC_MSG_CHECKING(for IP_RECVIF)
1340AC_TRY_COMPILE([#include <netinet/in.h>], [
1341 int opt = IP_RECVIF;
1342], [
1343 AC_MSG_RESULT(yes)
1344 AC_DEFINE(HAVE_IP_RECVIF, 1, [Have IP_RECVIF])
1345], [
1346 AC_MSG_RESULT(no)
1347])
1348
paul7ea487b2003-03-17 02:05:07 +00001349dnl --------------------------------------
1350dnl checking for getrusage struct and call
1351dnl --------------------------------------
Stephen Hemminger47f6aef2013-01-04 22:29:22 +00001352if test "${enable_rusage}" != "no"; then
1353 AC_MSG_CHECKING(whether getrusage is available)
1354 AC_TRY_COMPILE([#include <sys/resource.h>],[struct rusage ac_x; getrusage (RUSAGE_SELF, &ac_x);],
1355 [AC_MSG_RESULT(yes)
1356 AC_DEFINE(HAVE_RUSAGE,,rusage)],
1357 AC_MSG_RESULT(no))
1358fi
paul7ea487b2003-03-17 02:05:07 +00001359
Stephen Hemmingerc4376c92009-05-28 15:29:10 -07001360dnl --------------------------------------
1361dnl checking for clock_time monotonic struct and call
1362dnl --------------------------------------
Paul Jakma6511cab2009-06-18 17:38:01 +01001363AC_CHECK_DECL(CLOCK_MONOTONIC,
1364 [AC_CHECK_LIB(rt, clock_gettime, [LIBS="$LIBS -lrt"])
Dmitry Tejblum9964fcf2009-11-05 16:50:36 +03001365 AC_DEFINE(HAVE_CLOCK_MONOTONIC,, Have monotonic clock)
Paul Jakma6511cab2009-06-18 17:38:01 +01001366], [AC_MSG_RESULT(no)], [QUAGGA_INCLUDES])
Stephen Hemmingerc4376c92009-05-28 15:29:10 -07001367
pauledd7c242003-06-04 13:59:38 +00001368dnl -------------------
1369dnl capabilities checks
1370dnl -------------------
hasso41d3fc92004-04-06 11:59:00 +00001371if test "${enable_capabilities}" != "no"; then
1372 AC_MSG_CHECKING(whether prctl PR_SET_KEEPCAPS is available)
1373 AC_TRY_COMPILE([#include <sys/prctl.h>],[prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);],
1374 [AC_MSG_RESULT(yes)
1375 AC_DEFINE(HAVE_PR_SET_KEEPCAPS,,prctl)
1376 quagga_ac_keepcaps="yes"],
1377 AC_MSG_RESULT(no)
pauledd7c242003-06-04 13:59:38 +00001378 )
hasso41d3fc92004-04-06 11:59:00 +00001379 if test x"${quagga_ac_keepcaps}" = x"yes"; then
1380 AC_CHECK_HEADERS(sys/capability.h)
1381 fi
1382 if test x"${ac_cv_header_sys_capability_h}" = x"yes"; then
1383 AC_CHECK_LIB(cap, cap_init,
1384 [AC_DEFINE(HAVE_LCAPS,1,Capabilities)
1385 LIBCAP="-lcap"
paulceacedb2005-09-29 14:39:32 +00001386 quagga_ac_lcaps="yes"]
hasso41d3fc92004-04-06 11:59:00 +00001387 )
paulceacedb2005-09-29 14:39:32 +00001388 else
1389 AC_CHECK_HEADERS(priv.h,
1390 [AC_MSG_CHECKING(Solaris style privileges are available)
1391 AC_TRY_COMPILE([#include <priv.h>],[getpflags(PRIV_AWARE);],
1392 [AC_MSG_RESULT(yes)
1393 AC_DEFINE(HAVE_SOLARIS_CAPABILITIES,1,getpflags)
1394 quagga_ac_scaps="yes"],
1395 AC_MSG_RESULT(no)
1396 )
1397 ]
1398 )
1399 fi
1400 if test x"${quagga_ac_scaps}" = x"yes" \
1401 -o x"${quagga_ac_lcaps}" = x"yes"; then
1402 AC_DEFINE(HAVE_CAPABILITIES,1,capabilities)
hasso41d3fc92004-04-06 11:59:00 +00001403 fi
pauledd7c242003-06-04 13:59:38 +00001404fi
1405AC_SUBST(LIBCAP)
1406
Doug VanLeuven327c4cd2012-12-14 14:58:30 +02001407dnl ---------------------------------------------------------------------------
1408dnl http://www.gnu.org/software/autoconf-archive/ax_sys_weak_alias.html
1409dnl Check for and set one of the following = 1
1410dnl HAVE_SYS_WEAK_ALIAS_ATTRIBUTE
1411dnl HAVE_SYS_WEAK_ALIAS_PRAGMA
1412dnl HAVE_SYS_WEAK_ALIAS_HPSECONDARY
1413dnl HAVE_SYS_WEAK_ALIAS_CRIDUPLICATE
1414dnl If any scheme is found, set
1415dnl HAVE_SYS_WEAK_ALIAS=1
1416dnl The following variable is set to text value
1417dnl WEAK_ALIAS = "attribute" || "pragma" || "hpsecondary" || "criduplicate" || "no"
1418dnl If weak alias can cross object file boundaries
1419dnl WEAK_ALIAS_CROSSFILE = "yes" || "no"
1420dnl ---------------------------------------------------------------------------
1421AX_SYS_WEAK_ALIAS
1422
paulfb2d1502003-06-04 09:40:54 +00001423dnl ---------------------------
1424dnl check for glibc 'backtrace'
1425dnl ---------------------------
David Lamparter8c99b4c2013-08-01 07:43:36 +00001426if test x"${enable_backtrace}" != x"no" ; then
1427 backtrace_ok=no
1428 AC_CHECK_HEADER([execinfo.h], [
1429 AC_SEARCH_LIBS([backtrace], [execinfo], [
1430 AC_DEFINE(HAVE_GLIBC_BACKTRACE,,[Glibc backtrace])
1431 AC_DEFINE(HAVE_STACK_TRACE,,[Stack symbol decoding])
1432 backtrace_ok=yes
1433 ],, [-lm])
Dmitrij Tejblumeda35292011-09-15 20:00:33 +04001434 ])
David Lamparter8c99b4c2013-08-01 07:43:36 +00001435
1436 if test x"${enable_backtrace}" = x"yes" -a x"${backtrace_ok}" = x"no"; then
1437 dnl user explicitly requested backtrace but we failed to find support
1438 AC_MSG_FAILURE([failed to find backtrace support])
1439 fi
1440fi
paulfb2d1502003-06-04 09:40:54 +00001441
Paul Jakma41be32b2006-03-30 13:53:59 +00001442dnl -----------------------------------------
1443dnl check for malloc mallinfo struct and call
1444dnl this must try and link using LIBS, in
1445dnl order to check no alternative allocator
1446dnl has been specified, which might not provide
1447dnl mallinfo, e.g. such as Umem on Solaris.
1448dnl -----------------------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001449AC_CHECK_HEADER([malloc.h],
Paul Jakma41be32b2006-03-30 13:53:59 +00001450 [AC_MSG_CHECKING(whether mallinfo is available)
1451 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <malloc.h>]],
1452 [[struct mallinfo ac_x; ac_x = mallinfo ();]])],
1453 [AC_MSG_RESULT(yes)
1454 AC_DEFINE(HAVE_MALLINFO,,mallinfo)],
1455 AC_MSG_RESULT(no)
1456 )
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001457 ], [], QUAGGA_INCLUDES)
Paul Jakma41be32b2006-03-30 13:53:59 +00001458
paul408ad942003-05-20 00:03:33 +00001459dnl ----------
1460dnl configure date
1461dnl ----------
1462CONFDATE=`date '+%Y%m%d'`
1463AC_SUBST(CONFDATE)
1464
Paul P Komkoff Jr46bc0e42008-08-13 16:17:04 +01001465dnl Conditionally enable PIE support for GNU toolchains.
Paul P Komkoff Jr46bc0e42008-08-13 16:17:04 +01001466AC_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 +01001467if test "$enable_pie" != "no"; then
Paul P Komkoff Jr46bc0e42008-08-13 16:17:04 +01001468 AC_CACHE_CHECK([whether $CC accepts PIE flags], [ap_cv_cc_pie], [
1469 save_CFLAGS=$CFLAGS
1470 save_LDFLAGS=$LDFLAGS
1471 CFLAGS="$CFLAGS -fPIE"
1472 LDFLAGS="$LDFLAGS -pie"
1473 AC_LINK_IFELSE([AC_LANG_SOURCE([[static int foo[30000]; int main () { return 0; }]])],
1474 [ap_cv_cc_pie=yes], [ap_cv_cc_pie=no]
1475 )
1476 CFLAGS=$save_CFLAGS
1477 LDFLAGS=$save_LDFLAGS
1478 ])
1479 if test "$ap_cv_cc_pie" = "yes"; then
1480 PICFLAGS="-fPIE"
1481 PILDFLAGS="-pie"
1482 fi
1483fi
1484
1485AC_SUBST(PICFLAGS)
1486AC_SUBST(PILDFLAGS)
1487
David Lamparterf281ab92013-02-26 16:21:20 +01001488dnl -------
1489dnl DejaGNU
1490dnl -------
1491if test x"$DEJAGNU" = x
1492then
1493 DEJAGNU="\$(top_srcdir)/tests/global-conf.exp"
1494fi
1495RUNTESTDEFAULTFLAGS="-x --tool \$\$tool"
1496
1497AC_SUBST(DEJAGNU)
1498AC_SUBST(RUNTESTDEFAULTFLAGS)
1499
paul7ea487b2003-03-17 02:05:07 +00001500dnl ------------------------------
paula159ed92003-06-04 11:01:45 +00001501dnl set paths for state directory
paul23bd12c2003-04-07 06:11:09 +00001502dnl ------------------------------
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001503AC_MSG_CHECKING(directory to use for state file)
paul23bd12c2003-04-07 06:11:09 +00001504if test "${prefix}" = "NONE"; then
paule8f29842003-08-12 13:08:31 +00001505 quagga_statedir_prefix="";
paul23bd12c2003-04-07 06:11:09 +00001506else
paule8f29842003-08-12 13:08:31 +00001507 quagga_statedir_prefix=${prefix}
paul23bd12c2003-04-07 06:11:09 +00001508fi
1509if test "${localstatedir}" = '${prefix}/var'; then
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001510 for QUAGGA_STATE_DIR in ${quagga_statedir_prefix}/var/run dnl
paule8f29842003-08-12 13:08:31 +00001511 ${quagga_statedir_prefix}/var/adm dnl
1512 ${quagga_statedir_prefix}/etc dnl
paula159ed92003-06-04 11:01:45 +00001513 /var/run dnl
1514 /var/adm dnl
1515 /etc dnl
1516 /dev/null;
paul23bd12c2003-04-07 06:11:09 +00001517 do
paule8f29842003-08-12 13:08:31 +00001518 test -d $QUAGGA_STATE_DIR && break
paul23bd12c2003-04-07 06:11:09 +00001519 done
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001520 quagga_statedir=$QUAGGA_STATE_DIR
paul23bd12c2003-04-07 06:11:09 +00001521else
paule8f29842003-08-12 13:08:31 +00001522 quagga_statedir=${localstatedir}
paul23bd12c2003-04-07 06:11:09 +00001523fi
paule8f29842003-08-12 13:08:31 +00001524if test $quagga_statedir = "/dev/null"; then
paula159ed92003-06-04 11:01:45 +00001525 AC_MSG_ERROR('STATE DIRECTORY NOT FOUND! FIX OR SPECIFY --localstatedir!')
1526fi
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001527AC_MSG_RESULT(${quagga_statedir})
1528AC_SUBST(quagga_statedir)
paula159ed92003-06-04 11:01:45 +00001529
paule8f29842003-08-12 13:08:31 +00001530AC_DEFINE_UNQUOTED(PATH_ZEBRA_PID, "$quagga_statedir/zebra.pid",zebra PID)
1531AC_DEFINE_UNQUOTED(PATH_RIPD_PID, "$quagga_statedir/ripd.pid",ripd PID)
1532AC_DEFINE_UNQUOTED(PATH_RIPNGD_PID, "$quagga_statedir/ripngd.pid",ripngd PID)
1533AC_DEFINE_UNQUOTED(PATH_BGPD_PID, "$quagga_statedir/bgpd.pid",bgpd PID)
1534AC_DEFINE_UNQUOTED(PATH_OSPFD_PID, "$quagga_statedir/ospfd.pid",ospfd PID)
1535AC_DEFINE_UNQUOTED(PATH_OSPF6D_PID, "$quagga_statedir/ospf6d.pid",ospf6d PID)
Paul Jakma57345092011-12-25 17:52:09 +01001536AC_DEFINE_UNQUOTED(PATH_BABELD_PID, "$quagga_statedir/babeld.pid",babeld PID)
jardin9e867fe2003-12-23 08:56:18 +00001537AC_DEFINE_UNQUOTED(PATH_ISISD_PID, "$quagga_statedir/isisd.pid",isisd PID)
Everton Marques871dbcf2009-08-11 15:43:05 -03001538AC_DEFINE_UNQUOTED(PATH_PIMD_PID, "$quagga_statedir/pimd.pid",pimd PID)
ajsd0199432004-12-22 14:03:52 +00001539AC_DEFINE_UNQUOTED(PATH_WATCHQUAGGA_PID, "$quagga_statedir/watchquagga.pid",watchquagga PID)
paule8f29842003-08-12 13:08:31 +00001540AC_DEFINE_UNQUOTED(ZEBRA_SERV_PATH, "$quagga_statedir/zserv.api",zebra api socket)
1541AC_DEFINE_UNQUOTED(ZEBRA_VTYSH_PATH, "$quagga_statedir/zebra.vty",zebra vty socket)
1542AC_DEFINE_UNQUOTED(RIP_VTYSH_PATH, "$quagga_statedir/ripd.vty",rip vty socket)
1543AC_DEFINE_UNQUOTED(RIPNG_VTYSH_PATH, "$quagga_statedir/ripngd.vty",ripng vty socket)
1544AC_DEFINE_UNQUOTED(BGP_VTYSH_PATH, "$quagga_statedir/bgpd.vty",bgpd vty socket)
1545AC_DEFINE_UNQUOTED(OSPF_VTYSH_PATH, "$quagga_statedir/ospfd.vty",ospfd vty socket)
1546AC_DEFINE_UNQUOTED(OSPF6_VTYSH_PATH, "$quagga_statedir/ospf6d.vty",ospf6d vty socket)
Paul Jakma57345092011-12-25 17:52:09 +01001547AC_DEFINE_UNQUOTED(BABEL_VTYSH_PATH, "$quagga_statedir/babeld.vty",babeld vty socket)
jardin9e867fe2003-12-23 08:56:18 +00001548AC_DEFINE_UNQUOTED(ISIS_VTYSH_PATH, "$quagga_statedir/isisd.vty",isisd vty socket)
Everton Marques871dbcf2009-08-11 15:43:05 -03001549AC_DEFINE_UNQUOTED(PIM_VTYSH_PATH, "$quagga_statedir/pimd.vty",pimd vty socket)
ajs515210b2004-12-22 15:35:12 +00001550AC_DEFINE_UNQUOTED(DAEMON_VTY_DIR, "$quagga_statedir",daemon vty directory)
paul7ea487b2003-03-17 02:05:07 +00001551
paul1eb8ef22005-04-07 07:30:20 +00001552dnl -------------------------------
1553dnl Quagga sources should always be
1554dnl current wrt interfaces. Dont
1555dnl allow deprecated interfaces to
1556dnl be exposed.
1557dnl -------------------------------
1558AC_DEFINE(QUAGGA_NO_DEPRECATED_INTERFACES, 1, Hide deprecated interfaces)
1559
paul7ea487b2003-03-17 02:05:07 +00001560dnl ---------------------------
1561dnl Check htonl works correctly
1562dnl ---------------------------
1563AC_MSG_CHECKING(for working htonl)
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001564AC_CACHE_VAL(ac_cv_htonl_works,
1565 [AC_LINK_IFELSE([AC_LANG_PROGRAM([QUAGGA_INCLUDES],[htonl (0);])],
1566 [ac_cv_htonl_works=yes], [ac_cv_htonl_works=no])
1567 ]
1568)
paul7ea487b2003-03-17 02:05:07 +00001569AC_MSG_RESULT($ac_cv_htonl_works)
1570
paul14c17fd2004-11-07 22:34:23 +00001571AC_CONFIG_FILES([Makefile lib/Makefile zebra/Makefile ripd/Makefile
ajsd0199432004-12-22 14:03:52 +00001572 ripngd/Makefile bgpd/Makefile ospfd/Makefile watchquagga/Makefile
Paul Jakma57345092011-12-25 17:52:09 +01001573 ospf6d/Makefile isisd/Makefile babeld/Makefile vtysh/Makefile
David Lamparterf281ab92013-02-26 16:21:20 +01001574 doc/Makefile ospfclient/Makefile tests/Makefile m4/Makefile
Everton Marques871dbcf2009-08-11 15:43:05 -03001575 pimd/Makefile
David Lamparter5bb7e4d2013-02-26 17:53:30 +01001576 tests/bgpd.tests/Makefile
David Lamparterc69905b2013-01-24 01:39:14 +01001577 tests/libzebra.tests/Makefile
David Lamparterf281ab92013-02-26 16:21:20 +01001578 redhat/Makefile
gdt69f1fc22004-08-27 15:57:35 +00001579 pkgsrc/Makefile
paul670bbf12004-11-12 09:05:00 +00001580 redhat/quagga.spec
gdtb7a97f82004-07-23 16:23:56 +00001581 lib/version.h
paul14c17fd2004-11-07 22:34:23 +00001582 doc/defines.texi
hassof695b012005-04-02 19:03:39 +00001583 isisd/topology/Makefile
gdtcbd04082004-08-31 18:16:36 +00001584 pkgsrc/bgpd.sh pkgsrc/ospf6d.sh pkgsrc/ospfd.sh
paulf31293a2004-11-12 09:27:04 +00001585 pkgsrc/ripd.sh pkgsrc/ripngd.sh pkgsrc/zebra.sh])
paul26275b02005-04-11 07:10:47 +00001586AC_CONFIG_FILES([solaris/Makefile])
1587
paul670bbf12004-11-12 09:05:00 +00001588AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl])
hasso48577192004-11-19 06:41:49 +00001589## Hack, but working solution to avoid rebuilding of quagga.info.
1590## It's already in CVS until texinfo 4.7 is more common.
paul14c17fd2004-11-07 22:34:23 +00001591AC_OUTPUT
paul7ea487b2003-03-17 02:05:07 +00001592
1593echo "
hassoc89f6492004-08-26 12:21:28 +00001594Quagga configuration
1595--------------------
1596quagga version : ${PACKAGE_VERSION}
Joachim Nilsson1080c132012-05-30 08:15:48 +02001597host operating system : ${host_os}
paul7ea487b2003-03-17 02:05:07 +00001598source code location : ${srcdir}
1599compiler : ${CC}
1600compiler flags : ${CFLAGS}
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001601make : ${MAKE-make}
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001602linker flags : ${LDFLAGS} ${LIBS} ${LIBCAP} ${LIBREADLINE} ${LIBM}
paule8f29842003-08-12 13:08:31 +00001603state file directory : ${quagga_statedir}
pauldc7a2bf2003-10-22 00:07:44 +00001604config file directory : `eval echo \`echo ${sysconfdir}\``
gdtd6b72f72003-12-03 17:24:27 +00001605example directory : `eval echo \`echo ${exampledir}\``
paul8d4aee52003-06-06 00:30:35 +00001606user to run as : ${enable_user}
1607group to run as : ${enable_group}
1608group for vty sockets : ${enable_vty_group}
gdtaa593d52003-12-22 20:15:53 +00001609config file mask : ${enable_configfile_mask}
1610log file mask : ${enable_logfile_mask}
pauldc7a2bf2003-10-22 00:07:44 +00001611
1612The above user and group must have read/write access to the state file
Paul Jakma105b8232006-05-28 08:02:41 +00001613directory and to the config files in the config file directory."
1614
1615if test x"$quagga_cv_gnu_make" = x"no"; then echo "
1616Warning: The ${MAKE-make} programme detected, either in your path or
1617via the MAKE variable, is not GNU Make. GNU make may be installed as
1618gmake on some systems. and is required to complete a build of Quagga
1619" > /dev/stderr
1620fi