blob: 7c7116d77b1c0bafde8e757737e675ee4a10f305 [file] [log] [blame]
paul7ea487b2003-03-17 02:05:07 +00001##
paule8f29842003-08-12 13:08:31 +00002## Configure template file for Quagga.
paul7ea487b2003-03-17 02:05:07 +00003## autoconf will generate configure script.
4##
5## Copyright (c) 1996, 97, 98, 99, 2000 Kunihiro Ishiguro <kunihiro@zebra.org>
paule8f29842003-08-12 13:08:31 +00006## Portions Copyright (c) 2003 Paul Jakma <paul@dishone.st>
paul7ea487b2003-03-17 02:05:07 +00007##
Paul Jakmaf9f47312016-02-16 11:30:33 +00008AC_PREREQ(2.60)
paul7ea487b2003-03-17 02:05:07 +00009
Donald Sharpe3f623b2016-03-09 08:41:59 -050010AC_INIT(Quagga, 1.0.20160309, [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
Paul Jakmaf9f47312016-02-16 11:30:33 +000073AC_PROG_RANLIB
hasso1969e4b2005-03-27 13:07:23 +000074AC_PROG_EGREP
Greg Troxel553bdfe2007-02-06 20:10:35 +000075
76dnl autoconf 2.59 appears not to support AC_PROG_SED
77dnl AC_PROG_SED
78AC_CHECK_PROG([SED],[sed],[sed],[/bin/false])
hasso1969e4b2005-03-27 13:07:23 +000079
Paul Jakmafa482832012-03-08 13:51:21 +000080dnl pdflatex and latexmk are needed to build HACKING.pdf
81AC_CHECK_PROG([PDFLATEX],[pdflatex],[pdflatex],[/bin/false])
82AC_CHECK_PROG([LATEXMK],[latexmk],[latexmk],[/bin/false])
83if test "x$PDFLATEX" = "x/bin/false" -o "x$LATEXMK" = "x/bin/false"; then
84 AC_MSG_WARN([Will not be able to make PDF versions of TeX documents])
85else
86 HAVE_LATEX=true
87fi
88AM_CONDITIONAL([HAVE_LATEX], [test "x$HAVE_LATEX" = "xtrue"])
89
David Lamparter3a7e83c2015-03-03 09:55:51 +010090if test "x${GCC}" != "xyes" ; then
paul6a4b8832005-11-26 08:28:00 +000091 AC_MSG_CHECKING([whether we are using SunPro compiler])
92 AC_EGREP_CPP([^__SUNPRO_C.*0x5(7|8|9)], ["__SUNPRO_C" __SUNPRO_C],
93 [AC_MSG_RESULT([no])],
94 [COMPILER="SUNPRO"
95 AC_MSG_RESULT([yes])]
96 )
97fi
paul7ea487b2003-03-17 02:05:07 +000098
paula49c0ff2004-09-30 06:08:58 +000099dnl ---------------------------------------------
paul7ea487b2003-03-17 02:05:07 +0000100dnl If CLFAGS doesn\'t exist set default value
paula49c0ff2004-09-30 06:08:58 +0000101dnl AC_PROG_CC will have set minimal default
102dnl already, eg "-O2 -g" for gcc, "-g" for others
paul27eebb32004-07-22 18:16:59 +0000103dnl (Wall is gcc specific... have to make sure
104dnl gcc is being used before setting it)
105dnl
paul6a4b8832005-11-26 08:28:00 +0000106dnl Sun Studio 10 / SunPro 5.7 is also supported,
107dnl so lets set some sane CFLAGS for it.
108dnl ---------------------------------------------
hasso1969e4b2005-03-27 13:07:23 +0000109
David Lamparter3a7e83c2015-03-03 09:55:51 +0100110AC_USE_SYSTEM_EXTENSIONS()
111AC_DEFUN([AC_C_FLAG], [{
112 AC_LANG_PUSH(C)
113 ac_c_flag_save="$CFLAGS"
114 CFLAGS="$CFLAGS $1"
115 AC_MSG_CHECKING([[whether $CC supports $1]])
116 AC_COMPILE_IFELSE(
117 [AC_LANG_PROGRAM([[]])],
118 [
119 AC_MSG_RESULT([yes])
120 m4_if([$3], [], [], [
121 CFLAGS="$ac_c_flag_save"
122 $3
123 ])
124 ], [
125 CFLAGS="$ac_c_flag_save"
126 AC_MSG_RESULT([no])
127 $2
128 ])
129 AC_LANG_POP(C)
130 }])
131
paul6a4b8832005-11-26 08:28:00 +0000132AC_MSG_CHECKING([whether to set a default CFLAGS])
133if test "x${cflags_specified}" = "x" ; then
134 case ${COMPILER} in
paul6a4b8832005-11-26 08:28:00 +0000135 "SUNPRO")
David Lamparter3a7e83c2015-03-03 09:55:51 +0100136 CFLAGS="-xO4 -v -g -xspace -xcode=pic32 -xstrconst -xc99"
137 AC_MSG_RESULT([SunPro default])
138 ;;
paul6a4b8832005-11-26 08:28:00 +0000139 *)
David Lamparter3a7e83c2015-03-03 09:55:51 +0100140 AC_MSG_RESULT([autodetecting])
141
142 AC_C_FLAG([-diag-error 10006])
143 AC_C_FLAG([-std=gnu99])
144 AC_C_FLAG([-g])
145 AC_C_FLAG([-Os], [
146 AC_C_FLAG([-O2])
147 ])
Paul Jakma52c0bc72015-08-20 21:30:17 +0100148 AC_C_FLAG([-fpie])
David Lamparter3a7e83c2015-03-03 09:55:51 +0100149 AC_C_FLAG([-fno-omit-frame-pointer])
150 AC_C_FLAG([-Wall])
151 AC_C_FLAG([-Wextra])
152 AC_C_FLAG([-Wmissing-prototypes])
153 AC_C_FLAG([-Wmissing-declarations])
154 AC_C_FLAG([-Wpointer-arith])
155 AC_C_FLAG([-Wbad-function-cast])
156 AC_C_FLAG([-Wwrite-strings])
157 if test x"${enable_gcc_ultra_verbose}" = x"yes" ; then
158 AC_C_FLAG([-Wcast-qual])
159 AC_C_FLAG([-Wstrict-prototypes])
160 AC_C_FLAG([-Wmissing-noreturn])
161 AC_C_FLAG([-Wmissing-format-attribute])
162 AC_C_FLAG([-Wunreachable-code])
163 AC_C_FLAG([-Wpacked])
164 AC_C_FLAG([-Wpadded])
165 else
166 AC_C_FLAG([-Wno-unused-result])
167 fi
168 AC_C_FLAG([-Wno-unused-parameter])
169 AC_C_FLAG([-Wno-missing-field-initializers])
170 # ICC emits a broken warning for const char *x = a ? "b" : "c";
171 # for some reason the string consts get 'promoted' to char *,
172 # triggering a const to non-const conversion warning.
173 AC_C_FLAG([-diag-disable 3179])
paul6a4b8832005-11-26 08:28:00 +0000174 ;;
175 esac
176else
177 AC_MSG_RESULT([CFLAGS supplied by user])
hasso1969e4b2005-03-27 13:07:23 +0000178fi
179
David Lamparterc0bedeb2015-03-03 10:00:43 +0100180if test x"${enable_werror}" = x"yes" ; then
181 WERROR="-Werror"
182fi
183AC_SUBST(WERROR)
184
paul7ea487b2003-03-17 02:05:07 +0000185dnl --------------
186dnl Check programs
187dnl --------------
paul7ea487b2003-03-17 02:05:07 +0000188AC_PROG_INSTALL
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000189AC_PROG_LN_S
paul7ea487b2003-03-17 02:05:07 +0000190AC_PROG_MAKE_SET
191AC_CHECK_TOOL(AR, ar)
paul7ea487b2003-03-17 02:05:07 +0000192
Paul Jakma105b8232006-05-28 08:02:41 +0000193dnl ---------------------------
194dnl We, perhaps unfortunately,
195dnl depend on GNU Make specific
196dnl constructs.
197dnl Give the user a warning if
198dnl not GNU Make.
199dnl ---------------------------
200AC_CACHE_CHECK([if ${MAKE-make} is GNU make], [quagga_cv_gnu_make],
201 [quagga_cv_gnu_make=no
202 if ${MAKE-make} --version 2>/dev/null | \
203 grep '^GNU Make ' >/dev/null ; then
204 quagga_cv_gnu_make=yes;
205 fi
206 ]
207)
208
Paul Jakmad46d2a22007-05-10 16:53:04 +0000209dnl -----------------
210dnl System extensions
211dnl -----------------
Paul Jakmad46d2a22007-05-10 16:53:04 +0000212AC_GNU_SOURCE
paul7ea487b2003-03-17 02:05:07 +0000213
gdt87efd642004-06-30 17:36:11 +0000214dnl -------
215dnl libtool
216dnl -------
Paul Jakma52c0bc72015-08-20 21:30:17 +0100217LT_INIT
gdt87efd642004-06-30 17:36:11 +0000218
paul7ea487b2003-03-17 02:05:07 +0000219dnl ----------------------
220dnl Packages configuration
221dnl ----------------------
Joachim Nilsson1080c132012-05-30 08:15:48 +0200222AC_ARG_WITH(pkg-extra-version,
223 AS_HELP_STRING([--with-pkg-extra-version=VER], [add extra version field, for packagers/distributions]),
224 [EXTRAVERSION=$withval],)
David Lamparter0be793e2012-11-27 01:34:56 +0000225AC_ARG_WITH(pkg-git-version,
226 AS_HELP_STRING([--with-pkg-git-version], [add git information to MOTD and build version string]),
David Lampartera16dcf72012-12-13 11:20:50 +0100227 [ test "x$withval" != "xno" && with_pkg_git_version="yes" ])
paul7ea487b2003-03-17 02:05:07 +0000228AC_ARG_ENABLE(vtysh,
Donald Sharpe6756782015-07-16 21:18:34 -0400229 AS_HELP_STRING([--disable-vtysh], [do not build integrated vty shell for Quagga]))
Joakim Tjernlundcbcd9bf2009-02-16 09:40:39 +0100230AC_ARG_ENABLE(doc,
David Lamparterb6fa7602014-06-28 22:15:59 +0200231 AS_HELP_STRING([--disable-doc], [do not build docs]))
paul7ea487b2003-03-17 02:05:07 +0000232AC_ARG_ENABLE(zebra,
David Lamparterb6fa7602014-06-28 22:15:59 +0200233 AS_HELP_STRING([--disable-zebra], [do not build zebra daemon]))
paul7ea487b2003-03-17 02:05:07 +0000234AC_ARG_ENABLE(bgpd,
David Lamparterb6fa7602014-06-28 22:15:59 +0200235 AS_HELP_STRING([--disable-bgpd], [do not build bgpd]))
paul7ea487b2003-03-17 02:05:07 +0000236AC_ARG_ENABLE(ripd,
David Lamparterb6fa7602014-06-28 22:15:59 +0200237 AS_HELP_STRING([--disable-ripd], [do not build ripd]))
paul7ea487b2003-03-17 02:05:07 +0000238AC_ARG_ENABLE(ripngd,
David Lamparterb6fa7602014-06-28 22:15:59 +0200239 AS_HELP_STRING([--disable-ripngd], [do not build ripngd]))
paul7ea487b2003-03-17 02:05:07 +0000240AC_ARG_ENABLE(ospfd,
David Lamparterb6fa7602014-06-28 22:15:59 +0200241 AS_HELP_STRING([--disable-ospfd], [do not build ospfd]))
paul7ea487b2003-03-17 02:05:07 +0000242AC_ARG_ENABLE(ospf6d,
David Lamparterb6fa7602014-06-28 22:15:59 +0200243 AS_HELP_STRING([--disable-ospf6d], [do not build ospf6d]))
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,
Donald Sharpe6756782015-07-16 21:18:34 -0400249 AS_HELP_STRING([--disable-pimd], [do not 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]))
paul1ef74ef2003-03-21 15:16:05 +0000258AC_ARG_ENABLE(ospfapi,
David Lamparterb6fa7602014-06-28 22:15:59 +0200259 AS_HELP_STRING([--disable-ospfapi], [do not build OSPFAPI to access the OSPF LSA Database]))
paul1ef74ef2003-03-21 15:16:05 +0000260AC_ARG_ENABLE(ospfclient,
David Lamparterb6fa7602014-06-28 22:15:59 +0200261 AS_HELP_STRING([--disable-ospfclient], [do not build OSPFAPI client for OSPFAPI,
262 (this is the default if --disable-ospfapi is set)]))
paul7ea487b2003-03-17 02:05:07 +0000263AC_ARG_ENABLE(multipath,
David Lamparterb6fa7602014-06-28 22:15:59 +0200264 AS_HELP_STRING([--enable-multipath=ARG], [enable multipath function, ARG must be digit]))
Paul P Komkoff Jrfe86b482008-08-13 16:56:05 +0100265AC_ARG_ENABLE(user,
David Lamparterb6fa7602014-06-28 22:15:59 +0200266 AS_HELP_STRING([--enable-user=USER], [user to run Quagga suite as (default quagga)]))
Paul P Komkoff Jrfe86b482008-08-13 16:56:05 +0100267AC_ARG_ENABLE(group,
David Lamparterb6fa7602014-06-28 22:15:59 +0200268 AS_HELP_STRING([--enable-group=GROUP], [group to run Quagga suite as (default quagga)]))
pauledd7c242003-06-04 13:59:38 +0000269AC_ARG_ENABLE(vty_group,
David Lamparterb6fa7602014-06-28 22:15:59 +0200270 AS_HELP_STRING([--enable-vty-group=ARG], [set vty sockets to have specified group as owner]))
gdtaa593d52003-12-22 20:15:53 +0000271AC_ARG_ENABLE(configfile_mask,
David Lamparterb6fa7602014-06-28 22:15:59 +0200272 AS_HELP_STRING([--enable-configfile-mask=ARG], [set mask for config files]))
gdtaa593d52003-12-22 20:15:53 +0000273AC_ARG_ENABLE(logfile_mask,
David Lamparterb6fa7602014-06-28 22:15:59 +0200274 AS_HELP_STRING([--enable-logfile-mask=ARG], [set mask for log files]))
pauledd7c242003-06-04 13:59:38 +0000275
hasso71c0fb52003-05-25 20:18:13 +0000276AC_ARG_ENABLE(rtadv,
David Lamparterb6fa7602014-06-28 22:15:59 +0200277 AS_HELP_STRING([--disable-rtadv], [disable IPV6 router advertisement feature]))
hassoca776982004-06-12 14:33:05 +0000278AC_ARG_ENABLE(irdp,
David Lamparterb6fa7602014-06-28 22:15:59 +0200279 AS_HELP_STRING([--enable-irdp], [enable IRDP server support in zebra]))
hassof695b012005-04-02 19:03:39 +0000280AC_ARG_ENABLE(isis_topology,
David Lamparterb6fa7602014-06-28 22:15:59 +0200281 AS_HELP_STRING([--enable-isis-topology], [enable IS-IS topology generator]))
hasso41d3fc92004-04-06 11:59:00 +0000282AC_ARG_ENABLE(capabilities,
David Lamparterb6fa7602014-06-28 22:15:59 +0200283 AS_HELP_STRING([--disable-capabilities], [disable using POSIX capabilities]))
Stephen Hemminger47f6aef2013-01-04 22:29:22 +0000284AC_ARG_ENABLE(rusage,
David Lamparterb6fa7602014-06-28 22:15:59 +0200285 AS_HELP_STRING([--disable-rusage], [disable using getrusage]))
paul6b6942f2004-10-22 04:55:05 +0000286AC_ARG_ENABLE(gcc_ultra_verbose,
David Lamparterb6fa7602014-06-28 22:15:59 +0200287 AS_HELP_STRING([--enable-gcc-ultra-verbose], [enable ultra verbose GCC warnings]))
Paul Jakma3453a712009-06-12 14:21:02 +0100288AC_ARG_ENABLE(linux24_tcp_md5,
David Lamparterb6fa7602014-06-28 22:15:59 +0200289 AS_HELP_STRING([--enable-linux24-tcp-md5], [enable support for old, Linux-2.4 RFC2385 patch]))
ajs3cade262004-12-29 17:50:22 +0000290AC_ARG_ENABLE(gcc-rdynamic,
David Lamparterb6fa7602014-06-28 22:15:59 +0200291 AS_HELP_STRING([--enable-gcc-rdynamic], [enable linking with -rdynamic for better backtraces (default if gcc)]))
David Lamparter8c99b4c2013-08-01 07:43:36 +0000292AC_ARG_ENABLE(backtrace,
David Lamparterb6fa7602014-06-28 22:15:59 +0200293 AS_HELP_STRING([--disable-backtrace,], [disable crash backtraces (default autodetect)]))
ajs924b9222005-04-16 17:11:24 +0000294AC_ARG_ENABLE(time-check,
David Lamparterb6fa7602014-06-28 22:15:59 +0200295 AS_HELP_STRING([--disable-time-check], [disable slow thread warning messages]))
Jeremy Jackson25f45882009-01-12 16:06:12 -0500296AC_ARG_ENABLE(pcreposix,
David Lamparterb6fa7602014-06-28 22:15:59 +0200297 AS_HELP_STRING([--enable-pcreposix], [enable using PCRE Posix libs for regex functions]))
Avneesh Sachdev5adc2522012-11-13 22:48:59 +0000298AC_ARG_ENABLE(fpm,
David Lamparterb6fa7602014-06-28 22:15:59 +0200299 AS_HELP_STRING([--enable-fpm], [enable Forwarding Plane Manager support]))
David Lamparterc0bedeb2015-03-03 10:00:43 +0100300AC_ARG_ENABLE(werror,
301 AS_HELP_STRING([--enable-werror], [enable -Werror (recommended for developers only)]))
paul6b6942f2004-10-22 04:55:05 +0000302
David Lamparter8c99b4c2013-08-01 07:43:36 +0000303if test x"${enable_gcc_rdynamic}" != x"no" ; then
304 if test x"${enable_gcc_rdynamic}" = x"yes" -o x"$COMPILER" = x"GCC"; then
305 LDFLAGS="${LDFLAGS} -rdynamic"
306 fi
ajs3cade262004-12-29 17:50:22 +0000307fi
308
ajs924b9222005-04-16 17:11:24 +0000309if test x"${enable_time_check}" != x"no" ; then
310 if test x"${enable_time_check}" = x"yes" -o x"${enable_time_check}" = x ; then
311 AC_DEFINE(CONSUMED_TIME_CHECK,5000000,Consumed Time Check)
312 else
313 AC_DEFINE_UNQUOTED(CONSUMED_TIME_CHECK,$enable_time_check,Consumed Time Check)
314 fi
315fi
316
Avneesh Sachdev5adc2522012-11-13 22:48:59 +0000317if test "${enable_fpm}" = "yes"; then
318 AC_DEFINE(HAVE_FPM,,Forwarding Plane Manager support)
319fi
320
paul7ea487b2003-03-17 02:05:07 +0000321if test "${enable_tcp_zebra}" = "yes"; then
322 AC_DEFINE(HAVE_TCP_ZEBRA,,Use TCP for zebra communication)
323fi
324
Paul Jakma3453a712009-06-12 14:21:02 +0100325if test "${enable_linux24_tcp_md5}" = "yes"; then
326 AC_DEFINE(HAVE_TCP_MD5_LINUX24,,Old Linux 2.4 TCP MD5 Signature Patch)
327fi
328
gdtd2a0ccc2003-12-03 18:13:48 +0000329AC_MSG_CHECKING(if zebra should be configurable to send Route Advertisements)
330if test "${enable_rtadv}" != "no"; then
hasso71c0fb52003-05-25 20:18:13 +0000331 AC_MSG_RESULT(yes)
gdtd2a0ccc2003-12-03 18:13:48 +0000332 AC_DEFINE(HAVE_RTADV,,Enable IPv6 Routing Advertisement support)
paul2487bea2003-05-25 23:51:31 +0000333else
334 AC_MSG_RESULT(no)
hasso71c0fb52003-05-25 20:18:13 +0000335fi
paul7ea487b2003-03-17 02:05:07 +0000336
hassoca776982004-06-12 14:33:05 +0000337if test "${enable_irdp}" = "yes"; then
338 AC_DEFINE(HAVE_IRDP,, IRDP )
339fi
340
David Lamparter656a2c02015-02-09 11:36:10 +0100341if test "${enable_isisd}" != "no" && test "${enable_isis_topology}" = yes; then
hassof695b012005-04-02 19:03:39 +0000342 AC_DEFINE(TOPOLOGY_GENERATE,,Enable IS-IS topology generator code)
David Lamparteree1ac2d2012-07-19 12:58:59 +0200343 ISIS_TOPOLOGY_INCLUDES="-I\$(srcdir)/topology"
hassof695b012005-04-02 19:03:39 +0000344 ISIS_TOPOLOGY_DIR="topology"
345 ISIS_TOPOLOGY_LIB="./topology/libtopology.a"
346fi
347
348AC_SUBST(ISIS_TOPOLOGY_INCLUDES)
349AC_SUBST(ISIS_TOPOLOGY_DIR)
350AC_SUBST(ISIS_TOPOLOGY_LIB)
351
paul79cb2162003-06-06 12:19:53 +0000352if test "${enable_user}" = "yes" || test x"${enable_user}" = x""; then
paule8f29842003-08-12 13:08:31 +0000353 enable_user="quagga"
pauledd7c242003-06-04 13:59:38 +0000354elif test "${enable_user}" = "no"; then
355 enable_user="root"
356fi
pauledd7c242003-06-04 13:59:38 +0000357
paul79cb2162003-06-06 12:19:53 +0000358if test "${enable_group}" = "yes" || test x"${enable_group}" = x""; then
paule8f29842003-08-12 13:08:31 +0000359 enable_group="quagga"
pauledd7c242003-06-04 13:59:38 +0000360elif test "${enable_group}" = "no"; then
361 enable_group="root"
362fi
pauledd7c242003-06-04 13:59:38 +0000363
364if test x"${enable_vty_group}" = x"yes" ; then
paul8d4aee52003-06-06 00:30:35 +0000365 AC_MSG_ERROR([--enable-vty-group requires a group as argument, not yes])
paul79cb2162003-06-06 12:19:53 +0000366elif test x"${enable_vty_group}" != x""; then
paul8d4aee52003-06-06 00:30:35 +0000367 if test x"${enable_vty_group}" != x"no"; then
pauledd7c242003-06-04 13:59:38 +0000368 AC_DEFINE_UNQUOTED(VTY_GROUP, "${enable_vty_group}", VTY Sockets Group)
369 fi
370fi
paul26275b02005-04-11 07:10:47 +0000371AC_SUBST([enable_user])
372AC_SUBST([enable_group])
373AC_SUBST([enable_vty_group])
374AC_DEFINE_UNQUOTED(QUAGGA_USER, "${enable_user}", Quagga User)
375AC_DEFINE_UNQUOTED(QUAGGA_GROUP, "${enable_group}", Quagga Group)
pauledd7c242003-06-04 13:59:38 +0000376
gdtaa593d52003-12-22 20:15:53 +0000377enable_configfile_mask=${enable_configfile_mask:-0600}
378AC_DEFINE_UNQUOTED(CONFIGFILE_MASK, ${enable_configfile_mask}, Mask for config files)
379
380enable_logfile_mask=${enable_logfile_mask:-0600}
381AC_DEFINE_UNQUOTED(LOGFILE_MASK, ${enable_logfile_mask}, Mask for log files)
382
Donald Sharpd1839632015-12-09 08:24:44 -0500383MPATH_NUM=1
paul7ea487b2003-03-17 02:05:07 +0000384
385case "${enable_multipath}" in
Donald Sharpd1839632015-12-09 08:24:44 -0500386 0)
387 MPATH_NUM=64
388 ;;
389 [[1-9]|[1-9][0-9]|[1-9][0-9][0-9]])
390 MPATH_NUM="${enable_multipath}"
paul7ea487b2003-03-17 02:05:07 +0000391 ;;
392 "")
393 ;;
394 *)
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000395 AC_MSG_FAILURE([Please specify digit to enable multipath ARG])
paul7ea487b2003-03-17 02:05:07 +0000396 ;;
397esac
398
Donald Sharpd1839632015-12-09 08:24:44 -0500399AC_DEFINE_UNQUOTED(MULTIPATH_NUM, $MPATH_NUM, Maximum number of paths for a route)
paul7ea487b2003-03-17 02:05:07 +0000400
Joachim Nilsson1080c132012-05-30 08:15:48 +0200401dnl -----------------------------------
402dnl Add extra version string to package
403dnl name, string and version fields.
404dnl -----------------------------------
405if test "x${EXTRAVERSION}" != "x" ; then
David Lamparter0be793e2012-11-27 01:34:56 +0000406 VERSION="${VERSION}${EXTRAVERSION}"
407 PACKAGE_VERSION="${PACKAGE_VERSION}${EXTRAVERSION}"
408 PACKAGE_STRING="${PACKAGE_STRING}${EXTRAVERSION}"
Joachim Nilsson1080c132012-05-30 08:15:48 +0200409fi
410
David Lampartera16dcf72012-12-13 11:20:50 +0100411if test "x$with_pkg_git_version" = "xyes"; then
412 if test -d "${srcdir}/.git"; then
413 AC_DEFINE(GIT_VERSION, [1], [include git version info])
414 else with_pkg_git_version="no"
415 AC_MSG_WARN([--with-pkg-git-version given, but this is not a git checkout])
416 fi
417fi
418AM_CONDITIONAL([GIT_VERSION], [test "x$with_pkg_git_version" = "xyes"])
David Lamparter0be793e2012-11-27 01:34:56 +0000419
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000420dnl ------------------------------------
421dnl Check C keywords and standard types
422dnl ------------------------------------
423AC_C_CONST
424AC_C_INLINE
425AC_C_RESTRICT
426AC_C_VOLATILE
pauldc7a2bf2003-10-22 00:07:44 +0000427AC_HEADER_STDC
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000428AC_HEADER_TIME
429AC_HEADER_SYS_WAIT
Paul Jakmae8441a82015-09-15 16:15:27 +0100430AC_HEADER_STDBOOL
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000431dnl AC_TYPE_PID_T
432AC_TYPE_UID_T
433AC_TYPE_MODE_T
434AC_TYPE_SIZE_T
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000435AC_STRUCT_TM
pauldc7a2bf2003-10-22 00:07:44 +0000436
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000437dnl -------------------------
438dnl Check other header files.
439dnl -------------------------
440AC_CHECK_HEADERS([stropts.h sys/ksym.h sys/times.h sys/select.h \
441 sys/types.h linux/version.h netdb.h asm/types.h \
Timo Teräs16ffb262014-07-29 09:41:54 +0000442 sys/cdefs.h sys/param.h limits.h signal.h \
Paul Jakma6511cab2009-06-18 17:38:01 +0100443 sys/socket.h netinet/in.h time.h sys/time.h])
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000444
445dnl Utility macro to avoid retyping includes all the time
446m4_define([QUAGGA_INCLUDES],
447[#ifdef SUNOS_5
448#define _XPG4_2
449#define __EXTENSIONS__
450#endif
451#include <stdio.h>
452#if STDC_HEADERS
453# include <stdlib.h>
454# include <stddef.h>
455#else
456# if HAVE_STDLIB_H
457# include <stdlib.h>
458# endif
459#endif
460#if HAVE_SYS_TYPES_H
461# include <sys/types.h>
462#endif
463/* sys/conf.h depends on param.h on FBSD at least */
464#if HAVE_SYS_PARAM_H
465# include <sys/param.h>
466#endif
467/* Required for MAXSIG */
468#if HAVE_SIGNAL_H
469# include <signal.h>
470#endif
471#if HAVE_SYS_SOCKET_H
472# include <sys/socket.h>
473#endif
Hasso Tepperea057672013-01-13 17:45:29 +0000474#ifdef __APPLE__
475# define __APPLE_USE_RFC_3542
476#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000477#if HAVE_NETINET_IN_H
478# include <netinet/in.h>
479#endif
Paul Jakma6511cab2009-06-18 17:38:01 +0100480#ifdef TIME_WITH_SYS_TIME
481# include <sys/time.h>
482# include <time.h>
483#else
484# ifdef HAVE_SYS_TIME_H
485# include <sys/time.h>
486# else
487# include <time.h>
488# endif
489#endif /* TIME_WITH_SYS_TIME */
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000490])dnl
491
Denis Ovsienko2b43bf22011-07-14 16:30:08 +0400492dnl HAVE_NET_IF_H must be discovered by the time the longer AC_CHECK_HEADERS
493dnl round below execution begins, otherwise it doesn't properly detect
494dnl HAVE_NETINET6_IN6_VAR_H, HAVE_NET_IF_VAR_H and HAVE_STRUCT_IN6_ALIASREQ
495dnl on FreeBSD (BZ#408).
496
497AC_CHECK_HEADERS([net/if.h], [], [], QUAGGA_INCLUDES)
498
499m4_define([QUAGGA_INCLUDES],
500QUAGGA_INCLUDES
501[#if HAVE_NET_IF_H
502# include <net/if.h>
503#endif
504])dnl
505
506dnl Same applies for HAVE_NET_IF_VAR_H, which HAVE_NETINET6_ND6_H and
507dnl HAVE_NETINET_IN_VAR_H depend upon. But if_var.h depends on if.h, hence
508dnl an additional round for it.
509
510AC_CHECK_HEADERS([net/if_var.h], [], [], QUAGGA_INCLUDES)
511
512m4_define([QUAGGA_INCLUDES],
513QUAGGA_INCLUDES
514[#if HAVE_NET_IF_VAR_H
515# include <net/if_var.h>
516#endif
517])dnl
518
519AC_CHECK_HEADERS([sys/un.h netinet/in_systm.h netinet/in_var.h \
520 net/if_dl.h net/netopt.h net/route.h \
Paul Jakma11770e12007-06-22 16:14:42 +0000521 inet/nd.h arpa/inet.h netinet/ip_icmp.h \
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000522 fcntl.h stddef.h sys/ioctl.h syslog.h wchar.h wctype.h \
523 sys/sysctl.h sys/sockio.h kvm.h sys/conf.h],
524 [], [], QUAGGA_INCLUDES)
525
526AC_CHECK_HEADERS([ucontext.h], [], [],
527[#ifndef __USE_GNU
528#define __USE_GNU
529#endif /* __USE_GNU */
530QUAGGA_INCLUDES
531])
532
Joakim Tjernlundb166ea22009-06-25 16:40:06 +0100533m4_define([UCONTEXT_INCLUDES],
534[#include <ucontext.h>])dnl
535
536AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.uc_regs],
537 [], [], [UCONTEXT_INCLUDES])
538AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.regs],
539 [AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.regs.nip],
540 [], [], [UCONTEXT_INCLUDES])],
541 [], [UCONTEXT_INCLUDES])
542AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.gregs],
543 [], [], [UCONTEXT_INCLUDES])
544
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000545m4_define([QUAGGA_INCLUDES],
546QUAGGA_INCLUDES
Denis Ovsienko2b43bf22011-07-14 16:30:08 +0400547[#if HAVE_SYS_UN_H
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000548# include <sys/un.h>
549#endif
550#if HAVE_NETINET_IN_SYSTM_H
551# include <netinet/in_systm.h>
552#endif
553#if HAVE_NETINET_IN_VAR_H
554# include <netinet/in_var.h>
555#endif
556#if HAVE_NET_IF_DL_H
557# include <net/if_dl.h>
558#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000559#if HAVE_NET_NETOPT_H
560# include <net/netopt.h>
561#endif
562#if HAVE_NET_ROUTE_H
563# include <net/route.h>
564#endif
565#if HAVE_INET_ND_H
566# include <inet/nd.h>
567#endif
568#if HAVE_ARPA_INET_H
569# include <arpa/inet.h>
570#endif
Paul Jakma11770e12007-06-22 16:14:42 +0000571/* Required for IDRP */
572#if HAVE_NETINET_IP_ICMP_H
573# include <netinet/ip_icmp.h>
574#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000575])dnl
pauldc7a2bf2003-10-22 00:07:44 +0000576
gdtfa3232e2003-12-03 17:52:30 +0000577dnl V6 headers are checked below, after we check for v6
paul7ea487b2003-03-17 02:05:07 +0000578
paul7ea487b2003-03-17 02:05:07 +0000579dnl Some systems (Solaris 2.x) require libnsl (Network Services Library)
580case "$host" in
paulafd8a122005-03-12 06:36:10 +0000581 [*-sunos5.[6-7]*] | [*-solaris2.[6-7]*])
paul7ea487b2003-03-17 02:05:07 +0000582 opsys=sol2-6
paulafd8a122005-03-12 06:36:10 +0000583 AC_DEFINE(SUNOS_56, 1, SunOS 5.6 to 5.7)
paul19877dd2004-05-11 10:49:35 +0000584 AC_DEFINE(SUNOS_5, 1, SunOS 5)
paul7ea487b2003-03-17 02:05:07 +0000585 AC_CHECK_LIB(xnet, main)
586 CURSES=-lcurses
David Lampartere8d0d242014-06-28 22:07:41 +0200587 SOLARIS="solaris"
paul7ea487b2003-03-17 02:05:07 +0000588 ;;
paul1b73de82005-04-10 16:31:51 +0000589 [*-sunos5.[8-9]] \
590 | [*-sunos5.1[0-9]] \
591 | [*-sunos5.1[0-9].[0-9]] \
592 | [*-solaris2.[8-9]] \
593 | [*-solaris2.1[0-9]] \
594 | [*-solaris2.1[0-9].[0-9]])
paulafd8a122005-03-12 06:36:10 +0000595 opsys=sol8
Paul Jakmafb66b292006-05-28 08:26:15 +0000596 AC_DEFINE(SUNOS_59, 1, [SunOS 5.8 up])
597 AC_DEFINE(SUNOS_5, 1, [SunOS 5])
paul19877dd2004-05-11 10:49:35 +0000598 AC_CHECK_LIB(socket, main)
599 AC_CHECK_LIB(nsl, main)
paul1b73de82005-04-10 16:31:51 +0000600 AC_CHECK_LIB(umem, main)
Paul Jakmafb66b292006-05-28 08:26:15 +0000601 AC_CHECK_FUNCS([printstack],
602 [AC_DEFINE([HAVE_PRINTSTACK],1,[Solaris printstack])
603 AC_DEFINE([HAVE_STACK_TRACE],1,[Stack symbols decode functionality])
604 ])
paul19877dd2004-05-11 10:49:35 +0000605 CURSES=-lcurses
David Lampartere8d0d242014-06-28 22:07:41 +0200606 SOLARIS="solaris"
paul19877dd2004-05-11 10:49:35 +0000607 ;;
paul7ea487b2003-03-17 02:05:07 +0000608 *-sunos5* | *-solaris2*)
paul19877dd2004-05-11 10:49:35 +0000609 AC_DEFINE(SUNOS_5,,SunOS 5, Unknown SunOS)
paul7ea487b2003-03-17 02:05:07 +0000610 AC_CHECK_LIB(socket, main)
611 AC_CHECK_LIB(nsl, main)
612 CURSES=-lcurses
David Lampartere8d0d242014-06-28 22:07:41 +0200613 SOLARIS="solaris"
paul7ea487b2003-03-17 02:05:07 +0000614 ;;
hassoc45eb832005-02-19 13:58:06 +0000615 *-linux*)
paul7ea487b2003-03-17 02:05:07 +0000616 opsys=gnu-linux
617 AC_DEFINE(GNU_LINUX,,GNU Linux)
618 ;;
paul7ea487b2003-03-17 02:05:07 +0000619 *-openbsd*)
620 opsys=openbsd
621 AC_DEFINE(OPEN_BSD,,OpenBSD)
622 ;;
paul7ea487b2003-03-17 02:05:07 +0000623esac
624
Paul Jakma62c9f502009-07-19 17:33:21 +0100625AC_SYS_LARGEFILE
626
paul7ea487b2003-03-17 02:05:07 +0000627dnl ---------------------
628dnl Integrated VTY option
629dnl ---------------------
630case "${enable_vtysh}" in
Donald Sharpe6756782015-07-16 21:18:34 -0400631 "no") VTYSH="";;
632 *) VTYSH="vtysh";
paul7ea487b2003-03-17 02:05:07 +0000633 AC_DEFINE(VTYSH,,VTY shell)
gdtfc9d0742004-06-30 14:25:12 +0000634dnl Vtysh uses libreadline, which looks for termcap functions at
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000635dnl configure time. We follow readlines search order.
gdtfc9d0742004-06-30 14:25:12 +0000636dnl The required procedures are in libtermcap on NetBSD, in
637dnl [TODO] on Linux, and in [TODO] on Solaris.
hassoc0689392005-08-25 12:00:58 +0000638 AC_CHECK_LIB(termcap, tputs, LIBREADLINE="$LIBREADLINE -ltermcap",
paula9694592005-08-25 14:50:05 +0000639 [AC_CHECK_LIB(tinfo, tputs, LIBREADLINE="$LIBREADLINE -ltinfo",
640 [AC_CHECK_LIB(curses, tputs, LIBREADLINE="$LIBREADLINE -lcurses",
641 [AC_CHECK_LIB(ncurses, tputs,
642 LIBREADLINE="$LIBREADLINE -lncurses")]
643 )]
644 )]
645 )
646 AC_CHECK_LIB(readline, main, LIBREADLINE="$LIBREADLINE -lreadline",,
647 "$LIBREADLINE")
paul7ea487b2003-03-17 02:05:07 +0000648 if test $ac_cv_lib_readline_main = no; then
gdtfc9d0742004-06-30 14:25:12 +0000649 AC_MSG_ERROR([vtysh needs libreadline but was not found and usable on your system.])
paul7ea487b2003-03-17 02:05:07 +0000650 fi
651 AC_CHECK_HEADER(readline/history.h)
652 if test $ac_cv_header_readline_history_h = no;then
653 AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
654 fi
paula9694592005-08-25 14:50:05 +0000655 AC_CHECK_LIB(readline, rl_completion_matches,
656 LIBREADLINE="$LIBREADLINE",, "$LIBREADLINE")
paul3d3de8c2003-05-23 10:33:49 +0000657 if test $ac_cv_lib_readline_rl_completion_matches = no; then
658 AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
659 fi
660 ;;
paul7ea487b2003-03-17 02:05:07 +0000661 "no" ) VTYSH="";;
paul7ea487b2003-03-17 02:05:07 +0000662esac
hassoc0689392005-08-25 12:00:58 +0000663AC_SUBST(LIBREADLINE)
David Wardf027d332012-04-30 11:36:15 -0400664AM_CONDITIONAL(VTYSH, test "x$VTYSH" = "xvtysh")
paul7ea487b2003-03-17 02:05:07 +0000665
666dnl ----------
667dnl PAM module
Denis Ovsienko61599282011-07-15 00:24:15 +0400668dnl
669dnl Quagga detects the PAM library it is built against by checking for a
670dnl functional pam_misc.h (Linux-PAM) or openpam.h (OpenPAM) header. pam_misc.h
671dnl is known to #include pam_appl.h, the standard header of a PAM library, and
672dnl openpam.h doesn't do that, although depends on the header too. Hence a
673dnl little assistance to AC_CHECK_HEADER is necessary for the proper detection
674dnl of OpenPAM.
paul7ea487b2003-03-17 02:05:07 +0000675dnl ----------
676if test "$with_libpam" = "yes"; then
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000677 AC_CHECK_HEADER([security/pam_misc.h],
678 [AC_DEFINE(HAVE_PAM_MISC_H,,Have pam_misc.h)
679 AC_DEFINE(PAM_CONV_FUNC,misc_conv,Have misc_conv)
680 pam_conv_func="misc_conv"
681 ],
682 [], QUAGGA_INCLUDES)
683 AC_CHECK_HEADER([security/openpam.h],
684 [AC_DEFINE(HAVE_OPENPAM_H,,Have openpam.h)
685 AC_DEFINE(PAM_CONV_FUNC,openpam_ttyconv,Have openpam_ttyconv)
686 pam_conv_func="openpam_ttyconv"
687 ],
Denis Ovsienko61599282011-07-15 00:24:15 +0400688 [], QUAGGA_INCLUDES[#include <security/pam_appl.h>])
paul24cd4352003-05-06 12:16:27 +0000689 if test -z "$ac_cv_header_security_pam_misc_h$ac_cv_header_security_openpam_h" ; then
690 AC_MSG_WARN([*** pam support will not be built ***])
691 with_libpam="no"
692 fi
693fi
694
695if test "$with_libpam" = "yes"; then
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000696dnl took this test from proftpds configure.in and suited to our needs
paul7ea487b2003-03-17 02:05:07 +0000697dnl -------------------------------------------------------------------------
698dnl
699dnl This next check looks funky due to a linker problem with some versions
700dnl of the PAM library. Prior to 0.72 release, the Linux PAM shared library
701dnl omitted requiring libdl linking information. PAM-0.72 or better ships
702dnl with RedHat 6.2 and Debian 2.2 or better.
703AC_CHECK_LIB(pam, pam_start,
paul24cd4352003-05-06 12:16:27 +0000704 [AC_CHECK_LIB(pam, $pam_conv_func,
paul7ea487b2003-03-17 02:05:07 +0000705 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
706 LIBPAM="-lpam"],
707 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
708 LIBPAM="-lpam -lpam_misc"]
709 )
710 ],
711
712 [AC_CHECK_LIB(pam, pam_end,
paul24cd4352003-05-06 12:16:27 +0000713 [AC_CHECK_LIB(pam, $pam_conv_func,
paula159ed92003-06-04 11:01:45 +0000714 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
paul7ea487b2003-03-17 02:05:07 +0000715 LIBPAM="-lpam -ldl"],
paula159ed92003-06-04 11:01:45 +0000716 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
paul7ea487b2003-03-17 02:05:07 +0000717 LIBPAM="-lpam -ldl -lpam_misc"]
718 )
719 ],AC_MSG_WARN([*** pam support will not be built ***]),
720 [-ldl])
721 ]
722)
723fi
724AC_SUBST(LIBPAM)
725
726dnl -------------------------------
727dnl Endian-ness check
728dnl -------------------------------
729AC_WORDS_BIGENDIAN
730
731dnl -------------------------------
732dnl check the size in byte of the C
733dnl -------------------------------
734dnl AC_CHECK_SIZEOF(char)
735dnl AC_CHECK_SIZEOF(int)
736dnl AC_CHECK_SIZEOF(short)
737dnl AC_CHECK_SIZEOF(long)
738
739dnl ----------------------------
740dnl check existance of functions
741dnl ----------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000742AC_FUNC_CHOWN
743AC_FUNC_FNMATCH
744AC_FUNC_FORK
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000745AC_FUNC_MEMCMP
746AC_FUNC_MKTIME
747AC_FUNC_STRFTIME
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000748AC_FUNC_STAT
749AC_FUNC_SELECT_ARGTYPES
750AC_FUNC_STRFTIME
Paul Jakmad46d2a22007-05-10 16:53:04 +0000751dnl Avoid AC_FUNC_STRNLEN because it pulls in AC_SYSTEM_EXTENSIONS which
752dnl can lead to strange side effects. So we just check for strnlen
753dnl directly, see below.
Paul Jakma2b5cb412007-05-10 17:05:16 +0000754dnl AC_FUNC_STRNLENdnl
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000755AC_FUNC_VPRINTF
756
757dnl -------------------------------
758dnl bgpd needs pow() and hence libm
759dnl -------------------------------
760TMPLIBS="$LIBS"
761AC_CHECK_HEADER([math.h],
762 [AC_CHECK_LIB([m], [pow],
763 [LIBM="-lm"
764 LIBS="$LIBS $LIBM"
765 AC_DEFINE(HAVE_LIBM,, Have libm)
766 AC_CHECK_FUNCS(pow,[],[LIBM=""])
767 ])
768])
769if test x"$LIBM" = x ; then
770 AC_MSG_WARN([Unable to find working pow function - bgpd may not link])
771fi
772LIBS="$TMPLIBS"
773AC_SUBST(LIBM)
774
775dnl ---------------
776dnl other functions
777dnl ---------------
778AC_CHECK_FUNCS([dup2 ftruncate getcwd gethostbyname getpagesize gettimeofday \
Paul Jakmad46d2a22007-05-10 16:53:04 +0000779 inet_ntoa inet_aton strnlen \
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000780 memchr memmove memset select socket \
781 strcasecmp strchr strcspn strdup strerror \
782 strncasecmp strndup strrchr strspn strstr \
783 strtol strtoul strlcat strlcpy \
784 daemon snprintf vsnprintf \
785 if_nametoindex if_indextoname getifaddrs \
David Lamparter12bbd622015-09-15 02:26:44 -0700786 uname fcntl getgrouplist])
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000787
paula159ed92003-06-04 11:01:45 +0000788AC_CHECK_FUNCS(setproctitle, ,
789 [AC_CHECK_LIB(util, setproctitle,
790 [LIBS="$LIBS -lutil"
791 AC_DEFINE(HAVE_SETPROCTITLE,, Have setproctitle)
792 ]
793 )
794 ]
795)
paul7ea487b2003-03-17 02:05:07 +0000796
Feng Lu55cfa2f2014-07-03 18:24:34 +0800797AC_CHECK_HEADER([asm-generic/unistd.h],
798 [AC_CHECK_DECL(__NR_setns,
799 AC_DEFINE(HAVE_NETNS,, Have netns),,
800 QUAGGA_INCLUDES [#include <asm-generic/unistd.h>
801 ])
802 AC_CHECK_FUNCS(setns, AC_DEFINE(HAVE_SETNS,, Have setns))]
803 )
804
paul7ea487b2003-03-17 02:05:07 +0000805dnl ------------------------------------
806dnl Determine routing get and set method
807dnl ------------------------------------
808AC_MSG_CHECKING(zebra between kernel interface method)
809if test x"$opsys" = x"gnu-linux"; then
David Lamparter2e5ca492014-06-28 20:54:31 +0200810 AC_MSG_RESULT(netlink)
811 RT_METHOD=rt_netlink.o
812 AC_DEFINE(HAVE_NETLINK,,netlink)
813 netlink=yes
paul7ea487b2003-03-17 02:05:07 +0000814else
David Lamparter39b233f2014-06-28 21:49:18 +0200815 AC_MSG_RESULT(Route socket)
816 KERNEL_METHOD="kernel_socket.o"
817 RT_METHOD="rt_socket.o"
paul7ea487b2003-03-17 02:05:07 +0000818fi
819AC_SUBST(RT_METHOD)
820AC_SUBST(KERNEL_METHOD)
Avneesh Sachdev5adc2522012-11-13 22:48:59 +0000821AM_CONDITIONAL([HAVE_NETLINK], [test "x$netlink" = "xyes"])
paul7ea487b2003-03-17 02:05:07 +0000822
Paul Jakma238497f2007-08-07 18:49:18 +0000823dnl --------------------------
824dnl Determine IS-IS I/O method
825dnl --------------------------
David Lamparter745bf052010-02-02 21:49:35 +0100826AC_DEFINE(ISIS_METHOD_PFPACKET, 1, [ constant value for isis method pfpacket ])
827AC_DEFINE(ISIS_METHOD_DLPI, 2, [ constant value for isis method dlpi ])
828AC_DEFINE(ISIS_METHOD_BPF, 3, [ constant value for isis method bpf ])
Paul Jakma238497f2007-08-07 18:49:18 +0000829AC_CHECK_HEADER(net/bpf.h)
830AC_CHECK_HEADER(sys/dlpi.h)
831AC_MSG_CHECKING(zebra IS-IS I/O method)
832if test x"$opsys" = x"gnu-linux"; then
833 AC_MSG_RESULT(pfpacket)
David Lamparter745bf052010-02-02 21:49:35 +0100834 ISIS_METHOD_MACRO="ISIS_METHOD_PFPACKET"
Paul Jakma238497f2007-08-07 18:49:18 +0000835elif test x"$opsys" = x"sol2-6" -o x"$opsys" = x"sol8"; then
836 AC_MSG_RESULT(DLPI)
David Lamparter745bf052010-02-02 21:49:35 +0100837 ISIS_METHOD_MACRO="ISIS_METHOD_DLPI"
Paul Jakma238497f2007-08-07 18:49:18 +0000838else
839 if test $ac_cv_header_net_bpf_h = no; then
840 if test $ac_cv_header_sys_dlpi_h = no; then
841 AC_MSG_RESULT(none)
842 AC_MSG_WARN([*** IS-IS support will not be built ***])
843 ISISD=""
844 else
845 AC_MSG_RESULT(DLPI)
846 fi
David Lamparter745bf052010-02-02 21:49:35 +0100847 ISIS_METHOD_MACRO="ISIS_METHOD_DLPI"
Paul Jakma238497f2007-08-07 18:49:18 +0000848 else
849 AC_MSG_RESULT(BPF)
David Lamparter745bf052010-02-02 21:49:35 +0100850 ISIS_METHOD_MACRO="ISIS_METHOD_BPF"
Paul Jakma238497f2007-08-07 18:49:18 +0000851 fi
852fi
David Lamparter745bf052010-02-02 21:49:35 +0100853AC_DEFINE_UNQUOTED(ISIS_METHOD, $ISIS_METHOD_MACRO, [ selected method for isis, == one of the constants ])
Paul Jakma238497f2007-08-07 18:49:18 +0000854
ajsb99760a2005-01-04 16:24:43 +0000855dnl ------------------------------------
856dnl check for broken CMSG_FIRSTHDR macro
857dnl ------------------------------------
gdt6c200462005-01-04 17:02:48 +0000858AC_MSG_CHECKING(for broken CMSG_FIRSTHDR)
hasso5b087522005-04-03 23:46:37 +0000859AC_RUN_IFELSE([AC_LANG_SOURCE([[
ajsb99760a2005-01-04 16:24:43 +0000860#ifdef SUNOS_5
861#define _XPG4_2
862#define __EXTENSIONS__
863#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000864#ifdef HAVE_STDLIB_H
865# include <stdlib.h>
866#endif
867#ifdef HAVE_SYS_TYPES_H
ajsb99760a2005-01-04 16:24:43 +0000868#include <sys/types.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000869#endif
870#ifdef HAVE_SYS_SOCKET_H
ajsb99760a2005-01-04 16:24:43 +0000871#include <sys/socket.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000872#endif
ajsb99760a2005-01-04 16:24:43 +0000873
874main()
875{
876 struct msghdr msg;
877 char buf[4];
878
879 msg.msg_control = buf;
880 msg.msg_controllen = 0;
881
882 if (CMSG_FIRSTHDR(&msg) != NULL)
883 exit(0);
884 exit (1);
hasso5b087522005-04-03 23:46:37 +0000885}]])],[AC_MSG_RESULT(yes - using workaround) AC_DEFINE(HAVE_BROKEN_CMSG_FIRSTHDR,,Broken CMSG_FIRSTHDR)],
hassod33e8d72005-04-03 13:07:21 +0000886[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
ajsb99760a2005-01-04 16:24:43 +0000887
paul7ea487b2003-03-17 02:05:07 +0000888dnl ------------------------------
889dnl check kernel route read method
890dnl ------------------------------
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500891AC_CACHE_CHECK([route read method], [quagga_cv_rtread_method],
892[if test "x$netlink" = xyes; then
893 quagga_cv_rtread_method="netlink"
paul7ea487b2003-03-17 02:05:07 +0000894else
David Lamparter2e5ca492014-06-28 20:54:31 +0200895for quagga_cv_rtread_method in /dev/ip /dev/null;
paul7ea487b2003-03-17 02:05:07 +0000896do
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500897 test x`ls $quagga_cv_rtread_method 2>/dev/null` = x"$quagga_cv_rtread_method" && break
paul7ea487b2003-03-17 02:05:07 +0000898done
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500899case $quagga_cv_rtread_method in
paul9c30ab62003-07-08 08:36:17 +0000900 "/dev/ip")
901 case "$host" in
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500902 *-freebsd*) quagga_cv_rtread_method="sysctl";;
903 *) quagga_cv_rtread_method="getmsg";;
paul9c30ab62003-07-08 08:36:17 +0000904 esac;;
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500905 *)
906 quagga_cv_rtread_method="sysctl";;
paul7ea487b2003-03-17 02:05:07 +0000907esac
908fi])
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500909RTREAD_METHOD=rtread_${quagga_cv_rtread_method}.o
paul7ea487b2003-03-17 02:05:07 +0000910AC_SUBST(RTREAD_METHOD)
911
912dnl -----------------------------
913dnl check interface lookup method
914dnl -----------------------------
paul19877dd2004-05-11 10:49:35 +0000915IOCTL_METHOD=ioctl.o
paul7ea487b2003-03-17 02:05:07 +0000916AC_MSG_CHECKING(interface looking up method)
917if test "$netlink" = yes; then
918 AC_MSG_RESULT(netlink)
919 IF_METHOD=if_netlink.o
paul19877dd2004-05-11 10:49:35 +0000920elif test "$opsys" = "sol2-6";then
921 AC_MSG_RESULT(Solaris GIF)
922 IF_METHOD=if_ioctl.o
paulafd8a122005-03-12 06:36:10 +0000923elif test "$opsys" = "sol8";then
paul19877dd2004-05-11 10:49:35 +0000924 AC_MSG_RESULT(Solaris GLIF)
925 IF_METHOD=if_ioctl_solaris.o
926 IOCTL_METHOD=ioctl_solaris.o
paul19877dd2004-05-11 10:49:35 +0000927elif test "$opsys" = "openbsd";then
928 AC_MSG_RESULT(openbsd)
929 IF_METHOD=if_ioctl.o
930elif grep NET_RT_IFLIST /usr/include/sys/socket.h >/dev/null 2>&1; then
931 AC_MSG_RESULT(sysctl)
paul7ea487b2003-03-17 02:05:07 +0000932 IF_METHOD=if_sysctl.o
933 AC_DEFINE(HAVE_NET_RT_IFLIST,,NET_RT_IFLIST)
paul19877dd2004-05-11 10:49:35 +0000934else
paul7ea487b2003-03-17 02:05:07 +0000935 AC_MSG_RESULT(ioctl)
936 IF_METHOD=if_ioctl.o
paul7ea487b2003-03-17 02:05:07 +0000937fi
938AC_SUBST(IF_METHOD)
paul19877dd2004-05-11 10:49:35 +0000939AC_SUBST(IOCTL_METHOD)
paul7ea487b2003-03-17 02:05:07 +0000940
paul42c98192005-05-07 02:22:51 +0000941dnl ---------------------------------------------------------------
942dnl figure out how to specify an interface in multicast sockets API
943dnl ---------------------------------------------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000944AC_CHECK_MEMBERS([struct ip_mreqn.imr_ifindex], [], [], QUAGGA_INCLUDES)
paul42c98192005-05-07 02:22:51 +0000945
Donald Sharp1934e782015-06-05 12:15:44 -0700946AC_CHECK_HEADERS([linux/mroute.h], [], [],
947[
948#if HAVE_NETINET_IN_H
949#include<netinet/in.h>
950#endif])
paul42c98192005-05-07 02:22:51 +0000951AC_MSG_CHECKING([for BSD struct ip_mreq hack])
952AC_TRY_COMPILE([#ifdef HAVE_SYS_PARAM_H
953#include <sys/param.h>
Brian Bennettb8a893c2015-02-17 22:32:22 +0000954#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 +0000955 return (0);
956#else
957 #error No support for BSD struct ip_mreq hack detected
958#endif],[AC_MSG_RESULT(yes)
959AC_DEFINE(HAVE_BSD_STRUCT_IP_MREQ_HACK,,[Can pass ifindex in struct ip_mreq])],
960AC_MSG_RESULT(no))
961
Dmitrij Tejblum10d04cd2011-08-22 11:39:35 +0400962AC_MSG_CHECKING([for RFC3678 protocol-independed API])
963AC_TRY_COMPILE([
964#include <sys/types.h>
965#include <netinet/in.h>
966], [struct group_req gr; int sock; setsockopt(sock, IPPROTO_IP, MCAST_JOIN_GROUP, (void*)&gr, sizeof(gr));
967], [AC_MSG_RESULT(yes)
968AC_DEFINE(HAVE_RFC3678,1,[Have RFC3678 protocol-independed API])],
969AC_MSG_RESULT(no))
970
Andrew J. Schorrc543a172008-01-10 15:24:32 +0000971dnl ---------------------------------------------------------------
972dnl figure out how to check link-state
973dnl ---------------------------------------------------------------
Andrew J. Schorr6418bed2008-01-11 16:33:59 +0000974AC_CHECK_HEADER([net/if.h],
975 [AC_CHECK_HEADER( [net/if_media.h],
976 [m4_define([LINK_DETECT_INCLUDES],
977 QUAGGA_INCLUDES
978 [#include <net/if_media.h>
979 ])
980 AC_CHECK_MEMBERS( [struct ifmediareq.ifm_status],
981 AC_DEFINE(HAVE_BSD_LINK_DETECT,,[BSD link-detect]),
982 [], LINK_DETECT_INCLUDES)],
983 [],
984 QUAGGA_INCLUDES)],
985 [], QUAGGA_INCLUDES )
Andrew J. Schorrc543a172008-01-10 15:24:32 +0000986
Doug VanLeuven9234b382012-10-10 16:12:32 -0700987dnl ---------------------------------------------------------------
988dnl Additional, newer way to check link-state using ifi_link_state.
989dnl Not available in all BSD's when ifmediareq available
990dnl ---------------------------------------------------------------
991AC_CHECK_HEADER([net/if.h],
992 AC_CHECK_MEMBERS([struct if_data.ifi_link_state],
993 AC_DEFINE(HAVE_BSD_IFI_LINK_STATE,,[BSD ifi_link_state available]),
994 [], QUAGGA_INCLUDES),
995 ,)
996
Paul Jakma0df7c912008-07-21 21:02:49 +0000997dnl ------------------------
998dnl TCP_MD5SIG socket option
999dnl ------------------------
1000
1001AC_CHECK_HEADER([netinet/tcp.h],
1002 [m4_define([MD5_INCLUDES],
1003 QUAGGA_INCLUDES
1004 [#include <netinet/tcp.h>
1005 ])
1006 AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)],
1007 [],
1008 QUAGGA_INCLUDES)
1009if test $ac_cv_have_decl_TCP_MD5SIG = no; then
1010 AC_CHECK_HEADER([linux/tcp.h],
1011 [m4_define([MD5_INCLUDES],
1012 QUAGGA_INCLUDES
1013 [#include <linux/tcp.h>
1014 ])
1015 AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)])
1016fi
1017
paul7ea487b2003-03-17 02:05:07 +00001018dnl -----------------------------
1019dnl check ipforward detect method
1020dnl -----------------------------
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001021AC_CACHE_CHECK([ipforward method], [quagga_cv_ipforward_method],
David Lamparterca9f3422009-09-16 02:11:00 +02001022[if test x$cross_compiling = xyes; then
1023 if test x"$opsys" = x"gnu-linux"; then
1024 quagga_cv_ipforward_method=/proc/net/snmp
1025 else
1026 quagga_cv_ipforward_method=/dev/ip
1027 fi
1028else
1029 for quagga_cv_ipforward_method in /proc/net/snmp /dev/ip /dev/null;
1030 do
1031 test x`ls $quagga_cv_ipforward_method 2>/dev/null` = x"$quagga_cv_ipforward_method" && break
1032 done
1033fi
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001034case $quagga_cv_ipforward_method in
1035 "/proc/net/snmp") quagga_cv_ipforward_method="proc";;
paul7ea487b2003-03-17 02:05:07 +00001036 "/dev/ip")
1037 case "$host" in
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001038 *-freebsd*) quagga_cv_ipforward_method="sysctl";;
1039 *) quagga_cv_ipforward_method="solaris";;
paul7ea487b2003-03-17 02:05:07 +00001040 esac;;
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001041 *) quagga_cv_ipforward_method="sysctl";;
paul7ea487b2003-03-17 02:05:07 +00001042esac])
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001043IPFORWARD=ipforward_${quagga_cv_ipforward_method}.o
paul7ea487b2003-03-17 02:05:07 +00001044AC_SUBST(IPFORWARD)
1045
1046AC_CHECK_FUNCS(getaddrinfo, [have_getaddrinfo=yes], [have_getaddrinfo=no])
1047
1048dnl ----------
1049dnl IPv6 check
1050dnl ----------
1051AC_MSG_CHECKING(whether does this OS have IPv6 stack)
paul7ea487b2003-03-17 02:05:07 +00001052dnl ---------
1053dnl KAME IPv6
1054dnl ---------
David Lamparter6d6df302014-06-28 21:12:37 +02001055 if grep WIDE /usr/include/netinet6/in6.h >/dev/null 2>&1; then
paula159ed92003-06-04 11:01:45 +00001056 AC_DEFINE(KAME,1,KAME IPv6)
paula159ed92003-06-04 11:01:45 +00001057 AC_MSG_RESULT(KAME)
paul19877dd2004-05-11 10:49:35 +00001058dnl ------------------------------------
1059dnl Solaris 9, 10 and potentially higher
1060dnl ------------------------------------
paulafd8a122005-03-12 06:36:10 +00001061 elif test x"$opsys" = x"sol8"; then
paul19877dd2004-05-11 10:49:35 +00001062 AC_DEFINE(SOLARIS_IPV6, 1, Solaris IPv6)
paul19877dd2004-05-11 10:49:35 +00001063 AC_MSG_RESULT(Solaris IPv6)
paul7ea487b2003-03-17 02:05:07 +00001064dnl ----------
1065dnl Linux IPv6
1066dnl ----------
David Lamparter29ed6222014-06-28 21:42:25 +02001067 elif test x"$opsys" = x"gnu-linux"; then
Timo Teräs3ef0b872014-07-29 09:41:56 +00001068 AC_DEFINE(LINUX_IPV6,1,Linux IPv6 stack)
David Lamparter29ed6222014-06-28 21:42:25 +02001069 AC_MSG_RESULT(Linux IPv6)
1070 else
David Lamparter7fe17e62014-11-22 10:31:33 -08001071 AC_MSG_ERROR([Failed to detect IPv6 stack])
paula159ed92003-06-04 11:01:45 +00001072 fi
paul7ea487b2003-03-17 02:05:07 +00001073
David Lamparter7fe17e62014-11-22 10:31:33 -08001074dnl this is unconditial, for compatibility
1075AC_DEFINE(HAVE_IPV6,1,IPv6)
paul7ea487b2003-03-17 02:05:07 +00001076
gdtfa3232e2003-12-03 17:52:30 +00001077dnl ------------------
1078dnl IPv6 header checks
1079dnl ------------------
gdtfa3232e2003-12-03 17:52:30 +00001080AC_CHECK_HEADERS([netinet6/in6.h netinet/in6_var.h netinet/icmp6.h \
David Lamparter05a69d22015-05-27 22:15:37 +02001081 netinet6/in6_var.h netinet6/nd6.h], [], [],
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001082 QUAGGA_INCLUDES)
gdtfa3232e2003-12-03 17:52:30 +00001083
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001084m4_define([QUAGGA_INCLUDES],dnl
1085QUAGGA_INCLUDES
1086[#if HAVE_NETINET6_IN6_H
1087#include <netinet6/in6.h>
1088#endif
1089#if HAVE_NETINET_IN6_VAR_H
1090#include <netinet/in6_var.h>
1091#endif
1092#if HAVE_NETINET_ICMP6_H
1093# include <netinet/icmp6.h>
1094#endif
1095#if HAVE_NETINET6_IN6_VAR_H
1096# include <netinet6/in6_var.h>
1097#endif
1098#if HAVE_NETINET6_ND6_H
Hasso Tepperfbf24542007-06-25 19:30:59 +00001099# include <netinet6/nd6.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001100#endif
1101])dnl
1102
Joakim Tjernlundcbcd9bf2009-02-16 09:40:39 +01001103dnl disable doc check
1104if test "${enable_doc}" = "no";then
1105 DOC=""
1106else
1107 DOC="doc"
1108fi
1109
paul7ea487b2003-03-17 02:05:07 +00001110dnl --------------------
1111dnl Daemon disable check
1112dnl --------------------
1113if test "${enable_zebra}" = "no";then
1114 ZEBRA=""
1115else
1116 ZEBRA="zebra"
1117fi
David Wardf027d332012-04-30 11:36:15 -04001118AM_CONDITIONAL(ZEBRA, test "x$ZEBRA" = "xzebra")
paul7ea487b2003-03-17 02:05:07 +00001119
1120if test "${enable_bgpd}" = "no";then
1121 BGPD=""
1122else
1123 BGPD="bgpd"
1124fi
David Wardf027d332012-04-30 11:36:15 -04001125AM_CONDITIONAL(BGPD, test "x$BGPD" = "xbgpd")
paul7ea487b2003-03-17 02:05:07 +00001126
1127if test "${enable_ripd}" = "no";then
1128 RIPD=""
1129else
1130 RIPD="ripd"
1131fi
David Wardf027d332012-04-30 11:36:15 -04001132AM_CONDITIONAL(RIPD, test "x$RIPD" = "xripd")
paul7ea487b2003-03-17 02:05:07 +00001133
1134if test "${enable_ospfd}" = "no";then
1135 OSPFD=""
1136else
1137 OSPFD="ospfd"
1138fi
David Wardf027d332012-04-30 11:36:15 -04001139AM_CONDITIONAL(OSPFD, test "x$OSPFD" = "xospfd")
paul7ea487b2003-03-17 02:05:07 +00001140
ajsd0199432004-12-22 14:03:52 +00001141if test "${enable_watchquagga}" = "no";then
1142 WATCHQUAGGA=""
1143else
1144 WATCHQUAGGA="watchquagga"
1145fi
David Wardf027d332012-04-30 11:36:15 -04001146AM_CONDITIONAL(WATCHQUAGGA, test "x$WATCHQUAGGA" = "xwatchquagga")
ajsd0199432004-12-22 14:03:52 +00001147
paul1ef74ef2003-03-21 15:16:05 +00001148OSPFCLIENT=""
Donald Sharp36fef572015-12-16 14:22:10 -05001149if test "${enable_ospfapi}" != "no";then
paul9a569842003-03-28 01:45:13 +00001150 AC_DEFINE(SUPPORT_OSPF_API,,OSPFAPI)
paul1ef74ef2003-03-21 15:16:05 +00001151
Donald Sharp36fef572015-12-16 14:22:10 -05001152 if test "${enable_ospfclient}" != "no";then
paul1ef74ef2003-03-21 15:16:05 +00001153 OSPFCLIENT="ospfclient"
paul1ef74ef2003-03-21 15:16:05 +00001154 fi
paul7ea487b2003-03-17 02:05:07 +00001155fi
Donald Sharp36fef572015-12-16 14:22:10 -05001156
David Wardf027d332012-04-30 11:36:15 -04001157AM_CONDITIONAL(OSPFCLIENT, test "x$OSPFCLIENT" = "xospfclient")
paul7ea487b2003-03-17 02:05:07 +00001158
1159case "${enable_ripngd}" in
paul7ea487b2003-03-17 02:05:07 +00001160 "no" ) RIPNGD="";;
David Lamparter7fe17e62014-11-22 10:31:33 -08001161 * ) RIPNGD="ripngd";;
paul7ea487b2003-03-17 02:05:07 +00001162esac
David Wardf027d332012-04-30 11:36:15 -04001163AM_CONDITIONAL(RIPNGD, test "x$RIPNGD" = "xripngd")
paul7ea487b2003-03-17 02:05:07 +00001164
1165case "${enable_ospf6d}" in
paul7ea487b2003-03-17 02:05:07 +00001166 "no" ) OSPF6D="";;
David Lamparter7fe17e62014-11-22 10:31:33 -08001167 * ) OSPF6D="ospf6d";;
paul7ea487b2003-03-17 02:05:07 +00001168esac
David Wardf027d332012-04-30 11:36:15 -04001169AM_CONDITIONAL(OSPF6D, test "x$OSPF6D" = "xospf6d")
paul7ea487b2003-03-17 02:05:07 +00001170
jardin9e867fe2003-12-23 08:56:18 +00001171case "${enable_isisd}" in
jardin9e867fe2003-12-23 08:56:18 +00001172 "no" ) ISISD="";;
David Lamparter656a2c02015-02-09 11:36:10 +01001173 * ) ISISD="isisd";;
jardin9e867fe2003-12-23 08:56:18 +00001174esac
David Wardf027d332012-04-30 11:36:15 -04001175AM_CONDITIONAL(ISISD, test "x$ISISD" = "xisisd")
jardin9e867fe2003-12-23 08:56:18 +00001176
Everton Marques871dbcf2009-08-11 15:43:05 -03001177case "${enable_pimd}" in
Everton Marques871dbcf2009-08-11 15:43:05 -03001178 "no" ) PIMD="";;
Donald Sharpe6756782015-07-16 21:18:34 -04001179 * ) PIMD="pimd";;
Everton Marques871dbcf2009-08-11 15:43:05 -03001180esac
Everton Marquesff57d362014-06-25 15:54:03 -03001181AM_CONDITIONAL(PIMD, test "x$PIMD" = "xpimd")
Everton Marques871dbcf2009-08-11 15:43:05 -03001182
paul7ea487b2003-03-17 02:05:07 +00001183if test "${enable_bgp_announce}" = "no";then
Paul Jakma750e8142008-07-22 21:11:48 +00001184 AC_DEFINE(DISABLE_BGP_ANNOUNCE,1,Disable BGP installation to zebra)
1185else
1186 AC_DEFINE(DISABLE_BGP_ANNOUNCE,0,Disable BGP installation to zebra)
paul7ea487b2003-03-17 02:05:07 +00001187fi
1188
Joakim Tjernlundcbcd9bf2009-02-16 09:40:39 +01001189AC_SUBST(DOC)
paul7ea487b2003-03-17 02:05:07 +00001190AC_SUBST(ZEBRA)
1191AC_SUBST(BGPD)
1192AC_SUBST(RIPD)
1193AC_SUBST(RIPNGD)
1194AC_SUBST(OSPFD)
1195AC_SUBST(OSPF6D)
ajsd0199432004-12-22 14:03:52 +00001196AC_SUBST(WATCHQUAGGA)
jardin9e867fe2003-12-23 08:56:18 +00001197AC_SUBST(ISISD)
Everton Marques871dbcf2009-08-11 15:43:05 -03001198AC_SUBST(PIMD)
Greg Troxel97cee872007-08-02 13:36:56 +00001199AC_SUBST(SOLARIS)
paul7ea487b2003-03-17 02:05:07 +00001200AC_SUBST(VTYSH)
paul7ea487b2003-03-17 02:05:07 +00001201AC_SUBST(CURSES)
1202AC_SUBST(OSPFCLIENT)
paul1ef74ef2003-03-21 15:16:05 +00001203AC_SUBST(OSPFAPI)
paul7ea487b2003-03-17 02:05:07 +00001204AC_CHECK_LIB(c, inet_ntop, [AC_DEFINE(HAVE_INET_NTOP,,inet_ntop)])
1205AC_CHECK_LIB(c, inet_pton, [AC_DEFINE(HAVE_INET_PTON,,inet_pton)])
1206AC_CHECK_LIB(crypt, crypt)
1207AC_CHECK_LIB(resolv, res_init)
paul7ea487b2003-03-17 02:05:07 +00001208
paul7ea487b2003-03-17 02:05:07 +00001209dnl ---------------------------
Jeremy Jackson25f45882009-01-12 16:06:12 -05001210dnl check system has PCRE regexp
1211dnl ---------------------------
1212if test "x$enable_pcreposix" = "xyes"; then
1213 AC_CHECK_LIB(pcreposix, pcreposix_regexec, ,[enable_pcreposix=no
1214 AC_MSG_WARN([*** falling back to other regex library ***]) ])
1215fi
1216
1217if test "x$enable_pcreposix" != "xyes"; then
1218dnl ---------------------------
paul7ea487b2003-03-17 02:05:07 +00001219dnl check system has GNU regexp
1220dnl ---------------------------
Jeremy Jackson25f45882009-01-12 16:06:12 -05001221AC_MSG_CHECKING(whether system has GNU regex)
paul7ea487b2003-03-17 02:05:07 +00001222AC_CHECK_LIB(c, regexec,
1223[AC_DEFINE(HAVE_GNU_REGEX,,GNU regexp library)
1224 LIB_REGEX=""],
1225[LIB_REGEX="regex.o"])
Jeremy Jackson25f45882009-01-12 16:06:12 -05001226fi
1227AC_SUBST(HAVE_LIBPCREPOSIX)
paul7ea487b2003-03-17 02:05:07 +00001228AC_SUBST(LIB_REGEX)
1229
1230dnl ------------------
paulb1fc9ac2006-01-31 10:09:27 +00001231dnl check Net-SNMP library
paul7ea487b2003-03-17 02:05:07 +00001232dnl ------------------
Vincent Bernatd6be5fb2012-05-24 09:44:43 +02001233if test "${enable_snmp}" != ""; then
Vincent Bernat08d7f652012-05-22 22:29:17 +02001234 AC_PATH_TOOL([NETSNMP_CONFIG], [net-snmp-config], [no])
1235 if test x"$NETSNMP_CONFIG" = x"no"; then
1236 AC_MSG_ERROR([--enable-snmp given but unable to find net-snmp-config])
1237 fi
1238 LIBS="$LIBS `${NETSNMP_CONFIG} --agent-libs`"
1239 CFLAGS="`${NETSNMP_CONFIG} --base-cflags` $CFLAGS"
1240 AC_MSG_CHECKING([whether we can link to Net-SNMP])
1241 AC_LINK_IFELSE([AC_LANG_PROGRAM([
1242int main(void);
1243],
1244[
1245{
1246 return 0;
1247}
1248])],[AC_MSG_RESULT(yes)],[
1249 AC_MSG_RESULT(no)
1250 AC_MSG_ERROR([--enable-snmp given but not usable])])
1251 AC_DEFINE(HAVE_SNMP,,SNMP)
Vincent Bernatd6be5fb2012-05-24 09:44:43 +02001252 case "${enable_snmp}" in
1253 yes)
1254 SNMP_METHOD=agentx
1255 ;;
1256 smux|agentx)
1257 SNMP_METHOD="${enable_snmp}"
1258 ;;
1259 *)
1260 AC_MSG_ERROR([--enable-snmp given with an unknown method (${enable_snmp}). Use smux or agentx])
1261 ;;
1262 esac
1263 AH_TEMPLATE([SNMP_SMUX], [Use SNMP SMUX to interface with snmpd])
1264 AH_TEMPLATE([SNMP_AGENTX], [Use SNMP AgentX to interface with snmpd])
1265 AC_DEFINE_UNQUOTED(AS_TR_CPP(SNMP_${SNMP_METHOD}),,SNMP method to interface with snmpd)
paul7ea487b2003-03-17 02:05:07 +00001266fi
1267
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001268dnl ---------------------------
1269dnl sockaddr and netinet checks
1270dnl ---------------------------
1271AC_CHECK_TYPES([struct sockaddr, struct sockaddr_in,
1272 struct sockaddr_in6, struct sockaddr_un, struct sockaddr_dl,
Everton Marques871dbcf2009-08-11 15:43:05 -03001273 socklen_t, struct vifctl, struct mfcctl, struct sioc_sg_req,
1274 vifi_t, struct sioc_vif_req, struct igmpmsg,
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001275 struct ifaliasreq, struct if6_aliasreq, struct in6_aliasreq,
1276 struct nd_opt_adv_interval, struct rt_addrinfo,
Paul Jakma11770e12007-06-22 16:14:42 +00001277 struct nd_opt_homeagent_info, struct nd_opt_adv_interval],
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001278 [], [], QUAGGA_INCLUDES)
paul7ea487b2003-03-17 02:05:07 +00001279
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001280AC_CHECK_MEMBERS([struct sockaddr.sa_len,
1281 struct sockaddr_in.sin_len, struct sockaddr_un.sun_len,
1282 struct sockaddr_in6.sin6_scope_id,
David Lamparterca3ccd82012-09-26 14:52:39 +02001283 struct sockaddr_dl.sdl_len,
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001284 struct if6_aliasreq.ifra_lifetime,
1285 struct nd_opt_adv_interval.nd_opt_ai_type],
1286 [], [], QUAGGA_INCLUDES)
hasso71c0fb52003-05-25 20:18:13 +00001287
paul7ea487b2003-03-17 02:05:07 +00001288dnl ---------------------------
Paul Jakma11770e12007-06-22 16:14:42 +00001289dnl IRDP/pktinfo/icmphdr checks
paul7ea487b2003-03-17 02:05:07 +00001290dnl ---------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001291AC_CHECK_TYPES([struct in_pktinfo],
Paul Jakma11770e12007-06-22 16:14:42 +00001292 [AC_CHECK_TYPES([struct icmphdr],
1293 [if test "${enable_irdp}" != "no"; then
1294 AC_DEFINE(HAVE_IRDP,, IRDP)
1295 fi],
1296 [if test "${enable_irdp}" = "yes"; then
1297 AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
1298 fi], [QUAGGA_INCLUDES])],
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001299 [if test "${enable_irdp}" = "yes"; then
1300 AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
1301 fi], [QUAGGA_INCLUDES])
vincent29c4c9b2005-03-25 13:05:47 +00001302
Everton Marques871dbcf2009-08-11 15:43:05 -03001303dnl -----------------------
1304dnl checking for IP_PKTINFO
1305dnl -----------------------
1306AC_MSG_CHECKING(for IP_PKTINFO)
1307AC_TRY_COMPILE([#include <netdb.h>], [
1308 int opt = IP_PKTINFO;
1309], [
1310 AC_MSG_RESULT(yes)
1311 AC_DEFINE(HAVE_IP_PKTINFO, 1, [Have IP_PKTINFO])
1312], [
1313 AC_MSG_RESULT(no)
1314])
1315
1316dnl ---------------------------
1317dnl checking for IP_RECVDSTADDR
1318dnl ---------------------------
1319AC_MSG_CHECKING(for IP_RECVDSTADDR)
1320AC_TRY_COMPILE([#include <netinet/in.h>], [
1321 int opt = IP_RECVDSTADDR;
1322], [
1323 AC_MSG_RESULT(yes)
1324 AC_DEFINE(HAVE_IP_RECVDSTADDR, 1, [Have IP_RECVDSTADDR])
1325], [
1326 AC_MSG_RESULT(no)
1327])
1328
1329dnl ----------------------
1330dnl checking for IP_RECVIF
1331dnl ----------------------
1332AC_MSG_CHECKING(for IP_RECVIF)
1333AC_TRY_COMPILE([#include <netinet/in.h>], [
1334 int opt = IP_RECVIF;
1335], [
1336 AC_MSG_RESULT(yes)
1337 AC_DEFINE(HAVE_IP_RECVIF, 1, [Have IP_RECVIF])
1338], [
1339 AC_MSG_RESULT(no)
1340])
1341
paul7ea487b2003-03-17 02:05:07 +00001342dnl --------------------------------------
1343dnl checking for getrusage struct and call
1344dnl --------------------------------------
Stephen Hemminger47f6aef2013-01-04 22:29:22 +00001345if test "${enable_rusage}" != "no"; then
1346 AC_MSG_CHECKING(whether getrusage is available)
1347 AC_TRY_COMPILE([#include <sys/resource.h>],[struct rusage ac_x; getrusage (RUSAGE_SELF, &ac_x);],
1348 [AC_MSG_RESULT(yes)
1349 AC_DEFINE(HAVE_RUSAGE,,rusage)],
1350 AC_MSG_RESULT(no))
1351fi
paul7ea487b2003-03-17 02:05:07 +00001352
Stephen Hemmingerc4376c92009-05-28 15:29:10 -07001353dnl --------------------------------------
1354dnl checking for clock_time monotonic struct and call
1355dnl --------------------------------------
Paul Jakma6511cab2009-06-18 17:38:01 +01001356AC_CHECK_DECL(CLOCK_MONOTONIC,
1357 [AC_CHECK_LIB(rt, clock_gettime, [LIBS="$LIBS -lrt"])
Dmitry Tejblum9964fcf2009-11-05 16:50:36 +03001358 AC_DEFINE(HAVE_CLOCK_MONOTONIC,, Have monotonic clock)
Paul Jakma6511cab2009-06-18 17:38:01 +01001359], [AC_MSG_RESULT(no)], [QUAGGA_INCLUDES])
Stephen Hemmingerc4376c92009-05-28 15:29:10 -07001360
pauledd7c242003-06-04 13:59:38 +00001361dnl -------------------
1362dnl capabilities checks
1363dnl -------------------
hasso41d3fc92004-04-06 11:59:00 +00001364if test "${enable_capabilities}" != "no"; then
1365 AC_MSG_CHECKING(whether prctl PR_SET_KEEPCAPS is available)
1366 AC_TRY_COMPILE([#include <sys/prctl.h>],[prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);],
1367 [AC_MSG_RESULT(yes)
1368 AC_DEFINE(HAVE_PR_SET_KEEPCAPS,,prctl)
1369 quagga_ac_keepcaps="yes"],
1370 AC_MSG_RESULT(no)
pauledd7c242003-06-04 13:59:38 +00001371 )
hasso41d3fc92004-04-06 11:59:00 +00001372 if test x"${quagga_ac_keepcaps}" = x"yes"; then
1373 AC_CHECK_HEADERS(sys/capability.h)
1374 fi
1375 if test x"${ac_cv_header_sys_capability_h}" = x"yes"; then
1376 AC_CHECK_LIB(cap, cap_init,
1377 [AC_DEFINE(HAVE_LCAPS,1,Capabilities)
1378 LIBCAP="-lcap"
paulceacedb2005-09-29 14:39:32 +00001379 quagga_ac_lcaps="yes"]
hasso41d3fc92004-04-06 11:59:00 +00001380 )
paulceacedb2005-09-29 14:39:32 +00001381 else
1382 AC_CHECK_HEADERS(priv.h,
1383 [AC_MSG_CHECKING(Solaris style privileges are available)
1384 AC_TRY_COMPILE([#include <priv.h>],[getpflags(PRIV_AWARE);],
1385 [AC_MSG_RESULT(yes)
1386 AC_DEFINE(HAVE_SOLARIS_CAPABILITIES,1,getpflags)
1387 quagga_ac_scaps="yes"],
1388 AC_MSG_RESULT(no)
1389 )
1390 ]
1391 )
1392 fi
1393 if test x"${quagga_ac_scaps}" = x"yes" \
1394 -o x"${quagga_ac_lcaps}" = x"yes"; then
1395 AC_DEFINE(HAVE_CAPABILITIES,1,capabilities)
hasso41d3fc92004-04-06 11:59:00 +00001396 fi
pauledd7c242003-06-04 13:59:38 +00001397fi
1398AC_SUBST(LIBCAP)
1399
Doug VanLeuven327c4cd2012-12-14 14:58:30 +02001400dnl ---------------------------------------------------------------------------
1401dnl http://www.gnu.org/software/autoconf-archive/ax_sys_weak_alias.html
1402dnl Check for and set one of the following = 1
1403dnl HAVE_SYS_WEAK_ALIAS_ATTRIBUTE
1404dnl HAVE_SYS_WEAK_ALIAS_PRAGMA
1405dnl HAVE_SYS_WEAK_ALIAS_HPSECONDARY
1406dnl HAVE_SYS_WEAK_ALIAS_CRIDUPLICATE
1407dnl If any scheme is found, set
1408dnl HAVE_SYS_WEAK_ALIAS=1
1409dnl The following variable is set to text value
1410dnl WEAK_ALIAS = "attribute" || "pragma" || "hpsecondary" || "criduplicate" || "no"
1411dnl If weak alias can cross object file boundaries
1412dnl WEAK_ALIAS_CROSSFILE = "yes" || "no"
1413dnl ---------------------------------------------------------------------------
1414AX_SYS_WEAK_ALIAS
1415
paulfb2d1502003-06-04 09:40:54 +00001416dnl ---------------------------
1417dnl check for glibc 'backtrace'
1418dnl ---------------------------
David Lamparter8c99b4c2013-08-01 07:43:36 +00001419if test x"${enable_backtrace}" != x"no" ; then
1420 backtrace_ok=no
1421 AC_CHECK_HEADER([execinfo.h], [
1422 AC_SEARCH_LIBS([backtrace], [execinfo], [
1423 AC_DEFINE(HAVE_GLIBC_BACKTRACE,,[Glibc backtrace])
1424 AC_DEFINE(HAVE_STACK_TRACE,,[Stack symbol decoding])
1425 backtrace_ok=yes
1426 ],, [-lm])
Dmitrij Tejblumeda35292011-09-15 20:00:33 +04001427 ])
David Lamparter8c99b4c2013-08-01 07:43:36 +00001428
1429 if test x"${enable_backtrace}" = x"yes" -a x"${backtrace_ok}" = x"no"; then
1430 dnl user explicitly requested backtrace but we failed to find support
1431 AC_MSG_FAILURE([failed to find backtrace support])
1432 fi
1433fi
paulfb2d1502003-06-04 09:40:54 +00001434
Paul Jakma41be32b2006-03-30 13:53:59 +00001435dnl -----------------------------------------
1436dnl check for malloc mallinfo struct and call
1437dnl this must try and link using LIBS, in
1438dnl order to check no alternative allocator
1439dnl has been specified, which might not provide
1440dnl mallinfo, e.g. such as Umem on Solaris.
1441dnl -----------------------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001442AC_CHECK_HEADER([malloc.h],
Paul Jakma41be32b2006-03-30 13:53:59 +00001443 [AC_MSG_CHECKING(whether mallinfo is available)
1444 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <malloc.h>]],
1445 [[struct mallinfo ac_x; ac_x = mallinfo ();]])],
1446 [AC_MSG_RESULT(yes)
1447 AC_DEFINE(HAVE_MALLINFO,,mallinfo)],
1448 AC_MSG_RESULT(no)
1449 )
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001450 ], [], QUAGGA_INCLUDES)
Paul Jakma41be32b2006-03-30 13:53:59 +00001451
paul408ad942003-05-20 00:03:33 +00001452dnl ----------
1453dnl configure date
1454dnl ----------
1455CONFDATE=`date '+%Y%m%d'`
1456AC_SUBST(CONFDATE)
1457
David Lamparterf281ab92013-02-26 16:21:20 +01001458dnl -------
1459dnl DejaGNU
1460dnl -------
1461if test x"$DEJAGNU" = x
1462then
1463 DEJAGNU="\$(top_srcdir)/tests/global-conf.exp"
1464fi
1465RUNTESTDEFAULTFLAGS="-x --tool \$\$tool"
1466
1467AC_SUBST(DEJAGNU)
1468AC_SUBST(RUNTESTDEFAULTFLAGS)
1469
paul7ea487b2003-03-17 02:05:07 +00001470dnl ------------------------------
paula159ed92003-06-04 11:01:45 +00001471dnl set paths for state directory
paul23bd12c2003-04-07 06:11:09 +00001472dnl ------------------------------
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001473AC_MSG_CHECKING(directory to use for state file)
paul23bd12c2003-04-07 06:11:09 +00001474if test "${prefix}" = "NONE"; then
paule8f29842003-08-12 13:08:31 +00001475 quagga_statedir_prefix="";
paul23bd12c2003-04-07 06:11:09 +00001476else
paule8f29842003-08-12 13:08:31 +00001477 quagga_statedir_prefix=${prefix}
paul23bd12c2003-04-07 06:11:09 +00001478fi
1479if test "${localstatedir}" = '${prefix}/var'; then
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001480 for QUAGGA_STATE_DIR in ${quagga_statedir_prefix}/var/run dnl
paule8f29842003-08-12 13:08:31 +00001481 ${quagga_statedir_prefix}/var/adm dnl
1482 ${quagga_statedir_prefix}/etc dnl
paula159ed92003-06-04 11:01:45 +00001483 /var/run dnl
1484 /var/adm dnl
1485 /etc dnl
1486 /dev/null;
paul23bd12c2003-04-07 06:11:09 +00001487 do
paule8f29842003-08-12 13:08:31 +00001488 test -d $QUAGGA_STATE_DIR && break
paul23bd12c2003-04-07 06:11:09 +00001489 done
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001490 quagga_statedir=$QUAGGA_STATE_DIR
paul23bd12c2003-04-07 06:11:09 +00001491else
paule8f29842003-08-12 13:08:31 +00001492 quagga_statedir=${localstatedir}
paul23bd12c2003-04-07 06:11:09 +00001493fi
paule8f29842003-08-12 13:08:31 +00001494if test $quagga_statedir = "/dev/null"; then
paula159ed92003-06-04 11:01:45 +00001495 AC_MSG_ERROR('STATE DIRECTORY NOT FOUND! FIX OR SPECIFY --localstatedir!')
1496fi
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001497AC_MSG_RESULT(${quagga_statedir})
1498AC_SUBST(quagga_statedir)
paula159ed92003-06-04 11:01:45 +00001499
paule8f29842003-08-12 13:08:31 +00001500AC_DEFINE_UNQUOTED(PATH_ZEBRA_PID, "$quagga_statedir/zebra.pid",zebra PID)
1501AC_DEFINE_UNQUOTED(PATH_RIPD_PID, "$quagga_statedir/ripd.pid",ripd PID)
1502AC_DEFINE_UNQUOTED(PATH_RIPNGD_PID, "$quagga_statedir/ripngd.pid",ripngd PID)
1503AC_DEFINE_UNQUOTED(PATH_BGPD_PID, "$quagga_statedir/bgpd.pid",bgpd PID)
1504AC_DEFINE_UNQUOTED(PATH_OSPFD_PID, "$quagga_statedir/ospfd.pid",ospfd PID)
1505AC_DEFINE_UNQUOTED(PATH_OSPF6D_PID, "$quagga_statedir/ospf6d.pid",ospf6d PID)
jardin9e867fe2003-12-23 08:56:18 +00001506AC_DEFINE_UNQUOTED(PATH_ISISD_PID, "$quagga_statedir/isisd.pid",isisd PID)
Everton Marques871dbcf2009-08-11 15:43:05 -03001507AC_DEFINE_UNQUOTED(PATH_PIMD_PID, "$quagga_statedir/pimd.pid",pimd PID)
ajsd0199432004-12-22 14:03:52 +00001508AC_DEFINE_UNQUOTED(PATH_WATCHQUAGGA_PID, "$quagga_statedir/watchquagga.pid",watchquagga PID)
paule8f29842003-08-12 13:08:31 +00001509AC_DEFINE_UNQUOTED(ZEBRA_SERV_PATH, "$quagga_statedir/zserv.api",zebra api socket)
1510AC_DEFINE_UNQUOTED(ZEBRA_VTYSH_PATH, "$quagga_statedir/zebra.vty",zebra vty socket)
1511AC_DEFINE_UNQUOTED(RIP_VTYSH_PATH, "$quagga_statedir/ripd.vty",rip vty socket)
1512AC_DEFINE_UNQUOTED(RIPNG_VTYSH_PATH, "$quagga_statedir/ripngd.vty",ripng vty socket)
1513AC_DEFINE_UNQUOTED(BGP_VTYSH_PATH, "$quagga_statedir/bgpd.vty",bgpd vty socket)
1514AC_DEFINE_UNQUOTED(OSPF_VTYSH_PATH, "$quagga_statedir/ospfd.vty",ospfd vty socket)
1515AC_DEFINE_UNQUOTED(OSPF6_VTYSH_PATH, "$quagga_statedir/ospf6d.vty",ospf6d vty socket)
jardin9e867fe2003-12-23 08:56:18 +00001516AC_DEFINE_UNQUOTED(ISIS_VTYSH_PATH, "$quagga_statedir/isisd.vty",isisd vty socket)
Everton Marques871dbcf2009-08-11 15:43:05 -03001517AC_DEFINE_UNQUOTED(PIM_VTYSH_PATH, "$quagga_statedir/pimd.vty",pimd vty socket)
ajs515210b2004-12-22 15:35:12 +00001518AC_DEFINE_UNQUOTED(DAEMON_VTY_DIR, "$quagga_statedir",daemon vty directory)
paul7ea487b2003-03-17 02:05:07 +00001519
paul1eb8ef22005-04-07 07:30:20 +00001520dnl -------------------------------
1521dnl Quagga sources should always be
1522dnl current wrt interfaces. Dont
1523dnl allow deprecated interfaces to
1524dnl be exposed.
1525dnl -------------------------------
1526AC_DEFINE(QUAGGA_NO_DEPRECATED_INTERFACES, 1, Hide deprecated interfaces)
1527
paul7ea487b2003-03-17 02:05:07 +00001528dnl ---------------------------
1529dnl Check htonl works correctly
1530dnl ---------------------------
1531AC_MSG_CHECKING(for working htonl)
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001532AC_CACHE_VAL(ac_cv_htonl_works,
1533 [AC_LINK_IFELSE([AC_LANG_PROGRAM([QUAGGA_INCLUDES],[htonl (0);])],
1534 [ac_cv_htonl_works=yes], [ac_cv_htonl_works=no])
1535 ]
1536)
paul7ea487b2003-03-17 02:05:07 +00001537AC_MSG_RESULT($ac_cv_htonl_works)
1538
paul14c17fd2004-11-07 22:34:23 +00001539AC_CONFIG_FILES([Makefile lib/Makefile zebra/Makefile ripd/Makefile
ajsd0199432004-12-22 14:03:52 +00001540 ripngd/Makefile bgpd/Makefile ospfd/Makefile watchquagga/Makefile
Paul Jakma336724d2015-05-11 15:13:31 +01001541 ospf6d/Makefile isisd/Makefile vtysh/Makefile
David Lamparterf281ab92013-02-26 16:21:20 +01001542 doc/Makefile ospfclient/Makefile tests/Makefile m4/Makefile
Everton Marques871dbcf2009-08-11 15:43:05 -03001543 pimd/Makefile
David Lamparter5bb7e4d2013-02-26 17:53:30 +01001544 tests/bgpd.tests/Makefile
David Lamparterc69905b2013-01-24 01:39:14 +01001545 tests/libzebra.tests/Makefile
David Lamparterf281ab92013-02-26 16:21:20 +01001546 redhat/Makefile
gdt69f1fc22004-08-27 15:57:35 +00001547 pkgsrc/Makefile
paul670bbf12004-11-12 09:05:00 +00001548 redhat/quagga.spec
gdtb7a97f82004-07-23 16:23:56 +00001549 lib/version.h
paul14c17fd2004-11-07 22:34:23 +00001550 doc/defines.texi
hassof695b012005-04-02 19:03:39 +00001551 isisd/topology/Makefile
gdtcbd04082004-08-31 18:16:36 +00001552 pkgsrc/bgpd.sh pkgsrc/ospf6d.sh pkgsrc/ospfd.sh
paulf31293a2004-11-12 09:27:04 +00001553 pkgsrc/ripd.sh pkgsrc/ripngd.sh pkgsrc/zebra.sh])
paul26275b02005-04-11 07:10:47 +00001554AC_CONFIG_FILES([solaris/Makefile])
1555
paul670bbf12004-11-12 09:05:00 +00001556AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl])
hasso48577192004-11-19 06:41:49 +00001557## Hack, but working solution to avoid rebuilding of quagga.info.
1558## It's already in CVS until texinfo 4.7 is more common.
paul14c17fd2004-11-07 22:34:23 +00001559AC_OUTPUT
paul7ea487b2003-03-17 02:05:07 +00001560
1561echo "
hassoc89f6492004-08-26 12:21:28 +00001562Quagga configuration
1563--------------------
1564quagga version : ${PACKAGE_VERSION}
Joachim Nilsson1080c132012-05-30 08:15:48 +02001565host operating system : ${host_os}
paul7ea487b2003-03-17 02:05:07 +00001566source code location : ${srcdir}
1567compiler : ${CC}
1568compiler flags : ${CFLAGS}
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001569make : ${MAKE-make}
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001570linker flags : ${LDFLAGS} ${LIBS} ${LIBCAP} ${LIBREADLINE} ${LIBM}
paule8f29842003-08-12 13:08:31 +00001571state file directory : ${quagga_statedir}
pauldc7a2bf2003-10-22 00:07:44 +00001572config file directory : `eval echo \`echo ${sysconfdir}\``
gdtd6b72f72003-12-03 17:24:27 +00001573example directory : `eval echo \`echo ${exampledir}\``
paul8d4aee52003-06-06 00:30:35 +00001574user to run as : ${enable_user}
1575group to run as : ${enable_group}
1576group for vty sockets : ${enable_vty_group}
gdtaa593d52003-12-22 20:15:53 +00001577config file mask : ${enable_configfile_mask}
1578log file mask : ${enable_logfile_mask}
pauldc7a2bf2003-10-22 00:07:44 +00001579
1580The above user and group must have read/write access to the state file
Paul Jakma105b8232006-05-28 08:02:41 +00001581directory and to the config files in the config file directory."
1582
1583if test x"$quagga_cv_gnu_make" = x"no"; then echo "
1584Warning: The ${MAKE-make} programme detected, either in your path or
1585via the MAKE variable, is not GNU Make. GNU make may be installed as
1586gmake on some systems. and is required to complete a build of Quagga
1587" > /dev/stderr
1588fi