blob: e601da5d9fe5a7cd98c5c92bf21162eb9a565dec [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
Paul Jakma3b0e3002017-01-23 15:14:08 +000010AC_INIT(Quagga, 1.1.1, [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
Avneesh Sachdevb2624482016-04-04 10:54:56 -070023# Disable portability warnings -- our automake code (in particular
24# common.am) uses some constructs specific to gmake.
25AM_INIT_AUTOMAKE([1.6 -Wno-portability])
Pawel Wieczorkiewicz2ab67a72016-04-01 12:54:38 +020026
27m4_ifndef([AM_SILENT_RULES], [m4_define([AM_SILENT_RULES],[])])
David Lampartercc813082015-02-10 11:39:39 +010028AM_SILENT_RULES([yes])
Hasso Tepper303bb002013-01-13 17:45:28 +000029AC_CONFIG_HEADERS(config.h)
paul7ea487b2003-03-17 02:05:07 +000030
David Lamparter0be793e2012-11-27 01:34:56 +000031AC_PATH_PROG(PERL, perl)
Jeremy Jackson7ec57362009-01-21 22:10:40 -050032AC_CHECK_PROG([GAWK],[gawk],[gawk],[not-in-PATH])
33if test "x$GAWK" = "xnot-in-PATH" ; then
34 AC_MSG_ERROR([GNU awk is required for lib/memtype.h made by memtypes.awk.
35BSD awk complains: awk: gensub doesn't support backreferences (subst "\1") ])
36fi
paul03ecfb62005-04-16 15:38:23 +000037AC_ARG_VAR([GAWK],[GNU AWK])
38
gdtd6b72f72003-12-03 17:24:27 +000039dnl default is to match previous behavior
gdtc4f0efe2003-12-04 15:39:25 +000040exampledir=${sysconfdir}
gdtd6b72f72003-12-03 17:24:27 +000041AC_ARG_ENABLE([exampledir],
David Lamparterb6fa7602014-06-28 22:15:59 +020042 AS_HELP_STRING([--enable-exampledir],
gdtd6b72f72003-12-03 17:24:27 +000043 [specify alternate directory for examples]),
44 exampledir="$enableval",)
gdtc4f0efe2003-12-04 15:39:25 +000045dnl XXX add --exampledir to autoconf standard directory list somehow
gdtd6b72f72003-12-03 17:24:27 +000046AC_SUBST(exampledir)
47
gdtcbd04082004-08-31 18:16:36 +000048dnl default is to match previous behavior
49pkgsrcrcdir=""
50pkgsrcdir=""
51AC_ARG_ENABLE([pkgsrcrcdir],
David Lamparterb6fa7602014-06-28 22:15:59 +020052 AS_HELP_STRING([--enable-pkgsrcrcdir],
gdtcbd04082004-08-31 18:16:36 +000053 [specify directory for rc.d scripts]),
54 pkgsrcrcdir="$enableval"; pkgsrcdir="pkgsrc",)
55dnl XXX add --pkgsrcrcdir to autoconf standard directory list somehow
56AC_SUBST(pkgsrcdir)
57AC_SUBST(pkgsrcrcdir)
58
paul7ea487b2003-03-17 02:05:07 +000059dnl ------------
60dnl Check CFLAGS
61dnl ------------
62AC_ARG_WITH(cflags,
63[ --with-cflags Set CFLAGS for use in compilation.])
64if test "x$with_cflags" != "x" ; then
65 CFLAGS="$with_cflags" ; cflags_specified=yes ;
66elif test -n "$CFLAGS" ; then
67 cflags_specified=yes ;
68fi
69
hasso1969e4b2005-03-27 13:07:23 +000070dnl --------------------
71dnl Check CC and friends
72dnl --------------------
Paul P Komkoff Jr46bc0e42008-08-13 16:17:04 +010073AC_LANG([C])
paul7ea487b2003-03-17 02:05:07 +000074AC_PROG_CC
hasso1969e4b2005-03-27 13:07:23 +000075AC_PROG_CPP
Paul P Komkoff Jr46bc0e42008-08-13 16:17:04 +010076AM_PROG_CC_C_O
Paul Jakmaf9f47312016-02-16 11:30:33 +000077AC_PROG_RANLIB
hasso1969e4b2005-03-27 13:07:23 +000078AC_PROG_EGREP
Greg Troxel553bdfe2007-02-06 20:10:35 +000079
80dnl autoconf 2.59 appears not to support AC_PROG_SED
81dnl AC_PROG_SED
82AC_CHECK_PROG([SED],[sed],[sed],[/bin/false])
hasso1969e4b2005-03-27 13:07:23 +000083
Paul Jakmafa482832012-03-08 13:51:21 +000084dnl pdflatex and latexmk are needed to build HACKING.pdf
85AC_CHECK_PROG([PDFLATEX],[pdflatex],[pdflatex],[/bin/false])
86AC_CHECK_PROG([LATEXMK],[latexmk],[latexmk],[/bin/false])
87if test "x$PDFLATEX" = "x/bin/false" -o "x$LATEXMK" = "x/bin/false"; then
88 AC_MSG_WARN([Will not be able to make PDF versions of TeX documents])
89else
90 HAVE_LATEX=true
91fi
92AM_CONDITIONAL([HAVE_LATEX], [test "x$HAVE_LATEX" = "xtrue"])
93
David Lamparter3a7e83c2015-03-03 09:55:51 +010094if test "x${GCC}" != "xyes" ; then
paul6a4b8832005-11-26 08:28:00 +000095 AC_MSG_CHECKING([whether we are using SunPro compiler])
96 AC_EGREP_CPP([^__SUNPRO_C.*0x5(7|8|9)], ["__SUNPRO_C" __SUNPRO_C],
97 [AC_MSG_RESULT([no])],
98 [COMPILER="SUNPRO"
99 AC_MSG_RESULT([yes])]
100 )
101fi
paul7ea487b2003-03-17 02:05:07 +0000102
paula49c0ff2004-09-30 06:08:58 +0000103dnl ---------------------------------------------
paul7ea487b2003-03-17 02:05:07 +0000104dnl If CLFAGS doesn\'t exist set default value
paula49c0ff2004-09-30 06:08:58 +0000105dnl AC_PROG_CC will have set minimal default
106dnl already, eg "-O2 -g" for gcc, "-g" for others
paul27eebb32004-07-22 18:16:59 +0000107dnl (Wall is gcc specific... have to make sure
108dnl gcc is being used before setting it)
109dnl
paul6a4b8832005-11-26 08:28:00 +0000110dnl Sun Studio 10 / SunPro 5.7 is also supported,
111dnl so lets set some sane CFLAGS for it.
112dnl ---------------------------------------------
hasso1969e4b2005-03-27 13:07:23 +0000113
David Lamparter3a7e83c2015-03-03 09:55:51 +0100114AC_USE_SYSTEM_EXTENSIONS()
115AC_DEFUN([AC_C_FLAG], [{
116 AC_LANG_PUSH(C)
117 ac_c_flag_save="$CFLAGS"
118 CFLAGS="$CFLAGS $1"
119 AC_MSG_CHECKING([[whether $CC supports $1]])
120 AC_COMPILE_IFELSE(
121 [AC_LANG_PROGRAM([[]])],
122 [
123 AC_MSG_RESULT([yes])
124 m4_if([$3], [], [], [
125 CFLAGS="$ac_c_flag_save"
126 $3
127 ])
128 ], [
129 CFLAGS="$ac_c_flag_save"
130 AC_MSG_RESULT([no])
131 $2
132 ])
133 AC_LANG_POP(C)
134 }])
135
paul6a4b8832005-11-26 08:28:00 +0000136AC_MSG_CHECKING([whether to set a default CFLAGS])
137if test "x${cflags_specified}" = "x" ; then
138 case ${COMPILER} in
paul6a4b8832005-11-26 08:28:00 +0000139 "SUNPRO")
David Lamparter3a7e83c2015-03-03 09:55:51 +0100140 CFLAGS="-xO4 -v -g -xspace -xcode=pic32 -xstrconst -xc99"
141 AC_MSG_RESULT([SunPro default])
142 ;;
paul6a4b8832005-11-26 08:28:00 +0000143 *)
David Lamparter3a7e83c2015-03-03 09:55:51 +0100144 AC_MSG_RESULT([autodetecting])
145
146 AC_C_FLAG([-diag-error 10006])
147 AC_C_FLAG([-std=gnu99])
148 AC_C_FLAG([-g])
149 AC_C_FLAG([-Os], [
150 AC_C_FLAG([-O2])
151 ])
Paul Jakma52c0bc72015-08-20 21:30:17 +0100152 AC_C_FLAG([-fpie])
David Lamparter3a7e83c2015-03-03 09:55:51 +0100153 AC_C_FLAG([-fno-omit-frame-pointer])
154 AC_C_FLAG([-Wall])
155 AC_C_FLAG([-Wextra])
156 AC_C_FLAG([-Wmissing-prototypes])
157 AC_C_FLAG([-Wmissing-declarations])
158 AC_C_FLAG([-Wpointer-arith])
159 AC_C_FLAG([-Wbad-function-cast])
160 AC_C_FLAG([-Wwrite-strings])
161 if test x"${enable_gcc_ultra_verbose}" = x"yes" ; then
162 AC_C_FLAG([-Wcast-qual])
163 AC_C_FLAG([-Wstrict-prototypes])
164 AC_C_FLAG([-Wmissing-noreturn])
165 AC_C_FLAG([-Wmissing-format-attribute])
166 AC_C_FLAG([-Wunreachable-code])
167 AC_C_FLAG([-Wpacked])
168 AC_C_FLAG([-Wpadded])
169 else
170 AC_C_FLAG([-Wno-unused-result])
171 fi
172 AC_C_FLAG([-Wno-unused-parameter])
173 AC_C_FLAG([-Wno-missing-field-initializers])
174 # ICC emits a broken warning for const char *x = a ? "b" : "c";
175 # for some reason the string consts get 'promoted' to char *,
176 # triggering a const to non-const conversion warning.
177 AC_C_FLAG([-diag-disable 3179])
paul6a4b8832005-11-26 08:28:00 +0000178 ;;
179 esac
180else
181 AC_MSG_RESULT([CFLAGS supplied by user])
hasso1969e4b2005-03-27 13:07:23 +0000182fi
183
David Lamparterc0bedeb2015-03-03 10:00:43 +0100184if test x"${enable_werror}" = x"yes" ; then
185 WERROR="-Werror"
186fi
187AC_SUBST(WERROR)
188
paul7ea487b2003-03-17 02:05:07 +0000189dnl --------------
190dnl Check programs
191dnl --------------
paul7ea487b2003-03-17 02:05:07 +0000192AC_PROG_INSTALL
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000193AC_PROG_LN_S
paul7ea487b2003-03-17 02:05:07 +0000194AC_PROG_MAKE_SET
195AC_CHECK_TOOL(AR, ar)
paul7ea487b2003-03-17 02:05:07 +0000196
Paul Jakma105b8232006-05-28 08:02:41 +0000197dnl ---------------------------
198dnl We, perhaps unfortunately,
199dnl depend on GNU Make specific
200dnl constructs.
201dnl Give the user a warning if
202dnl not GNU Make.
203dnl ---------------------------
204AC_CACHE_CHECK([if ${MAKE-make} is GNU make], [quagga_cv_gnu_make],
205 [quagga_cv_gnu_make=no
206 if ${MAKE-make} --version 2>/dev/null | \
207 grep '^GNU Make ' >/dev/null ; then
208 quagga_cv_gnu_make=yes;
209 fi
210 ]
211)
212
Paul Jakmad46d2a22007-05-10 16:53:04 +0000213dnl -----------------
214dnl System extensions
215dnl -----------------
Paul Jakmad46d2a22007-05-10 16:53:04 +0000216AC_GNU_SOURCE
paul7ea487b2003-03-17 02:05:07 +0000217
gdt87efd642004-06-30 17:36:11 +0000218dnl -------
219dnl libtool
220dnl -------
Paul Jakma52c0bc72015-08-20 21:30:17 +0100221LT_INIT
gdt87efd642004-06-30 17:36:11 +0000222
paul7ea487b2003-03-17 02:05:07 +0000223dnl ----------------------
224dnl Packages configuration
225dnl ----------------------
Joachim Nilsson1080c132012-05-30 08:15:48 +0200226AC_ARG_WITH(pkg-extra-version,
227 AS_HELP_STRING([--with-pkg-extra-version=VER], [add extra version field, for packagers/distributions]),
228 [EXTRAVERSION=$withval],)
David Lamparter0be793e2012-11-27 01:34:56 +0000229AC_ARG_WITH(pkg-git-version,
230 AS_HELP_STRING([--with-pkg-git-version], [add git information to MOTD and build version string]),
David Lampartera16dcf72012-12-13 11:20:50 +0100231 [ test "x$withval" != "xno" && with_pkg_git_version="yes" ])
paul7ea487b2003-03-17 02:05:07 +0000232AC_ARG_ENABLE(vtysh,
Donald Sharpe6756782015-07-16 21:18:34 -0400233 AS_HELP_STRING([--disable-vtysh], [do not build integrated vty shell for Quagga]))
Joakim Tjernlundcbcd9bf2009-02-16 09:40:39 +0100234AC_ARG_ENABLE(doc,
David Lamparterb6fa7602014-06-28 22:15:59 +0200235 AS_HELP_STRING([--disable-doc], [do not build docs]))
paul7ea487b2003-03-17 02:05:07 +0000236AC_ARG_ENABLE(zebra,
David Lamparterb6fa7602014-06-28 22:15:59 +0200237 AS_HELP_STRING([--disable-zebra], [do not build zebra daemon]))
paul7ea487b2003-03-17 02:05:07 +0000238AC_ARG_ENABLE(bgpd,
David Lamparterb6fa7602014-06-28 22:15:59 +0200239 AS_HELP_STRING([--disable-bgpd], [do not build bgpd]))
paul7ea487b2003-03-17 02:05:07 +0000240AC_ARG_ENABLE(ripd,
David Lamparterb6fa7602014-06-28 22:15:59 +0200241 AS_HELP_STRING([--disable-ripd], [do not build ripd]))
paul7ea487b2003-03-17 02:05:07 +0000242AC_ARG_ENABLE(ripngd,
David Lamparterb6fa7602014-06-28 22:15:59 +0200243 AS_HELP_STRING([--disable-ripngd], [do not build ripngd]))
paul7ea487b2003-03-17 02:05:07 +0000244AC_ARG_ENABLE(ospfd,
David Lamparterb6fa7602014-06-28 22:15:59 +0200245 AS_HELP_STRING([--disable-ospfd], [do not build ospfd]))
paul7ea487b2003-03-17 02:05:07 +0000246AC_ARG_ENABLE(ospf6d,
David Lamparterb6fa7602014-06-28 22:15:59 +0200247 AS_HELP_STRING([--disable-ospf6d], [do not build ospf6d]))
ajsd0199432004-12-22 14:03:52 +0000248AC_ARG_ENABLE(watchquagga,
David Lamparterb6fa7602014-06-28 22:15:59 +0200249 AS_HELP_STRING([--disable-watchquagga], [do not build watchquagga]))
jardin9e867fe2003-12-23 08:56:18 +0000250AC_ARG_ENABLE(isisd,
David Lamparter656a2c02015-02-09 11:36:10 +0100251 AS_HELP_STRING([--disable-isisd], [do not build isisd]))
Everton Marques871dbcf2009-08-11 15:43:05 -0300252AC_ARG_ENABLE(pimd,
Donald Sharpe6756782015-07-16 21:18:34 -0400253 AS_HELP_STRING([--disable-pimd], [do not build pimd]))
paul7ea487b2003-03-17 02:05:07 +0000254AC_ARG_ENABLE(bgp-announce,
David Lamparterb6fa7602014-06-28 22:15:59 +0200255 AS_HELP_STRING([--disable-bgp-announce,], [turn off BGP route announcement]))
paul7ea487b2003-03-17 02:05:07 +0000256AC_ARG_ENABLE(snmp,
David Lamparterb6fa7602014-06-28 22:15:59 +0200257 AS_HELP_STRING([--enable-snmp=ARG], [enable SNMP support (smux or agentx)]))
paul7ea487b2003-03-17 02:05:07 +0000258AC_ARG_WITH(libpam,
David Lamparterb6fa7602014-06-28 22:15:59 +0200259 AS_HELP_STRING([--with-libpam], [use libpam for PAM support in vtysh]))
hasso71c0fb52003-05-25 20:18:13 +0000260AC_ARG_ENABLE(tcp-zebra,
David Lamparterb6fa7602014-06-28 22:15:59 +0200261 AS_HELP_STRING([--enable-tcp-zebra], [enable TCP/IP socket connection between zebra and protocol daemon]))
paul1ef74ef2003-03-21 15:16:05 +0000262AC_ARG_ENABLE(ospfapi,
David Lamparterb6fa7602014-06-28 22:15:59 +0200263 AS_HELP_STRING([--disable-ospfapi], [do not build OSPFAPI to access the OSPF LSA Database]))
paul1ef74ef2003-03-21 15:16:05 +0000264AC_ARG_ENABLE(ospfclient,
David Lamparterb6fa7602014-06-28 22:15:59 +0200265 AS_HELP_STRING([--disable-ospfclient], [do not build OSPFAPI client for OSPFAPI,
266 (this is the default if --disable-ospfapi is set)]))
paul7ea487b2003-03-17 02:05:07 +0000267AC_ARG_ENABLE(multipath,
David Lamparterb6fa7602014-06-28 22:15:59 +0200268 AS_HELP_STRING([--enable-multipath=ARG], [enable multipath function, ARG must be digit]))
Paul P Komkoff Jrfe86b482008-08-13 16:56:05 +0100269AC_ARG_ENABLE(user,
David Lamparterb6fa7602014-06-28 22:15:59 +0200270 AS_HELP_STRING([--enable-user=USER], [user to run Quagga suite as (default quagga)]))
Paul P Komkoff Jrfe86b482008-08-13 16:56:05 +0100271AC_ARG_ENABLE(group,
David Lamparterb6fa7602014-06-28 22:15:59 +0200272 AS_HELP_STRING([--enable-group=GROUP], [group to run Quagga suite as (default quagga)]))
pauledd7c242003-06-04 13:59:38 +0000273AC_ARG_ENABLE(vty_group,
David Lamparterb6fa7602014-06-28 22:15:59 +0200274 AS_HELP_STRING([--enable-vty-group=ARG], [set vty sockets to have specified group as owner]))
gdtaa593d52003-12-22 20:15:53 +0000275AC_ARG_ENABLE(configfile_mask,
David Lamparterb6fa7602014-06-28 22:15:59 +0200276 AS_HELP_STRING([--enable-configfile-mask=ARG], [set mask for config files]))
gdtaa593d52003-12-22 20:15:53 +0000277AC_ARG_ENABLE(logfile_mask,
David Lamparterb6fa7602014-06-28 22:15:59 +0200278 AS_HELP_STRING([--enable-logfile-mask=ARG], [set mask for log files]))
pauledd7c242003-06-04 13:59:38 +0000279
hasso71c0fb52003-05-25 20:18:13 +0000280AC_ARG_ENABLE(rtadv,
David Lamparterb6fa7602014-06-28 22:15:59 +0200281 AS_HELP_STRING([--disable-rtadv], [disable IPV6 router advertisement feature]))
hassoca776982004-06-12 14:33:05 +0000282AC_ARG_ENABLE(irdp,
David Lamparterb6fa7602014-06-28 22:15:59 +0200283 AS_HELP_STRING([--enable-irdp], [enable IRDP server support in zebra]))
hassof695b012005-04-02 19:03:39 +0000284AC_ARG_ENABLE(isis_topology,
David Lamparterb6fa7602014-06-28 22:15:59 +0200285 AS_HELP_STRING([--enable-isis-topology], [enable IS-IS topology generator]))
hasso41d3fc92004-04-06 11:59:00 +0000286AC_ARG_ENABLE(capabilities,
David Lamparterb6fa7602014-06-28 22:15:59 +0200287 AS_HELP_STRING([--disable-capabilities], [disable using POSIX capabilities]))
Stephen Hemminger47f6aef2013-01-04 22:29:22 +0000288AC_ARG_ENABLE(rusage,
David Lamparterb6fa7602014-06-28 22:15:59 +0200289 AS_HELP_STRING([--disable-rusage], [disable using getrusage]))
paul6b6942f2004-10-22 04:55:05 +0000290AC_ARG_ENABLE(gcc_ultra_verbose,
David Lamparterb6fa7602014-06-28 22:15:59 +0200291 AS_HELP_STRING([--enable-gcc-ultra-verbose], [enable ultra verbose GCC warnings]))
Paul Jakma3453a712009-06-12 14:21:02 +0100292AC_ARG_ENABLE(linux24_tcp_md5,
David Lamparterb6fa7602014-06-28 22:15:59 +0200293 AS_HELP_STRING([--enable-linux24-tcp-md5], [enable support for old, Linux-2.4 RFC2385 patch]))
ajs3cade262004-12-29 17:50:22 +0000294AC_ARG_ENABLE(gcc-rdynamic,
David Lamparterb6fa7602014-06-28 22:15:59 +0200295 AS_HELP_STRING([--enable-gcc-rdynamic], [enable linking with -rdynamic for better backtraces (default if gcc)]))
David Lamparter8c99b4c2013-08-01 07:43:36 +0000296AC_ARG_ENABLE(backtrace,
David Lamparterb6fa7602014-06-28 22:15:59 +0200297 AS_HELP_STRING([--disable-backtrace,], [disable crash backtraces (default autodetect)]))
ajs924b9222005-04-16 17:11:24 +0000298AC_ARG_ENABLE(time-check,
David Lamparterb6fa7602014-06-28 22:15:59 +0200299 AS_HELP_STRING([--disable-time-check], [disable slow thread warning messages]))
Jeremy Jackson25f45882009-01-12 16:06:12 -0500300AC_ARG_ENABLE(pcreposix,
David Lamparterb6fa7602014-06-28 22:15:59 +0200301 AS_HELP_STRING([--enable-pcreposix], [enable using PCRE Posix libs for regex functions]))
Avneesh Sachdev5adc2522012-11-13 22:48:59 +0000302AC_ARG_ENABLE(fpm,
David Lamparterb6fa7602014-06-28 22:15:59 +0200303 AS_HELP_STRING([--enable-fpm], [enable Forwarding Plane Manager support]))
David Lamparterc0bedeb2015-03-03 10:00:43 +0100304AC_ARG_ENABLE(werror,
305 AS_HELP_STRING([--enable-werror], [enable -Werror (recommended for developers only)]))
Avneesh Sachdev07e5b642016-04-04 10:54:55 -0700306AC_ARG_ENABLE([protobuf],
307 AS_HELP_STRING([--enable-protobuf], [Enable experimental protobuf support]))
paul6b6942f2004-10-22 04:55:05 +0000308
Avneesh Sachdev7e4025c2016-03-11 12:21:24 -0800309AC_ARG_ENABLE([dev_build],
310 AS_HELP_STRING([--enable-dev-build], [build for development]))
311
David Lamparter8c99b4c2013-08-01 07:43:36 +0000312if test x"${enable_gcc_rdynamic}" != x"no" ; then
313 if test x"${enable_gcc_rdynamic}" = x"yes" -o x"$COMPILER" = x"GCC"; then
314 LDFLAGS="${LDFLAGS} -rdynamic"
315 fi
ajs3cade262004-12-29 17:50:22 +0000316fi
317
ajs924b9222005-04-16 17:11:24 +0000318if test x"${enable_time_check}" != x"no" ; then
319 if test x"${enable_time_check}" = x"yes" -o x"${enable_time_check}" = x ; then
320 AC_DEFINE(CONSUMED_TIME_CHECK,5000000,Consumed Time Check)
321 else
322 AC_DEFINE_UNQUOTED(CONSUMED_TIME_CHECK,$enable_time_check,Consumed Time Check)
323 fi
324fi
325
Avneesh Sachdev5adc2522012-11-13 22:48:59 +0000326if test "${enable_fpm}" = "yes"; then
327 AC_DEFINE(HAVE_FPM,,Forwarding Plane Manager support)
328fi
329
Avneesh Sachdev7e4025c2016-03-11 12:21:24 -0800330if test "x${enable_dev_build}" = "xyes"; then
331 AC_DEFINE(DEV_BUILD,,Build for development)
332fi
333AM_CONDITIONAL([DEV_BUILD], [test "x$enable_dev_build" = "xyes"])
334
Avneesh Sachdev07e5b642016-04-04 10:54:55 -0700335#
336# Logic for protobuf support.
337#
338if test "$enable_protobuf" = "yes"; then
339 have_protobuf=yes
340
341 # Check for protoc-c
342 AC_CHECK_PROG([PROTOC_C], [protoc-c], [protoc-c], [/bin/false])
343 if test "x$PROTOC_C" = "x/bin/false"; then
344 have_protobuf=no
345 else
346 found_protobuf_c=no
347 PKG_CHECK_MODULES([PROTOBUF_C], libprotobuf-c >= 0.14,
348 [found_protobuf_c=yes],
349 [AC_MSG_RESULT([pkg-config did not find libprotobuf-c])])
350
351 if test "x$found_protobuf_c" = "xyes"; then
352 LDFLAGS="$LDFLAGS $PROTOBUF_C_LIBS"
353 CFLAGS="$CFLAGS $PROTOBUF_C_CFLAGS"
354 else
355 AC_CHECK_HEADER([google/protobuf-c/protobuf-c.h], [],
356 [have_protobuf=no; AC_MSG_RESULT([Couldn't find google/protobuf-c.h])])
357 fi
358 fi
359fi
360
361# Fail if the user explicity enabled protobuf support and we couldn't
362# find the compiler or libraries.
363if test "x$have_protobuf" = "xno" && test "x$enable_protobuf" = "xyes"; then
364 AC_MSG_ERROR([Protobuf enabled explicitly but can't find libraries/tools])
365fi
366
367if test "x$have_protobuf" = "xyes"; then
368 AC_DEFINE(HAVE_PROTOBUF,, protobuf)
369fi
370
371AM_CONDITIONAL([HAVE_PROTOBUF], [test "x$have_protobuf" = "xyes"])
372
373#
374# End of logic for protobuf support.
375#
376
paul7ea487b2003-03-17 02:05:07 +0000377if test "${enable_tcp_zebra}" = "yes"; then
378 AC_DEFINE(HAVE_TCP_ZEBRA,,Use TCP for zebra communication)
379fi
380
Paul Jakma3453a712009-06-12 14:21:02 +0100381if test "${enable_linux24_tcp_md5}" = "yes"; then
382 AC_DEFINE(HAVE_TCP_MD5_LINUX24,,Old Linux 2.4 TCP MD5 Signature Patch)
383fi
384
gdtd2a0ccc2003-12-03 18:13:48 +0000385AC_MSG_CHECKING(if zebra should be configurable to send Route Advertisements)
386if test "${enable_rtadv}" != "no"; then
hasso71c0fb52003-05-25 20:18:13 +0000387 AC_MSG_RESULT(yes)
gdtd2a0ccc2003-12-03 18:13:48 +0000388 AC_DEFINE(HAVE_RTADV,,Enable IPv6 Routing Advertisement support)
paul2487bea2003-05-25 23:51:31 +0000389else
390 AC_MSG_RESULT(no)
hasso71c0fb52003-05-25 20:18:13 +0000391fi
paul7ea487b2003-03-17 02:05:07 +0000392
hassoca776982004-06-12 14:33:05 +0000393if test "${enable_irdp}" = "yes"; then
394 AC_DEFINE(HAVE_IRDP,, IRDP )
395fi
396
David Lamparter656a2c02015-02-09 11:36:10 +0100397if test "${enable_isisd}" != "no" && test "${enable_isis_topology}" = yes; then
hassof695b012005-04-02 19:03:39 +0000398 AC_DEFINE(TOPOLOGY_GENERATE,,Enable IS-IS topology generator code)
David Lamparteree1ac2d2012-07-19 12:58:59 +0200399 ISIS_TOPOLOGY_INCLUDES="-I\$(srcdir)/topology"
hassof695b012005-04-02 19:03:39 +0000400 ISIS_TOPOLOGY_DIR="topology"
401 ISIS_TOPOLOGY_LIB="./topology/libtopology.a"
402fi
403
404AC_SUBST(ISIS_TOPOLOGY_INCLUDES)
405AC_SUBST(ISIS_TOPOLOGY_DIR)
406AC_SUBST(ISIS_TOPOLOGY_LIB)
407
Jafar Al-Gharaibeha8f97902016-07-28 14:41:20 -0500408if test x"${enable_user}" = x"no"; then
409 enable_user=""
410else
411 if test x"${enable_user}" = x"yes" || test x"${enable_user}" = x""; then
412 enable_user="quagga"
413 fi
414 AC_DEFINE_UNQUOTED(QUAGGA_USER, "${enable_user}", Quagga User)
pauledd7c242003-06-04 13:59:38 +0000415fi
pauledd7c242003-06-04 13:59:38 +0000416
Jafar Al-Gharaibeha8f97902016-07-28 14:41:20 -0500417if test x"${enable_group}" = x"no"; then
418 enable_group=""
419else
420 if test x"${enable_group}" = x"yes" || test x"${enable_group}" = x""; then
421 enable_group="quagga"
422 fi
423 AC_DEFINE_UNQUOTED(QUAGGA_GROUP, "${enable_group}", Quagga Group)
pauledd7c242003-06-04 13:59:38 +0000424fi
pauledd7c242003-06-04 13:59:38 +0000425
426if test x"${enable_vty_group}" = x"yes" ; then
paul8d4aee52003-06-06 00:30:35 +0000427 AC_MSG_ERROR([--enable-vty-group requires a group as argument, not yes])
paul79cb2162003-06-06 12:19:53 +0000428elif test x"${enable_vty_group}" != x""; then
paul8d4aee52003-06-06 00:30:35 +0000429 if test x"${enable_vty_group}" != x"no"; then
pauledd7c242003-06-04 13:59:38 +0000430 AC_DEFINE_UNQUOTED(VTY_GROUP, "${enable_vty_group}", VTY Sockets Group)
431 fi
432fi
paul26275b02005-04-11 07:10:47 +0000433AC_SUBST([enable_user])
434AC_SUBST([enable_group])
435AC_SUBST([enable_vty_group])
pauledd7c242003-06-04 13:59:38 +0000436
gdtaa593d52003-12-22 20:15:53 +0000437enable_configfile_mask=${enable_configfile_mask:-0600}
438AC_DEFINE_UNQUOTED(CONFIGFILE_MASK, ${enable_configfile_mask}, Mask for config files)
439
440enable_logfile_mask=${enable_logfile_mask:-0600}
441AC_DEFINE_UNQUOTED(LOGFILE_MASK, ${enable_logfile_mask}, Mask for log files)
442
Donald Sharpd1839632015-12-09 08:24:44 -0500443MPATH_NUM=1
paul7ea487b2003-03-17 02:05:07 +0000444
445case "${enable_multipath}" in
Donald Sharpd1839632015-12-09 08:24:44 -0500446 0)
447 MPATH_NUM=64
448 ;;
449 [[1-9]|[1-9][0-9]|[1-9][0-9][0-9]])
450 MPATH_NUM="${enable_multipath}"
paul7ea487b2003-03-17 02:05:07 +0000451 ;;
452 "")
453 ;;
454 *)
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000455 AC_MSG_FAILURE([Please specify digit to enable multipath ARG])
paul7ea487b2003-03-17 02:05:07 +0000456 ;;
457esac
458
Donald Sharpd1839632015-12-09 08:24:44 -0500459AC_DEFINE_UNQUOTED(MULTIPATH_NUM, $MPATH_NUM, Maximum number of paths for a route)
paul7ea487b2003-03-17 02:05:07 +0000460
Joachim Nilsson1080c132012-05-30 08:15:48 +0200461dnl -----------------------------------
462dnl Add extra version string to package
463dnl name, string and version fields.
464dnl -----------------------------------
465if test "x${EXTRAVERSION}" != "x" ; then
David Lamparter0be793e2012-11-27 01:34:56 +0000466 VERSION="${VERSION}${EXTRAVERSION}"
467 PACKAGE_VERSION="${PACKAGE_VERSION}${EXTRAVERSION}"
468 PACKAGE_STRING="${PACKAGE_STRING}${EXTRAVERSION}"
Joachim Nilsson1080c132012-05-30 08:15:48 +0200469fi
470
David Lampartera16dcf72012-12-13 11:20:50 +0100471if test "x$with_pkg_git_version" = "xyes"; then
472 if test -d "${srcdir}/.git"; then
473 AC_DEFINE(GIT_VERSION, [1], [include git version info])
474 else with_pkg_git_version="no"
475 AC_MSG_WARN([--with-pkg-git-version given, but this is not a git checkout])
476 fi
477fi
478AM_CONDITIONAL([GIT_VERSION], [test "x$with_pkg_git_version" = "xyes"])
David Lamparter0be793e2012-11-27 01:34:56 +0000479
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000480dnl ------------------------------------
481dnl Check C keywords and standard types
482dnl ------------------------------------
483AC_C_CONST
484AC_C_INLINE
485AC_C_RESTRICT
486AC_C_VOLATILE
pauldc7a2bf2003-10-22 00:07:44 +0000487AC_HEADER_STDC
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000488AC_HEADER_TIME
489AC_HEADER_SYS_WAIT
Paul Jakmae8441a82015-09-15 16:15:27 +0100490AC_HEADER_STDBOOL
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000491dnl AC_TYPE_PID_T
492AC_TYPE_UID_T
493AC_TYPE_MODE_T
494AC_TYPE_SIZE_T
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000495AC_STRUCT_TM
pauldc7a2bf2003-10-22 00:07:44 +0000496
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000497dnl -------------------------
498dnl Check other header files.
499dnl -------------------------
500AC_CHECK_HEADERS([stropts.h sys/ksym.h sys/times.h sys/select.h \
501 sys/types.h linux/version.h netdb.h asm/types.h \
Timo Teräs16ffb262014-07-29 09:41:54 +0000502 sys/cdefs.h sys/param.h limits.h signal.h \
Paul Jakma7e49a4f2016-08-02 13:36:03 +0100503 sys/socket.h netinet/in.h time.h sys/time.h features.h])
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000504
505dnl Utility macro to avoid retyping includes all the time
506m4_define([QUAGGA_INCLUDES],
507[#ifdef SUNOS_5
508#define _XPG4_2
509#define __EXTENSIONS__
510#endif
511#include <stdio.h>
512#if STDC_HEADERS
513# include <stdlib.h>
514# include <stddef.h>
515#else
516# if HAVE_STDLIB_H
517# include <stdlib.h>
518# endif
519#endif
520#if HAVE_SYS_TYPES_H
521# include <sys/types.h>
522#endif
523/* sys/conf.h depends on param.h on FBSD at least */
524#if HAVE_SYS_PARAM_H
525# include <sys/param.h>
526#endif
527/* Required for MAXSIG */
528#if HAVE_SIGNAL_H
529# include <signal.h>
530#endif
531#if HAVE_SYS_SOCKET_H
532# include <sys/socket.h>
533#endif
Hasso Tepperea057672013-01-13 17:45:29 +0000534#ifdef __APPLE__
535# define __APPLE_USE_RFC_3542
536#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000537#if HAVE_NETINET_IN_H
538# include <netinet/in.h>
539#endif
Paul Jakma6511cab2009-06-18 17:38:01 +0100540#ifdef TIME_WITH_SYS_TIME
541# include <sys/time.h>
542# include <time.h>
543#else
544# ifdef HAVE_SYS_TIME_H
545# include <sys/time.h>
546# else
547# include <time.h>
548# endif
549#endif /* TIME_WITH_SYS_TIME */
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000550])dnl
551
Denis Ovsienko2b43bf22011-07-14 16:30:08 +0400552dnl HAVE_NET_IF_H must be discovered by the time the longer AC_CHECK_HEADERS
553dnl round below execution begins, otherwise it doesn't properly detect
554dnl HAVE_NETINET6_IN6_VAR_H, HAVE_NET_IF_VAR_H and HAVE_STRUCT_IN6_ALIASREQ
555dnl on FreeBSD (BZ#408).
556
557AC_CHECK_HEADERS([net/if.h], [], [], QUAGGA_INCLUDES)
558
559m4_define([QUAGGA_INCLUDES],
560QUAGGA_INCLUDES
561[#if HAVE_NET_IF_H
562# include <net/if.h>
563#endif
564])dnl
565
566dnl Same applies for HAVE_NET_IF_VAR_H, which HAVE_NETINET6_ND6_H and
567dnl HAVE_NETINET_IN_VAR_H depend upon. But if_var.h depends on if.h, hence
568dnl an additional round for it.
569
570AC_CHECK_HEADERS([net/if_var.h], [], [], QUAGGA_INCLUDES)
571
572m4_define([QUAGGA_INCLUDES],
573QUAGGA_INCLUDES
574[#if HAVE_NET_IF_VAR_H
575# include <net/if_var.h>
576#endif
577])dnl
578
579AC_CHECK_HEADERS([sys/un.h netinet/in_systm.h netinet/in_var.h \
580 net/if_dl.h net/netopt.h net/route.h \
Paul Jakma11770e12007-06-22 16:14:42 +0000581 inet/nd.h arpa/inet.h netinet/ip_icmp.h \
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000582 fcntl.h stddef.h sys/ioctl.h syslog.h wchar.h wctype.h \
583 sys/sysctl.h sys/sockio.h kvm.h sys/conf.h],
584 [], [], QUAGGA_INCLUDES)
585
586AC_CHECK_HEADERS([ucontext.h], [], [],
587[#ifndef __USE_GNU
588#define __USE_GNU
589#endif /* __USE_GNU */
590QUAGGA_INCLUDES
591])
592
Joakim Tjernlundb166ea22009-06-25 16:40:06 +0100593m4_define([UCONTEXT_INCLUDES],
594[#include <ucontext.h>])dnl
595
596AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.uc_regs],
597 [], [], [UCONTEXT_INCLUDES])
598AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.regs],
599 [AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.regs.nip],
600 [], [], [UCONTEXT_INCLUDES])],
601 [], [UCONTEXT_INCLUDES])
602AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.gregs],
603 [], [], [UCONTEXT_INCLUDES])
604
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000605m4_define([QUAGGA_INCLUDES],
606QUAGGA_INCLUDES
Denis Ovsienko2b43bf22011-07-14 16:30:08 +0400607[#if HAVE_SYS_UN_H
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000608# include <sys/un.h>
609#endif
610#if HAVE_NETINET_IN_SYSTM_H
611# include <netinet/in_systm.h>
612#endif
613#if HAVE_NETINET_IN_VAR_H
614# include <netinet/in_var.h>
615#endif
616#if HAVE_NET_IF_DL_H
617# include <net/if_dl.h>
618#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000619#if HAVE_NET_NETOPT_H
620# include <net/netopt.h>
621#endif
622#if HAVE_NET_ROUTE_H
623# include <net/route.h>
624#endif
625#if HAVE_INET_ND_H
626# include <inet/nd.h>
627#endif
628#if HAVE_ARPA_INET_H
629# include <arpa/inet.h>
630#endif
Paul Jakma11770e12007-06-22 16:14:42 +0000631/* Required for IDRP */
632#if HAVE_NETINET_IP_ICMP_H
633# include <netinet/ip_icmp.h>
634#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000635])dnl
pauldc7a2bf2003-10-22 00:07:44 +0000636
gdtfa3232e2003-12-03 17:52:30 +0000637dnl V6 headers are checked below, after we check for v6
paul7ea487b2003-03-17 02:05:07 +0000638
paul7ea487b2003-03-17 02:05:07 +0000639dnl Some systems (Solaris 2.x) require libnsl (Network Services Library)
640case "$host" in
paulafd8a122005-03-12 06:36:10 +0000641 [*-sunos5.[6-7]*] | [*-solaris2.[6-7]*])
paul7ea487b2003-03-17 02:05:07 +0000642 opsys=sol2-6
paulafd8a122005-03-12 06:36:10 +0000643 AC_DEFINE(SUNOS_56, 1, SunOS 5.6 to 5.7)
paul19877dd2004-05-11 10:49:35 +0000644 AC_DEFINE(SUNOS_5, 1, SunOS 5)
paul7ea487b2003-03-17 02:05:07 +0000645 AC_CHECK_LIB(xnet, main)
646 CURSES=-lcurses
David Lampartere8d0d242014-06-28 22:07:41 +0200647 SOLARIS="solaris"
paul7ea487b2003-03-17 02:05:07 +0000648 ;;
paul1b73de82005-04-10 16:31:51 +0000649 [*-sunos5.[8-9]] \
650 | [*-sunos5.1[0-9]] \
651 | [*-sunos5.1[0-9].[0-9]] \
652 | [*-solaris2.[8-9]] \
653 | [*-solaris2.1[0-9]] \
654 | [*-solaris2.1[0-9].[0-9]])
paulafd8a122005-03-12 06:36:10 +0000655 opsys=sol8
Paul Jakmafb66b292006-05-28 08:26:15 +0000656 AC_DEFINE(SUNOS_59, 1, [SunOS 5.8 up])
657 AC_DEFINE(SUNOS_5, 1, [SunOS 5])
paul19877dd2004-05-11 10:49:35 +0000658 AC_CHECK_LIB(socket, main)
659 AC_CHECK_LIB(nsl, main)
paul1b73de82005-04-10 16:31:51 +0000660 AC_CHECK_LIB(umem, main)
Paul Jakmafb66b292006-05-28 08:26:15 +0000661 AC_CHECK_FUNCS([printstack],
662 [AC_DEFINE([HAVE_PRINTSTACK],1,[Solaris printstack])
663 AC_DEFINE([HAVE_STACK_TRACE],1,[Stack symbols decode functionality])
664 ])
paul19877dd2004-05-11 10:49:35 +0000665 CURSES=-lcurses
David Lampartere8d0d242014-06-28 22:07:41 +0200666 SOLARIS="solaris"
paul19877dd2004-05-11 10:49:35 +0000667 ;;
paul7ea487b2003-03-17 02:05:07 +0000668 *-sunos5* | *-solaris2*)
paul19877dd2004-05-11 10:49:35 +0000669 AC_DEFINE(SUNOS_5,,SunOS 5, Unknown SunOS)
paul7ea487b2003-03-17 02:05:07 +0000670 AC_CHECK_LIB(socket, main)
671 AC_CHECK_LIB(nsl, main)
672 CURSES=-lcurses
David Lampartere8d0d242014-06-28 22:07:41 +0200673 SOLARIS="solaris"
paul7ea487b2003-03-17 02:05:07 +0000674 ;;
hassoc45eb832005-02-19 13:58:06 +0000675 *-linux*)
paul7ea487b2003-03-17 02:05:07 +0000676 opsys=gnu-linux
677 AC_DEFINE(GNU_LINUX,,GNU Linux)
678 ;;
paul7ea487b2003-03-17 02:05:07 +0000679 *-openbsd*)
680 opsys=openbsd
681 AC_DEFINE(OPEN_BSD,,OpenBSD)
682 ;;
paul7ea487b2003-03-17 02:05:07 +0000683esac
684
Paul Jakma62c9f502009-07-19 17:33:21 +0100685AC_SYS_LARGEFILE
686
paul7ea487b2003-03-17 02:05:07 +0000687dnl ---------------------
688dnl Integrated VTY option
689dnl ---------------------
690case "${enable_vtysh}" in
Donald Sharpe6756782015-07-16 21:18:34 -0400691 "no") VTYSH="";;
692 *) VTYSH="vtysh";
paul7ea487b2003-03-17 02:05:07 +0000693 AC_DEFINE(VTYSH,,VTY shell)
gdtfc9d0742004-06-30 14:25:12 +0000694dnl Vtysh uses libreadline, which looks for termcap functions at
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000695dnl configure time. We follow readlines search order.
gdtfc9d0742004-06-30 14:25:12 +0000696dnl The required procedures are in libtermcap on NetBSD, in
697dnl [TODO] on Linux, and in [TODO] on Solaris.
hassoc0689392005-08-25 12:00:58 +0000698 AC_CHECK_LIB(termcap, tputs, LIBREADLINE="$LIBREADLINE -ltermcap",
paula9694592005-08-25 14:50:05 +0000699 [AC_CHECK_LIB(tinfo, tputs, LIBREADLINE="$LIBREADLINE -ltinfo",
700 [AC_CHECK_LIB(curses, tputs, LIBREADLINE="$LIBREADLINE -lcurses",
701 [AC_CHECK_LIB(ncurses, tputs,
702 LIBREADLINE="$LIBREADLINE -lncurses")]
703 )]
704 )]
705 )
Thomas Petazzoni64f8c7d2016-08-21 09:23:04 +0300706 AC_CHECK_LIB(readline, main, LIBREADLINE="-lreadline $LIBREADLINE",,
paula9694592005-08-25 14:50:05 +0000707 "$LIBREADLINE")
paul7ea487b2003-03-17 02:05:07 +0000708 if test $ac_cv_lib_readline_main = no; then
gdtfc9d0742004-06-30 14:25:12 +0000709 AC_MSG_ERROR([vtysh needs libreadline but was not found and usable on your system.])
paul7ea487b2003-03-17 02:05:07 +0000710 fi
711 AC_CHECK_HEADER(readline/history.h)
712 if test $ac_cv_header_readline_history_h = no;then
713 AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
714 fi
paula9694592005-08-25 14:50:05 +0000715 AC_CHECK_LIB(readline, rl_completion_matches,
716 LIBREADLINE="$LIBREADLINE",, "$LIBREADLINE")
paul3d3de8c2003-05-23 10:33:49 +0000717 if test $ac_cv_lib_readline_rl_completion_matches = no; then
718 AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
719 fi
720 ;;
paul7ea487b2003-03-17 02:05:07 +0000721 "no" ) VTYSH="";;
paul7ea487b2003-03-17 02:05:07 +0000722esac
hassoc0689392005-08-25 12:00:58 +0000723AC_SUBST(LIBREADLINE)
David Wardf027d332012-04-30 11:36:15 -0400724AM_CONDITIONAL(VTYSH, test "x$VTYSH" = "xvtysh")
paul7ea487b2003-03-17 02:05:07 +0000725
726dnl ----------
727dnl PAM module
Denis Ovsienko61599282011-07-15 00:24:15 +0400728dnl
729dnl Quagga detects the PAM library it is built against by checking for a
730dnl functional pam_misc.h (Linux-PAM) or openpam.h (OpenPAM) header. pam_misc.h
731dnl is known to #include pam_appl.h, the standard header of a PAM library, and
732dnl openpam.h doesn't do that, although depends on the header too. Hence a
733dnl little assistance to AC_CHECK_HEADER is necessary for the proper detection
734dnl of OpenPAM.
paul7ea487b2003-03-17 02:05:07 +0000735dnl ----------
736if test "$with_libpam" = "yes"; then
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000737 AC_CHECK_HEADER([security/pam_misc.h],
738 [AC_DEFINE(HAVE_PAM_MISC_H,,Have pam_misc.h)
739 AC_DEFINE(PAM_CONV_FUNC,misc_conv,Have misc_conv)
740 pam_conv_func="misc_conv"
741 ],
742 [], QUAGGA_INCLUDES)
743 AC_CHECK_HEADER([security/openpam.h],
744 [AC_DEFINE(HAVE_OPENPAM_H,,Have openpam.h)
745 AC_DEFINE(PAM_CONV_FUNC,openpam_ttyconv,Have openpam_ttyconv)
746 pam_conv_func="openpam_ttyconv"
747 ],
Denis Ovsienko61599282011-07-15 00:24:15 +0400748 [], QUAGGA_INCLUDES[#include <security/pam_appl.h>])
paul24cd4352003-05-06 12:16:27 +0000749 if test -z "$ac_cv_header_security_pam_misc_h$ac_cv_header_security_openpam_h" ; then
750 AC_MSG_WARN([*** pam support will not be built ***])
751 with_libpam="no"
752 fi
753fi
754
755if test "$with_libpam" = "yes"; then
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000756dnl took this test from proftpds configure.in and suited to our needs
paul7ea487b2003-03-17 02:05:07 +0000757dnl -------------------------------------------------------------------------
758dnl
759dnl This next check looks funky due to a linker problem with some versions
760dnl of the PAM library. Prior to 0.72 release, the Linux PAM shared library
761dnl omitted requiring libdl linking information. PAM-0.72 or better ships
762dnl with RedHat 6.2 and Debian 2.2 or better.
763AC_CHECK_LIB(pam, pam_start,
paul24cd4352003-05-06 12:16:27 +0000764 [AC_CHECK_LIB(pam, $pam_conv_func,
paul7ea487b2003-03-17 02:05:07 +0000765 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
766 LIBPAM="-lpam"],
767 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
768 LIBPAM="-lpam -lpam_misc"]
769 )
770 ],
771
772 [AC_CHECK_LIB(pam, pam_end,
paul24cd4352003-05-06 12:16:27 +0000773 [AC_CHECK_LIB(pam, $pam_conv_func,
paula159ed92003-06-04 11:01:45 +0000774 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
paul7ea487b2003-03-17 02:05:07 +0000775 LIBPAM="-lpam -ldl"],
paula159ed92003-06-04 11:01:45 +0000776 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
paul7ea487b2003-03-17 02:05:07 +0000777 LIBPAM="-lpam -ldl -lpam_misc"]
778 )
779 ],AC_MSG_WARN([*** pam support will not be built ***]),
780 [-ldl])
781 ]
782)
783fi
784AC_SUBST(LIBPAM)
785
786dnl -------------------------------
787dnl Endian-ness check
788dnl -------------------------------
789AC_WORDS_BIGENDIAN
790
791dnl -------------------------------
792dnl check the size in byte of the C
793dnl -------------------------------
794dnl AC_CHECK_SIZEOF(char)
795dnl AC_CHECK_SIZEOF(int)
796dnl AC_CHECK_SIZEOF(short)
797dnl AC_CHECK_SIZEOF(long)
798
799dnl ----------------------------
800dnl check existance of functions
801dnl ----------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000802AC_FUNC_CHOWN
803AC_FUNC_FNMATCH
804AC_FUNC_FORK
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000805AC_FUNC_MEMCMP
806AC_FUNC_MKTIME
807AC_FUNC_STRFTIME
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000808AC_FUNC_STAT
809AC_FUNC_SELECT_ARGTYPES
810AC_FUNC_STRFTIME
Paul Jakmad46d2a22007-05-10 16:53:04 +0000811dnl Avoid AC_FUNC_STRNLEN because it pulls in AC_SYSTEM_EXTENSIONS which
812dnl can lead to strange side effects. So we just check for strnlen
813dnl directly, see below.
Paul Jakma2b5cb412007-05-10 17:05:16 +0000814dnl AC_FUNC_STRNLENdnl
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000815AC_FUNC_VPRINTF
816
817dnl -------------------------------
818dnl bgpd needs pow() and hence libm
819dnl -------------------------------
820TMPLIBS="$LIBS"
821AC_CHECK_HEADER([math.h],
822 [AC_CHECK_LIB([m], [pow],
823 [LIBM="-lm"
824 LIBS="$LIBS $LIBM"
825 AC_DEFINE(HAVE_LIBM,, Have libm)
826 AC_CHECK_FUNCS(pow,[],[LIBM=""])
827 ])
828])
829if test x"$LIBM" = x ; then
830 AC_MSG_WARN([Unable to find working pow function - bgpd may not link])
831fi
832LIBS="$TMPLIBS"
833AC_SUBST(LIBM)
834
835dnl ---------------
836dnl other functions
837dnl ---------------
838AC_CHECK_FUNCS([dup2 ftruncate getcwd gethostbyname getpagesize gettimeofday \
Paul Jakmad46d2a22007-05-10 16:53:04 +0000839 inet_ntoa inet_aton strnlen \
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000840 memchr memmove memset select socket \
841 strcasecmp strchr strcspn strdup strerror \
842 strncasecmp strndup strrchr strspn strstr \
843 strtol strtoul strlcat strlcpy \
844 daemon snprintf vsnprintf \
845 if_nametoindex if_indextoname getifaddrs \
David Lamparter12bbd622015-09-15 02:26:44 -0700846 uname fcntl getgrouplist])
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000847
paul7ea487b2003-03-17 02:05:07 +0000848
Feng Lu55cfa2f2014-07-03 18:24:34 +0800849AC_CHECK_HEADER([asm-generic/unistd.h],
850 [AC_CHECK_DECL(__NR_setns,
851 AC_DEFINE(HAVE_NETNS,, Have netns),,
852 QUAGGA_INCLUDES [#include <asm-generic/unistd.h>
853 ])
854 AC_CHECK_FUNCS(setns, AC_DEFINE(HAVE_SETNS,, Have setns))]
855 )
856
paul7ea487b2003-03-17 02:05:07 +0000857dnl ------------------------------------
858dnl Determine routing get and set method
859dnl ------------------------------------
860AC_MSG_CHECKING(zebra between kernel interface method)
861if test x"$opsys" = x"gnu-linux"; then
David Lamparter2e5ca492014-06-28 20:54:31 +0200862 AC_MSG_RESULT(netlink)
863 RT_METHOD=rt_netlink.o
864 AC_DEFINE(HAVE_NETLINK,,netlink)
865 netlink=yes
paul7ea487b2003-03-17 02:05:07 +0000866else
David Lamparter39b233f2014-06-28 21:49:18 +0200867 AC_MSG_RESULT(Route socket)
868 KERNEL_METHOD="kernel_socket.o"
869 RT_METHOD="rt_socket.o"
paul7ea487b2003-03-17 02:05:07 +0000870fi
871AC_SUBST(RT_METHOD)
872AC_SUBST(KERNEL_METHOD)
Avneesh Sachdev5adc2522012-11-13 22:48:59 +0000873AM_CONDITIONAL([HAVE_NETLINK], [test "x$netlink" = "xyes"])
paul7ea487b2003-03-17 02:05:07 +0000874
Paul Jakma238497f2007-08-07 18:49:18 +0000875dnl --------------------------
876dnl Determine IS-IS I/O method
877dnl --------------------------
David Lamparter745bf052010-02-02 21:49:35 +0100878AC_DEFINE(ISIS_METHOD_PFPACKET, 1, [ constant value for isis method pfpacket ])
879AC_DEFINE(ISIS_METHOD_DLPI, 2, [ constant value for isis method dlpi ])
880AC_DEFINE(ISIS_METHOD_BPF, 3, [ constant value for isis method bpf ])
Paul Jakma238497f2007-08-07 18:49:18 +0000881AC_CHECK_HEADER(net/bpf.h)
882AC_CHECK_HEADER(sys/dlpi.h)
883AC_MSG_CHECKING(zebra IS-IS I/O method)
884if test x"$opsys" = x"gnu-linux"; then
885 AC_MSG_RESULT(pfpacket)
David Lamparter745bf052010-02-02 21:49:35 +0100886 ISIS_METHOD_MACRO="ISIS_METHOD_PFPACKET"
Paul Jakma238497f2007-08-07 18:49:18 +0000887elif test x"$opsys" = x"sol2-6" -o x"$opsys" = x"sol8"; then
888 AC_MSG_RESULT(DLPI)
David Lamparter745bf052010-02-02 21:49:35 +0100889 ISIS_METHOD_MACRO="ISIS_METHOD_DLPI"
Paul Jakma238497f2007-08-07 18:49:18 +0000890else
891 if test $ac_cv_header_net_bpf_h = no; then
892 if test $ac_cv_header_sys_dlpi_h = no; then
893 AC_MSG_RESULT(none)
894 AC_MSG_WARN([*** IS-IS support will not be built ***])
895 ISISD=""
896 else
897 AC_MSG_RESULT(DLPI)
898 fi
David Lamparter745bf052010-02-02 21:49:35 +0100899 ISIS_METHOD_MACRO="ISIS_METHOD_DLPI"
Paul Jakma238497f2007-08-07 18:49:18 +0000900 else
901 AC_MSG_RESULT(BPF)
David Lamparter745bf052010-02-02 21:49:35 +0100902 ISIS_METHOD_MACRO="ISIS_METHOD_BPF"
Paul Jakma238497f2007-08-07 18:49:18 +0000903 fi
904fi
David Lamparter745bf052010-02-02 21:49:35 +0100905AC_DEFINE_UNQUOTED(ISIS_METHOD, $ISIS_METHOD_MACRO, [ selected method for isis, == one of the constants ])
Paul Jakma238497f2007-08-07 18:49:18 +0000906
ajsb99760a2005-01-04 16:24:43 +0000907dnl ------------------------------------
908dnl check for broken CMSG_FIRSTHDR macro
909dnl ------------------------------------
gdt6c200462005-01-04 17:02:48 +0000910AC_MSG_CHECKING(for broken CMSG_FIRSTHDR)
hasso5b087522005-04-03 23:46:37 +0000911AC_RUN_IFELSE([AC_LANG_SOURCE([[
ajsb99760a2005-01-04 16:24:43 +0000912#ifdef SUNOS_5
913#define _XPG4_2
914#define __EXTENSIONS__
915#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000916#ifdef HAVE_STDLIB_H
917# include <stdlib.h>
918#endif
919#ifdef HAVE_SYS_TYPES_H
ajsb99760a2005-01-04 16:24:43 +0000920#include <sys/types.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000921#endif
922#ifdef HAVE_SYS_SOCKET_H
ajsb99760a2005-01-04 16:24:43 +0000923#include <sys/socket.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000924#endif
ajsb99760a2005-01-04 16:24:43 +0000925
926main()
927{
928 struct msghdr msg;
929 char buf[4];
930
931 msg.msg_control = buf;
932 msg.msg_controllen = 0;
933
934 if (CMSG_FIRSTHDR(&msg) != NULL)
935 exit(0);
936 exit (1);
hasso5b087522005-04-03 23:46:37 +0000937}]])],[AC_MSG_RESULT(yes - using workaround) AC_DEFINE(HAVE_BROKEN_CMSG_FIRSTHDR,,Broken CMSG_FIRSTHDR)],
hassod33e8d72005-04-03 13:07:21 +0000938[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
ajsb99760a2005-01-04 16:24:43 +0000939
paul7ea487b2003-03-17 02:05:07 +0000940dnl ------------------------------
941dnl check kernel route read method
942dnl ------------------------------
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500943AC_CACHE_CHECK([route read method], [quagga_cv_rtread_method],
944[if test "x$netlink" = xyes; then
945 quagga_cv_rtread_method="netlink"
paul7ea487b2003-03-17 02:05:07 +0000946else
David Lamparter2e5ca492014-06-28 20:54:31 +0200947for quagga_cv_rtread_method in /dev/ip /dev/null;
paul7ea487b2003-03-17 02:05:07 +0000948do
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500949 test x`ls $quagga_cv_rtread_method 2>/dev/null` = x"$quagga_cv_rtread_method" && break
paul7ea487b2003-03-17 02:05:07 +0000950done
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500951case $quagga_cv_rtread_method in
paul9c30ab62003-07-08 08:36:17 +0000952 "/dev/ip")
953 case "$host" in
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500954 *-freebsd*) quagga_cv_rtread_method="sysctl";;
955 *) quagga_cv_rtread_method="getmsg";;
paul9c30ab62003-07-08 08:36:17 +0000956 esac;;
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500957 *)
958 quagga_cv_rtread_method="sysctl";;
paul7ea487b2003-03-17 02:05:07 +0000959esac
960fi])
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500961RTREAD_METHOD=rtread_${quagga_cv_rtread_method}.o
paul7ea487b2003-03-17 02:05:07 +0000962AC_SUBST(RTREAD_METHOD)
963
964dnl -----------------------------
965dnl check interface lookup method
966dnl -----------------------------
paul19877dd2004-05-11 10:49:35 +0000967IOCTL_METHOD=ioctl.o
paul7ea487b2003-03-17 02:05:07 +0000968AC_MSG_CHECKING(interface looking up method)
969if test "$netlink" = yes; then
970 AC_MSG_RESULT(netlink)
971 IF_METHOD=if_netlink.o
paul19877dd2004-05-11 10:49:35 +0000972elif test "$opsys" = "sol2-6";then
973 AC_MSG_RESULT(Solaris GIF)
974 IF_METHOD=if_ioctl.o
paulafd8a122005-03-12 06:36:10 +0000975elif test "$opsys" = "sol8";then
paul19877dd2004-05-11 10:49:35 +0000976 AC_MSG_RESULT(Solaris GLIF)
977 IF_METHOD=if_ioctl_solaris.o
978 IOCTL_METHOD=ioctl_solaris.o
paul19877dd2004-05-11 10:49:35 +0000979elif test "$opsys" = "openbsd";then
980 AC_MSG_RESULT(openbsd)
981 IF_METHOD=if_ioctl.o
982elif grep NET_RT_IFLIST /usr/include/sys/socket.h >/dev/null 2>&1; then
983 AC_MSG_RESULT(sysctl)
paul7ea487b2003-03-17 02:05:07 +0000984 IF_METHOD=if_sysctl.o
985 AC_DEFINE(HAVE_NET_RT_IFLIST,,NET_RT_IFLIST)
paul19877dd2004-05-11 10:49:35 +0000986else
paul7ea487b2003-03-17 02:05:07 +0000987 AC_MSG_RESULT(ioctl)
988 IF_METHOD=if_ioctl.o
paul7ea487b2003-03-17 02:05:07 +0000989fi
990AC_SUBST(IF_METHOD)
paul19877dd2004-05-11 10:49:35 +0000991AC_SUBST(IOCTL_METHOD)
paul7ea487b2003-03-17 02:05:07 +0000992
paul42c98192005-05-07 02:22:51 +0000993dnl ---------------------------------------------------------------
994dnl figure out how to specify an interface in multicast sockets API
995dnl ---------------------------------------------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000996AC_CHECK_MEMBERS([struct ip_mreqn.imr_ifindex], [], [], QUAGGA_INCLUDES)
paul42c98192005-05-07 02:22:51 +0000997
Donald Sharp1934e782015-06-05 12:15:44 -0700998AC_CHECK_HEADERS([linux/mroute.h], [], [],
999[
1000#if HAVE_NETINET_IN_H
1001#include<netinet/in.h>
1002#endif])
paul42c98192005-05-07 02:22:51 +00001003AC_MSG_CHECKING([for BSD struct ip_mreq hack])
1004AC_TRY_COMPILE([#ifdef HAVE_SYS_PARAM_H
1005#include <sys/param.h>
Brian Bennettb8a893c2015-02-17 22:32:22 +00001006#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 +00001007 return (0);
1008#else
1009 #error No support for BSD struct ip_mreq hack detected
1010#endif],[AC_MSG_RESULT(yes)
1011AC_DEFINE(HAVE_BSD_STRUCT_IP_MREQ_HACK,,[Can pass ifindex in struct ip_mreq])],
1012AC_MSG_RESULT(no))
1013
Dmitrij Tejblum10d04cd2011-08-22 11:39:35 +04001014AC_MSG_CHECKING([for RFC3678 protocol-independed API])
1015AC_TRY_COMPILE([
1016#include <sys/types.h>
1017#include <netinet/in.h>
1018], [struct group_req gr; int sock; setsockopt(sock, IPPROTO_IP, MCAST_JOIN_GROUP, (void*)&gr, sizeof(gr));
1019], [AC_MSG_RESULT(yes)
1020AC_DEFINE(HAVE_RFC3678,1,[Have RFC3678 protocol-independed API])],
1021AC_MSG_RESULT(no))
1022
Andrew J. Schorrc543a172008-01-10 15:24:32 +00001023dnl ---------------------------------------------------------------
1024dnl figure out how to check link-state
1025dnl ---------------------------------------------------------------
Andrew J. Schorr6418bed2008-01-11 16:33:59 +00001026AC_CHECK_HEADER([net/if.h],
1027 [AC_CHECK_HEADER( [net/if_media.h],
1028 [m4_define([LINK_DETECT_INCLUDES],
1029 QUAGGA_INCLUDES
1030 [#include <net/if_media.h>
1031 ])
1032 AC_CHECK_MEMBERS( [struct ifmediareq.ifm_status],
1033 AC_DEFINE(HAVE_BSD_LINK_DETECT,,[BSD link-detect]),
1034 [], LINK_DETECT_INCLUDES)],
1035 [],
1036 QUAGGA_INCLUDES)],
1037 [], QUAGGA_INCLUDES )
Andrew J. Schorrc543a172008-01-10 15:24:32 +00001038
Doug VanLeuven9234b382012-10-10 16:12:32 -07001039dnl ---------------------------------------------------------------
1040dnl Additional, newer way to check link-state using ifi_link_state.
1041dnl Not available in all BSD's when ifmediareq available
1042dnl ---------------------------------------------------------------
1043AC_CHECK_HEADER([net/if.h],
1044 AC_CHECK_MEMBERS([struct if_data.ifi_link_state],
1045 AC_DEFINE(HAVE_BSD_IFI_LINK_STATE,,[BSD ifi_link_state available]),
1046 [], QUAGGA_INCLUDES),
1047 ,)
1048
Paul Jakma0df7c912008-07-21 21:02:49 +00001049dnl ------------------------
1050dnl TCP_MD5SIG socket option
1051dnl ------------------------
1052
1053AC_CHECK_HEADER([netinet/tcp.h],
1054 [m4_define([MD5_INCLUDES],
1055 QUAGGA_INCLUDES
1056 [#include <netinet/tcp.h>
1057 ])
1058 AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)],
1059 [],
1060 QUAGGA_INCLUDES)
1061if test $ac_cv_have_decl_TCP_MD5SIG = no; then
1062 AC_CHECK_HEADER([linux/tcp.h],
1063 [m4_define([MD5_INCLUDES],
1064 QUAGGA_INCLUDES
1065 [#include <linux/tcp.h>
1066 ])
1067 AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)])
1068fi
1069
paul7ea487b2003-03-17 02:05:07 +00001070dnl -----------------------------
1071dnl check ipforward detect method
1072dnl -----------------------------
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001073AC_CACHE_CHECK([ipforward method], [quagga_cv_ipforward_method],
David Lamparterca9f3422009-09-16 02:11:00 +02001074[if test x$cross_compiling = xyes; then
1075 if test x"$opsys" = x"gnu-linux"; then
1076 quagga_cv_ipforward_method=/proc/net/snmp
1077 else
1078 quagga_cv_ipforward_method=/dev/ip
1079 fi
1080else
1081 for quagga_cv_ipforward_method in /proc/net/snmp /dev/ip /dev/null;
1082 do
1083 test x`ls $quagga_cv_ipforward_method 2>/dev/null` = x"$quagga_cv_ipforward_method" && break
1084 done
1085fi
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001086case $quagga_cv_ipforward_method in
1087 "/proc/net/snmp") quagga_cv_ipforward_method="proc";;
paul7ea487b2003-03-17 02:05:07 +00001088 "/dev/ip")
1089 case "$host" in
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001090 *-freebsd*) quagga_cv_ipforward_method="sysctl";;
1091 *) quagga_cv_ipforward_method="solaris";;
paul7ea487b2003-03-17 02:05:07 +00001092 esac;;
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001093 *) quagga_cv_ipforward_method="sysctl";;
paul7ea487b2003-03-17 02:05:07 +00001094esac])
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001095IPFORWARD=ipforward_${quagga_cv_ipforward_method}.o
paul7ea487b2003-03-17 02:05:07 +00001096AC_SUBST(IPFORWARD)
1097
1098AC_CHECK_FUNCS(getaddrinfo, [have_getaddrinfo=yes], [have_getaddrinfo=no])
1099
1100dnl ----------
1101dnl IPv6 check
1102dnl ----------
1103AC_MSG_CHECKING(whether does this OS have IPv6 stack)
paul7ea487b2003-03-17 02:05:07 +00001104dnl ---------
1105dnl KAME IPv6
1106dnl ---------
David Lamparter6d6df302014-06-28 21:12:37 +02001107 if grep WIDE /usr/include/netinet6/in6.h >/dev/null 2>&1; then
paula159ed92003-06-04 11:01:45 +00001108 AC_DEFINE(KAME,1,KAME IPv6)
paula159ed92003-06-04 11:01:45 +00001109 AC_MSG_RESULT(KAME)
paul19877dd2004-05-11 10:49:35 +00001110dnl ------------------------------------
1111dnl Solaris 9, 10 and potentially higher
1112dnl ------------------------------------
paulafd8a122005-03-12 06:36:10 +00001113 elif test x"$opsys" = x"sol8"; then
paul19877dd2004-05-11 10:49:35 +00001114 AC_DEFINE(SOLARIS_IPV6, 1, Solaris IPv6)
paul19877dd2004-05-11 10:49:35 +00001115 AC_MSG_RESULT(Solaris IPv6)
paul7ea487b2003-03-17 02:05:07 +00001116dnl ----------
1117dnl Linux IPv6
1118dnl ----------
David Lamparter29ed6222014-06-28 21:42:25 +02001119 elif test x"$opsys" = x"gnu-linux"; then
Timo Teräs3ef0b872014-07-29 09:41:56 +00001120 AC_DEFINE(LINUX_IPV6,1,Linux IPv6 stack)
David Lamparter29ed6222014-06-28 21:42:25 +02001121 AC_MSG_RESULT(Linux IPv6)
1122 else
David Lamparter7fe17e62014-11-22 10:31:33 -08001123 AC_MSG_ERROR([Failed to detect IPv6 stack])
paula159ed92003-06-04 11:01:45 +00001124 fi
paul7ea487b2003-03-17 02:05:07 +00001125
David Lamparter7fe17e62014-11-22 10:31:33 -08001126dnl this is unconditial, for compatibility
1127AC_DEFINE(HAVE_IPV6,1,IPv6)
paul7ea487b2003-03-17 02:05:07 +00001128
gdtfa3232e2003-12-03 17:52:30 +00001129dnl ------------------
1130dnl IPv6 header checks
1131dnl ------------------
gdtfa3232e2003-12-03 17:52:30 +00001132AC_CHECK_HEADERS([netinet6/in6.h netinet/in6_var.h netinet/icmp6.h \
David Lamparter05a69d22015-05-27 22:15:37 +02001133 netinet6/in6_var.h netinet6/nd6.h], [], [],
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001134 QUAGGA_INCLUDES)
gdtfa3232e2003-12-03 17:52:30 +00001135
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001136m4_define([QUAGGA_INCLUDES],dnl
1137QUAGGA_INCLUDES
1138[#if HAVE_NETINET6_IN6_H
1139#include <netinet6/in6.h>
1140#endif
1141#if HAVE_NETINET_IN6_VAR_H
1142#include <netinet/in6_var.h>
1143#endif
1144#if HAVE_NETINET_ICMP6_H
1145# include <netinet/icmp6.h>
1146#endif
1147#if HAVE_NETINET6_IN6_VAR_H
1148# include <netinet6/in6_var.h>
1149#endif
1150#if HAVE_NETINET6_ND6_H
Hasso Tepperfbf24542007-06-25 19:30:59 +00001151# include <netinet6/nd6.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001152#endif
1153])dnl
1154
Joakim Tjernlundcbcd9bf2009-02-16 09:40:39 +01001155dnl disable doc check
1156if test "${enable_doc}" = "no";then
1157 DOC=""
1158else
1159 DOC="doc"
1160fi
1161
paul7ea487b2003-03-17 02:05:07 +00001162dnl --------------------
1163dnl Daemon disable check
1164dnl --------------------
1165if test "${enable_zebra}" = "no";then
1166 ZEBRA=""
1167else
1168 ZEBRA="zebra"
1169fi
David Wardf027d332012-04-30 11:36:15 -04001170AM_CONDITIONAL(ZEBRA, test "x$ZEBRA" = "xzebra")
paul7ea487b2003-03-17 02:05:07 +00001171
1172if test "${enable_bgpd}" = "no";then
1173 BGPD=""
1174else
1175 BGPD="bgpd"
1176fi
David Wardf027d332012-04-30 11:36:15 -04001177AM_CONDITIONAL(BGPD, test "x$BGPD" = "xbgpd")
paul7ea487b2003-03-17 02:05:07 +00001178
1179if test "${enable_ripd}" = "no";then
1180 RIPD=""
1181else
1182 RIPD="ripd"
1183fi
David Wardf027d332012-04-30 11:36:15 -04001184AM_CONDITIONAL(RIPD, test "x$RIPD" = "xripd")
paul7ea487b2003-03-17 02:05:07 +00001185
1186if test "${enable_ospfd}" = "no";then
1187 OSPFD=""
1188else
1189 OSPFD="ospfd"
1190fi
David Wardf027d332012-04-30 11:36:15 -04001191AM_CONDITIONAL(OSPFD, test "x$OSPFD" = "xospfd")
paul7ea487b2003-03-17 02:05:07 +00001192
ajsd0199432004-12-22 14:03:52 +00001193if test "${enable_watchquagga}" = "no";then
1194 WATCHQUAGGA=""
1195else
1196 WATCHQUAGGA="watchquagga"
1197fi
David Wardf027d332012-04-30 11:36:15 -04001198AM_CONDITIONAL(WATCHQUAGGA, test "x$WATCHQUAGGA" = "xwatchquagga")
ajsd0199432004-12-22 14:03:52 +00001199
paul1ef74ef2003-03-21 15:16:05 +00001200OSPFCLIENT=""
Donald Sharp36fef572015-12-16 14:22:10 -05001201if test "${enable_ospfapi}" != "no";then
paul9a569842003-03-28 01:45:13 +00001202 AC_DEFINE(SUPPORT_OSPF_API,,OSPFAPI)
paul1ef74ef2003-03-21 15:16:05 +00001203
Donald Sharp36fef572015-12-16 14:22:10 -05001204 if test "${enable_ospfclient}" != "no";then
paul1ef74ef2003-03-21 15:16:05 +00001205 OSPFCLIENT="ospfclient"
paul1ef74ef2003-03-21 15:16:05 +00001206 fi
paul7ea487b2003-03-17 02:05:07 +00001207fi
Donald Sharp36fef572015-12-16 14:22:10 -05001208
David Wardf027d332012-04-30 11:36:15 -04001209AM_CONDITIONAL(OSPFCLIENT, test "x$OSPFCLIENT" = "xospfclient")
paul7ea487b2003-03-17 02:05:07 +00001210
1211case "${enable_ripngd}" in
paul7ea487b2003-03-17 02:05:07 +00001212 "no" ) RIPNGD="";;
David Lamparter7fe17e62014-11-22 10:31:33 -08001213 * ) RIPNGD="ripngd";;
paul7ea487b2003-03-17 02:05:07 +00001214esac
David Wardf027d332012-04-30 11:36:15 -04001215AM_CONDITIONAL(RIPNGD, test "x$RIPNGD" = "xripngd")
paul7ea487b2003-03-17 02:05:07 +00001216
1217case "${enable_ospf6d}" in
paul7ea487b2003-03-17 02:05:07 +00001218 "no" ) OSPF6D="";;
David Lamparter7fe17e62014-11-22 10:31:33 -08001219 * ) OSPF6D="ospf6d";;
paul7ea487b2003-03-17 02:05:07 +00001220esac
David Wardf027d332012-04-30 11:36:15 -04001221AM_CONDITIONAL(OSPF6D, test "x$OSPF6D" = "xospf6d")
paul7ea487b2003-03-17 02:05:07 +00001222
jardin9e867fe2003-12-23 08:56:18 +00001223case "${enable_isisd}" in
jardin9e867fe2003-12-23 08:56:18 +00001224 "no" ) ISISD="";;
David Lamparter656a2c02015-02-09 11:36:10 +01001225 * ) ISISD="isisd";;
jardin9e867fe2003-12-23 08:56:18 +00001226esac
David Wardf027d332012-04-30 11:36:15 -04001227AM_CONDITIONAL(ISISD, test "x$ISISD" = "xisisd")
jardin9e867fe2003-12-23 08:56:18 +00001228
Everton Marques871dbcf2009-08-11 15:43:05 -03001229case "${enable_pimd}" in
Everton Marques871dbcf2009-08-11 15:43:05 -03001230 "no" ) PIMD="";;
Donald Sharpe6756782015-07-16 21:18:34 -04001231 * ) PIMD="pimd";;
Everton Marques871dbcf2009-08-11 15:43:05 -03001232esac
Everton Marquesff57d362014-06-25 15:54:03 -03001233AM_CONDITIONAL(PIMD, test "x$PIMD" = "xpimd")
Everton Marques871dbcf2009-08-11 15:43:05 -03001234
paul7ea487b2003-03-17 02:05:07 +00001235if test "${enable_bgp_announce}" = "no";then
Paul Jakma750e8142008-07-22 21:11:48 +00001236 AC_DEFINE(DISABLE_BGP_ANNOUNCE,1,Disable BGP installation to zebra)
1237else
1238 AC_DEFINE(DISABLE_BGP_ANNOUNCE,0,Disable BGP installation to zebra)
paul7ea487b2003-03-17 02:05:07 +00001239fi
1240
Joakim Tjernlundcbcd9bf2009-02-16 09:40:39 +01001241AC_SUBST(DOC)
paul7ea487b2003-03-17 02:05:07 +00001242AC_SUBST(ZEBRA)
1243AC_SUBST(BGPD)
1244AC_SUBST(RIPD)
1245AC_SUBST(RIPNGD)
1246AC_SUBST(OSPFD)
1247AC_SUBST(OSPF6D)
ajsd0199432004-12-22 14:03:52 +00001248AC_SUBST(WATCHQUAGGA)
jardin9e867fe2003-12-23 08:56:18 +00001249AC_SUBST(ISISD)
Everton Marques871dbcf2009-08-11 15:43:05 -03001250AC_SUBST(PIMD)
Greg Troxel97cee872007-08-02 13:36:56 +00001251AC_SUBST(SOLARIS)
paul7ea487b2003-03-17 02:05:07 +00001252AC_SUBST(VTYSH)
paul7ea487b2003-03-17 02:05:07 +00001253AC_SUBST(CURSES)
1254AC_SUBST(OSPFCLIENT)
paul1ef74ef2003-03-21 15:16:05 +00001255AC_SUBST(OSPFAPI)
paul7ea487b2003-03-17 02:05:07 +00001256AC_CHECK_LIB(c, inet_ntop, [AC_DEFINE(HAVE_INET_NTOP,,inet_ntop)])
1257AC_CHECK_LIB(c, inet_pton, [AC_DEFINE(HAVE_INET_PTON,,inet_pton)])
1258AC_CHECK_LIB(crypt, crypt)
1259AC_CHECK_LIB(resolv, res_init)
paul7ea487b2003-03-17 02:05:07 +00001260
paul7ea487b2003-03-17 02:05:07 +00001261dnl ---------------------------
Jeremy Jackson25f45882009-01-12 16:06:12 -05001262dnl check system has PCRE regexp
1263dnl ---------------------------
1264if test "x$enable_pcreposix" = "xyes"; then
1265 AC_CHECK_LIB(pcreposix, pcreposix_regexec, ,[enable_pcreposix=no
1266 AC_MSG_WARN([*** falling back to other regex library ***]) ])
1267fi
1268
1269if test "x$enable_pcreposix" != "xyes"; then
1270dnl ---------------------------
paul7ea487b2003-03-17 02:05:07 +00001271dnl check system has GNU regexp
1272dnl ---------------------------
Jeremy Jackson25f45882009-01-12 16:06:12 -05001273AC_MSG_CHECKING(whether system has GNU regex)
paul7ea487b2003-03-17 02:05:07 +00001274AC_CHECK_LIB(c, regexec,
1275[AC_DEFINE(HAVE_GNU_REGEX,,GNU regexp library)
1276 LIB_REGEX=""],
1277[LIB_REGEX="regex.o"])
Jeremy Jackson25f45882009-01-12 16:06:12 -05001278fi
1279AC_SUBST(HAVE_LIBPCREPOSIX)
paul7ea487b2003-03-17 02:05:07 +00001280AC_SUBST(LIB_REGEX)
1281
1282dnl ------------------
paulb1fc9ac2006-01-31 10:09:27 +00001283dnl check Net-SNMP library
paul7ea487b2003-03-17 02:05:07 +00001284dnl ------------------
Vincent Bernatd6be5fb2012-05-24 09:44:43 +02001285if test "${enable_snmp}" != ""; then
Vincent Bernat08d7f652012-05-22 22:29:17 +02001286 AC_PATH_TOOL([NETSNMP_CONFIG], [net-snmp-config], [no])
1287 if test x"$NETSNMP_CONFIG" = x"no"; then
1288 AC_MSG_ERROR([--enable-snmp given but unable to find net-snmp-config])
1289 fi
1290 LIBS="$LIBS `${NETSNMP_CONFIG} --agent-libs`"
1291 CFLAGS="`${NETSNMP_CONFIG} --base-cflags` $CFLAGS"
1292 AC_MSG_CHECKING([whether we can link to Net-SNMP])
1293 AC_LINK_IFELSE([AC_LANG_PROGRAM([
1294int main(void);
1295],
1296[
1297{
1298 return 0;
1299}
1300])],[AC_MSG_RESULT(yes)],[
1301 AC_MSG_RESULT(no)
1302 AC_MSG_ERROR([--enable-snmp given but not usable])])
1303 AC_DEFINE(HAVE_SNMP,,SNMP)
Vincent Bernatd6be5fb2012-05-24 09:44:43 +02001304 case "${enable_snmp}" in
1305 yes)
1306 SNMP_METHOD=agentx
1307 ;;
1308 smux|agentx)
1309 SNMP_METHOD="${enable_snmp}"
1310 ;;
1311 *)
1312 AC_MSG_ERROR([--enable-snmp given with an unknown method (${enable_snmp}). Use smux or agentx])
1313 ;;
1314 esac
1315 AH_TEMPLATE([SNMP_SMUX], [Use SNMP SMUX to interface with snmpd])
1316 AH_TEMPLATE([SNMP_AGENTX], [Use SNMP AgentX to interface with snmpd])
1317 AC_DEFINE_UNQUOTED(AS_TR_CPP(SNMP_${SNMP_METHOD}),,SNMP method to interface with snmpd)
paul7ea487b2003-03-17 02:05:07 +00001318fi
1319
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001320dnl ---------------------------
1321dnl sockaddr and netinet checks
1322dnl ---------------------------
1323AC_CHECK_TYPES([struct sockaddr, struct sockaddr_in,
1324 struct sockaddr_in6, struct sockaddr_un, struct sockaddr_dl,
Everton Marques871dbcf2009-08-11 15:43:05 -03001325 socklen_t, struct vifctl, struct mfcctl, struct sioc_sg_req,
1326 vifi_t, struct sioc_vif_req, struct igmpmsg,
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001327 struct ifaliasreq, struct if6_aliasreq, struct in6_aliasreq,
1328 struct nd_opt_adv_interval, struct rt_addrinfo,
Paul Jakma11770e12007-06-22 16:14:42 +00001329 struct nd_opt_homeagent_info, struct nd_opt_adv_interval],
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001330 [], [], QUAGGA_INCLUDES)
paul7ea487b2003-03-17 02:05:07 +00001331
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001332AC_CHECK_MEMBERS([struct sockaddr.sa_len,
1333 struct sockaddr_in.sin_len, struct sockaddr_un.sun_len,
1334 struct sockaddr_in6.sin6_scope_id,
David Lamparterca3ccd82012-09-26 14:52:39 +02001335 struct sockaddr_dl.sdl_len,
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001336 struct if6_aliasreq.ifra_lifetime,
1337 struct nd_opt_adv_interval.nd_opt_ai_type],
1338 [], [], QUAGGA_INCLUDES)
hasso71c0fb52003-05-25 20:18:13 +00001339
paul7ea487b2003-03-17 02:05:07 +00001340dnl ---------------------------
Paul Jakma11770e12007-06-22 16:14:42 +00001341dnl IRDP/pktinfo/icmphdr checks
paul7ea487b2003-03-17 02:05:07 +00001342dnl ---------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001343AC_CHECK_TYPES([struct in_pktinfo],
Paul Jakma11770e12007-06-22 16:14:42 +00001344 [AC_CHECK_TYPES([struct icmphdr],
1345 [if test "${enable_irdp}" != "no"; then
1346 AC_DEFINE(HAVE_IRDP,, IRDP)
1347 fi],
1348 [if test "${enable_irdp}" = "yes"; then
1349 AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
1350 fi], [QUAGGA_INCLUDES])],
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001351 [if test "${enable_irdp}" = "yes"; then
1352 AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
1353 fi], [QUAGGA_INCLUDES])
vincent29c4c9b2005-03-25 13:05:47 +00001354
Everton Marques871dbcf2009-08-11 15:43:05 -03001355dnl -----------------------
1356dnl checking for IP_PKTINFO
1357dnl -----------------------
1358AC_MSG_CHECKING(for IP_PKTINFO)
1359AC_TRY_COMPILE([#include <netdb.h>], [
1360 int opt = IP_PKTINFO;
1361], [
1362 AC_MSG_RESULT(yes)
1363 AC_DEFINE(HAVE_IP_PKTINFO, 1, [Have IP_PKTINFO])
1364], [
1365 AC_MSG_RESULT(no)
1366])
1367
1368dnl ---------------------------
1369dnl checking for IP_RECVDSTADDR
1370dnl ---------------------------
1371AC_MSG_CHECKING(for IP_RECVDSTADDR)
1372AC_TRY_COMPILE([#include <netinet/in.h>], [
1373 int opt = IP_RECVDSTADDR;
1374], [
1375 AC_MSG_RESULT(yes)
1376 AC_DEFINE(HAVE_IP_RECVDSTADDR, 1, [Have IP_RECVDSTADDR])
1377], [
1378 AC_MSG_RESULT(no)
1379])
1380
1381dnl ----------------------
1382dnl checking for IP_RECVIF
1383dnl ----------------------
1384AC_MSG_CHECKING(for IP_RECVIF)
1385AC_TRY_COMPILE([#include <netinet/in.h>], [
1386 int opt = IP_RECVIF;
1387], [
1388 AC_MSG_RESULT(yes)
1389 AC_DEFINE(HAVE_IP_RECVIF, 1, [Have IP_RECVIF])
1390], [
1391 AC_MSG_RESULT(no)
1392])
1393
paul7ea487b2003-03-17 02:05:07 +00001394dnl --------------------------------------
1395dnl checking for getrusage struct and call
1396dnl --------------------------------------
Stephen Hemminger47f6aef2013-01-04 22:29:22 +00001397if test "${enable_rusage}" != "no"; then
1398 AC_MSG_CHECKING(whether getrusage is available)
1399 AC_TRY_COMPILE([#include <sys/resource.h>],[struct rusage ac_x; getrusage (RUSAGE_SELF, &ac_x);],
1400 [AC_MSG_RESULT(yes)
1401 AC_DEFINE(HAVE_RUSAGE,,rusage)],
1402 AC_MSG_RESULT(no))
1403fi
paul7ea487b2003-03-17 02:05:07 +00001404
Stephen Hemmingerc4376c92009-05-28 15:29:10 -07001405dnl --------------------------------------
1406dnl checking for clock_time monotonic struct and call
1407dnl --------------------------------------
Paul Jakma6511cab2009-06-18 17:38:01 +01001408AC_CHECK_DECL(CLOCK_MONOTONIC,
1409 [AC_CHECK_LIB(rt, clock_gettime, [LIBS="$LIBS -lrt"])
Dmitry Tejblum9964fcf2009-11-05 16:50:36 +03001410 AC_DEFINE(HAVE_CLOCK_MONOTONIC,, Have monotonic clock)
Paul Jakma6511cab2009-06-18 17:38:01 +01001411], [AC_MSG_RESULT(no)], [QUAGGA_INCLUDES])
Stephen Hemmingerc4376c92009-05-28 15:29:10 -07001412
pauledd7c242003-06-04 13:59:38 +00001413dnl -------------------
1414dnl capabilities checks
1415dnl -------------------
hasso41d3fc92004-04-06 11:59:00 +00001416if test "${enable_capabilities}" != "no"; then
1417 AC_MSG_CHECKING(whether prctl PR_SET_KEEPCAPS is available)
1418 AC_TRY_COMPILE([#include <sys/prctl.h>],[prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);],
1419 [AC_MSG_RESULT(yes)
1420 AC_DEFINE(HAVE_PR_SET_KEEPCAPS,,prctl)
1421 quagga_ac_keepcaps="yes"],
1422 AC_MSG_RESULT(no)
pauledd7c242003-06-04 13:59:38 +00001423 )
hasso41d3fc92004-04-06 11:59:00 +00001424 if test x"${quagga_ac_keepcaps}" = x"yes"; then
1425 AC_CHECK_HEADERS(sys/capability.h)
1426 fi
1427 if test x"${ac_cv_header_sys_capability_h}" = x"yes"; then
1428 AC_CHECK_LIB(cap, cap_init,
1429 [AC_DEFINE(HAVE_LCAPS,1,Capabilities)
1430 LIBCAP="-lcap"
paulceacedb2005-09-29 14:39:32 +00001431 quagga_ac_lcaps="yes"]
hasso41d3fc92004-04-06 11:59:00 +00001432 )
paulceacedb2005-09-29 14:39:32 +00001433 else
1434 AC_CHECK_HEADERS(priv.h,
1435 [AC_MSG_CHECKING(Solaris style privileges are available)
1436 AC_TRY_COMPILE([#include <priv.h>],[getpflags(PRIV_AWARE);],
1437 [AC_MSG_RESULT(yes)
1438 AC_DEFINE(HAVE_SOLARIS_CAPABILITIES,1,getpflags)
1439 quagga_ac_scaps="yes"],
1440 AC_MSG_RESULT(no)
1441 )
1442 ]
1443 )
1444 fi
1445 if test x"${quagga_ac_scaps}" = x"yes" \
1446 -o x"${quagga_ac_lcaps}" = x"yes"; then
1447 AC_DEFINE(HAVE_CAPABILITIES,1,capabilities)
hasso41d3fc92004-04-06 11:59:00 +00001448 fi
pauledd7c242003-06-04 13:59:38 +00001449fi
1450AC_SUBST(LIBCAP)
1451
Doug VanLeuven327c4cd2012-12-14 14:58:30 +02001452dnl ---------------------------------------------------------------------------
1453dnl http://www.gnu.org/software/autoconf-archive/ax_sys_weak_alias.html
1454dnl Check for and set one of the following = 1
1455dnl HAVE_SYS_WEAK_ALIAS_ATTRIBUTE
1456dnl HAVE_SYS_WEAK_ALIAS_PRAGMA
1457dnl HAVE_SYS_WEAK_ALIAS_HPSECONDARY
1458dnl HAVE_SYS_WEAK_ALIAS_CRIDUPLICATE
1459dnl If any scheme is found, set
1460dnl HAVE_SYS_WEAK_ALIAS=1
1461dnl The following variable is set to text value
1462dnl WEAK_ALIAS = "attribute" || "pragma" || "hpsecondary" || "criduplicate" || "no"
1463dnl If weak alias can cross object file boundaries
1464dnl WEAK_ALIAS_CROSSFILE = "yes" || "no"
1465dnl ---------------------------------------------------------------------------
1466AX_SYS_WEAK_ALIAS
1467
paulfb2d1502003-06-04 09:40:54 +00001468dnl ---------------------------
1469dnl check for glibc 'backtrace'
1470dnl ---------------------------
David Lamparter8c99b4c2013-08-01 07:43:36 +00001471if test x"${enable_backtrace}" != x"no" ; then
1472 backtrace_ok=no
1473 AC_CHECK_HEADER([execinfo.h], [
1474 AC_SEARCH_LIBS([backtrace], [execinfo], [
1475 AC_DEFINE(HAVE_GLIBC_BACKTRACE,,[Glibc backtrace])
1476 AC_DEFINE(HAVE_STACK_TRACE,,[Stack symbol decoding])
1477 backtrace_ok=yes
1478 ],, [-lm])
Dmitrij Tejblumeda35292011-09-15 20:00:33 +04001479 ])
David Lamparter8c99b4c2013-08-01 07:43:36 +00001480
1481 if test x"${enable_backtrace}" = x"yes" -a x"${backtrace_ok}" = x"no"; then
1482 dnl user explicitly requested backtrace but we failed to find support
1483 AC_MSG_FAILURE([failed to find backtrace support])
1484 fi
1485fi
paulfb2d1502003-06-04 09:40:54 +00001486
Paul Jakma41be32b2006-03-30 13:53:59 +00001487dnl -----------------------------------------
1488dnl check for malloc mallinfo struct and call
1489dnl this must try and link using LIBS, in
1490dnl order to check no alternative allocator
1491dnl has been specified, which might not provide
1492dnl mallinfo, e.g. such as Umem on Solaris.
1493dnl -----------------------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001494AC_CHECK_HEADER([malloc.h],
Paul Jakma41be32b2006-03-30 13:53:59 +00001495 [AC_MSG_CHECKING(whether mallinfo is available)
1496 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <malloc.h>]],
1497 [[struct mallinfo ac_x; ac_x = mallinfo ();]])],
1498 [AC_MSG_RESULT(yes)
1499 AC_DEFINE(HAVE_MALLINFO,,mallinfo)],
1500 AC_MSG_RESULT(no)
1501 )
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001502 ], [], QUAGGA_INCLUDES)
Paul Jakma41be32b2006-03-30 13:53:59 +00001503
paul408ad942003-05-20 00:03:33 +00001504dnl ----------
1505dnl configure date
1506dnl ----------
1507CONFDATE=`date '+%Y%m%d'`
1508AC_SUBST(CONFDATE)
1509
David Lamparterf281ab92013-02-26 16:21:20 +01001510dnl -------
1511dnl DejaGNU
1512dnl -------
1513if test x"$DEJAGNU" = x
1514then
1515 DEJAGNU="\$(top_srcdir)/tests/global-conf.exp"
1516fi
1517RUNTESTDEFAULTFLAGS="-x --tool \$\$tool"
1518
1519AC_SUBST(DEJAGNU)
1520AC_SUBST(RUNTESTDEFAULTFLAGS)
1521
paul7ea487b2003-03-17 02:05:07 +00001522dnl ------------------------------
paula159ed92003-06-04 11:01:45 +00001523dnl set paths for state directory
paul23bd12c2003-04-07 06:11:09 +00001524dnl ------------------------------
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001525AC_MSG_CHECKING(directory to use for state file)
paul23bd12c2003-04-07 06:11:09 +00001526if test "${prefix}" = "NONE"; then
paule8f29842003-08-12 13:08:31 +00001527 quagga_statedir_prefix="";
paul23bd12c2003-04-07 06:11:09 +00001528else
paule8f29842003-08-12 13:08:31 +00001529 quagga_statedir_prefix=${prefix}
paul23bd12c2003-04-07 06:11:09 +00001530fi
1531if test "${localstatedir}" = '${prefix}/var'; then
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001532 for QUAGGA_STATE_DIR in ${quagga_statedir_prefix}/var/run dnl
paule8f29842003-08-12 13:08:31 +00001533 ${quagga_statedir_prefix}/var/adm dnl
1534 ${quagga_statedir_prefix}/etc dnl
paula159ed92003-06-04 11:01:45 +00001535 /var/run dnl
1536 /var/adm dnl
1537 /etc dnl
1538 /dev/null;
paul23bd12c2003-04-07 06:11:09 +00001539 do
paule8f29842003-08-12 13:08:31 +00001540 test -d $QUAGGA_STATE_DIR && break
paul23bd12c2003-04-07 06:11:09 +00001541 done
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001542 quagga_statedir=$QUAGGA_STATE_DIR
paul23bd12c2003-04-07 06:11:09 +00001543else
paule8f29842003-08-12 13:08:31 +00001544 quagga_statedir=${localstatedir}
paul23bd12c2003-04-07 06:11:09 +00001545fi
paule8f29842003-08-12 13:08:31 +00001546if test $quagga_statedir = "/dev/null"; then
paula159ed92003-06-04 11:01:45 +00001547 AC_MSG_ERROR('STATE DIRECTORY NOT FOUND! FIX OR SPECIFY --localstatedir!')
1548fi
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001549AC_MSG_RESULT(${quagga_statedir})
1550AC_SUBST(quagga_statedir)
paula159ed92003-06-04 11:01:45 +00001551
paule8f29842003-08-12 13:08:31 +00001552AC_DEFINE_UNQUOTED(PATH_ZEBRA_PID, "$quagga_statedir/zebra.pid",zebra PID)
1553AC_DEFINE_UNQUOTED(PATH_RIPD_PID, "$quagga_statedir/ripd.pid",ripd PID)
1554AC_DEFINE_UNQUOTED(PATH_RIPNGD_PID, "$quagga_statedir/ripngd.pid",ripngd PID)
1555AC_DEFINE_UNQUOTED(PATH_BGPD_PID, "$quagga_statedir/bgpd.pid",bgpd PID)
1556AC_DEFINE_UNQUOTED(PATH_OSPFD_PID, "$quagga_statedir/ospfd.pid",ospfd PID)
1557AC_DEFINE_UNQUOTED(PATH_OSPF6D_PID, "$quagga_statedir/ospf6d.pid",ospf6d PID)
jardin9e867fe2003-12-23 08:56:18 +00001558AC_DEFINE_UNQUOTED(PATH_ISISD_PID, "$quagga_statedir/isisd.pid",isisd PID)
Everton Marques871dbcf2009-08-11 15:43:05 -03001559AC_DEFINE_UNQUOTED(PATH_PIMD_PID, "$quagga_statedir/pimd.pid",pimd PID)
ajsd0199432004-12-22 14:03:52 +00001560AC_DEFINE_UNQUOTED(PATH_WATCHQUAGGA_PID, "$quagga_statedir/watchquagga.pid",watchquagga PID)
paule8f29842003-08-12 13:08:31 +00001561AC_DEFINE_UNQUOTED(ZEBRA_SERV_PATH, "$quagga_statedir/zserv.api",zebra api socket)
1562AC_DEFINE_UNQUOTED(ZEBRA_VTYSH_PATH, "$quagga_statedir/zebra.vty",zebra vty socket)
1563AC_DEFINE_UNQUOTED(RIP_VTYSH_PATH, "$quagga_statedir/ripd.vty",rip vty socket)
1564AC_DEFINE_UNQUOTED(RIPNG_VTYSH_PATH, "$quagga_statedir/ripngd.vty",ripng vty socket)
1565AC_DEFINE_UNQUOTED(BGP_VTYSH_PATH, "$quagga_statedir/bgpd.vty",bgpd vty socket)
1566AC_DEFINE_UNQUOTED(OSPF_VTYSH_PATH, "$quagga_statedir/ospfd.vty",ospfd vty socket)
1567AC_DEFINE_UNQUOTED(OSPF6_VTYSH_PATH, "$quagga_statedir/ospf6d.vty",ospf6d vty socket)
jardin9e867fe2003-12-23 08:56:18 +00001568AC_DEFINE_UNQUOTED(ISIS_VTYSH_PATH, "$quagga_statedir/isisd.vty",isisd vty socket)
Everton Marques871dbcf2009-08-11 15:43:05 -03001569AC_DEFINE_UNQUOTED(PIM_VTYSH_PATH, "$quagga_statedir/pimd.vty",pimd vty socket)
ajs515210b2004-12-22 15:35:12 +00001570AC_DEFINE_UNQUOTED(DAEMON_VTY_DIR, "$quagga_statedir",daemon vty directory)
paul7ea487b2003-03-17 02:05:07 +00001571
paul1eb8ef22005-04-07 07:30:20 +00001572dnl -------------------------------
1573dnl Quagga sources should always be
1574dnl current wrt interfaces. Dont
1575dnl allow deprecated interfaces to
1576dnl be exposed.
1577dnl -------------------------------
1578AC_DEFINE(QUAGGA_NO_DEPRECATED_INTERFACES, 1, Hide deprecated interfaces)
1579
paul7ea487b2003-03-17 02:05:07 +00001580dnl ---------------------------
1581dnl Check htonl works correctly
1582dnl ---------------------------
1583AC_MSG_CHECKING(for working htonl)
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001584AC_CACHE_VAL(ac_cv_htonl_works,
1585 [AC_LINK_IFELSE([AC_LANG_PROGRAM([QUAGGA_INCLUDES],[htonl (0);])],
1586 [ac_cv_htonl_works=yes], [ac_cv_htonl_works=no])
1587 ]
1588)
paul7ea487b2003-03-17 02:05:07 +00001589AC_MSG_RESULT($ac_cv_htonl_works)
1590
Avneesh Sachdev07e5b642016-04-04 10:54:55 -07001591AC_CONFIG_FILES([Makefile lib/Makefile qpb/Makefile zebra/Makefile ripd/Makefile
ajsd0199432004-12-22 14:03:52 +00001592 ripngd/Makefile bgpd/Makefile ospfd/Makefile watchquagga/Makefile
Paul Jakma336724d2015-05-11 15:13:31 +01001593 ospf6d/Makefile isisd/Makefile vtysh/Makefile
David Lamparterf281ab92013-02-26 16:21:20 +01001594 doc/Makefile ospfclient/Makefile tests/Makefile m4/Makefile
Everton Marques871dbcf2009-08-11 15:43:05 -03001595 pimd/Makefile
David Lamparter5bb7e4d2013-02-26 17:53:30 +01001596 tests/bgpd.tests/Makefile
David Lamparterc69905b2013-01-24 01:39:14 +01001597 tests/libzebra.tests/Makefile
David Lamparterf281ab92013-02-26 16:21:20 +01001598 redhat/Makefile
gdt69f1fc22004-08-27 15:57:35 +00001599 pkgsrc/Makefile
Avneesh Sachdevef20ef72016-04-04 10:54:57 -07001600 fpm/Makefile
paul670bbf12004-11-12 09:05:00 +00001601 redhat/quagga.spec
gdtb7a97f82004-07-23 16:23:56 +00001602 lib/version.h
paul14c17fd2004-11-07 22:34:23 +00001603 doc/defines.texi
hassof695b012005-04-02 19:03:39 +00001604 isisd/topology/Makefile
gdtcbd04082004-08-31 18:16:36 +00001605 pkgsrc/bgpd.sh pkgsrc/ospf6d.sh pkgsrc/ospfd.sh
paulf31293a2004-11-12 09:27:04 +00001606 pkgsrc/ripd.sh pkgsrc/ripngd.sh pkgsrc/zebra.sh])
paul26275b02005-04-11 07:10:47 +00001607AC_CONFIG_FILES([solaris/Makefile])
1608
paul670bbf12004-11-12 09:05:00 +00001609AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl])
hasso48577192004-11-19 06:41:49 +00001610## Hack, but working solution to avoid rebuilding of quagga.info.
1611## It's already in CVS until texinfo 4.7 is more common.
paul14c17fd2004-11-07 22:34:23 +00001612AC_OUTPUT
paul7ea487b2003-03-17 02:05:07 +00001613
1614echo "
hassoc89f6492004-08-26 12:21:28 +00001615Quagga configuration
1616--------------------
1617quagga version : ${PACKAGE_VERSION}
Joachim Nilsson1080c132012-05-30 08:15:48 +02001618host operating system : ${host_os}
paul7ea487b2003-03-17 02:05:07 +00001619source code location : ${srcdir}
1620compiler : ${CC}
1621compiler flags : ${CFLAGS}
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001622make : ${MAKE-make}
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001623linker flags : ${LDFLAGS} ${LIBS} ${LIBCAP} ${LIBREADLINE} ${LIBM}
paule8f29842003-08-12 13:08:31 +00001624state file directory : ${quagga_statedir}
pauldc7a2bf2003-10-22 00:07:44 +00001625config file directory : `eval echo \`echo ${sysconfdir}\``
gdtd6b72f72003-12-03 17:24:27 +00001626example directory : `eval echo \`echo ${exampledir}\``
paul8d4aee52003-06-06 00:30:35 +00001627user to run as : ${enable_user}
1628group to run as : ${enable_group}
1629group for vty sockets : ${enable_vty_group}
gdtaa593d52003-12-22 20:15:53 +00001630config file mask : ${enable_configfile_mask}
1631log file mask : ${enable_logfile_mask}
Avneesh Sachdev07e5b642016-04-04 10:54:55 -07001632zebra protobuf enabled : ${have_protobuf:-no}
pauldc7a2bf2003-10-22 00:07:44 +00001633
1634The above user and group must have read/write access to the state file
Paul Jakma105b8232006-05-28 08:02:41 +00001635directory and to the config files in the config file directory."
1636
1637if test x"$quagga_cv_gnu_make" = x"no"; then echo "
1638Warning: The ${MAKE-make} programme detected, either in your path or
1639via the MAKE variable, is not GNU Make. GNU make may be installed as
1640gmake on some systems. and is required to complete a build of Quagga
1641" > /dev/stderr
1642fi