blob: 7aaacb96df960fdb494a4285243e3af96c26b7ae [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 ])
Paul Jakma52c0bc72015-08-20 21:30:17 +0100147 AC_C_FLAG([-fpie])
David Lamparter3a7e83c2015-03-03 09:55:51 +0100148 AC_C_FLAG([-fno-omit-frame-pointer])
149 AC_C_FLAG([-Wall])
150 AC_C_FLAG([-Wextra])
151 AC_C_FLAG([-Wmissing-prototypes])
152 AC_C_FLAG([-Wmissing-declarations])
153 AC_C_FLAG([-Wpointer-arith])
154 AC_C_FLAG([-Wbad-function-cast])
155 AC_C_FLAG([-Wwrite-strings])
156 if test x"${enable_gcc_ultra_verbose}" = x"yes" ; then
157 AC_C_FLAG([-Wcast-qual])
158 AC_C_FLAG([-Wstrict-prototypes])
159 AC_C_FLAG([-Wmissing-noreturn])
160 AC_C_FLAG([-Wmissing-format-attribute])
161 AC_C_FLAG([-Wunreachable-code])
162 AC_C_FLAG([-Wpacked])
163 AC_C_FLAG([-Wpadded])
164 else
165 AC_C_FLAG([-Wno-unused-result])
166 fi
167 AC_C_FLAG([-Wno-unused-parameter])
168 AC_C_FLAG([-Wno-missing-field-initializers])
169 # ICC emits a broken warning for const char *x = a ? "b" : "c";
170 # for some reason the string consts get 'promoted' to char *,
171 # triggering a const to non-const conversion warning.
172 AC_C_FLAG([-diag-disable 3179])
paul6a4b8832005-11-26 08:28:00 +0000173 ;;
174 esac
175else
176 AC_MSG_RESULT([CFLAGS supplied by user])
hasso1969e4b2005-03-27 13:07:23 +0000177fi
178
David Lamparterc0bedeb2015-03-03 10:00:43 +0100179if test x"${enable_werror}" = x"yes" ; then
180 WERROR="-Werror"
181fi
182AC_SUBST(WERROR)
183
paul7ea487b2003-03-17 02:05:07 +0000184dnl --------------
185dnl Check programs
186dnl --------------
paul7ea487b2003-03-17 02:05:07 +0000187AC_PROG_INSTALL
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000188AC_PROG_LN_S
paul7ea487b2003-03-17 02:05:07 +0000189AC_PROG_MAKE_SET
190AC_CHECK_TOOL(AR, ar)
paul7ea487b2003-03-17 02:05:07 +0000191
Paul Jakma105b8232006-05-28 08:02:41 +0000192dnl ---------------------------
193dnl We, perhaps unfortunately,
194dnl depend on GNU Make specific
195dnl constructs.
196dnl Give the user a warning if
197dnl not GNU Make.
198dnl ---------------------------
199AC_CACHE_CHECK([if ${MAKE-make} is GNU make], [quagga_cv_gnu_make],
200 [quagga_cv_gnu_make=no
201 if ${MAKE-make} --version 2>/dev/null | \
202 grep '^GNU Make ' >/dev/null ; then
203 quagga_cv_gnu_make=yes;
204 fi
205 ]
206)
207
Paul Jakmad46d2a22007-05-10 16:53:04 +0000208dnl -----------------
209dnl System extensions
210dnl -----------------
Paul Jakmad46d2a22007-05-10 16:53:04 +0000211AC_GNU_SOURCE
paul7ea487b2003-03-17 02:05:07 +0000212
gdt87efd642004-06-30 17:36:11 +0000213dnl -------
214dnl libtool
215dnl -------
Paul Jakma52c0bc72015-08-20 21:30:17 +0100216LT_INIT
gdt87efd642004-06-30 17:36:11 +0000217
paul7ea487b2003-03-17 02:05:07 +0000218dnl ----------------------
219dnl Packages configuration
220dnl ----------------------
Joachim Nilsson1080c132012-05-30 08:15:48 +0200221AC_ARG_WITH(pkg-extra-version,
222 AS_HELP_STRING([--with-pkg-extra-version=VER], [add extra version field, for packagers/distributions]),
223 [EXTRAVERSION=$withval],)
David Lamparter0be793e2012-11-27 01:34:56 +0000224AC_ARG_WITH(pkg-git-version,
225 AS_HELP_STRING([--with-pkg-git-version], [add git information to MOTD and build version string]),
David Lampartera16dcf72012-12-13 11:20:50 +0100226 [ test "x$withval" != "xno" && with_pkg_git_version="yes" ])
paul7ea487b2003-03-17 02:05:07 +0000227AC_ARG_ENABLE(vtysh,
Donald Sharpe6756782015-07-16 21:18:34 -0400228 AS_HELP_STRING([--disable-vtysh], [do not build integrated vty shell for Quagga]))
Joakim Tjernlundcbcd9bf2009-02-16 09:40:39 +0100229AC_ARG_ENABLE(doc,
David Lamparterb6fa7602014-06-28 22:15:59 +0200230 AS_HELP_STRING([--disable-doc], [do not build docs]))
paul7ea487b2003-03-17 02:05:07 +0000231AC_ARG_ENABLE(zebra,
David Lamparterb6fa7602014-06-28 22:15:59 +0200232 AS_HELP_STRING([--disable-zebra], [do not build zebra daemon]))
paul7ea487b2003-03-17 02:05:07 +0000233AC_ARG_ENABLE(bgpd,
David Lamparterb6fa7602014-06-28 22:15:59 +0200234 AS_HELP_STRING([--disable-bgpd], [do not build bgpd]))
paul7ea487b2003-03-17 02:05:07 +0000235AC_ARG_ENABLE(ripd,
David Lamparterb6fa7602014-06-28 22:15:59 +0200236 AS_HELP_STRING([--disable-ripd], [do not build ripd]))
paul7ea487b2003-03-17 02:05:07 +0000237AC_ARG_ENABLE(ripngd,
David Lamparterb6fa7602014-06-28 22:15:59 +0200238 AS_HELP_STRING([--disable-ripngd], [do not build ripngd]))
paul7ea487b2003-03-17 02:05:07 +0000239AC_ARG_ENABLE(ospfd,
David Lamparterb6fa7602014-06-28 22:15:59 +0200240 AS_HELP_STRING([--disable-ospfd], [do not build ospfd]))
paul7ea487b2003-03-17 02:05:07 +0000241AC_ARG_ENABLE(ospf6d,
David Lamparterb6fa7602014-06-28 22:15:59 +0200242 AS_HELP_STRING([--disable-ospf6d], [do not build ospf6d]))
ajsd0199432004-12-22 14:03:52 +0000243AC_ARG_ENABLE(watchquagga,
David Lamparterb6fa7602014-06-28 22:15:59 +0200244 AS_HELP_STRING([--disable-watchquagga], [do not build watchquagga]))
jardin9e867fe2003-12-23 08:56:18 +0000245AC_ARG_ENABLE(isisd,
David Lamparter656a2c02015-02-09 11:36:10 +0100246 AS_HELP_STRING([--disable-isisd], [do not build isisd]))
Everton Marques871dbcf2009-08-11 15:43:05 -0300247AC_ARG_ENABLE(pimd,
Donald Sharpe6756782015-07-16 21:18:34 -0400248 AS_HELP_STRING([--disable-pimd], [do not build pimd]))
paul7ea487b2003-03-17 02:05:07 +0000249AC_ARG_ENABLE(bgp-announce,
David Lamparterb6fa7602014-06-28 22:15:59 +0200250 AS_HELP_STRING([--disable-bgp-announce,], [turn off BGP route announcement]))
paul7ea487b2003-03-17 02:05:07 +0000251AC_ARG_ENABLE(snmp,
David Lamparterb6fa7602014-06-28 22:15:59 +0200252 AS_HELP_STRING([--enable-snmp=ARG], [enable SNMP support (smux or agentx)]))
paul7ea487b2003-03-17 02:05:07 +0000253AC_ARG_WITH(libpam,
David Lamparterb6fa7602014-06-28 22:15:59 +0200254 AS_HELP_STRING([--with-libpam], [use libpam for PAM support in vtysh]))
hasso71c0fb52003-05-25 20:18:13 +0000255AC_ARG_ENABLE(tcp-zebra,
David Lamparterb6fa7602014-06-28 22:15:59 +0200256 AS_HELP_STRING([--enable-tcp-zebra], [enable TCP/IP socket connection between zebra and protocol daemon]))
paul1ef74ef2003-03-21 15:16:05 +0000257AC_ARG_ENABLE(ospfapi,
David Lamparterb6fa7602014-06-28 22:15:59 +0200258 AS_HELP_STRING([--disable-ospfapi], [do not build OSPFAPI to access the OSPF LSA Database]))
paul1ef74ef2003-03-21 15:16:05 +0000259AC_ARG_ENABLE(ospfclient,
David Lamparterb6fa7602014-06-28 22:15:59 +0200260 AS_HELP_STRING([--disable-ospfclient], [do not build OSPFAPI client for OSPFAPI,
261 (this is the default if --disable-ospfapi is set)]))
paul7ea487b2003-03-17 02:05:07 +0000262AC_ARG_ENABLE(multipath,
David Lamparterb6fa7602014-06-28 22:15:59 +0200263 AS_HELP_STRING([--enable-multipath=ARG], [enable multipath function, ARG must be digit]))
Paul P Komkoff Jrfe86b482008-08-13 16:56:05 +0100264AC_ARG_ENABLE(user,
David Lamparterb6fa7602014-06-28 22:15:59 +0200265 AS_HELP_STRING([--enable-user=USER], [user to run Quagga suite as (default quagga)]))
Paul P Komkoff Jrfe86b482008-08-13 16:56:05 +0100266AC_ARG_ENABLE(group,
David Lamparterb6fa7602014-06-28 22:15:59 +0200267 AS_HELP_STRING([--enable-group=GROUP], [group to run Quagga suite as (default quagga)]))
pauledd7c242003-06-04 13:59:38 +0000268AC_ARG_ENABLE(vty_group,
David Lamparterb6fa7602014-06-28 22:15:59 +0200269 AS_HELP_STRING([--enable-vty-group=ARG], [set vty sockets to have specified group as owner]))
gdtaa593d52003-12-22 20:15:53 +0000270AC_ARG_ENABLE(configfile_mask,
David Lamparterb6fa7602014-06-28 22:15:59 +0200271 AS_HELP_STRING([--enable-configfile-mask=ARG], [set mask for config files]))
gdtaa593d52003-12-22 20:15:53 +0000272AC_ARG_ENABLE(logfile_mask,
David Lamparterb6fa7602014-06-28 22:15:59 +0200273 AS_HELP_STRING([--enable-logfile-mask=ARG], [set mask for log files]))
pauledd7c242003-06-04 13:59:38 +0000274
hasso71c0fb52003-05-25 20:18:13 +0000275AC_ARG_ENABLE(rtadv,
David Lamparterb6fa7602014-06-28 22:15:59 +0200276 AS_HELP_STRING([--disable-rtadv], [disable IPV6 router advertisement feature]))
hassoca776982004-06-12 14:33:05 +0000277AC_ARG_ENABLE(irdp,
David Lamparterb6fa7602014-06-28 22:15:59 +0200278 AS_HELP_STRING([--enable-irdp], [enable IRDP server support in zebra]))
hassof695b012005-04-02 19:03:39 +0000279AC_ARG_ENABLE(isis_topology,
David Lamparterb6fa7602014-06-28 22:15:59 +0200280 AS_HELP_STRING([--enable-isis-topology], [enable IS-IS topology generator]))
hasso41d3fc92004-04-06 11:59:00 +0000281AC_ARG_ENABLE(capabilities,
David Lamparterb6fa7602014-06-28 22:15:59 +0200282 AS_HELP_STRING([--disable-capabilities], [disable using POSIX capabilities]))
Stephen Hemminger47f6aef2013-01-04 22:29:22 +0000283AC_ARG_ENABLE(rusage,
David Lamparterb6fa7602014-06-28 22:15:59 +0200284 AS_HELP_STRING([--disable-rusage], [disable using getrusage]))
paul6b6942f2004-10-22 04:55:05 +0000285AC_ARG_ENABLE(gcc_ultra_verbose,
David Lamparterb6fa7602014-06-28 22:15:59 +0200286 AS_HELP_STRING([--enable-gcc-ultra-verbose], [enable ultra verbose GCC warnings]))
Paul Jakma3453a712009-06-12 14:21:02 +0100287AC_ARG_ENABLE(linux24_tcp_md5,
David Lamparterb6fa7602014-06-28 22:15:59 +0200288 AS_HELP_STRING([--enable-linux24-tcp-md5], [enable support for old, Linux-2.4 RFC2385 patch]))
ajs3cade262004-12-29 17:50:22 +0000289AC_ARG_ENABLE(gcc-rdynamic,
David Lamparterb6fa7602014-06-28 22:15:59 +0200290 AS_HELP_STRING([--enable-gcc-rdynamic], [enable linking with -rdynamic for better backtraces (default if gcc)]))
David Lamparter8c99b4c2013-08-01 07:43:36 +0000291AC_ARG_ENABLE(backtrace,
David Lamparterb6fa7602014-06-28 22:15:59 +0200292 AS_HELP_STRING([--disable-backtrace,], [disable crash backtraces (default autodetect)]))
ajs924b9222005-04-16 17:11:24 +0000293AC_ARG_ENABLE(time-check,
David Lamparterb6fa7602014-06-28 22:15:59 +0200294 AS_HELP_STRING([--disable-time-check], [disable slow thread warning messages]))
Jeremy Jackson25f45882009-01-12 16:06:12 -0500295AC_ARG_ENABLE(pcreposix,
David Lamparterb6fa7602014-06-28 22:15:59 +0200296 AS_HELP_STRING([--enable-pcreposix], [enable using PCRE Posix libs for regex functions]))
Avneesh Sachdev5adc2522012-11-13 22:48:59 +0000297AC_ARG_ENABLE(fpm,
David Lamparterb6fa7602014-06-28 22:15:59 +0200298 AS_HELP_STRING([--enable-fpm], [enable Forwarding Plane Manager support]))
David Lamparterc0bedeb2015-03-03 10:00:43 +0100299AC_ARG_ENABLE(werror,
300 AS_HELP_STRING([--enable-werror], [enable -Werror (recommended for developers only)]))
paul6b6942f2004-10-22 04:55:05 +0000301
David Lamparter8c99b4c2013-08-01 07:43:36 +0000302if test x"${enable_gcc_rdynamic}" != x"no" ; then
303 if test x"${enable_gcc_rdynamic}" = x"yes" -o x"$COMPILER" = x"GCC"; then
304 LDFLAGS="${LDFLAGS} -rdynamic"
305 fi
ajs3cade262004-12-29 17:50:22 +0000306fi
307
ajs924b9222005-04-16 17:11:24 +0000308if test x"${enable_time_check}" != x"no" ; then
309 if test x"${enable_time_check}" = x"yes" -o x"${enable_time_check}" = x ; then
310 AC_DEFINE(CONSUMED_TIME_CHECK,5000000,Consumed Time Check)
311 else
312 AC_DEFINE_UNQUOTED(CONSUMED_TIME_CHECK,$enable_time_check,Consumed Time Check)
313 fi
314fi
315
Avneesh Sachdev5adc2522012-11-13 22:48:59 +0000316if test "${enable_fpm}" = "yes"; then
317 AC_DEFINE(HAVE_FPM,,Forwarding Plane Manager support)
318fi
319
paul7ea487b2003-03-17 02:05:07 +0000320if test "${enable_tcp_zebra}" = "yes"; then
321 AC_DEFINE(HAVE_TCP_ZEBRA,,Use TCP for zebra communication)
322fi
323
Paul Jakma3453a712009-06-12 14:21:02 +0100324if test "${enable_linux24_tcp_md5}" = "yes"; then
325 AC_DEFINE(HAVE_TCP_MD5_LINUX24,,Old Linux 2.4 TCP MD5 Signature Patch)
326fi
327
gdtd2a0ccc2003-12-03 18:13:48 +0000328AC_MSG_CHECKING(if zebra should be configurable to send Route Advertisements)
329if test "${enable_rtadv}" != "no"; then
hasso71c0fb52003-05-25 20:18:13 +0000330 AC_MSG_RESULT(yes)
gdtd2a0ccc2003-12-03 18:13:48 +0000331 AC_DEFINE(HAVE_RTADV,,Enable IPv6 Routing Advertisement support)
paul2487bea2003-05-25 23:51:31 +0000332else
333 AC_MSG_RESULT(no)
hasso71c0fb52003-05-25 20:18:13 +0000334fi
paul7ea487b2003-03-17 02:05:07 +0000335
hassoca776982004-06-12 14:33:05 +0000336if test "${enable_irdp}" = "yes"; then
337 AC_DEFINE(HAVE_IRDP,, IRDP )
338fi
339
David Lamparter656a2c02015-02-09 11:36:10 +0100340if test "${enable_isisd}" != "no" && test "${enable_isis_topology}" = yes; then
hassof695b012005-04-02 19:03:39 +0000341 AC_DEFINE(TOPOLOGY_GENERATE,,Enable IS-IS topology generator code)
David Lamparteree1ac2d2012-07-19 12:58:59 +0200342 ISIS_TOPOLOGY_INCLUDES="-I\$(srcdir)/topology"
hassof695b012005-04-02 19:03:39 +0000343 ISIS_TOPOLOGY_DIR="topology"
344 ISIS_TOPOLOGY_LIB="./topology/libtopology.a"
345fi
346
347AC_SUBST(ISIS_TOPOLOGY_INCLUDES)
348AC_SUBST(ISIS_TOPOLOGY_DIR)
349AC_SUBST(ISIS_TOPOLOGY_LIB)
350
paul79cb2162003-06-06 12:19:53 +0000351if test "${enable_user}" = "yes" || test x"${enable_user}" = x""; then
paule8f29842003-08-12 13:08:31 +0000352 enable_user="quagga"
pauledd7c242003-06-04 13:59:38 +0000353elif test "${enable_user}" = "no"; then
354 enable_user="root"
355fi
pauledd7c242003-06-04 13:59:38 +0000356
paul79cb2162003-06-06 12:19:53 +0000357if test "${enable_group}" = "yes" || test x"${enable_group}" = x""; then
paule8f29842003-08-12 13:08:31 +0000358 enable_group="quagga"
pauledd7c242003-06-04 13:59:38 +0000359elif test "${enable_group}" = "no"; then
360 enable_group="root"
361fi
pauledd7c242003-06-04 13:59:38 +0000362
363if test x"${enable_vty_group}" = x"yes" ; then
paul8d4aee52003-06-06 00:30:35 +0000364 AC_MSG_ERROR([--enable-vty-group requires a group as argument, not yes])
paul79cb2162003-06-06 12:19:53 +0000365elif test x"${enable_vty_group}" != x""; then
paul8d4aee52003-06-06 00:30:35 +0000366 if test x"${enable_vty_group}" != x"no"; then
pauledd7c242003-06-04 13:59:38 +0000367 AC_DEFINE_UNQUOTED(VTY_GROUP, "${enable_vty_group}", VTY Sockets Group)
368 fi
369fi
paul26275b02005-04-11 07:10:47 +0000370AC_SUBST([enable_user])
371AC_SUBST([enable_group])
372AC_SUBST([enable_vty_group])
373AC_DEFINE_UNQUOTED(QUAGGA_USER, "${enable_user}", Quagga User)
374AC_DEFINE_UNQUOTED(QUAGGA_GROUP, "${enable_group}", Quagga Group)
pauledd7c242003-06-04 13:59:38 +0000375
gdtaa593d52003-12-22 20:15:53 +0000376enable_configfile_mask=${enable_configfile_mask:-0600}
377AC_DEFINE_UNQUOTED(CONFIGFILE_MASK, ${enable_configfile_mask}, Mask for config files)
378
379enable_logfile_mask=${enable_logfile_mask:-0600}
380AC_DEFINE_UNQUOTED(LOGFILE_MASK, ${enable_logfile_mask}, Mask for log files)
381
Donald Sharpd1839632015-12-09 08:24:44 -0500382MPATH_NUM=1
paul7ea487b2003-03-17 02:05:07 +0000383
384case "${enable_multipath}" in
Donald Sharpd1839632015-12-09 08:24:44 -0500385 0)
386 MPATH_NUM=64
387 ;;
388 [[1-9]|[1-9][0-9]|[1-9][0-9][0-9]])
389 MPATH_NUM="${enable_multipath}"
paul7ea487b2003-03-17 02:05:07 +0000390 ;;
391 "")
392 ;;
393 *)
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000394 AC_MSG_FAILURE([Please specify digit to enable multipath ARG])
paul7ea487b2003-03-17 02:05:07 +0000395 ;;
396esac
397
Donald Sharpd1839632015-12-09 08:24:44 -0500398AC_DEFINE_UNQUOTED(MULTIPATH_NUM, $MPATH_NUM, Maximum number of paths for a route)
paul7ea487b2003-03-17 02:05:07 +0000399
Joachim Nilsson1080c132012-05-30 08:15:48 +0200400dnl -----------------------------------
401dnl Add extra version string to package
402dnl name, string and version fields.
403dnl -----------------------------------
404if test "x${EXTRAVERSION}" != "x" ; then
David Lamparter0be793e2012-11-27 01:34:56 +0000405 VERSION="${VERSION}${EXTRAVERSION}"
406 PACKAGE_VERSION="${PACKAGE_VERSION}${EXTRAVERSION}"
407 PACKAGE_STRING="${PACKAGE_STRING}${EXTRAVERSION}"
Joachim Nilsson1080c132012-05-30 08:15:48 +0200408fi
409
David Lampartera16dcf72012-12-13 11:20:50 +0100410if test "x$with_pkg_git_version" = "xyes"; then
411 if test -d "${srcdir}/.git"; then
412 AC_DEFINE(GIT_VERSION, [1], [include git version info])
413 else with_pkg_git_version="no"
414 AC_MSG_WARN([--with-pkg-git-version given, but this is not a git checkout])
415 fi
416fi
417AM_CONDITIONAL([GIT_VERSION], [test "x$with_pkg_git_version" = "xyes"])
David Lamparter0be793e2012-11-27 01:34:56 +0000418
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000419dnl ------------------------------------
420dnl Check C keywords and standard types
421dnl ------------------------------------
422AC_C_CONST
423AC_C_INLINE
424AC_C_RESTRICT
425AC_C_VOLATILE
pauldc7a2bf2003-10-22 00:07:44 +0000426AC_HEADER_STDC
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000427AC_HEADER_TIME
428AC_HEADER_SYS_WAIT
Paul Jakmae8441a82015-09-15 16:15:27 +0100429AC_HEADER_STDBOOL
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000430dnl AC_TYPE_PID_T
431AC_TYPE_UID_T
432AC_TYPE_MODE_T
433AC_TYPE_SIZE_T
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000434AC_STRUCT_TM
pauldc7a2bf2003-10-22 00:07:44 +0000435
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000436dnl -------------------------
437dnl Check other header files.
438dnl -------------------------
439AC_CHECK_HEADERS([stropts.h sys/ksym.h sys/times.h sys/select.h \
440 sys/types.h linux/version.h netdb.h asm/types.h \
Timo Teräs16ffb262014-07-29 09:41:54 +0000441 sys/cdefs.h sys/param.h limits.h signal.h \
Paul Jakma6511cab2009-06-18 17:38:01 +0100442 sys/socket.h netinet/in.h time.h sys/time.h])
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000443
444dnl Utility macro to avoid retyping includes all the time
445m4_define([QUAGGA_INCLUDES],
446[#ifdef SUNOS_5
447#define _XPG4_2
448#define __EXTENSIONS__
449#endif
450#include <stdio.h>
451#if STDC_HEADERS
452# include <stdlib.h>
453# include <stddef.h>
454#else
455# if HAVE_STDLIB_H
456# include <stdlib.h>
457# endif
458#endif
459#if HAVE_SYS_TYPES_H
460# include <sys/types.h>
461#endif
462/* sys/conf.h depends on param.h on FBSD at least */
463#if HAVE_SYS_PARAM_H
464# include <sys/param.h>
465#endif
466/* Required for MAXSIG */
467#if HAVE_SIGNAL_H
468# include <signal.h>
469#endif
470#if HAVE_SYS_SOCKET_H
471# include <sys/socket.h>
472#endif
Hasso Tepperea057672013-01-13 17:45:29 +0000473#ifdef __APPLE__
474# define __APPLE_USE_RFC_3542
475#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000476#if HAVE_NETINET_IN_H
477# include <netinet/in.h>
478#endif
Paul Jakma6511cab2009-06-18 17:38:01 +0100479#ifdef TIME_WITH_SYS_TIME
480# include <sys/time.h>
481# include <time.h>
482#else
483# ifdef HAVE_SYS_TIME_H
484# include <sys/time.h>
485# else
486# include <time.h>
487# endif
488#endif /* TIME_WITH_SYS_TIME */
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000489])dnl
490
Denis Ovsienko2b43bf22011-07-14 16:30:08 +0400491dnl HAVE_NET_IF_H must be discovered by the time the longer AC_CHECK_HEADERS
492dnl round below execution begins, otherwise it doesn't properly detect
493dnl HAVE_NETINET6_IN6_VAR_H, HAVE_NET_IF_VAR_H and HAVE_STRUCT_IN6_ALIASREQ
494dnl on FreeBSD (BZ#408).
495
496AC_CHECK_HEADERS([net/if.h], [], [], QUAGGA_INCLUDES)
497
498m4_define([QUAGGA_INCLUDES],
499QUAGGA_INCLUDES
500[#if HAVE_NET_IF_H
501# include <net/if.h>
502#endif
503])dnl
504
505dnl Same applies for HAVE_NET_IF_VAR_H, which HAVE_NETINET6_ND6_H and
506dnl HAVE_NETINET_IN_VAR_H depend upon. But if_var.h depends on if.h, hence
507dnl an additional round for it.
508
509AC_CHECK_HEADERS([net/if_var.h], [], [], QUAGGA_INCLUDES)
510
511m4_define([QUAGGA_INCLUDES],
512QUAGGA_INCLUDES
513[#if HAVE_NET_IF_VAR_H
514# include <net/if_var.h>
515#endif
516])dnl
517
518AC_CHECK_HEADERS([sys/un.h netinet/in_systm.h netinet/in_var.h \
519 net/if_dl.h net/netopt.h net/route.h \
Paul Jakma11770e12007-06-22 16:14:42 +0000520 inet/nd.h arpa/inet.h netinet/ip_icmp.h \
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000521 fcntl.h stddef.h sys/ioctl.h syslog.h wchar.h wctype.h \
522 sys/sysctl.h sys/sockio.h kvm.h sys/conf.h],
523 [], [], QUAGGA_INCLUDES)
524
525AC_CHECK_HEADERS([ucontext.h], [], [],
526[#ifndef __USE_GNU
527#define __USE_GNU
528#endif /* __USE_GNU */
529QUAGGA_INCLUDES
530])
531
Joakim Tjernlundb166ea22009-06-25 16:40:06 +0100532m4_define([UCONTEXT_INCLUDES],
533[#include <ucontext.h>])dnl
534
535AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.uc_regs],
536 [], [], [UCONTEXT_INCLUDES])
537AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.regs],
538 [AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.regs.nip],
539 [], [], [UCONTEXT_INCLUDES])],
540 [], [UCONTEXT_INCLUDES])
541AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.gregs],
542 [], [], [UCONTEXT_INCLUDES])
543
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000544m4_define([QUAGGA_INCLUDES],
545QUAGGA_INCLUDES
Denis Ovsienko2b43bf22011-07-14 16:30:08 +0400546[#if HAVE_SYS_UN_H
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000547# include <sys/un.h>
548#endif
549#if HAVE_NETINET_IN_SYSTM_H
550# include <netinet/in_systm.h>
551#endif
552#if HAVE_NETINET_IN_VAR_H
553# include <netinet/in_var.h>
554#endif
555#if HAVE_NET_IF_DL_H
556# include <net/if_dl.h>
557#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000558#if HAVE_NET_NETOPT_H
559# include <net/netopt.h>
560#endif
561#if HAVE_NET_ROUTE_H
562# include <net/route.h>
563#endif
564#if HAVE_INET_ND_H
565# include <inet/nd.h>
566#endif
567#if HAVE_ARPA_INET_H
568# include <arpa/inet.h>
569#endif
Paul Jakma11770e12007-06-22 16:14:42 +0000570/* Required for IDRP */
571#if HAVE_NETINET_IP_ICMP_H
572# include <netinet/ip_icmp.h>
573#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000574])dnl
pauldc7a2bf2003-10-22 00:07:44 +0000575
gdtfa3232e2003-12-03 17:52:30 +0000576dnl V6 headers are checked below, after we check for v6
paul7ea487b2003-03-17 02:05:07 +0000577
paul7ea487b2003-03-17 02:05:07 +0000578dnl Some systems (Solaris 2.x) require libnsl (Network Services Library)
579case "$host" in
paulafd8a122005-03-12 06:36:10 +0000580 [*-sunos5.[6-7]*] | [*-solaris2.[6-7]*])
paul7ea487b2003-03-17 02:05:07 +0000581 opsys=sol2-6
paulafd8a122005-03-12 06:36:10 +0000582 AC_DEFINE(SUNOS_56, 1, SunOS 5.6 to 5.7)
paul19877dd2004-05-11 10:49:35 +0000583 AC_DEFINE(SUNOS_5, 1, SunOS 5)
paul7ea487b2003-03-17 02:05:07 +0000584 AC_CHECK_LIB(xnet, main)
585 CURSES=-lcurses
David Lampartere8d0d242014-06-28 22:07:41 +0200586 SOLARIS="solaris"
paul7ea487b2003-03-17 02:05:07 +0000587 ;;
paul1b73de82005-04-10 16:31:51 +0000588 [*-sunos5.[8-9]] \
589 | [*-sunos5.1[0-9]] \
590 | [*-sunos5.1[0-9].[0-9]] \
591 | [*-solaris2.[8-9]] \
592 | [*-solaris2.1[0-9]] \
593 | [*-solaris2.1[0-9].[0-9]])
paulafd8a122005-03-12 06:36:10 +0000594 opsys=sol8
Paul Jakmafb66b292006-05-28 08:26:15 +0000595 AC_DEFINE(SUNOS_59, 1, [SunOS 5.8 up])
596 AC_DEFINE(SUNOS_5, 1, [SunOS 5])
paul19877dd2004-05-11 10:49:35 +0000597 AC_CHECK_LIB(socket, main)
598 AC_CHECK_LIB(nsl, main)
paul1b73de82005-04-10 16:31:51 +0000599 AC_CHECK_LIB(umem, main)
Paul Jakmafb66b292006-05-28 08:26:15 +0000600 AC_CHECK_FUNCS([printstack],
601 [AC_DEFINE([HAVE_PRINTSTACK],1,[Solaris printstack])
602 AC_DEFINE([HAVE_STACK_TRACE],1,[Stack symbols decode functionality])
603 ])
paul19877dd2004-05-11 10:49:35 +0000604 CURSES=-lcurses
David Lampartere8d0d242014-06-28 22:07:41 +0200605 SOLARIS="solaris"
paul19877dd2004-05-11 10:49:35 +0000606 ;;
paul7ea487b2003-03-17 02:05:07 +0000607 *-sunos5* | *-solaris2*)
paul19877dd2004-05-11 10:49:35 +0000608 AC_DEFINE(SUNOS_5,,SunOS 5, Unknown SunOS)
paul7ea487b2003-03-17 02:05:07 +0000609 AC_CHECK_LIB(socket, main)
610 AC_CHECK_LIB(nsl, main)
611 CURSES=-lcurses
David Lampartere8d0d242014-06-28 22:07:41 +0200612 SOLARIS="solaris"
paul7ea487b2003-03-17 02:05:07 +0000613 ;;
hassoc45eb832005-02-19 13:58:06 +0000614 *-linux*)
paul7ea487b2003-03-17 02:05:07 +0000615 opsys=gnu-linux
616 AC_DEFINE(GNU_LINUX,,GNU Linux)
617 ;;
paul7ea487b2003-03-17 02:05:07 +0000618 *-openbsd*)
619 opsys=openbsd
620 AC_DEFINE(OPEN_BSD,,OpenBSD)
621 ;;
paul7ea487b2003-03-17 02:05:07 +0000622esac
623
Paul Jakma62c9f502009-07-19 17:33:21 +0100624AC_SYS_LARGEFILE
625
paul7ea487b2003-03-17 02:05:07 +0000626dnl ---------------------
627dnl Integrated VTY option
628dnl ---------------------
629case "${enable_vtysh}" in
Donald Sharpe6756782015-07-16 21:18:34 -0400630 "no") VTYSH="";;
631 *) VTYSH="vtysh";
paul7ea487b2003-03-17 02:05:07 +0000632 AC_DEFINE(VTYSH,,VTY shell)
gdtfc9d0742004-06-30 14:25:12 +0000633dnl Vtysh uses libreadline, which looks for termcap functions at
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000634dnl configure time. We follow readlines search order.
gdtfc9d0742004-06-30 14:25:12 +0000635dnl The required procedures are in libtermcap on NetBSD, in
636dnl [TODO] on Linux, and in [TODO] on Solaris.
hassoc0689392005-08-25 12:00:58 +0000637 AC_CHECK_LIB(termcap, tputs, LIBREADLINE="$LIBREADLINE -ltermcap",
paula9694592005-08-25 14:50:05 +0000638 [AC_CHECK_LIB(tinfo, tputs, LIBREADLINE="$LIBREADLINE -ltinfo",
639 [AC_CHECK_LIB(curses, tputs, LIBREADLINE="$LIBREADLINE -lcurses",
640 [AC_CHECK_LIB(ncurses, tputs,
641 LIBREADLINE="$LIBREADLINE -lncurses")]
642 )]
643 )]
644 )
645 AC_CHECK_LIB(readline, main, LIBREADLINE="$LIBREADLINE -lreadline",,
646 "$LIBREADLINE")
paul7ea487b2003-03-17 02:05:07 +0000647 if test $ac_cv_lib_readline_main = no; then
gdtfc9d0742004-06-30 14:25:12 +0000648 AC_MSG_ERROR([vtysh needs libreadline but was not found and usable on your system.])
paul7ea487b2003-03-17 02:05:07 +0000649 fi
650 AC_CHECK_HEADER(readline/history.h)
651 if test $ac_cv_header_readline_history_h = no;then
652 AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
653 fi
paula9694592005-08-25 14:50:05 +0000654 AC_CHECK_LIB(readline, rl_completion_matches,
655 LIBREADLINE="$LIBREADLINE",, "$LIBREADLINE")
paul3d3de8c2003-05-23 10:33:49 +0000656 if test $ac_cv_lib_readline_rl_completion_matches = no; then
657 AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
658 fi
659 ;;
paul7ea487b2003-03-17 02:05:07 +0000660 "no" ) VTYSH="";;
paul7ea487b2003-03-17 02:05:07 +0000661esac
hassoc0689392005-08-25 12:00:58 +0000662AC_SUBST(LIBREADLINE)
David Wardf027d332012-04-30 11:36:15 -0400663AM_CONDITIONAL(VTYSH, test "x$VTYSH" = "xvtysh")
paul7ea487b2003-03-17 02:05:07 +0000664
665dnl ----------
666dnl PAM module
Denis Ovsienko61599282011-07-15 00:24:15 +0400667dnl
668dnl Quagga detects the PAM library it is built against by checking for a
669dnl functional pam_misc.h (Linux-PAM) or openpam.h (OpenPAM) header. pam_misc.h
670dnl is known to #include pam_appl.h, the standard header of a PAM library, and
671dnl openpam.h doesn't do that, although depends on the header too. Hence a
672dnl little assistance to AC_CHECK_HEADER is necessary for the proper detection
673dnl of OpenPAM.
paul7ea487b2003-03-17 02:05:07 +0000674dnl ----------
675if test "$with_libpam" = "yes"; then
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000676 AC_CHECK_HEADER([security/pam_misc.h],
677 [AC_DEFINE(HAVE_PAM_MISC_H,,Have pam_misc.h)
678 AC_DEFINE(PAM_CONV_FUNC,misc_conv,Have misc_conv)
679 pam_conv_func="misc_conv"
680 ],
681 [], QUAGGA_INCLUDES)
682 AC_CHECK_HEADER([security/openpam.h],
683 [AC_DEFINE(HAVE_OPENPAM_H,,Have openpam.h)
684 AC_DEFINE(PAM_CONV_FUNC,openpam_ttyconv,Have openpam_ttyconv)
685 pam_conv_func="openpam_ttyconv"
686 ],
Denis Ovsienko61599282011-07-15 00:24:15 +0400687 [], QUAGGA_INCLUDES[#include <security/pam_appl.h>])
paul24cd4352003-05-06 12:16:27 +0000688 if test -z "$ac_cv_header_security_pam_misc_h$ac_cv_header_security_openpam_h" ; then
689 AC_MSG_WARN([*** pam support will not be built ***])
690 with_libpam="no"
691 fi
692fi
693
694if test "$with_libpam" = "yes"; then
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000695dnl took this test from proftpds configure.in and suited to our needs
paul7ea487b2003-03-17 02:05:07 +0000696dnl -------------------------------------------------------------------------
697dnl
698dnl This next check looks funky due to a linker problem with some versions
699dnl of the PAM library. Prior to 0.72 release, the Linux PAM shared library
700dnl omitted requiring libdl linking information. PAM-0.72 or better ships
701dnl with RedHat 6.2 and Debian 2.2 or better.
702AC_CHECK_LIB(pam, pam_start,
paul24cd4352003-05-06 12:16:27 +0000703 [AC_CHECK_LIB(pam, $pam_conv_func,
paul7ea487b2003-03-17 02:05:07 +0000704 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
705 LIBPAM="-lpam"],
706 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
707 LIBPAM="-lpam -lpam_misc"]
708 )
709 ],
710
711 [AC_CHECK_LIB(pam, pam_end,
paul24cd4352003-05-06 12:16:27 +0000712 [AC_CHECK_LIB(pam, $pam_conv_func,
paula159ed92003-06-04 11:01:45 +0000713 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
paul7ea487b2003-03-17 02:05:07 +0000714 LIBPAM="-lpam -ldl"],
paula159ed92003-06-04 11:01:45 +0000715 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
paul7ea487b2003-03-17 02:05:07 +0000716 LIBPAM="-lpam -ldl -lpam_misc"]
717 )
718 ],AC_MSG_WARN([*** pam support will not be built ***]),
719 [-ldl])
720 ]
721)
722fi
723AC_SUBST(LIBPAM)
724
725dnl -------------------------------
726dnl Endian-ness check
727dnl -------------------------------
728AC_WORDS_BIGENDIAN
729
730dnl -------------------------------
731dnl check the size in byte of the C
732dnl -------------------------------
733dnl AC_CHECK_SIZEOF(char)
734dnl AC_CHECK_SIZEOF(int)
735dnl AC_CHECK_SIZEOF(short)
736dnl AC_CHECK_SIZEOF(long)
737
738dnl ----------------------------
739dnl check existance of functions
740dnl ----------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000741AC_FUNC_CHOWN
742AC_FUNC_FNMATCH
743AC_FUNC_FORK
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000744AC_FUNC_MEMCMP
745AC_FUNC_MKTIME
746AC_FUNC_STRFTIME
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000747AC_FUNC_STAT
748AC_FUNC_SELECT_ARGTYPES
749AC_FUNC_STRFTIME
Paul Jakmad46d2a22007-05-10 16:53:04 +0000750dnl Avoid AC_FUNC_STRNLEN because it pulls in AC_SYSTEM_EXTENSIONS which
751dnl can lead to strange side effects. So we just check for strnlen
752dnl directly, see below.
Paul Jakma2b5cb412007-05-10 17:05:16 +0000753dnl AC_FUNC_STRNLENdnl
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000754AC_FUNC_VPRINTF
755
756dnl -------------------------------
757dnl bgpd needs pow() and hence libm
758dnl -------------------------------
759TMPLIBS="$LIBS"
760AC_CHECK_HEADER([math.h],
761 [AC_CHECK_LIB([m], [pow],
762 [LIBM="-lm"
763 LIBS="$LIBS $LIBM"
764 AC_DEFINE(HAVE_LIBM,, Have libm)
765 AC_CHECK_FUNCS(pow,[],[LIBM=""])
766 ])
767])
768if test x"$LIBM" = x ; then
769 AC_MSG_WARN([Unable to find working pow function - bgpd may not link])
770fi
771LIBS="$TMPLIBS"
772AC_SUBST(LIBM)
773
774dnl ---------------
775dnl other functions
776dnl ---------------
777AC_CHECK_FUNCS([dup2 ftruncate getcwd gethostbyname getpagesize gettimeofday \
Paul Jakmad46d2a22007-05-10 16:53:04 +0000778 inet_ntoa inet_aton strnlen \
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000779 memchr memmove memset select socket \
780 strcasecmp strchr strcspn strdup strerror \
781 strncasecmp strndup strrchr strspn strstr \
782 strtol strtoul strlcat strlcpy \
783 daemon snprintf vsnprintf \
784 if_nametoindex if_indextoname getifaddrs \
David Lamparter12bbd622015-09-15 02:26:44 -0700785 uname fcntl getgrouplist])
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000786
paula159ed92003-06-04 11:01:45 +0000787AC_CHECK_FUNCS(setproctitle, ,
788 [AC_CHECK_LIB(util, setproctitle,
789 [LIBS="$LIBS -lutil"
790 AC_DEFINE(HAVE_SETPROCTITLE,, Have setproctitle)
791 ]
792 )
793 ]
794)
paul7ea487b2003-03-17 02:05:07 +0000795
Feng Lu55cfa2f2014-07-03 18:24:34 +0800796AC_CHECK_HEADER([asm-generic/unistd.h],
797 [AC_CHECK_DECL(__NR_setns,
798 AC_DEFINE(HAVE_NETNS,, Have netns),,
799 QUAGGA_INCLUDES [#include <asm-generic/unistd.h>
800 ])
801 AC_CHECK_FUNCS(setns, AC_DEFINE(HAVE_SETNS,, Have setns))]
802 )
803
paul7ea487b2003-03-17 02:05:07 +0000804dnl ------------------------------------
805dnl Determine routing get and set method
806dnl ------------------------------------
807AC_MSG_CHECKING(zebra between kernel interface method)
808if test x"$opsys" = x"gnu-linux"; then
David Lamparter2e5ca492014-06-28 20:54:31 +0200809 AC_MSG_RESULT(netlink)
810 RT_METHOD=rt_netlink.o
811 AC_DEFINE(HAVE_NETLINK,,netlink)
812 netlink=yes
paul7ea487b2003-03-17 02:05:07 +0000813else
David Lamparter39b233f2014-06-28 21:49:18 +0200814 AC_MSG_RESULT(Route socket)
815 KERNEL_METHOD="kernel_socket.o"
816 RT_METHOD="rt_socket.o"
paul7ea487b2003-03-17 02:05:07 +0000817fi
818AC_SUBST(RT_METHOD)
819AC_SUBST(KERNEL_METHOD)
Avneesh Sachdev5adc2522012-11-13 22:48:59 +0000820AM_CONDITIONAL([HAVE_NETLINK], [test "x$netlink" = "xyes"])
paul7ea487b2003-03-17 02:05:07 +0000821
Paul Jakma238497f2007-08-07 18:49:18 +0000822dnl --------------------------
823dnl Determine IS-IS I/O method
824dnl --------------------------
David Lamparter745bf052010-02-02 21:49:35 +0100825AC_DEFINE(ISIS_METHOD_PFPACKET, 1, [ constant value for isis method pfpacket ])
826AC_DEFINE(ISIS_METHOD_DLPI, 2, [ constant value for isis method dlpi ])
827AC_DEFINE(ISIS_METHOD_BPF, 3, [ constant value for isis method bpf ])
Paul Jakma238497f2007-08-07 18:49:18 +0000828AC_CHECK_HEADER(net/bpf.h)
829AC_CHECK_HEADER(sys/dlpi.h)
830AC_MSG_CHECKING(zebra IS-IS I/O method)
831if test x"$opsys" = x"gnu-linux"; then
832 AC_MSG_RESULT(pfpacket)
David Lamparter745bf052010-02-02 21:49:35 +0100833 ISIS_METHOD_MACRO="ISIS_METHOD_PFPACKET"
Paul Jakma238497f2007-08-07 18:49:18 +0000834elif test x"$opsys" = x"sol2-6" -o x"$opsys" = x"sol8"; then
835 AC_MSG_RESULT(DLPI)
David Lamparter745bf052010-02-02 21:49:35 +0100836 ISIS_METHOD_MACRO="ISIS_METHOD_DLPI"
Paul Jakma238497f2007-08-07 18:49:18 +0000837else
838 if test $ac_cv_header_net_bpf_h = no; then
839 if test $ac_cv_header_sys_dlpi_h = no; then
840 AC_MSG_RESULT(none)
841 AC_MSG_WARN([*** IS-IS support will not be built ***])
842 ISISD=""
843 else
844 AC_MSG_RESULT(DLPI)
845 fi
David Lamparter745bf052010-02-02 21:49:35 +0100846 ISIS_METHOD_MACRO="ISIS_METHOD_DLPI"
Paul Jakma238497f2007-08-07 18:49:18 +0000847 else
848 AC_MSG_RESULT(BPF)
David Lamparter745bf052010-02-02 21:49:35 +0100849 ISIS_METHOD_MACRO="ISIS_METHOD_BPF"
Paul Jakma238497f2007-08-07 18:49:18 +0000850 fi
851fi
David Lamparter745bf052010-02-02 21:49:35 +0100852AC_DEFINE_UNQUOTED(ISIS_METHOD, $ISIS_METHOD_MACRO, [ selected method for isis, == one of the constants ])
Paul Jakma238497f2007-08-07 18:49:18 +0000853
ajsb99760a2005-01-04 16:24:43 +0000854dnl ------------------------------------
855dnl check for broken CMSG_FIRSTHDR macro
856dnl ------------------------------------
gdt6c200462005-01-04 17:02:48 +0000857AC_MSG_CHECKING(for broken CMSG_FIRSTHDR)
hasso5b087522005-04-03 23:46:37 +0000858AC_RUN_IFELSE([AC_LANG_SOURCE([[
ajsb99760a2005-01-04 16:24:43 +0000859#ifdef SUNOS_5
860#define _XPG4_2
861#define __EXTENSIONS__
862#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000863#ifdef HAVE_STDLIB_H
864# include <stdlib.h>
865#endif
866#ifdef HAVE_SYS_TYPES_H
ajsb99760a2005-01-04 16:24:43 +0000867#include <sys/types.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000868#endif
869#ifdef HAVE_SYS_SOCKET_H
ajsb99760a2005-01-04 16:24:43 +0000870#include <sys/socket.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000871#endif
ajsb99760a2005-01-04 16:24:43 +0000872
873main()
874{
875 struct msghdr msg;
876 char buf[4];
877
878 msg.msg_control = buf;
879 msg.msg_controllen = 0;
880
881 if (CMSG_FIRSTHDR(&msg) != NULL)
882 exit(0);
883 exit (1);
hasso5b087522005-04-03 23:46:37 +0000884}]])],[AC_MSG_RESULT(yes - using workaround) AC_DEFINE(HAVE_BROKEN_CMSG_FIRSTHDR,,Broken CMSG_FIRSTHDR)],
hassod33e8d72005-04-03 13:07:21 +0000885[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
ajsb99760a2005-01-04 16:24:43 +0000886
paul7ea487b2003-03-17 02:05:07 +0000887dnl ------------------------------
888dnl check kernel route read method
889dnl ------------------------------
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500890AC_CACHE_CHECK([route read method], [quagga_cv_rtread_method],
891[if test "x$netlink" = xyes; then
892 quagga_cv_rtread_method="netlink"
paul7ea487b2003-03-17 02:05:07 +0000893else
David Lamparter2e5ca492014-06-28 20:54:31 +0200894for quagga_cv_rtread_method in /dev/ip /dev/null;
paul7ea487b2003-03-17 02:05:07 +0000895do
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500896 test x`ls $quagga_cv_rtread_method 2>/dev/null` = x"$quagga_cv_rtread_method" && break
paul7ea487b2003-03-17 02:05:07 +0000897done
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500898case $quagga_cv_rtread_method in
paul9c30ab62003-07-08 08:36:17 +0000899 "/dev/ip")
900 case "$host" in
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500901 *-freebsd*) quagga_cv_rtread_method="sysctl";;
902 *) quagga_cv_rtread_method="getmsg";;
paul9c30ab62003-07-08 08:36:17 +0000903 esac;;
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500904 *)
905 quagga_cv_rtread_method="sysctl";;
paul7ea487b2003-03-17 02:05:07 +0000906esac
907fi])
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500908RTREAD_METHOD=rtread_${quagga_cv_rtread_method}.o
paul7ea487b2003-03-17 02:05:07 +0000909AC_SUBST(RTREAD_METHOD)
910
911dnl -----------------------------
912dnl check interface lookup method
913dnl -----------------------------
paul19877dd2004-05-11 10:49:35 +0000914IOCTL_METHOD=ioctl.o
paul7ea487b2003-03-17 02:05:07 +0000915AC_MSG_CHECKING(interface looking up method)
916if test "$netlink" = yes; then
917 AC_MSG_RESULT(netlink)
918 IF_METHOD=if_netlink.o
paul19877dd2004-05-11 10:49:35 +0000919elif test "$opsys" = "sol2-6";then
920 AC_MSG_RESULT(Solaris GIF)
921 IF_METHOD=if_ioctl.o
paulafd8a122005-03-12 06:36:10 +0000922elif test "$opsys" = "sol8";then
paul19877dd2004-05-11 10:49:35 +0000923 AC_MSG_RESULT(Solaris GLIF)
924 IF_METHOD=if_ioctl_solaris.o
925 IOCTL_METHOD=ioctl_solaris.o
paul19877dd2004-05-11 10:49:35 +0000926elif test "$opsys" = "openbsd";then
927 AC_MSG_RESULT(openbsd)
928 IF_METHOD=if_ioctl.o
929elif grep NET_RT_IFLIST /usr/include/sys/socket.h >/dev/null 2>&1; then
930 AC_MSG_RESULT(sysctl)
paul7ea487b2003-03-17 02:05:07 +0000931 IF_METHOD=if_sysctl.o
932 AC_DEFINE(HAVE_NET_RT_IFLIST,,NET_RT_IFLIST)
paul19877dd2004-05-11 10:49:35 +0000933else
paul7ea487b2003-03-17 02:05:07 +0000934 AC_MSG_RESULT(ioctl)
935 IF_METHOD=if_ioctl.o
paul7ea487b2003-03-17 02:05:07 +0000936fi
937AC_SUBST(IF_METHOD)
paul19877dd2004-05-11 10:49:35 +0000938AC_SUBST(IOCTL_METHOD)
paul7ea487b2003-03-17 02:05:07 +0000939
paul42c98192005-05-07 02:22:51 +0000940dnl ---------------------------------------------------------------
941dnl figure out how to specify an interface in multicast sockets API
942dnl ---------------------------------------------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000943AC_CHECK_MEMBERS([struct ip_mreqn.imr_ifindex], [], [], QUAGGA_INCLUDES)
paul42c98192005-05-07 02:22:51 +0000944
Donald Sharp1934e782015-06-05 12:15:44 -0700945AC_CHECK_HEADERS([linux/mroute.h], [], [],
946[
947#if HAVE_NETINET_IN_H
948#include<netinet/in.h>
949#endif])
paul42c98192005-05-07 02:22:51 +0000950AC_MSG_CHECKING([for BSD struct ip_mreq hack])
951AC_TRY_COMPILE([#ifdef HAVE_SYS_PARAM_H
952#include <sys/param.h>
Brian Bennettb8a893c2015-02-17 22:32:22 +0000953#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 +0000954 return (0);
955#else
956 #error No support for BSD struct ip_mreq hack detected
957#endif],[AC_MSG_RESULT(yes)
958AC_DEFINE(HAVE_BSD_STRUCT_IP_MREQ_HACK,,[Can pass ifindex in struct ip_mreq])],
959AC_MSG_RESULT(no))
960
Dmitrij Tejblum10d04cd2011-08-22 11:39:35 +0400961AC_MSG_CHECKING([for RFC3678 protocol-independed API])
962AC_TRY_COMPILE([
963#include <sys/types.h>
964#include <netinet/in.h>
965], [struct group_req gr; int sock; setsockopt(sock, IPPROTO_IP, MCAST_JOIN_GROUP, (void*)&gr, sizeof(gr));
966], [AC_MSG_RESULT(yes)
967AC_DEFINE(HAVE_RFC3678,1,[Have RFC3678 protocol-independed API])],
968AC_MSG_RESULT(no))
969
Andrew J. Schorrc543a172008-01-10 15:24:32 +0000970dnl ---------------------------------------------------------------
971dnl figure out how to check link-state
972dnl ---------------------------------------------------------------
Andrew J. Schorr6418bed2008-01-11 16:33:59 +0000973AC_CHECK_HEADER([net/if.h],
974 [AC_CHECK_HEADER( [net/if_media.h],
975 [m4_define([LINK_DETECT_INCLUDES],
976 QUAGGA_INCLUDES
977 [#include <net/if_media.h>
978 ])
979 AC_CHECK_MEMBERS( [struct ifmediareq.ifm_status],
980 AC_DEFINE(HAVE_BSD_LINK_DETECT,,[BSD link-detect]),
981 [], LINK_DETECT_INCLUDES)],
982 [],
983 QUAGGA_INCLUDES)],
984 [], QUAGGA_INCLUDES )
Andrew J. Schorrc543a172008-01-10 15:24:32 +0000985
Doug VanLeuven9234b382012-10-10 16:12:32 -0700986dnl ---------------------------------------------------------------
987dnl Additional, newer way to check link-state using ifi_link_state.
988dnl Not available in all BSD's when ifmediareq available
989dnl ---------------------------------------------------------------
990AC_CHECK_HEADER([net/if.h],
991 AC_CHECK_MEMBERS([struct if_data.ifi_link_state],
992 AC_DEFINE(HAVE_BSD_IFI_LINK_STATE,,[BSD ifi_link_state available]),
993 [], QUAGGA_INCLUDES),
994 ,)
995
Paul Jakma0df7c912008-07-21 21:02:49 +0000996dnl ------------------------
997dnl TCP_MD5SIG socket option
998dnl ------------------------
999
1000AC_CHECK_HEADER([netinet/tcp.h],
1001 [m4_define([MD5_INCLUDES],
1002 QUAGGA_INCLUDES
1003 [#include <netinet/tcp.h>
1004 ])
1005 AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)],
1006 [],
1007 QUAGGA_INCLUDES)
1008if test $ac_cv_have_decl_TCP_MD5SIG = no; then
1009 AC_CHECK_HEADER([linux/tcp.h],
1010 [m4_define([MD5_INCLUDES],
1011 QUAGGA_INCLUDES
1012 [#include <linux/tcp.h>
1013 ])
1014 AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)])
1015fi
1016
paul7ea487b2003-03-17 02:05:07 +00001017dnl -----------------------------
1018dnl check ipforward detect method
1019dnl -----------------------------
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001020AC_CACHE_CHECK([ipforward method], [quagga_cv_ipforward_method],
David Lamparterca9f3422009-09-16 02:11:00 +02001021[if test x$cross_compiling = xyes; then
1022 if test x"$opsys" = x"gnu-linux"; then
1023 quagga_cv_ipforward_method=/proc/net/snmp
1024 else
1025 quagga_cv_ipforward_method=/dev/ip
1026 fi
1027else
1028 for quagga_cv_ipforward_method in /proc/net/snmp /dev/ip /dev/null;
1029 do
1030 test x`ls $quagga_cv_ipforward_method 2>/dev/null` = x"$quagga_cv_ipforward_method" && break
1031 done
1032fi
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001033case $quagga_cv_ipforward_method in
1034 "/proc/net/snmp") quagga_cv_ipforward_method="proc";;
paul7ea487b2003-03-17 02:05:07 +00001035 "/dev/ip")
1036 case "$host" in
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001037 *-freebsd*) quagga_cv_ipforward_method="sysctl";;
1038 *) quagga_cv_ipforward_method="solaris";;
paul7ea487b2003-03-17 02:05:07 +00001039 esac;;
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001040 *) quagga_cv_ipforward_method="sysctl";;
paul7ea487b2003-03-17 02:05:07 +00001041esac])
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001042IPFORWARD=ipforward_${quagga_cv_ipforward_method}.o
paul7ea487b2003-03-17 02:05:07 +00001043AC_SUBST(IPFORWARD)
1044
1045AC_CHECK_FUNCS(getaddrinfo, [have_getaddrinfo=yes], [have_getaddrinfo=no])
1046
1047dnl ----------
1048dnl IPv6 check
1049dnl ----------
1050AC_MSG_CHECKING(whether does this OS have IPv6 stack)
paul7ea487b2003-03-17 02:05:07 +00001051dnl ---------
1052dnl KAME IPv6
1053dnl ---------
David Lamparter6d6df302014-06-28 21:12:37 +02001054 if grep WIDE /usr/include/netinet6/in6.h >/dev/null 2>&1; then
paula159ed92003-06-04 11:01:45 +00001055 AC_DEFINE(KAME,1,KAME IPv6)
paula159ed92003-06-04 11:01:45 +00001056 AC_MSG_RESULT(KAME)
paul19877dd2004-05-11 10:49:35 +00001057dnl ------------------------------------
1058dnl Solaris 9, 10 and potentially higher
1059dnl ------------------------------------
paulafd8a122005-03-12 06:36:10 +00001060 elif test x"$opsys" = x"sol8"; then
paul19877dd2004-05-11 10:49:35 +00001061 AC_DEFINE(SOLARIS_IPV6, 1, Solaris IPv6)
paul19877dd2004-05-11 10:49:35 +00001062 AC_MSG_RESULT(Solaris IPv6)
paul7ea487b2003-03-17 02:05:07 +00001063dnl ----------
1064dnl Linux IPv6
1065dnl ----------
David Lamparter29ed6222014-06-28 21:42:25 +02001066 elif test x"$opsys" = x"gnu-linux"; then
Timo Teräs3ef0b872014-07-29 09:41:56 +00001067 AC_DEFINE(LINUX_IPV6,1,Linux IPv6 stack)
David Lamparter29ed6222014-06-28 21:42:25 +02001068 AC_MSG_RESULT(Linux IPv6)
1069 else
David Lamparter7fe17e62014-11-22 10:31:33 -08001070 AC_MSG_ERROR([Failed to detect IPv6 stack])
paula159ed92003-06-04 11:01:45 +00001071 fi
paul7ea487b2003-03-17 02:05:07 +00001072
David Lamparter7fe17e62014-11-22 10:31:33 -08001073dnl this is unconditial, for compatibility
1074AC_DEFINE(HAVE_IPV6,1,IPv6)
paul7ea487b2003-03-17 02:05:07 +00001075
gdtfa3232e2003-12-03 17:52:30 +00001076dnl ------------------
1077dnl IPv6 header checks
1078dnl ------------------
gdtfa3232e2003-12-03 17:52:30 +00001079AC_CHECK_HEADERS([netinet6/in6.h netinet/in6_var.h netinet/icmp6.h \
David Lamparter05a69d22015-05-27 22:15:37 +02001080 netinet6/in6_var.h netinet6/nd6.h], [], [],
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001081 QUAGGA_INCLUDES)
gdtfa3232e2003-12-03 17:52:30 +00001082
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001083m4_define([QUAGGA_INCLUDES],dnl
1084QUAGGA_INCLUDES
1085[#if HAVE_NETINET6_IN6_H
1086#include <netinet6/in6.h>
1087#endif
1088#if HAVE_NETINET_IN6_VAR_H
1089#include <netinet/in6_var.h>
1090#endif
1091#if HAVE_NETINET_ICMP6_H
1092# include <netinet/icmp6.h>
1093#endif
1094#if HAVE_NETINET6_IN6_VAR_H
1095# include <netinet6/in6_var.h>
1096#endif
1097#if HAVE_NETINET6_ND6_H
Hasso Tepperfbf24542007-06-25 19:30:59 +00001098# include <netinet6/nd6.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001099#endif
1100])dnl
1101
Joakim Tjernlundcbcd9bf2009-02-16 09:40:39 +01001102dnl disable doc check
1103if test "${enable_doc}" = "no";then
1104 DOC=""
1105else
1106 DOC="doc"
1107fi
1108
paul7ea487b2003-03-17 02:05:07 +00001109dnl --------------------
1110dnl Daemon disable check
1111dnl --------------------
1112if test "${enable_zebra}" = "no";then
1113 ZEBRA=""
1114else
1115 ZEBRA="zebra"
1116fi
David Wardf027d332012-04-30 11:36:15 -04001117AM_CONDITIONAL(ZEBRA, test "x$ZEBRA" = "xzebra")
paul7ea487b2003-03-17 02:05:07 +00001118
1119if test "${enable_bgpd}" = "no";then
1120 BGPD=""
1121else
1122 BGPD="bgpd"
1123fi
David Wardf027d332012-04-30 11:36:15 -04001124AM_CONDITIONAL(BGPD, test "x$BGPD" = "xbgpd")
paul7ea487b2003-03-17 02:05:07 +00001125
1126if test "${enable_ripd}" = "no";then
1127 RIPD=""
1128else
1129 RIPD="ripd"
1130fi
David Wardf027d332012-04-30 11:36:15 -04001131AM_CONDITIONAL(RIPD, test "x$RIPD" = "xripd")
paul7ea487b2003-03-17 02:05:07 +00001132
1133if test "${enable_ospfd}" = "no";then
1134 OSPFD=""
1135else
1136 OSPFD="ospfd"
1137fi
David Wardf027d332012-04-30 11:36:15 -04001138AM_CONDITIONAL(OSPFD, test "x$OSPFD" = "xospfd")
paul7ea487b2003-03-17 02:05:07 +00001139
ajsd0199432004-12-22 14:03:52 +00001140if test "${enable_watchquagga}" = "no";then
1141 WATCHQUAGGA=""
1142else
1143 WATCHQUAGGA="watchquagga"
1144fi
David Wardf027d332012-04-30 11:36:15 -04001145AM_CONDITIONAL(WATCHQUAGGA, test "x$WATCHQUAGGA" = "xwatchquagga")
ajsd0199432004-12-22 14:03:52 +00001146
paul1ef74ef2003-03-21 15:16:05 +00001147OSPFCLIENT=""
Donald Sharp36fef572015-12-16 14:22:10 -05001148if test "${enable_ospfapi}" != "no";then
paul9a569842003-03-28 01:45:13 +00001149 AC_DEFINE(SUPPORT_OSPF_API,,OSPFAPI)
paul1ef74ef2003-03-21 15:16:05 +00001150
Donald Sharp36fef572015-12-16 14:22:10 -05001151 if test "${enable_ospfclient}" != "no";then
paul1ef74ef2003-03-21 15:16:05 +00001152 OSPFCLIENT="ospfclient"
paul1ef74ef2003-03-21 15:16:05 +00001153 fi
paul7ea487b2003-03-17 02:05:07 +00001154fi
Donald Sharp36fef572015-12-16 14:22:10 -05001155
David Wardf027d332012-04-30 11:36:15 -04001156AM_CONDITIONAL(OSPFCLIENT, test "x$OSPFCLIENT" = "xospfclient")
paul7ea487b2003-03-17 02:05:07 +00001157
1158case "${enable_ripngd}" in
paul7ea487b2003-03-17 02:05:07 +00001159 "no" ) RIPNGD="";;
David Lamparter7fe17e62014-11-22 10:31:33 -08001160 * ) RIPNGD="ripngd";;
paul7ea487b2003-03-17 02:05:07 +00001161esac
David Wardf027d332012-04-30 11:36:15 -04001162AM_CONDITIONAL(RIPNGD, test "x$RIPNGD" = "xripngd")
paul7ea487b2003-03-17 02:05:07 +00001163
1164case "${enable_ospf6d}" in
paul7ea487b2003-03-17 02:05:07 +00001165 "no" ) OSPF6D="";;
David Lamparter7fe17e62014-11-22 10:31:33 -08001166 * ) OSPF6D="ospf6d";;
paul7ea487b2003-03-17 02:05:07 +00001167esac
David Wardf027d332012-04-30 11:36:15 -04001168AM_CONDITIONAL(OSPF6D, test "x$OSPF6D" = "xospf6d")
paul7ea487b2003-03-17 02:05:07 +00001169
jardin9e867fe2003-12-23 08:56:18 +00001170case "${enable_isisd}" in
jardin9e867fe2003-12-23 08:56:18 +00001171 "no" ) ISISD="";;
David Lamparter656a2c02015-02-09 11:36:10 +01001172 * ) ISISD="isisd";;
jardin9e867fe2003-12-23 08:56:18 +00001173esac
David Wardf027d332012-04-30 11:36:15 -04001174AM_CONDITIONAL(ISISD, test "x$ISISD" = "xisisd")
jardin9e867fe2003-12-23 08:56:18 +00001175
Everton Marques871dbcf2009-08-11 15:43:05 -03001176case "${enable_pimd}" in
Everton Marques871dbcf2009-08-11 15:43:05 -03001177 "no" ) PIMD="";;
Donald Sharpe6756782015-07-16 21:18:34 -04001178 * ) PIMD="pimd";;
Everton Marques871dbcf2009-08-11 15:43:05 -03001179esac
Everton Marquesff57d362014-06-25 15:54:03 -03001180AM_CONDITIONAL(PIMD, test "x$PIMD" = "xpimd")
Everton Marques871dbcf2009-08-11 15:43:05 -03001181
paul7ea487b2003-03-17 02:05:07 +00001182if test "${enable_bgp_announce}" = "no";then
Paul Jakma750e8142008-07-22 21:11:48 +00001183 AC_DEFINE(DISABLE_BGP_ANNOUNCE,1,Disable BGP installation to zebra)
1184else
1185 AC_DEFINE(DISABLE_BGP_ANNOUNCE,0,Disable BGP installation to zebra)
paul7ea487b2003-03-17 02:05:07 +00001186fi
1187
Joakim Tjernlundcbcd9bf2009-02-16 09:40:39 +01001188AC_SUBST(DOC)
paul7ea487b2003-03-17 02:05:07 +00001189AC_SUBST(ZEBRA)
1190AC_SUBST(BGPD)
1191AC_SUBST(RIPD)
1192AC_SUBST(RIPNGD)
1193AC_SUBST(OSPFD)
1194AC_SUBST(OSPF6D)
ajsd0199432004-12-22 14:03:52 +00001195AC_SUBST(WATCHQUAGGA)
jardin9e867fe2003-12-23 08:56:18 +00001196AC_SUBST(ISISD)
Everton Marques871dbcf2009-08-11 15:43:05 -03001197AC_SUBST(PIMD)
Greg Troxel97cee872007-08-02 13:36:56 +00001198AC_SUBST(SOLARIS)
paul7ea487b2003-03-17 02:05:07 +00001199AC_SUBST(VTYSH)
paul7ea487b2003-03-17 02:05:07 +00001200AC_SUBST(CURSES)
1201AC_SUBST(OSPFCLIENT)
paul1ef74ef2003-03-21 15:16:05 +00001202AC_SUBST(OSPFAPI)
paul7ea487b2003-03-17 02:05:07 +00001203AC_CHECK_LIB(c, inet_ntop, [AC_DEFINE(HAVE_INET_NTOP,,inet_ntop)])
1204AC_CHECK_LIB(c, inet_pton, [AC_DEFINE(HAVE_INET_PTON,,inet_pton)])
1205AC_CHECK_LIB(crypt, crypt)
1206AC_CHECK_LIB(resolv, res_init)
paul7ea487b2003-03-17 02:05:07 +00001207
paul7ea487b2003-03-17 02:05:07 +00001208dnl ---------------------------
Jeremy Jackson25f45882009-01-12 16:06:12 -05001209dnl check system has PCRE regexp
1210dnl ---------------------------
1211if test "x$enable_pcreposix" = "xyes"; then
1212 AC_CHECK_LIB(pcreposix, pcreposix_regexec, ,[enable_pcreposix=no
1213 AC_MSG_WARN([*** falling back to other regex library ***]) ])
1214fi
1215
1216if test "x$enable_pcreposix" != "xyes"; then
1217dnl ---------------------------
paul7ea487b2003-03-17 02:05:07 +00001218dnl check system has GNU regexp
1219dnl ---------------------------
Jeremy Jackson25f45882009-01-12 16:06:12 -05001220AC_MSG_CHECKING(whether system has GNU regex)
paul7ea487b2003-03-17 02:05:07 +00001221AC_CHECK_LIB(c, regexec,
1222[AC_DEFINE(HAVE_GNU_REGEX,,GNU regexp library)
1223 LIB_REGEX=""],
1224[LIB_REGEX="regex.o"])
Jeremy Jackson25f45882009-01-12 16:06:12 -05001225fi
1226AC_SUBST(HAVE_LIBPCREPOSIX)
paul7ea487b2003-03-17 02:05:07 +00001227AC_SUBST(LIB_REGEX)
1228
1229dnl ------------------
paulb1fc9ac2006-01-31 10:09:27 +00001230dnl check Net-SNMP library
paul7ea487b2003-03-17 02:05:07 +00001231dnl ------------------
Vincent Bernatd6be5fb2012-05-24 09:44:43 +02001232if test "${enable_snmp}" != ""; then
Vincent Bernat08d7f652012-05-22 22:29:17 +02001233 AC_PATH_TOOL([NETSNMP_CONFIG], [net-snmp-config], [no])
1234 if test x"$NETSNMP_CONFIG" = x"no"; then
1235 AC_MSG_ERROR([--enable-snmp given but unable to find net-snmp-config])
1236 fi
1237 LIBS="$LIBS `${NETSNMP_CONFIG} --agent-libs`"
1238 CFLAGS="`${NETSNMP_CONFIG} --base-cflags` $CFLAGS"
1239 AC_MSG_CHECKING([whether we can link to Net-SNMP])
1240 AC_LINK_IFELSE([AC_LANG_PROGRAM([
1241int main(void);
1242],
1243[
1244{
1245 return 0;
1246}
1247])],[AC_MSG_RESULT(yes)],[
1248 AC_MSG_RESULT(no)
1249 AC_MSG_ERROR([--enable-snmp given but not usable])])
1250 AC_DEFINE(HAVE_SNMP,,SNMP)
Vincent Bernatd6be5fb2012-05-24 09:44:43 +02001251 case "${enable_snmp}" in
1252 yes)
1253 SNMP_METHOD=agentx
1254 ;;
1255 smux|agentx)
1256 SNMP_METHOD="${enable_snmp}"
1257 ;;
1258 *)
1259 AC_MSG_ERROR([--enable-snmp given with an unknown method (${enable_snmp}). Use smux or agentx])
1260 ;;
1261 esac
1262 AH_TEMPLATE([SNMP_SMUX], [Use SNMP SMUX to interface with snmpd])
1263 AH_TEMPLATE([SNMP_AGENTX], [Use SNMP AgentX to interface with snmpd])
1264 AC_DEFINE_UNQUOTED(AS_TR_CPP(SNMP_${SNMP_METHOD}),,SNMP method to interface with snmpd)
paul7ea487b2003-03-17 02:05:07 +00001265fi
1266
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001267dnl ---------------------------
1268dnl sockaddr and netinet checks
1269dnl ---------------------------
1270AC_CHECK_TYPES([struct sockaddr, struct sockaddr_in,
1271 struct sockaddr_in6, struct sockaddr_un, struct sockaddr_dl,
Everton Marques871dbcf2009-08-11 15:43:05 -03001272 socklen_t, struct vifctl, struct mfcctl, struct sioc_sg_req,
1273 vifi_t, struct sioc_vif_req, struct igmpmsg,
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001274 struct ifaliasreq, struct if6_aliasreq, struct in6_aliasreq,
1275 struct nd_opt_adv_interval, struct rt_addrinfo,
Paul Jakma11770e12007-06-22 16:14:42 +00001276 struct nd_opt_homeagent_info, struct nd_opt_adv_interval],
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001277 [], [], QUAGGA_INCLUDES)
paul7ea487b2003-03-17 02:05:07 +00001278
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001279AC_CHECK_MEMBERS([struct sockaddr.sa_len,
1280 struct sockaddr_in.sin_len, struct sockaddr_un.sun_len,
1281 struct sockaddr_in6.sin6_scope_id,
David Lamparterca3ccd82012-09-26 14:52:39 +02001282 struct sockaddr_dl.sdl_len,
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001283 struct if6_aliasreq.ifra_lifetime,
1284 struct nd_opt_adv_interval.nd_opt_ai_type],
1285 [], [], QUAGGA_INCLUDES)
hasso71c0fb52003-05-25 20:18:13 +00001286
paul7ea487b2003-03-17 02:05:07 +00001287dnl ---------------------------
Paul Jakma11770e12007-06-22 16:14:42 +00001288dnl IRDP/pktinfo/icmphdr checks
paul7ea487b2003-03-17 02:05:07 +00001289dnl ---------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001290AC_CHECK_TYPES([struct in_pktinfo],
Paul Jakma11770e12007-06-22 16:14:42 +00001291 [AC_CHECK_TYPES([struct icmphdr],
1292 [if test "${enable_irdp}" != "no"; then
1293 AC_DEFINE(HAVE_IRDP,, IRDP)
1294 fi],
1295 [if test "${enable_irdp}" = "yes"; then
1296 AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
1297 fi], [QUAGGA_INCLUDES])],
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001298 [if test "${enable_irdp}" = "yes"; then
1299 AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
1300 fi], [QUAGGA_INCLUDES])
vincent29c4c9b2005-03-25 13:05:47 +00001301
Everton Marques871dbcf2009-08-11 15:43:05 -03001302dnl -----------------------
1303dnl checking for IP_PKTINFO
1304dnl -----------------------
1305AC_MSG_CHECKING(for IP_PKTINFO)
1306AC_TRY_COMPILE([#include <netdb.h>], [
1307 int opt = IP_PKTINFO;
1308], [
1309 AC_MSG_RESULT(yes)
1310 AC_DEFINE(HAVE_IP_PKTINFO, 1, [Have IP_PKTINFO])
1311], [
1312 AC_MSG_RESULT(no)
1313])
1314
1315dnl ---------------------------
1316dnl checking for IP_RECVDSTADDR
1317dnl ---------------------------
1318AC_MSG_CHECKING(for IP_RECVDSTADDR)
1319AC_TRY_COMPILE([#include <netinet/in.h>], [
1320 int opt = IP_RECVDSTADDR;
1321], [
1322 AC_MSG_RESULT(yes)
1323 AC_DEFINE(HAVE_IP_RECVDSTADDR, 1, [Have IP_RECVDSTADDR])
1324], [
1325 AC_MSG_RESULT(no)
1326])
1327
1328dnl ----------------------
1329dnl checking for IP_RECVIF
1330dnl ----------------------
1331AC_MSG_CHECKING(for IP_RECVIF)
1332AC_TRY_COMPILE([#include <netinet/in.h>], [
1333 int opt = IP_RECVIF;
1334], [
1335 AC_MSG_RESULT(yes)
1336 AC_DEFINE(HAVE_IP_RECVIF, 1, [Have IP_RECVIF])
1337], [
1338 AC_MSG_RESULT(no)
1339])
1340
paul7ea487b2003-03-17 02:05:07 +00001341dnl --------------------------------------
1342dnl checking for getrusage struct and call
1343dnl --------------------------------------
Stephen Hemminger47f6aef2013-01-04 22:29:22 +00001344if test "${enable_rusage}" != "no"; then
1345 AC_MSG_CHECKING(whether getrusage is available)
1346 AC_TRY_COMPILE([#include <sys/resource.h>],[struct rusage ac_x; getrusage (RUSAGE_SELF, &ac_x);],
1347 [AC_MSG_RESULT(yes)
1348 AC_DEFINE(HAVE_RUSAGE,,rusage)],
1349 AC_MSG_RESULT(no))
1350fi
paul7ea487b2003-03-17 02:05:07 +00001351
Stephen Hemmingerc4376c92009-05-28 15:29:10 -07001352dnl --------------------------------------
1353dnl checking for clock_time monotonic struct and call
1354dnl --------------------------------------
Paul Jakma6511cab2009-06-18 17:38:01 +01001355AC_CHECK_DECL(CLOCK_MONOTONIC,
1356 [AC_CHECK_LIB(rt, clock_gettime, [LIBS="$LIBS -lrt"])
Dmitry Tejblum9964fcf2009-11-05 16:50:36 +03001357 AC_DEFINE(HAVE_CLOCK_MONOTONIC,, Have monotonic clock)
Paul Jakma6511cab2009-06-18 17:38:01 +01001358], [AC_MSG_RESULT(no)], [QUAGGA_INCLUDES])
Stephen Hemmingerc4376c92009-05-28 15:29:10 -07001359
pauledd7c242003-06-04 13:59:38 +00001360dnl -------------------
1361dnl capabilities checks
1362dnl -------------------
hasso41d3fc92004-04-06 11:59:00 +00001363if test "${enable_capabilities}" != "no"; then
1364 AC_MSG_CHECKING(whether prctl PR_SET_KEEPCAPS is available)
1365 AC_TRY_COMPILE([#include <sys/prctl.h>],[prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);],
1366 [AC_MSG_RESULT(yes)
1367 AC_DEFINE(HAVE_PR_SET_KEEPCAPS,,prctl)
1368 quagga_ac_keepcaps="yes"],
1369 AC_MSG_RESULT(no)
pauledd7c242003-06-04 13:59:38 +00001370 )
hasso41d3fc92004-04-06 11:59:00 +00001371 if test x"${quagga_ac_keepcaps}" = x"yes"; then
1372 AC_CHECK_HEADERS(sys/capability.h)
1373 fi
1374 if test x"${ac_cv_header_sys_capability_h}" = x"yes"; then
1375 AC_CHECK_LIB(cap, cap_init,
1376 [AC_DEFINE(HAVE_LCAPS,1,Capabilities)
1377 LIBCAP="-lcap"
paulceacedb2005-09-29 14:39:32 +00001378 quagga_ac_lcaps="yes"]
hasso41d3fc92004-04-06 11:59:00 +00001379 )
paulceacedb2005-09-29 14:39:32 +00001380 else
1381 AC_CHECK_HEADERS(priv.h,
1382 [AC_MSG_CHECKING(Solaris style privileges are available)
1383 AC_TRY_COMPILE([#include <priv.h>],[getpflags(PRIV_AWARE);],
1384 [AC_MSG_RESULT(yes)
1385 AC_DEFINE(HAVE_SOLARIS_CAPABILITIES,1,getpflags)
1386 quagga_ac_scaps="yes"],
1387 AC_MSG_RESULT(no)
1388 )
1389 ]
1390 )
1391 fi
1392 if test x"${quagga_ac_scaps}" = x"yes" \
1393 -o x"${quagga_ac_lcaps}" = x"yes"; then
1394 AC_DEFINE(HAVE_CAPABILITIES,1,capabilities)
hasso41d3fc92004-04-06 11:59:00 +00001395 fi
pauledd7c242003-06-04 13:59:38 +00001396fi
1397AC_SUBST(LIBCAP)
1398
Doug VanLeuven327c4cd2012-12-14 14:58:30 +02001399dnl ---------------------------------------------------------------------------
1400dnl http://www.gnu.org/software/autoconf-archive/ax_sys_weak_alias.html
1401dnl Check for and set one of the following = 1
1402dnl HAVE_SYS_WEAK_ALIAS_ATTRIBUTE
1403dnl HAVE_SYS_WEAK_ALIAS_PRAGMA
1404dnl HAVE_SYS_WEAK_ALIAS_HPSECONDARY
1405dnl HAVE_SYS_WEAK_ALIAS_CRIDUPLICATE
1406dnl If any scheme is found, set
1407dnl HAVE_SYS_WEAK_ALIAS=1
1408dnl The following variable is set to text value
1409dnl WEAK_ALIAS = "attribute" || "pragma" || "hpsecondary" || "criduplicate" || "no"
1410dnl If weak alias can cross object file boundaries
1411dnl WEAK_ALIAS_CROSSFILE = "yes" || "no"
1412dnl ---------------------------------------------------------------------------
1413AX_SYS_WEAK_ALIAS
1414
paulfb2d1502003-06-04 09:40:54 +00001415dnl ---------------------------
1416dnl check for glibc 'backtrace'
1417dnl ---------------------------
David Lamparter8c99b4c2013-08-01 07:43:36 +00001418if test x"${enable_backtrace}" != x"no" ; then
1419 backtrace_ok=no
1420 AC_CHECK_HEADER([execinfo.h], [
1421 AC_SEARCH_LIBS([backtrace], [execinfo], [
1422 AC_DEFINE(HAVE_GLIBC_BACKTRACE,,[Glibc backtrace])
1423 AC_DEFINE(HAVE_STACK_TRACE,,[Stack symbol decoding])
1424 backtrace_ok=yes
1425 ],, [-lm])
Dmitrij Tejblumeda35292011-09-15 20:00:33 +04001426 ])
David Lamparter8c99b4c2013-08-01 07:43:36 +00001427
1428 if test x"${enable_backtrace}" = x"yes" -a x"${backtrace_ok}" = x"no"; then
1429 dnl user explicitly requested backtrace but we failed to find support
1430 AC_MSG_FAILURE([failed to find backtrace support])
1431 fi
1432fi
paulfb2d1502003-06-04 09:40:54 +00001433
Paul Jakma41be32b2006-03-30 13:53:59 +00001434dnl -----------------------------------------
1435dnl check for malloc mallinfo struct and call
1436dnl this must try and link using LIBS, in
1437dnl order to check no alternative allocator
1438dnl has been specified, which might not provide
1439dnl mallinfo, e.g. such as Umem on Solaris.
1440dnl -----------------------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001441AC_CHECK_HEADER([malloc.h],
Paul Jakma41be32b2006-03-30 13:53:59 +00001442 [AC_MSG_CHECKING(whether mallinfo is available)
1443 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <malloc.h>]],
1444 [[struct mallinfo ac_x; ac_x = mallinfo ();]])],
1445 [AC_MSG_RESULT(yes)
1446 AC_DEFINE(HAVE_MALLINFO,,mallinfo)],
1447 AC_MSG_RESULT(no)
1448 )
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001449 ], [], QUAGGA_INCLUDES)
Paul Jakma41be32b2006-03-30 13:53:59 +00001450
paul408ad942003-05-20 00:03:33 +00001451dnl ----------
1452dnl configure date
1453dnl ----------
1454CONFDATE=`date '+%Y%m%d'`
1455AC_SUBST(CONFDATE)
1456
David Lamparterf281ab92013-02-26 16:21:20 +01001457dnl -------
1458dnl DejaGNU
1459dnl -------
1460if test x"$DEJAGNU" = x
1461then
1462 DEJAGNU="\$(top_srcdir)/tests/global-conf.exp"
1463fi
1464RUNTESTDEFAULTFLAGS="-x --tool \$\$tool"
1465
1466AC_SUBST(DEJAGNU)
1467AC_SUBST(RUNTESTDEFAULTFLAGS)
1468
paul7ea487b2003-03-17 02:05:07 +00001469dnl ------------------------------
paula159ed92003-06-04 11:01:45 +00001470dnl set paths for state directory
paul23bd12c2003-04-07 06:11:09 +00001471dnl ------------------------------
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001472AC_MSG_CHECKING(directory to use for state file)
paul23bd12c2003-04-07 06:11:09 +00001473if test "${prefix}" = "NONE"; then
paule8f29842003-08-12 13:08:31 +00001474 quagga_statedir_prefix="";
paul23bd12c2003-04-07 06:11:09 +00001475else
paule8f29842003-08-12 13:08:31 +00001476 quagga_statedir_prefix=${prefix}
paul23bd12c2003-04-07 06:11:09 +00001477fi
1478if test "${localstatedir}" = '${prefix}/var'; then
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001479 for QUAGGA_STATE_DIR in ${quagga_statedir_prefix}/var/run dnl
paule8f29842003-08-12 13:08:31 +00001480 ${quagga_statedir_prefix}/var/adm dnl
1481 ${quagga_statedir_prefix}/etc dnl
paula159ed92003-06-04 11:01:45 +00001482 /var/run dnl
1483 /var/adm dnl
1484 /etc dnl
1485 /dev/null;
paul23bd12c2003-04-07 06:11:09 +00001486 do
paule8f29842003-08-12 13:08:31 +00001487 test -d $QUAGGA_STATE_DIR && break
paul23bd12c2003-04-07 06:11:09 +00001488 done
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001489 quagga_statedir=$QUAGGA_STATE_DIR
paul23bd12c2003-04-07 06:11:09 +00001490else
paule8f29842003-08-12 13:08:31 +00001491 quagga_statedir=${localstatedir}
paul23bd12c2003-04-07 06:11:09 +00001492fi
paule8f29842003-08-12 13:08:31 +00001493if test $quagga_statedir = "/dev/null"; then
paula159ed92003-06-04 11:01:45 +00001494 AC_MSG_ERROR('STATE DIRECTORY NOT FOUND! FIX OR SPECIFY --localstatedir!')
1495fi
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001496AC_MSG_RESULT(${quagga_statedir})
1497AC_SUBST(quagga_statedir)
paula159ed92003-06-04 11:01:45 +00001498
paule8f29842003-08-12 13:08:31 +00001499AC_DEFINE_UNQUOTED(PATH_ZEBRA_PID, "$quagga_statedir/zebra.pid",zebra PID)
1500AC_DEFINE_UNQUOTED(PATH_RIPD_PID, "$quagga_statedir/ripd.pid",ripd PID)
1501AC_DEFINE_UNQUOTED(PATH_RIPNGD_PID, "$quagga_statedir/ripngd.pid",ripngd PID)
1502AC_DEFINE_UNQUOTED(PATH_BGPD_PID, "$quagga_statedir/bgpd.pid",bgpd PID)
1503AC_DEFINE_UNQUOTED(PATH_OSPFD_PID, "$quagga_statedir/ospfd.pid",ospfd PID)
1504AC_DEFINE_UNQUOTED(PATH_OSPF6D_PID, "$quagga_statedir/ospf6d.pid",ospf6d PID)
jardin9e867fe2003-12-23 08:56:18 +00001505AC_DEFINE_UNQUOTED(PATH_ISISD_PID, "$quagga_statedir/isisd.pid",isisd PID)
Everton Marques871dbcf2009-08-11 15:43:05 -03001506AC_DEFINE_UNQUOTED(PATH_PIMD_PID, "$quagga_statedir/pimd.pid",pimd PID)
ajsd0199432004-12-22 14:03:52 +00001507AC_DEFINE_UNQUOTED(PATH_WATCHQUAGGA_PID, "$quagga_statedir/watchquagga.pid",watchquagga PID)
paule8f29842003-08-12 13:08:31 +00001508AC_DEFINE_UNQUOTED(ZEBRA_SERV_PATH, "$quagga_statedir/zserv.api",zebra api socket)
1509AC_DEFINE_UNQUOTED(ZEBRA_VTYSH_PATH, "$quagga_statedir/zebra.vty",zebra vty socket)
1510AC_DEFINE_UNQUOTED(RIP_VTYSH_PATH, "$quagga_statedir/ripd.vty",rip vty socket)
1511AC_DEFINE_UNQUOTED(RIPNG_VTYSH_PATH, "$quagga_statedir/ripngd.vty",ripng vty socket)
1512AC_DEFINE_UNQUOTED(BGP_VTYSH_PATH, "$quagga_statedir/bgpd.vty",bgpd vty socket)
1513AC_DEFINE_UNQUOTED(OSPF_VTYSH_PATH, "$quagga_statedir/ospfd.vty",ospfd vty socket)
1514AC_DEFINE_UNQUOTED(OSPF6_VTYSH_PATH, "$quagga_statedir/ospf6d.vty",ospf6d vty socket)
jardin9e867fe2003-12-23 08:56:18 +00001515AC_DEFINE_UNQUOTED(ISIS_VTYSH_PATH, "$quagga_statedir/isisd.vty",isisd vty socket)
Everton Marques871dbcf2009-08-11 15:43:05 -03001516AC_DEFINE_UNQUOTED(PIM_VTYSH_PATH, "$quagga_statedir/pimd.vty",pimd vty socket)
ajs515210b2004-12-22 15:35:12 +00001517AC_DEFINE_UNQUOTED(DAEMON_VTY_DIR, "$quagga_statedir",daemon vty directory)
paul7ea487b2003-03-17 02:05:07 +00001518
paul1eb8ef22005-04-07 07:30:20 +00001519dnl -------------------------------
1520dnl Quagga sources should always be
1521dnl current wrt interfaces. Dont
1522dnl allow deprecated interfaces to
1523dnl be exposed.
1524dnl -------------------------------
1525AC_DEFINE(QUAGGA_NO_DEPRECATED_INTERFACES, 1, Hide deprecated interfaces)
1526
paul7ea487b2003-03-17 02:05:07 +00001527dnl ---------------------------
1528dnl Check htonl works correctly
1529dnl ---------------------------
1530AC_MSG_CHECKING(for working htonl)
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001531AC_CACHE_VAL(ac_cv_htonl_works,
1532 [AC_LINK_IFELSE([AC_LANG_PROGRAM([QUAGGA_INCLUDES],[htonl (0);])],
1533 [ac_cv_htonl_works=yes], [ac_cv_htonl_works=no])
1534 ]
1535)
paul7ea487b2003-03-17 02:05:07 +00001536AC_MSG_RESULT($ac_cv_htonl_works)
1537
paul14c17fd2004-11-07 22:34:23 +00001538AC_CONFIG_FILES([Makefile lib/Makefile zebra/Makefile ripd/Makefile
ajsd0199432004-12-22 14:03:52 +00001539 ripngd/Makefile bgpd/Makefile ospfd/Makefile watchquagga/Makefile
Paul Jakma336724d2015-05-11 15:13:31 +01001540 ospf6d/Makefile isisd/Makefile vtysh/Makefile
David Lamparterf281ab92013-02-26 16:21:20 +01001541 doc/Makefile ospfclient/Makefile tests/Makefile m4/Makefile
Everton Marques871dbcf2009-08-11 15:43:05 -03001542 pimd/Makefile
David Lamparter5bb7e4d2013-02-26 17:53:30 +01001543 tests/bgpd.tests/Makefile
David Lamparterc69905b2013-01-24 01:39:14 +01001544 tests/libzebra.tests/Makefile
David Lamparterf281ab92013-02-26 16:21:20 +01001545 redhat/Makefile
gdt69f1fc22004-08-27 15:57:35 +00001546 pkgsrc/Makefile
paul670bbf12004-11-12 09:05:00 +00001547 redhat/quagga.spec
gdtb7a97f82004-07-23 16:23:56 +00001548 lib/version.h
paul14c17fd2004-11-07 22:34:23 +00001549 doc/defines.texi
hassof695b012005-04-02 19:03:39 +00001550 isisd/topology/Makefile
gdtcbd04082004-08-31 18:16:36 +00001551 pkgsrc/bgpd.sh pkgsrc/ospf6d.sh pkgsrc/ospfd.sh
paulf31293a2004-11-12 09:27:04 +00001552 pkgsrc/ripd.sh pkgsrc/ripngd.sh pkgsrc/zebra.sh])
paul26275b02005-04-11 07:10:47 +00001553AC_CONFIG_FILES([solaris/Makefile])
1554
paul670bbf12004-11-12 09:05:00 +00001555AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl])
hasso48577192004-11-19 06:41:49 +00001556## Hack, but working solution to avoid rebuilding of quagga.info.
1557## It's already in CVS until texinfo 4.7 is more common.
paul14c17fd2004-11-07 22:34:23 +00001558AC_OUTPUT
paul7ea487b2003-03-17 02:05:07 +00001559
1560echo "
hassoc89f6492004-08-26 12:21:28 +00001561Quagga configuration
1562--------------------
1563quagga version : ${PACKAGE_VERSION}
Joachim Nilsson1080c132012-05-30 08:15:48 +02001564host operating system : ${host_os}
paul7ea487b2003-03-17 02:05:07 +00001565source code location : ${srcdir}
1566compiler : ${CC}
1567compiler flags : ${CFLAGS}
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001568make : ${MAKE-make}
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001569linker flags : ${LDFLAGS} ${LIBS} ${LIBCAP} ${LIBREADLINE} ${LIBM}
paule8f29842003-08-12 13:08:31 +00001570state file directory : ${quagga_statedir}
pauldc7a2bf2003-10-22 00:07:44 +00001571config file directory : `eval echo \`echo ${sysconfdir}\``
gdtd6b72f72003-12-03 17:24:27 +00001572example directory : `eval echo \`echo ${exampledir}\``
paul8d4aee52003-06-06 00:30:35 +00001573user to run as : ${enable_user}
1574group to run as : ${enable_group}
1575group for vty sockets : ${enable_vty_group}
gdtaa593d52003-12-22 20:15:53 +00001576config file mask : ${enable_configfile_mask}
1577log file mask : ${enable_logfile_mask}
pauldc7a2bf2003-10-22 00:07:44 +00001578
1579The above user and group must have read/write access to the state file
Paul Jakma105b8232006-05-28 08:02:41 +00001580directory and to the config files in the config file directory."
1581
1582if test x"$quagga_cv_gnu_make" = x"no"; then echo "
1583Warning: The ${MAKE-make} programme detected, either in your path or
1584via the MAKE variable, is not GNU Make. GNU make may be installed as
1585gmake on some systems. and is required to complete a build of Quagga
1586" > /dev/stderr
1587fi