blob: 8d92a3d9244291e4ff2460be236861d736b897d3 [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 Sharp86c5d2e2016-03-15 19:17:17 -040010AC_INIT(Quagga, 1.0.20160315, [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
David Lamparter8c99b4c2013-08-01 07:43:36 +0000309if test x"${enable_gcc_rdynamic}" != x"no" ; then
310 if test x"${enable_gcc_rdynamic}" = x"yes" -o x"$COMPILER" = x"GCC"; then
311 LDFLAGS="${LDFLAGS} -rdynamic"
312 fi
ajs3cade262004-12-29 17:50:22 +0000313fi
314
ajs924b9222005-04-16 17:11:24 +0000315if test x"${enable_time_check}" != x"no" ; then
316 if test x"${enable_time_check}" = x"yes" -o x"${enable_time_check}" = x ; then
317 AC_DEFINE(CONSUMED_TIME_CHECK,5000000,Consumed Time Check)
318 else
319 AC_DEFINE_UNQUOTED(CONSUMED_TIME_CHECK,$enable_time_check,Consumed Time Check)
320 fi
321fi
322
Avneesh Sachdev5adc2522012-11-13 22:48:59 +0000323if test "${enable_fpm}" = "yes"; then
324 AC_DEFINE(HAVE_FPM,,Forwarding Plane Manager support)
325fi
326
Avneesh Sachdev07e5b642016-04-04 10:54:55 -0700327#
328# Logic for protobuf support.
329#
330if test "$enable_protobuf" = "yes"; then
331 have_protobuf=yes
332
333 # Check for protoc-c
334 AC_CHECK_PROG([PROTOC_C], [protoc-c], [protoc-c], [/bin/false])
335 if test "x$PROTOC_C" = "x/bin/false"; then
336 have_protobuf=no
337 else
338 found_protobuf_c=no
339 PKG_CHECK_MODULES([PROTOBUF_C], libprotobuf-c >= 0.14,
340 [found_protobuf_c=yes],
341 [AC_MSG_RESULT([pkg-config did not find libprotobuf-c])])
342
343 if test "x$found_protobuf_c" = "xyes"; then
344 LDFLAGS="$LDFLAGS $PROTOBUF_C_LIBS"
345 CFLAGS="$CFLAGS $PROTOBUF_C_CFLAGS"
346 else
347 AC_CHECK_HEADER([google/protobuf-c/protobuf-c.h], [],
348 [have_protobuf=no; AC_MSG_RESULT([Couldn't find google/protobuf-c.h])])
349 fi
350 fi
351fi
352
353# Fail if the user explicity enabled protobuf support and we couldn't
354# find the compiler or libraries.
355if test "x$have_protobuf" = "xno" && test "x$enable_protobuf" = "xyes"; then
356 AC_MSG_ERROR([Protobuf enabled explicitly but can't find libraries/tools])
357fi
358
359if test "x$have_protobuf" = "xyes"; then
360 AC_DEFINE(HAVE_PROTOBUF,, protobuf)
361fi
362
363AM_CONDITIONAL([HAVE_PROTOBUF], [test "x$have_protobuf" = "xyes"])
364
365#
366# End of logic for protobuf support.
367#
368
paul7ea487b2003-03-17 02:05:07 +0000369if test "${enable_tcp_zebra}" = "yes"; then
370 AC_DEFINE(HAVE_TCP_ZEBRA,,Use TCP for zebra communication)
371fi
372
Paul Jakma3453a712009-06-12 14:21:02 +0100373if test "${enable_linux24_tcp_md5}" = "yes"; then
374 AC_DEFINE(HAVE_TCP_MD5_LINUX24,,Old Linux 2.4 TCP MD5 Signature Patch)
375fi
376
gdtd2a0ccc2003-12-03 18:13:48 +0000377AC_MSG_CHECKING(if zebra should be configurable to send Route Advertisements)
378if test "${enable_rtadv}" != "no"; then
hasso71c0fb52003-05-25 20:18:13 +0000379 AC_MSG_RESULT(yes)
gdtd2a0ccc2003-12-03 18:13:48 +0000380 AC_DEFINE(HAVE_RTADV,,Enable IPv6 Routing Advertisement support)
paul2487bea2003-05-25 23:51:31 +0000381else
382 AC_MSG_RESULT(no)
hasso71c0fb52003-05-25 20:18:13 +0000383fi
paul7ea487b2003-03-17 02:05:07 +0000384
hassoca776982004-06-12 14:33:05 +0000385if test "${enable_irdp}" = "yes"; then
386 AC_DEFINE(HAVE_IRDP,, IRDP )
387fi
388
David Lamparter656a2c02015-02-09 11:36:10 +0100389if test "${enable_isisd}" != "no" && test "${enable_isis_topology}" = yes; then
hassof695b012005-04-02 19:03:39 +0000390 AC_DEFINE(TOPOLOGY_GENERATE,,Enable IS-IS topology generator code)
David Lamparteree1ac2d2012-07-19 12:58:59 +0200391 ISIS_TOPOLOGY_INCLUDES="-I\$(srcdir)/topology"
hassof695b012005-04-02 19:03:39 +0000392 ISIS_TOPOLOGY_DIR="topology"
393 ISIS_TOPOLOGY_LIB="./topology/libtopology.a"
394fi
395
396AC_SUBST(ISIS_TOPOLOGY_INCLUDES)
397AC_SUBST(ISIS_TOPOLOGY_DIR)
398AC_SUBST(ISIS_TOPOLOGY_LIB)
399
paul79cb2162003-06-06 12:19:53 +0000400if test "${enable_user}" = "yes" || test x"${enable_user}" = x""; then
paule8f29842003-08-12 13:08:31 +0000401 enable_user="quagga"
pauledd7c242003-06-04 13:59:38 +0000402elif test "${enable_user}" = "no"; then
403 enable_user="root"
404fi
pauledd7c242003-06-04 13:59:38 +0000405
paul79cb2162003-06-06 12:19:53 +0000406if test "${enable_group}" = "yes" || test x"${enable_group}" = x""; then
paule8f29842003-08-12 13:08:31 +0000407 enable_group="quagga"
pauledd7c242003-06-04 13:59:38 +0000408elif test "${enable_group}" = "no"; then
409 enable_group="root"
410fi
pauledd7c242003-06-04 13:59:38 +0000411
412if test x"${enable_vty_group}" = x"yes" ; then
paul8d4aee52003-06-06 00:30:35 +0000413 AC_MSG_ERROR([--enable-vty-group requires a group as argument, not yes])
paul79cb2162003-06-06 12:19:53 +0000414elif test x"${enable_vty_group}" != x""; then
paul8d4aee52003-06-06 00:30:35 +0000415 if test x"${enable_vty_group}" != x"no"; then
pauledd7c242003-06-04 13:59:38 +0000416 AC_DEFINE_UNQUOTED(VTY_GROUP, "${enable_vty_group}", VTY Sockets Group)
417 fi
418fi
paul26275b02005-04-11 07:10:47 +0000419AC_SUBST([enable_user])
420AC_SUBST([enable_group])
421AC_SUBST([enable_vty_group])
422AC_DEFINE_UNQUOTED(QUAGGA_USER, "${enable_user}", Quagga User)
423AC_DEFINE_UNQUOTED(QUAGGA_GROUP, "${enable_group}", Quagga Group)
pauledd7c242003-06-04 13:59:38 +0000424
gdtaa593d52003-12-22 20:15:53 +0000425enable_configfile_mask=${enable_configfile_mask:-0600}
426AC_DEFINE_UNQUOTED(CONFIGFILE_MASK, ${enable_configfile_mask}, Mask for config files)
427
428enable_logfile_mask=${enable_logfile_mask:-0600}
429AC_DEFINE_UNQUOTED(LOGFILE_MASK, ${enable_logfile_mask}, Mask for log files)
430
Donald Sharpd1839632015-12-09 08:24:44 -0500431MPATH_NUM=1
paul7ea487b2003-03-17 02:05:07 +0000432
433case "${enable_multipath}" in
Donald Sharpd1839632015-12-09 08:24:44 -0500434 0)
435 MPATH_NUM=64
436 ;;
437 [[1-9]|[1-9][0-9]|[1-9][0-9][0-9]])
438 MPATH_NUM="${enable_multipath}"
paul7ea487b2003-03-17 02:05:07 +0000439 ;;
440 "")
441 ;;
442 *)
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000443 AC_MSG_FAILURE([Please specify digit to enable multipath ARG])
paul7ea487b2003-03-17 02:05:07 +0000444 ;;
445esac
446
Donald Sharpd1839632015-12-09 08:24:44 -0500447AC_DEFINE_UNQUOTED(MULTIPATH_NUM, $MPATH_NUM, Maximum number of paths for a route)
paul7ea487b2003-03-17 02:05:07 +0000448
Joachim Nilsson1080c132012-05-30 08:15:48 +0200449dnl -----------------------------------
450dnl Add extra version string to package
451dnl name, string and version fields.
452dnl -----------------------------------
453if test "x${EXTRAVERSION}" != "x" ; then
David Lamparter0be793e2012-11-27 01:34:56 +0000454 VERSION="${VERSION}${EXTRAVERSION}"
455 PACKAGE_VERSION="${PACKAGE_VERSION}${EXTRAVERSION}"
456 PACKAGE_STRING="${PACKAGE_STRING}${EXTRAVERSION}"
Joachim Nilsson1080c132012-05-30 08:15:48 +0200457fi
458
David Lampartera16dcf72012-12-13 11:20:50 +0100459if test "x$with_pkg_git_version" = "xyes"; then
460 if test -d "${srcdir}/.git"; then
461 AC_DEFINE(GIT_VERSION, [1], [include git version info])
462 else with_pkg_git_version="no"
463 AC_MSG_WARN([--with-pkg-git-version given, but this is not a git checkout])
464 fi
465fi
466AM_CONDITIONAL([GIT_VERSION], [test "x$with_pkg_git_version" = "xyes"])
David Lamparter0be793e2012-11-27 01:34:56 +0000467
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000468dnl ------------------------------------
469dnl Check C keywords and standard types
470dnl ------------------------------------
471AC_C_CONST
472AC_C_INLINE
473AC_C_RESTRICT
474AC_C_VOLATILE
pauldc7a2bf2003-10-22 00:07:44 +0000475AC_HEADER_STDC
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000476AC_HEADER_TIME
477AC_HEADER_SYS_WAIT
Paul Jakmae8441a82015-09-15 16:15:27 +0100478AC_HEADER_STDBOOL
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000479dnl AC_TYPE_PID_T
480AC_TYPE_UID_T
481AC_TYPE_MODE_T
482AC_TYPE_SIZE_T
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000483AC_STRUCT_TM
pauldc7a2bf2003-10-22 00:07:44 +0000484
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000485dnl -------------------------
486dnl Check other header files.
487dnl -------------------------
488AC_CHECK_HEADERS([stropts.h sys/ksym.h sys/times.h sys/select.h \
489 sys/types.h linux/version.h netdb.h asm/types.h \
Timo Teräs16ffb262014-07-29 09:41:54 +0000490 sys/cdefs.h sys/param.h limits.h signal.h \
Paul Jakma7e49a4f2016-08-02 13:36:03 +0100491 sys/socket.h netinet/in.h time.h sys/time.h features.h])
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000492
493dnl Utility macro to avoid retyping includes all the time
494m4_define([QUAGGA_INCLUDES],
495[#ifdef SUNOS_5
496#define _XPG4_2
497#define __EXTENSIONS__
498#endif
499#include <stdio.h>
500#if STDC_HEADERS
501# include <stdlib.h>
502# include <stddef.h>
503#else
504# if HAVE_STDLIB_H
505# include <stdlib.h>
506# endif
507#endif
508#if HAVE_SYS_TYPES_H
509# include <sys/types.h>
510#endif
511/* sys/conf.h depends on param.h on FBSD at least */
512#if HAVE_SYS_PARAM_H
513# include <sys/param.h>
514#endif
515/* Required for MAXSIG */
516#if HAVE_SIGNAL_H
517# include <signal.h>
518#endif
519#if HAVE_SYS_SOCKET_H
520# include <sys/socket.h>
521#endif
Hasso Tepperea057672013-01-13 17:45:29 +0000522#ifdef __APPLE__
523# define __APPLE_USE_RFC_3542
524#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000525#if HAVE_NETINET_IN_H
526# include <netinet/in.h>
527#endif
Paul Jakma6511cab2009-06-18 17:38:01 +0100528#ifdef TIME_WITH_SYS_TIME
529# include <sys/time.h>
530# include <time.h>
531#else
532# ifdef HAVE_SYS_TIME_H
533# include <sys/time.h>
534# else
535# include <time.h>
536# endif
537#endif /* TIME_WITH_SYS_TIME */
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000538])dnl
539
Denis Ovsienko2b43bf22011-07-14 16:30:08 +0400540dnl HAVE_NET_IF_H must be discovered by the time the longer AC_CHECK_HEADERS
541dnl round below execution begins, otherwise it doesn't properly detect
542dnl HAVE_NETINET6_IN6_VAR_H, HAVE_NET_IF_VAR_H and HAVE_STRUCT_IN6_ALIASREQ
543dnl on FreeBSD (BZ#408).
544
545AC_CHECK_HEADERS([net/if.h], [], [], QUAGGA_INCLUDES)
546
547m4_define([QUAGGA_INCLUDES],
548QUAGGA_INCLUDES
549[#if HAVE_NET_IF_H
550# include <net/if.h>
551#endif
552])dnl
553
554dnl Same applies for HAVE_NET_IF_VAR_H, which HAVE_NETINET6_ND6_H and
555dnl HAVE_NETINET_IN_VAR_H depend upon. But if_var.h depends on if.h, hence
556dnl an additional round for it.
557
558AC_CHECK_HEADERS([net/if_var.h], [], [], QUAGGA_INCLUDES)
559
560m4_define([QUAGGA_INCLUDES],
561QUAGGA_INCLUDES
562[#if HAVE_NET_IF_VAR_H
563# include <net/if_var.h>
564#endif
565])dnl
566
567AC_CHECK_HEADERS([sys/un.h netinet/in_systm.h netinet/in_var.h \
568 net/if_dl.h net/netopt.h net/route.h \
Paul Jakma11770e12007-06-22 16:14:42 +0000569 inet/nd.h arpa/inet.h netinet/ip_icmp.h \
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000570 fcntl.h stddef.h sys/ioctl.h syslog.h wchar.h wctype.h \
571 sys/sysctl.h sys/sockio.h kvm.h sys/conf.h],
572 [], [], QUAGGA_INCLUDES)
573
574AC_CHECK_HEADERS([ucontext.h], [], [],
575[#ifndef __USE_GNU
576#define __USE_GNU
577#endif /* __USE_GNU */
578QUAGGA_INCLUDES
579])
580
Joakim Tjernlundb166ea22009-06-25 16:40:06 +0100581m4_define([UCONTEXT_INCLUDES],
582[#include <ucontext.h>])dnl
583
584AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.uc_regs],
585 [], [], [UCONTEXT_INCLUDES])
586AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.regs],
587 [AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.regs.nip],
588 [], [], [UCONTEXT_INCLUDES])],
589 [], [UCONTEXT_INCLUDES])
590AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.gregs],
591 [], [], [UCONTEXT_INCLUDES])
592
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000593m4_define([QUAGGA_INCLUDES],
594QUAGGA_INCLUDES
Denis Ovsienko2b43bf22011-07-14 16:30:08 +0400595[#if HAVE_SYS_UN_H
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000596# include <sys/un.h>
597#endif
598#if HAVE_NETINET_IN_SYSTM_H
599# include <netinet/in_systm.h>
600#endif
601#if HAVE_NETINET_IN_VAR_H
602# include <netinet/in_var.h>
603#endif
604#if HAVE_NET_IF_DL_H
605# include <net/if_dl.h>
606#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000607#if HAVE_NET_NETOPT_H
608# include <net/netopt.h>
609#endif
610#if HAVE_NET_ROUTE_H
611# include <net/route.h>
612#endif
613#if HAVE_INET_ND_H
614# include <inet/nd.h>
615#endif
616#if HAVE_ARPA_INET_H
617# include <arpa/inet.h>
618#endif
Paul Jakma11770e12007-06-22 16:14:42 +0000619/* Required for IDRP */
620#if HAVE_NETINET_IP_ICMP_H
621# include <netinet/ip_icmp.h>
622#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000623])dnl
pauldc7a2bf2003-10-22 00:07:44 +0000624
gdtfa3232e2003-12-03 17:52:30 +0000625dnl V6 headers are checked below, after we check for v6
paul7ea487b2003-03-17 02:05:07 +0000626
paul7ea487b2003-03-17 02:05:07 +0000627dnl Some systems (Solaris 2.x) require libnsl (Network Services Library)
628case "$host" in
paulafd8a122005-03-12 06:36:10 +0000629 [*-sunos5.[6-7]*] | [*-solaris2.[6-7]*])
paul7ea487b2003-03-17 02:05:07 +0000630 opsys=sol2-6
paulafd8a122005-03-12 06:36:10 +0000631 AC_DEFINE(SUNOS_56, 1, SunOS 5.6 to 5.7)
paul19877dd2004-05-11 10:49:35 +0000632 AC_DEFINE(SUNOS_5, 1, SunOS 5)
paul7ea487b2003-03-17 02:05:07 +0000633 AC_CHECK_LIB(xnet, main)
634 CURSES=-lcurses
David Lampartere8d0d242014-06-28 22:07:41 +0200635 SOLARIS="solaris"
paul7ea487b2003-03-17 02:05:07 +0000636 ;;
paul1b73de82005-04-10 16:31:51 +0000637 [*-sunos5.[8-9]] \
638 | [*-sunos5.1[0-9]] \
639 | [*-sunos5.1[0-9].[0-9]] \
640 | [*-solaris2.[8-9]] \
641 | [*-solaris2.1[0-9]] \
642 | [*-solaris2.1[0-9].[0-9]])
paulafd8a122005-03-12 06:36:10 +0000643 opsys=sol8
Paul Jakmafb66b292006-05-28 08:26:15 +0000644 AC_DEFINE(SUNOS_59, 1, [SunOS 5.8 up])
645 AC_DEFINE(SUNOS_5, 1, [SunOS 5])
paul19877dd2004-05-11 10:49:35 +0000646 AC_CHECK_LIB(socket, main)
647 AC_CHECK_LIB(nsl, main)
paul1b73de82005-04-10 16:31:51 +0000648 AC_CHECK_LIB(umem, main)
Paul Jakmafb66b292006-05-28 08:26:15 +0000649 AC_CHECK_FUNCS([printstack],
650 [AC_DEFINE([HAVE_PRINTSTACK],1,[Solaris printstack])
651 AC_DEFINE([HAVE_STACK_TRACE],1,[Stack symbols decode functionality])
652 ])
paul19877dd2004-05-11 10:49:35 +0000653 CURSES=-lcurses
David Lampartere8d0d242014-06-28 22:07:41 +0200654 SOLARIS="solaris"
paul19877dd2004-05-11 10:49:35 +0000655 ;;
paul7ea487b2003-03-17 02:05:07 +0000656 *-sunos5* | *-solaris2*)
paul19877dd2004-05-11 10:49:35 +0000657 AC_DEFINE(SUNOS_5,,SunOS 5, Unknown SunOS)
paul7ea487b2003-03-17 02:05:07 +0000658 AC_CHECK_LIB(socket, main)
659 AC_CHECK_LIB(nsl, main)
660 CURSES=-lcurses
David Lampartere8d0d242014-06-28 22:07:41 +0200661 SOLARIS="solaris"
paul7ea487b2003-03-17 02:05:07 +0000662 ;;
hassoc45eb832005-02-19 13:58:06 +0000663 *-linux*)
paul7ea487b2003-03-17 02:05:07 +0000664 opsys=gnu-linux
665 AC_DEFINE(GNU_LINUX,,GNU Linux)
666 ;;
paul7ea487b2003-03-17 02:05:07 +0000667 *-openbsd*)
668 opsys=openbsd
669 AC_DEFINE(OPEN_BSD,,OpenBSD)
670 ;;
paul7ea487b2003-03-17 02:05:07 +0000671esac
672
Paul Jakma62c9f502009-07-19 17:33:21 +0100673AC_SYS_LARGEFILE
674
paul7ea487b2003-03-17 02:05:07 +0000675dnl ---------------------
676dnl Integrated VTY option
677dnl ---------------------
678case "${enable_vtysh}" in
Donald Sharpe6756782015-07-16 21:18:34 -0400679 "no") VTYSH="";;
680 *) VTYSH="vtysh";
paul7ea487b2003-03-17 02:05:07 +0000681 AC_DEFINE(VTYSH,,VTY shell)
gdtfc9d0742004-06-30 14:25:12 +0000682dnl Vtysh uses libreadline, which looks for termcap functions at
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000683dnl configure time. We follow readlines search order.
gdtfc9d0742004-06-30 14:25:12 +0000684dnl The required procedures are in libtermcap on NetBSD, in
685dnl [TODO] on Linux, and in [TODO] on Solaris.
hassoc0689392005-08-25 12:00:58 +0000686 AC_CHECK_LIB(termcap, tputs, LIBREADLINE="$LIBREADLINE -ltermcap",
paula9694592005-08-25 14:50:05 +0000687 [AC_CHECK_LIB(tinfo, tputs, LIBREADLINE="$LIBREADLINE -ltinfo",
688 [AC_CHECK_LIB(curses, tputs, LIBREADLINE="$LIBREADLINE -lcurses",
689 [AC_CHECK_LIB(ncurses, tputs,
690 LIBREADLINE="$LIBREADLINE -lncurses")]
691 )]
692 )]
693 )
694 AC_CHECK_LIB(readline, main, LIBREADLINE="$LIBREADLINE -lreadline",,
695 "$LIBREADLINE")
paul7ea487b2003-03-17 02:05:07 +0000696 if test $ac_cv_lib_readline_main = no; then
gdtfc9d0742004-06-30 14:25:12 +0000697 AC_MSG_ERROR([vtysh needs libreadline but was not found and usable on your system.])
paul7ea487b2003-03-17 02:05:07 +0000698 fi
699 AC_CHECK_HEADER(readline/history.h)
700 if test $ac_cv_header_readline_history_h = no;then
701 AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
702 fi
paula9694592005-08-25 14:50:05 +0000703 AC_CHECK_LIB(readline, rl_completion_matches,
704 LIBREADLINE="$LIBREADLINE",, "$LIBREADLINE")
paul3d3de8c2003-05-23 10:33:49 +0000705 if test $ac_cv_lib_readline_rl_completion_matches = no; then
706 AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
707 fi
708 ;;
paul7ea487b2003-03-17 02:05:07 +0000709 "no" ) VTYSH="";;
paul7ea487b2003-03-17 02:05:07 +0000710esac
hassoc0689392005-08-25 12:00:58 +0000711AC_SUBST(LIBREADLINE)
David Wardf027d332012-04-30 11:36:15 -0400712AM_CONDITIONAL(VTYSH, test "x$VTYSH" = "xvtysh")
paul7ea487b2003-03-17 02:05:07 +0000713
714dnl ----------
715dnl PAM module
Denis Ovsienko61599282011-07-15 00:24:15 +0400716dnl
717dnl Quagga detects the PAM library it is built against by checking for a
718dnl functional pam_misc.h (Linux-PAM) or openpam.h (OpenPAM) header. pam_misc.h
719dnl is known to #include pam_appl.h, the standard header of a PAM library, and
720dnl openpam.h doesn't do that, although depends on the header too. Hence a
721dnl little assistance to AC_CHECK_HEADER is necessary for the proper detection
722dnl of OpenPAM.
paul7ea487b2003-03-17 02:05:07 +0000723dnl ----------
724if test "$with_libpam" = "yes"; then
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000725 AC_CHECK_HEADER([security/pam_misc.h],
726 [AC_DEFINE(HAVE_PAM_MISC_H,,Have pam_misc.h)
727 AC_DEFINE(PAM_CONV_FUNC,misc_conv,Have misc_conv)
728 pam_conv_func="misc_conv"
729 ],
730 [], QUAGGA_INCLUDES)
731 AC_CHECK_HEADER([security/openpam.h],
732 [AC_DEFINE(HAVE_OPENPAM_H,,Have openpam.h)
733 AC_DEFINE(PAM_CONV_FUNC,openpam_ttyconv,Have openpam_ttyconv)
734 pam_conv_func="openpam_ttyconv"
735 ],
Denis Ovsienko61599282011-07-15 00:24:15 +0400736 [], QUAGGA_INCLUDES[#include <security/pam_appl.h>])
paul24cd4352003-05-06 12:16:27 +0000737 if test -z "$ac_cv_header_security_pam_misc_h$ac_cv_header_security_openpam_h" ; then
738 AC_MSG_WARN([*** pam support will not be built ***])
739 with_libpam="no"
740 fi
741fi
742
743if test "$with_libpam" = "yes"; then
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000744dnl took this test from proftpds configure.in and suited to our needs
paul7ea487b2003-03-17 02:05:07 +0000745dnl -------------------------------------------------------------------------
746dnl
747dnl This next check looks funky due to a linker problem with some versions
748dnl of the PAM library. Prior to 0.72 release, the Linux PAM shared library
749dnl omitted requiring libdl linking information. PAM-0.72 or better ships
750dnl with RedHat 6.2 and Debian 2.2 or better.
751AC_CHECK_LIB(pam, pam_start,
paul24cd4352003-05-06 12:16:27 +0000752 [AC_CHECK_LIB(pam, $pam_conv_func,
paul7ea487b2003-03-17 02:05:07 +0000753 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
754 LIBPAM="-lpam"],
755 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
756 LIBPAM="-lpam -lpam_misc"]
757 )
758 ],
759
760 [AC_CHECK_LIB(pam, pam_end,
paul24cd4352003-05-06 12:16:27 +0000761 [AC_CHECK_LIB(pam, $pam_conv_func,
paula159ed92003-06-04 11:01:45 +0000762 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
paul7ea487b2003-03-17 02:05:07 +0000763 LIBPAM="-lpam -ldl"],
paula159ed92003-06-04 11:01:45 +0000764 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
paul7ea487b2003-03-17 02:05:07 +0000765 LIBPAM="-lpam -ldl -lpam_misc"]
766 )
767 ],AC_MSG_WARN([*** pam support will not be built ***]),
768 [-ldl])
769 ]
770)
771fi
772AC_SUBST(LIBPAM)
773
774dnl -------------------------------
775dnl Endian-ness check
776dnl -------------------------------
777AC_WORDS_BIGENDIAN
778
779dnl -------------------------------
780dnl check the size in byte of the C
781dnl -------------------------------
782dnl AC_CHECK_SIZEOF(char)
783dnl AC_CHECK_SIZEOF(int)
784dnl AC_CHECK_SIZEOF(short)
785dnl AC_CHECK_SIZEOF(long)
786
787dnl ----------------------------
788dnl check existance of functions
789dnl ----------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000790AC_FUNC_CHOWN
791AC_FUNC_FNMATCH
792AC_FUNC_FORK
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000793AC_FUNC_MEMCMP
794AC_FUNC_MKTIME
795AC_FUNC_STRFTIME
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000796AC_FUNC_STAT
797AC_FUNC_SELECT_ARGTYPES
798AC_FUNC_STRFTIME
Paul Jakmad46d2a22007-05-10 16:53:04 +0000799dnl Avoid AC_FUNC_STRNLEN because it pulls in AC_SYSTEM_EXTENSIONS which
800dnl can lead to strange side effects. So we just check for strnlen
801dnl directly, see below.
Paul Jakma2b5cb412007-05-10 17:05:16 +0000802dnl AC_FUNC_STRNLENdnl
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000803AC_FUNC_VPRINTF
804
805dnl -------------------------------
806dnl bgpd needs pow() and hence libm
807dnl -------------------------------
808TMPLIBS="$LIBS"
809AC_CHECK_HEADER([math.h],
810 [AC_CHECK_LIB([m], [pow],
811 [LIBM="-lm"
812 LIBS="$LIBS $LIBM"
813 AC_DEFINE(HAVE_LIBM,, Have libm)
814 AC_CHECK_FUNCS(pow,[],[LIBM=""])
815 ])
816])
817if test x"$LIBM" = x ; then
818 AC_MSG_WARN([Unable to find working pow function - bgpd may not link])
819fi
820LIBS="$TMPLIBS"
821AC_SUBST(LIBM)
822
823dnl ---------------
824dnl other functions
825dnl ---------------
826AC_CHECK_FUNCS([dup2 ftruncate getcwd gethostbyname getpagesize gettimeofday \
Paul Jakmad46d2a22007-05-10 16:53:04 +0000827 inet_ntoa inet_aton strnlen \
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000828 memchr memmove memset select socket \
829 strcasecmp strchr strcspn strdup strerror \
830 strncasecmp strndup strrchr strspn strstr \
831 strtol strtoul strlcat strlcpy \
832 daemon snprintf vsnprintf \
833 if_nametoindex if_indextoname getifaddrs \
David Lamparter12bbd622015-09-15 02:26:44 -0700834 uname fcntl getgrouplist])
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000835
paul7ea487b2003-03-17 02:05:07 +0000836
Feng Lu55cfa2f2014-07-03 18:24:34 +0800837AC_CHECK_HEADER([asm-generic/unistd.h],
838 [AC_CHECK_DECL(__NR_setns,
839 AC_DEFINE(HAVE_NETNS,, Have netns),,
840 QUAGGA_INCLUDES [#include <asm-generic/unistd.h>
841 ])
842 AC_CHECK_FUNCS(setns, AC_DEFINE(HAVE_SETNS,, Have setns))]
843 )
844
paul7ea487b2003-03-17 02:05:07 +0000845dnl ------------------------------------
846dnl Determine routing get and set method
847dnl ------------------------------------
848AC_MSG_CHECKING(zebra between kernel interface method)
849if test x"$opsys" = x"gnu-linux"; then
David Lamparter2e5ca492014-06-28 20:54:31 +0200850 AC_MSG_RESULT(netlink)
851 RT_METHOD=rt_netlink.o
852 AC_DEFINE(HAVE_NETLINK,,netlink)
853 netlink=yes
paul7ea487b2003-03-17 02:05:07 +0000854else
David Lamparter39b233f2014-06-28 21:49:18 +0200855 AC_MSG_RESULT(Route socket)
856 KERNEL_METHOD="kernel_socket.o"
857 RT_METHOD="rt_socket.o"
paul7ea487b2003-03-17 02:05:07 +0000858fi
859AC_SUBST(RT_METHOD)
860AC_SUBST(KERNEL_METHOD)
Avneesh Sachdev5adc2522012-11-13 22:48:59 +0000861AM_CONDITIONAL([HAVE_NETLINK], [test "x$netlink" = "xyes"])
paul7ea487b2003-03-17 02:05:07 +0000862
Paul Jakma238497f2007-08-07 18:49:18 +0000863dnl --------------------------
864dnl Determine IS-IS I/O method
865dnl --------------------------
David Lamparter745bf052010-02-02 21:49:35 +0100866AC_DEFINE(ISIS_METHOD_PFPACKET, 1, [ constant value for isis method pfpacket ])
867AC_DEFINE(ISIS_METHOD_DLPI, 2, [ constant value for isis method dlpi ])
868AC_DEFINE(ISIS_METHOD_BPF, 3, [ constant value for isis method bpf ])
Paul Jakma238497f2007-08-07 18:49:18 +0000869AC_CHECK_HEADER(net/bpf.h)
870AC_CHECK_HEADER(sys/dlpi.h)
871AC_MSG_CHECKING(zebra IS-IS I/O method)
872if test x"$opsys" = x"gnu-linux"; then
873 AC_MSG_RESULT(pfpacket)
David Lamparter745bf052010-02-02 21:49:35 +0100874 ISIS_METHOD_MACRO="ISIS_METHOD_PFPACKET"
Paul Jakma238497f2007-08-07 18:49:18 +0000875elif test x"$opsys" = x"sol2-6" -o x"$opsys" = x"sol8"; then
876 AC_MSG_RESULT(DLPI)
David Lamparter745bf052010-02-02 21:49:35 +0100877 ISIS_METHOD_MACRO="ISIS_METHOD_DLPI"
Paul Jakma238497f2007-08-07 18:49:18 +0000878else
879 if test $ac_cv_header_net_bpf_h = no; then
880 if test $ac_cv_header_sys_dlpi_h = no; then
881 AC_MSG_RESULT(none)
882 AC_MSG_WARN([*** IS-IS support will not be built ***])
883 ISISD=""
884 else
885 AC_MSG_RESULT(DLPI)
886 fi
David Lamparter745bf052010-02-02 21:49:35 +0100887 ISIS_METHOD_MACRO="ISIS_METHOD_DLPI"
Paul Jakma238497f2007-08-07 18:49:18 +0000888 else
889 AC_MSG_RESULT(BPF)
David Lamparter745bf052010-02-02 21:49:35 +0100890 ISIS_METHOD_MACRO="ISIS_METHOD_BPF"
Paul Jakma238497f2007-08-07 18:49:18 +0000891 fi
892fi
David Lamparter745bf052010-02-02 21:49:35 +0100893AC_DEFINE_UNQUOTED(ISIS_METHOD, $ISIS_METHOD_MACRO, [ selected method for isis, == one of the constants ])
Paul Jakma238497f2007-08-07 18:49:18 +0000894
ajsb99760a2005-01-04 16:24:43 +0000895dnl ------------------------------------
896dnl check for broken CMSG_FIRSTHDR macro
897dnl ------------------------------------
gdt6c200462005-01-04 17:02:48 +0000898AC_MSG_CHECKING(for broken CMSG_FIRSTHDR)
hasso5b087522005-04-03 23:46:37 +0000899AC_RUN_IFELSE([AC_LANG_SOURCE([[
ajsb99760a2005-01-04 16:24:43 +0000900#ifdef SUNOS_5
901#define _XPG4_2
902#define __EXTENSIONS__
903#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000904#ifdef HAVE_STDLIB_H
905# include <stdlib.h>
906#endif
907#ifdef HAVE_SYS_TYPES_H
ajsb99760a2005-01-04 16:24:43 +0000908#include <sys/types.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000909#endif
910#ifdef HAVE_SYS_SOCKET_H
ajsb99760a2005-01-04 16:24:43 +0000911#include <sys/socket.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000912#endif
ajsb99760a2005-01-04 16:24:43 +0000913
914main()
915{
916 struct msghdr msg;
917 char buf[4];
918
919 msg.msg_control = buf;
920 msg.msg_controllen = 0;
921
922 if (CMSG_FIRSTHDR(&msg) != NULL)
923 exit(0);
924 exit (1);
hasso5b087522005-04-03 23:46:37 +0000925}]])],[AC_MSG_RESULT(yes - using workaround) AC_DEFINE(HAVE_BROKEN_CMSG_FIRSTHDR,,Broken CMSG_FIRSTHDR)],
hassod33e8d72005-04-03 13:07:21 +0000926[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
ajsb99760a2005-01-04 16:24:43 +0000927
paul7ea487b2003-03-17 02:05:07 +0000928dnl ------------------------------
929dnl check kernel route read method
930dnl ------------------------------
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500931AC_CACHE_CHECK([route read method], [quagga_cv_rtread_method],
932[if test "x$netlink" = xyes; then
933 quagga_cv_rtread_method="netlink"
paul7ea487b2003-03-17 02:05:07 +0000934else
David Lamparter2e5ca492014-06-28 20:54:31 +0200935for quagga_cv_rtread_method in /dev/ip /dev/null;
paul7ea487b2003-03-17 02:05:07 +0000936do
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500937 test x`ls $quagga_cv_rtread_method 2>/dev/null` = x"$quagga_cv_rtread_method" && break
paul7ea487b2003-03-17 02:05:07 +0000938done
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500939case $quagga_cv_rtread_method in
paul9c30ab62003-07-08 08:36:17 +0000940 "/dev/ip")
941 case "$host" in
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500942 *-freebsd*) quagga_cv_rtread_method="sysctl";;
943 *) quagga_cv_rtread_method="getmsg";;
paul9c30ab62003-07-08 08:36:17 +0000944 esac;;
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500945 *)
946 quagga_cv_rtread_method="sysctl";;
paul7ea487b2003-03-17 02:05:07 +0000947esac
948fi])
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500949RTREAD_METHOD=rtread_${quagga_cv_rtread_method}.o
paul7ea487b2003-03-17 02:05:07 +0000950AC_SUBST(RTREAD_METHOD)
951
952dnl -----------------------------
953dnl check interface lookup method
954dnl -----------------------------
paul19877dd2004-05-11 10:49:35 +0000955IOCTL_METHOD=ioctl.o
paul7ea487b2003-03-17 02:05:07 +0000956AC_MSG_CHECKING(interface looking up method)
957if test "$netlink" = yes; then
958 AC_MSG_RESULT(netlink)
959 IF_METHOD=if_netlink.o
paul19877dd2004-05-11 10:49:35 +0000960elif test "$opsys" = "sol2-6";then
961 AC_MSG_RESULT(Solaris GIF)
962 IF_METHOD=if_ioctl.o
paulafd8a122005-03-12 06:36:10 +0000963elif test "$opsys" = "sol8";then
paul19877dd2004-05-11 10:49:35 +0000964 AC_MSG_RESULT(Solaris GLIF)
965 IF_METHOD=if_ioctl_solaris.o
966 IOCTL_METHOD=ioctl_solaris.o
paul19877dd2004-05-11 10:49:35 +0000967elif test "$opsys" = "openbsd";then
968 AC_MSG_RESULT(openbsd)
969 IF_METHOD=if_ioctl.o
970elif grep NET_RT_IFLIST /usr/include/sys/socket.h >/dev/null 2>&1; then
971 AC_MSG_RESULT(sysctl)
paul7ea487b2003-03-17 02:05:07 +0000972 IF_METHOD=if_sysctl.o
973 AC_DEFINE(HAVE_NET_RT_IFLIST,,NET_RT_IFLIST)
paul19877dd2004-05-11 10:49:35 +0000974else
paul7ea487b2003-03-17 02:05:07 +0000975 AC_MSG_RESULT(ioctl)
976 IF_METHOD=if_ioctl.o
paul7ea487b2003-03-17 02:05:07 +0000977fi
978AC_SUBST(IF_METHOD)
paul19877dd2004-05-11 10:49:35 +0000979AC_SUBST(IOCTL_METHOD)
paul7ea487b2003-03-17 02:05:07 +0000980
paul42c98192005-05-07 02:22:51 +0000981dnl ---------------------------------------------------------------
982dnl figure out how to specify an interface in multicast sockets API
983dnl ---------------------------------------------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000984AC_CHECK_MEMBERS([struct ip_mreqn.imr_ifindex], [], [], QUAGGA_INCLUDES)
paul42c98192005-05-07 02:22:51 +0000985
Donald Sharp1934e782015-06-05 12:15:44 -0700986AC_CHECK_HEADERS([linux/mroute.h], [], [],
987[
988#if HAVE_NETINET_IN_H
989#include<netinet/in.h>
990#endif])
paul42c98192005-05-07 02:22:51 +0000991AC_MSG_CHECKING([for BSD struct ip_mreq hack])
992AC_TRY_COMPILE([#ifdef HAVE_SYS_PARAM_H
993#include <sys/param.h>
Brian Bennettb8a893c2015-02-17 22:32:22 +0000994#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 +0000995 return (0);
996#else
997 #error No support for BSD struct ip_mreq hack detected
998#endif],[AC_MSG_RESULT(yes)
999AC_DEFINE(HAVE_BSD_STRUCT_IP_MREQ_HACK,,[Can pass ifindex in struct ip_mreq])],
1000AC_MSG_RESULT(no))
1001
Dmitrij Tejblum10d04cd2011-08-22 11:39:35 +04001002AC_MSG_CHECKING([for RFC3678 protocol-independed API])
1003AC_TRY_COMPILE([
1004#include <sys/types.h>
1005#include <netinet/in.h>
1006], [struct group_req gr; int sock; setsockopt(sock, IPPROTO_IP, MCAST_JOIN_GROUP, (void*)&gr, sizeof(gr));
1007], [AC_MSG_RESULT(yes)
1008AC_DEFINE(HAVE_RFC3678,1,[Have RFC3678 protocol-independed API])],
1009AC_MSG_RESULT(no))
1010
Andrew J. Schorrc543a172008-01-10 15:24:32 +00001011dnl ---------------------------------------------------------------
1012dnl figure out how to check link-state
1013dnl ---------------------------------------------------------------
Andrew J. Schorr6418bed2008-01-11 16:33:59 +00001014AC_CHECK_HEADER([net/if.h],
1015 [AC_CHECK_HEADER( [net/if_media.h],
1016 [m4_define([LINK_DETECT_INCLUDES],
1017 QUAGGA_INCLUDES
1018 [#include <net/if_media.h>
1019 ])
1020 AC_CHECK_MEMBERS( [struct ifmediareq.ifm_status],
1021 AC_DEFINE(HAVE_BSD_LINK_DETECT,,[BSD link-detect]),
1022 [], LINK_DETECT_INCLUDES)],
1023 [],
1024 QUAGGA_INCLUDES)],
1025 [], QUAGGA_INCLUDES )
Andrew J. Schorrc543a172008-01-10 15:24:32 +00001026
Doug VanLeuven9234b382012-10-10 16:12:32 -07001027dnl ---------------------------------------------------------------
1028dnl Additional, newer way to check link-state using ifi_link_state.
1029dnl Not available in all BSD's when ifmediareq available
1030dnl ---------------------------------------------------------------
1031AC_CHECK_HEADER([net/if.h],
1032 AC_CHECK_MEMBERS([struct if_data.ifi_link_state],
1033 AC_DEFINE(HAVE_BSD_IFI_LINK_STATE,,[BSD ifi_link_state available]),
1034 [], QUAGGA_INCLUDES),
1035 ,)
1036
Paul Jakma0df7c912008-07-21 21:02:49 +00001037dnl ------------------------
1038dnl TCP_MD5SIG socket option
1039dnl ------------------------
1040
1041AC_CHECK_HEADER([netinet/tcp.h],
1042 [m4_define([MD5_INCLUDES],
1043 QUAGGA_INCLUDES
1044 [#include <netinet/tcp.h>
1045 ])
1046 AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)],
1047 [],
1048 QUAGGA_INCLUDES)
1049if test $ac_cv_have_decl_TCP_MD5SIG = no; then
1050 AC_CHECK_HEADER([linux/tcp.h],
1051 [m4_define([MD5_INCLUDES],
1052 QUAGGA_INCLUDES
1053 [#include <linux/tcp.h>
1054 ])
1055 AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)])
1056fi
1057
paul7ea487b2003-03-17 02:05:07 +00001058dnl -----------------------------
1059dnl check ipforward detect method
1060dnl -----------------------------
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001061AC_CACHE_CHECK([ipforward method], [quagga_cv_ipforward_method],
David Lamparterca9f3422009-09-16 02:11:00 +02001062[if test x$cross_compiling = xyes; then
1063 if test x"$opsys" = x"gnu-linux"; then
1064 quagga_cv_ipforward_method=/proc/net/snmp
1065 else
1066 quagga_cv_ipforward_method=/dev/ip
1067 fi
1068else
1069 for quagga_cv_ipforward_method in /proc/net/snmp /dev/ip /dev/null;
1070 do
1071 test x`ls $quagga_cv_ipforward_method 2>/dev/null` = x"$quagga_cv_ipforward_method" && break
1072 done
1073fi
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001074case $quagga_cv_ipforward_method in
1075 "/proc/net/snmp") quagga_cv_ipforward_method="proc";;
paul7ea487b2003-03-17 02:05:07 +00001076 "/dev/ip")
1077 case "$host" in
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001078 *-freebsd*) quagga_cv_ipforward_method="sysctl";;
1079 *) quagga_cv_ipforward_method="solaris";;
paul7ea487b2003-03-17 02:05:07 +00001080 esac;;
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001081 *) quagga_cv_ipforward_method="sysctl";;
paul7ea487b2003-03-17 02:05:07 +00001082esac])
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001083IPFORWARD=ipforward_${quagga_cv_ipforward_method}.o
paul7ea487b2003-03-17 02:05:07 +00001084AC_SUBST(IPFORWARD)
1085
1086AC_CHECK_FUNCS(getaddrinfo, [have_getaddrinfo=yes], [have_getaddrinfo=no])
1087
1088dnl ----------
1089dnl IPv6 check
1090dnl ----------
1091AC_MSG_CHECKING(whether does this OS have IPv6 stack)
paul7ea487b2003-03-17 02:05:07 +00001092dnl ---------
1093dnl KAME IPv6
1094dnl ---------
David Lamparter6d6df302014-06-28 21:12:37 +02001095 if grep WIDE /usr/include/netinet6/in6.h >/dev/null 2>&1; then
paula159ed92003-06-04 11:01:45 +00001096 AC_DEFINE(KAME,1,KAME IPv6)
paula159ed92003-06-04 11:01:45 +00001097 AC_MSG_RESULT(KAME)
paul19877dd2004-05-11 10:49:35 +00001098dnl ------------------------------------
1099dnl Solaris 9, 10 and potentially higher
1100dnl ------------------------------------
paulafd8a122005-03-12 06:36:10 +00001101 elif test x"$opsys" = x"sol8"; then
paul19877dd2004-05-11 10:49:35 +00001102 AC_DEFINE(SOLARIS_IPV6, 1, Solaris IPv6)
paul19877dd2004-05-11 10:49:35 +00001103 AC_MSG_RESULT(Solaris IPv6)
paul7ea487b2003-03-17 02:05:07 +00001104dnl ----------
1105dnl Linux IPv6
1106dnl ----------
David Lamparter29ed6222014-06-28 21:42:25 +02001107 elif test x"$opsys" = x"gnu-linux"; then
Timo Teräs3ef0b872014-07-29 09:41:56 +00001108 AC_DEFINE(LINUX_IPV6,1,Linux IPv6 stack)
David Lamparter29ed6222014-06-28 21:42:25 +02001109 AC_MSG_RESULT(Linux IPv6)
1110 else
David Lamparter7fe17e62014-11-22 10:31:33 -08001111 AC_MSG_ERROR([Failed to detect IPv6 stack])
paula159ed92003-06-04 11:01:45 +00001112 fi
paul7ea487b2003-03-17 02:05:07 +00001113
David Lamparter7fe17e62014-11-22 10:31:33 -08001114dnl this is unconditial, for compatibility
1115AC_DEFINE(HAVE_IPV6,1,IPv6)
paul7ea487b2003-03-17 02:05:07 +00001116
gdtfa3232e2003-12-03 17:52:30 +00001117dnl ------------------
1118dnl IPv6 header checks
1119dnl ------------------
gdtfa3232e2003-12-03 17:52:30 +00001120AC_CHECK_HEADERS([netinet6/in6.h netinet/in6_var.h netinet/icmp6.h \
David Lamparter05a69d22015-05-27 22:15:37 +02001121 netinet6/in6_var.h netinet6/nd6.h], [], [],
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001122 QUAGGA_INCLUDES)
gdtfa3232e2003-12-03 17:52:30 +00001123
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001124m4_define([QUAGGA_INCLUDES],dnl
1125QUAGGA_INCLUDES
1126[#if HAVE_NETINET6_IN6_H
1127#include <netinet6/in6.h>
1128#endif
1129#if HAVE_NETINET_IN6_VAR_H
1130#include <netinet/in6_var.h>
1131#endif
1132#if HAVE_NETINET_ICMP6_H
1133# include <netinet/icmp6.h>
1134#endif
1135#if HAVE_NETINET6_IN6_VAR_H
1136# include <netinet6/in6_var.h>
1137#endif
1138#if HAVE_NETINET6_ND6_H
Hasso Tepperfbf24542007-06-25 19:30:59 +00001139# include <netinet6/nd6.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001140#endif
1141])dnl
1142
Joakim Tjernlundcbcd9bf2009-02-16 09:40:39 +01001143dnl disable doc check
1144if test "${enable_doc}" = "no";then
1145 DOC=""
1146else
1147 DOC="doc"
1148fi
1149
paul7ea487b2003-03-17 02:05:07 +00001150dnl --------------------
1151dnl Daemon disable check
1152dnl --------------------
1153if test "${enable_zebra}" = "no";then
1154 ZEBRA=""
1155else
1156 ZEBRA="zebra"
1157fi
David Wardf027d332012-04-30 11:36:15 -04001158AM_CONDITIONAL(ZEBRA, test "x$ZEBRA" = "xzebra")
paul7ea487b2003-03-17 02:05:07 +00001159
1160if test "${enable_bgpd}" = "no";then
1161 BGPD=""
1162else
1163 BGPD="bgpd"
1164fi
David Wardf027d332012-04-30 11:36:15 -04001165AM_CONDITIONAL(BGPD, test "x$BGPD" = "xbgpd")
paul7ea487b2003-03-17 02:05:07 +00001166
1167if test "${enable_ripd}" = "no";then
1168 RIPD=""
1169else
1170 RIPD="ripd"
1171fi
David Wardf027d332012-04-30 11:36:15 -04001172AM_CONDITIONAL(RIPD, test "x$RIPD" = "xripd")
paul7ea487b2003-03-17 02:05:07 +00001173
1174if test "${enable_ospfd}" = "no";then
1175 OSPFD=""
1176else
1177 OSPFD="ospfd"
1178fi
David Wardf027d332012-04-30 11:36:15 -04001179AM_CONDITIONAL(OSPFD, test "x$OSPFD" = "xospfd")
paul7ea487b2003-03-17 02:05:07 +00001180
ajsd0199432004-12-22 14:03:52 +00001181if test "${enable_watchquagga}" = "no";then
1182 WATCHQUAGGA=""
1183else
1184 WATCHQUAGGA="watchquagga"
1185fi
David Wardf027d332012-04-30 11:36:15 -04001186AM_CONDITIONAL(WATCHQUAGGA, test "x$WATCHQUAGGA" = "xwatchquagga")
ajsd0199432004-12-22 14:03:52 +00001187
paul1ef74ef2003-03-21 15:16:05 +00001188OSPFCLIENT=""
Donald Sharp36fef572015-12-16 14:22:10 -05001189if test "${enable_ospfapi}" != "no";then
paul9a569842003-03-28 01:45:13 +00001190 AC_DEFINE(SUPPORT_OSPF_API,,OSPFAPI)
paul1ef74ef2003-03-21 15:16:05 +00001191
Donald Sharp36fef572015-12-16 14:22:10 -05001192 if test "${enable_ospfclient}" != "no";then
paul1ef74ef2003-03-21 15:16:05 +00001193 OSPFCLIENT="ospfclient"
paul1ef74ef2003-03-21 15:16:05 +00001194 fi
paul7ea487b2003-03-17 02:05:07 +00001195fi
Donald Sharp36fef572015-12-16 14:22:10 -05001196
David Wardf027d332012-04-30 11:36:15 -04001197AM_CONDITIONAL(OSPFCLIENT, test "x$OSPFCLIENT" = "xospfclient")
paul7ea487b2003-03-17 02:05:07 +00001198
1199case "${enable_ripngd}" in
paul7ea487b2003-03-17 02:05:07 +00001200 "no" ) RIPNGD="";;
David Lamparter7fe17e62014-11-22 10:31:33 -08001201 * ) RIPNGD="ripngd";;
paul7ea487b2003-03-17 02:05:07 +00001202esac
David Wardf027d332012-04-30 11:36:15 -04001203AM_CONDITIONAL(RIPNGD, test "x$RIPNGD" = "xripngd")
paul7ea487b2003-03-17 02:05:07 +00001204
1205case "${enable_ospf6d}" in
paul7ea487b2003-03-17 02:05:07 +00001206 "no" ) OSPF6D="";;
David Lamparter7fe17e62014-11-22 10:31:33 -08001207 * ) OSPF6D="ospf6d";;
paul7ea487b2003-03-17 02:05:07 +00001208esac
David Wardf027d332012-04-30 11:36:15 -04001209AM_CONDITIONAL(OSPF6D, test "x$OSPF6D" = "xospf6d")
paul7ea487b2003-03-17 02:05:07 +00001210
jardin9e867fe2003-12-23 08:56:18 +00001211case "${enable_isisd}" in
jardin9e867fe2003-12-23 08:56:18 +00001212 "no" ) ISISD="";;
David Lamparter656a2c02015-02-09 11:36:10 +01001213 * ) ISISD="isisd";;
jardin9e867fe2003-12-23 08:56:18 +00001214esac
David Wardf027d332012-04-30 11:36:15 -04001215AM_CONDITIONAL(ISISD, test "x$ISISD" = "xisisd")
jardin9e867fe2003-12-23 08:56:18 +00001216
Everton Marques871dbcf2009-08-11 15:43:05 -03001217case "${enable_pimd}" in
Everton Marques871dbcf2009-08-11 15:43:05 -03001218 "no" ) PIMD="";;
Donald Sharpe6756782015-07-16 21:18:34 -04001219 * ) PIMD="pimd";;
Everton Marques871dbcf2009-08-11 15:43:05 -03001220esac
Everton Marquesff57d362014-06-25 15:54:03 -03001221AM_CONDITIONAL(PIMD, test "x$PIMD" = "xpimd")
Everton Marques871dbcf2009-08-11 15:43:05 -03001222
paul7ea487b2003-03-17 02:05:07 +00001223if test "${enable_bgp_announce}" = "no";then
Paul Jakma750e8142008-07-22 21:11:48 +00001224 AC_DEFINE(DISABLE_BGP_ANNOUNCE,1,Disable BGP installation to zebra)
1225else
1226 AC_DEFINE(DISABLE_BGP_ANNOUNCE,0,Disable BGP installation to zebra)
paul7ea487b2003-03-17 02:05:07 +00001227fi
1228
Joakim Tjernlundcbcd9bf2009-02-16 09:40:39 +01001229AC_SUBST(DOC)
paul7ea487b2003-03-17 02:05:07 +00001230AC_SUBST(ZEBRA)
1231AC_SUBST(BGPD)
1232AC_SUBST(RIPD)
1233AC_SUBST(RIPNGD)
1234AC_SUBST(OSPFD)
1235AC_SUBST(OSPF6D)
ajsd0199432004-12-22 14:03:52 +00001236AC_SUBST(WATCHQUAGGA)
jardin9e867fe2003-12-23 08:56:18 +00001237AC_SUBST(ISISD)
Everton Marques871dbcf2009-08-11 15:43:05 -03001238AC_SUBST(PIMD)
Greg Troxel97cee872007-08-02 13:36:56 +00001239AC_SUBST(SOLARIS)
paul7ea487b2003-03-17 02:05:07 +00001240AC_SUBST(VTYSH)
paul7ea487b2003-03-17 02:05:07 +00001241AC_SUBST(CURSES)
1242AC_SUBST(OSPFCLIENT)
paul1ef74ef2003-03-21 15:16:05 +00001243AC_SUBST(OSPFAPI)
paul7ea487b2003-03-17 02:05:07 +00001244AC_CHECK_LIB(c, inet_ntop, [AC_DEFINE(HAVE_INET_NTOP,,inet_ntop)])
1245AC_CHECK_LIB(c, inet_pton, [AC_DEFINE(HAVE_INET_PTON,,inet_pton)])
1246AC_CHECK_LIB(crypt, crypt)
1247AC_CHECK_LIB(resolv, res_init)
paul7ea487b2003-03-17 02:05:07 +00001248
paul7ea487b2003-03-17 02:05:07 +00001249dnl ---------------------------
Jeremy Jackson25f45882009-01-12 16:06:12 -05001250dnl check system has PCRE regexp
1251dnl ---------------------------
1252if test "x$enable_pcreposix" = "xyes"; then
1253 AC_CHECK_LIB(pcreposix, pcreposix_regexec, ,[enable_pcreposix=no
1254 AC_MSG_WARN([*** falling back to other regex library ***]) ])
1255fi
1256
1257if test "x$enable_pcreposix" != "xyes"; then
1258dnl ---------------------------
paul7ea487b2003-03-17 02:05:07 +00001259dnl check system has GNU regexp
1260dnl ---------------------------
Jeremy Jackson25f45882009-01-12 16:06:12 -05001261AC_MSG_CHECKING(whether system has GNU regex)
paul7ea487b2003-03-17 02:05:07 +00001262AC_CHECK_LIB(c, regexec,
1263[AC_DEFINE(HAVE_GNU_REGEX,,GNU regexp library)
1264 LIB_REGEX=""],
1265[LIB_REGEX="regex.o"])
Jeremy Jackson25f45882009-01-12 16:06:12 -05001266fi
1267AC_SUBST(HAVE_LIBPCREPOSIX)
paul7ea487b2003-03-17 02:05:07 +00001268AC_SUBST(LIB_REGEX)
1269
1270dnl ------------------
paulb1fc9ac2006-01-31 10:09:27 +00001271dnl check Net-SNMP library
paul7ea487b2003-03-17 02:05:07 +00001272dnl ------------------
Vincent Bernatd6be5fb2012-05-24 09:44:43 +02001273if test "${enable_snmp}" != ""; then
Vincent Bernat08d7f652012-05-22 22:29:17 +02001274 AC_PATH_TOOL([NETSNMP_CONFIG], [net-snmp-config], [no])
1275 if test x"$NETSNMP_CONFIG" = x"no"; then
1276 AC_MSG_ERROR([--enable-snmp given but unable to find net-snmp-config])
1277 fi
1278 LIBS="$LIBS `${NETSNMP_CONFIG} --agent-libs`"
1279 CFLAGS="`${NETSNMP_CONFIG} --base-cflags` $CFLAGS"
1280 AC_MSG_CHECKING([whether we can link to Net-SNMP])
1281 AC_LINK_IFELSE([AC_LANG_PROGRAM([
1282int main(void);
1283],
1284[
1285{
1286 return 0;
1287}
1288])],[AC_MSG_RESULT(yes)],[
1289 AC_MSG_RESULT(no)
1290 AC_MSG_ERROR([--enable-snmp given but not usable])])
1291 AC_DEFINE(HAVE_SNMP,,SNMP)
Vincent Bernatd6be5fb2012-05-24 09:44:43 +02001292 case "${enable_snmp}" in
1293 yes)
1294 SNMP_METHOD=agentx
1295 ;;
1296 smux|agentx)
1297 SNMP_METHOD="${enable_snmp}"
1298 ;;
1299 *)
1300 AC_MSG_ERROR([--enable-snmp given with an unknown method (${enable_snmp}). Use smux or agentx])
1301 ;;
1302 esac
1303 AH_TEMPLATE([SNMP_SMUX], [Use SNMP SMUX to interface with snmpd])
1304 AH_TEMPLATE([SNMP_AGENTX], [Use SNMP AgentX to interface with snmpd])
1305 AC_DEFINE_UNQUOTED(AS_TR_CPP(SNMP_${SNMP_METHOD}),,SNMP method to interface with snmpd)
paul7ea487b2003-03-17 02:05:07 +00001306fi
1307
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001308dnl ---------------------------
1309dnl sockaddr and netinet checks
1310dnl ---------------------------
1311AC_CHECK_TYPES([struct sockaddr, struct sockaddr_in,
1312 struct sockaddr_in6, struct sockaddr_un, struct sockaddr_dl,
Everton Marques871dbcf2009-08-11 15:43:05 -03001313 socklen_t, struct vifctl, struct mfcctl, struct sioc_sg_req,
1314 vifi_t, struct sioc_vif_req, struct igmpmsg,
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001315 struct ifaliasreq, struct if6_aliasreq, struct in6_aliasreq,
1316 struct nd_opt_adv_interval, struct rt_addrinfo,
Paul Jakma11770e12007-06-22 16:14:42 +00001317 struct nd_opt_homeagent_info, struct nd_opt_adv_interval],
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001318 [], [], QUAGGA_INCLUDES)
paul7ea487b2003-03-17 02:05:07 +00001319
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001320AC_CHECK_MEMBERS([struct sockaddr.sa_len,
1321 struct sockaddr_in.sin_len, struct sockaddr_un.sun_len,
1322 struct sockaddr_in6.sin6_scope_id,
David Lamparterca3ccd82012-09-26 14:52:39 +02001323 struct sockaddr_dl.sdl_len,
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001324 struct if6_aliasreq.ifra_lifetime,
1325 struct nd_opt_adv_interval.nd_opt_ai_type],
1326 [], [], QUAGGA_INCLUDES)
hasso71c0fb52003-05-25 20:18:13 +00001327
paul7ea487b2003-03-17 02:05:07 +00001328dnl ---------------------------
Paul Jakma11770e12007-06-22 16:14:42 +00001329dnl IRDP/pktinfo/icmphdr checks
paul7ea487b2003-03-17 02:05:07 +00001330dnl ---------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001331AC_CHECK_TYPES([struct in_pktinfo],
Paul Jakma11770e12007-06-22 16:14:42 +00001332 [AC_CHECK_TYPES([struct icmphdr],
1333 [if test "${enable_irdp}" != "no"; then
1334 AC_DEFINE(HAVE_IRDP,, IRDP)
1335 fi],
1336 [if test "${enable_irdp}" = "yes"; then
1337 AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
1338 fi], [QUAGGA_INCLUDES])],
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001339 [if test "${enable_irdp}" = "yes"; then
1340 AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
1341 fi], [QUAGGA_INCLUDES])
vincent29c4c9b2005-03-25 13:05:47 +00001342
Everton Marques871dbcf2009-08-11 15:43:05 -03001343dnl -----------------------
1344dnl checking for IP_PKTINFO
1345dnl -----------------------
1346AC_MSG_CHECKING(for IP_PKTINFO)
1347AC_TRY_COMPILE([#include <netdb.h>], [
1348 int opt = IP_PKTINFO;
1349], [
1350 AC_MSG_RESULT(yes)
1351 AC_DEFINE(HAVE_IP_PKTINFO, 1, [Have IP_PKTINFO])
1352], [
1353 AC_MSG_RESULT(no)
1354])
1355
1356dnl ---------------------------
1357dnl checking for IP_RECVDSTADDR
1358dnl ---------------------------
1359AC_MSG_CHECKING(for IP_RECVDSTADDR)
1360AC_TRY_COMPILE([#include <netinet/in.h>], [
1361 int opt = IP_RECVDSTADDR;
1362], [
1363 AC_MSG_RESULT(yes)
1364 AC_DEFINE(HAVE_IP_RECVDSTADDR, 1, [Have IP_RECVDSTADDR])
1365], [
1366 AC_MSG_RESULT(no)
1367])
1368
1369dnl ----------------------
1370dnl checking for IP_RECVIF
1371dnl ----------------------
1372AC_MSG_CHECKING(for IP_RECVIF)
1373AC_TRY_COMPILE([#include <netinet/in.h>], [
1374 int opt = IP_RECVIF;
1375], [
1376 AC_MSG_RESULT(yes)
1377 AC_DEFINE(HAVE_IP_RECVIF, 1, [Have IP_RECVIF])
1378], [
1379 AC_MSG_RESULT(no)
1380])
1381
paul7ea487b2003-03-17 02:05:07 +00001382dnl --------------------------------------
1383dnl checking for getrusage struct and call
1384dnl --------------------------------------
Stephen Hemminger47f6aef2013-01-04 22:29:22 +00001385if test "${enable_rusage}" != "no"; then
1386 AC_MSG_CHECKING(whether getrusage is available)
1387 AC_TRY_COMPILE([#include <sys/resource.h>],[struct rusage ac_x; getrusage (RUSAGE_SELF, &ac_x);],
1388 [AC_MSG_RESULT(yes)
1389 AC_DEFINE(HAVE_RUSAGE,,rusage)],
1390 AC_MSG_RESULT(no))
1391fi
paul7ea487b2003-03-17 02:05:07 +00001392
Stephen Hemmingerc4376c92009-05-28 15:29:10 -07001393dnl --------------------------------------
1394dnl checking for clock_time monotonic struct and call
1395dnl --------------------------------------
Paul Jakma6511cab2009-06-18 17:38:01 +01001396AC_CHECK_DECL(CLOCK_MONOTONIC,
1397 [AC_CHECK_LIB(rt, clock_gettime, [LIBS="$LIBS -lrt"])
Dmitry Tejblum9964fcf2009-11-05 16:50:36 +03001398 AC_DEFINE(HAVE_CLOCK_MONOTONIC,, Have monotonic clock)
Paul Jakma6511cab2009-06-18 17:38:01 +01001399], [AC_MSG_RESULT(no)], [QUAGGA_INCLUDES])
Stephen Hemmingerc4376c92009-05-28 15:29:10 -07001400
pauledd7c242003-06-04 13:59:38 +00001401dnl -------------------
1402dnl capabilities checks
1403dnl -------------------
hasso41d3fc92004-04-06 11:59:00 +00001404if test "${enable_capabilities}" != "no"; then
1405 AC_MSG_CHECKING(whether prctl PR_SET_KEEPCAPS is available)
1406 AC_TRY_COMPILE([#include <sys/prctl.h>],[prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);],
1407 [AC_MSG_RESULT(yes)
1408 AC_DEFINE(HAVE_PR_SET_KEEPCAPS,,prctl)
1409 quagga_ac_keepcaps="yes"],
1410 AC_MSG_RESULT(no)
pauledd7c242003-06-04 13:59:38 +00001411 )
hasso41d3fc92004-04-06 11:59:00 +00001412 if test x"${quagga_ac_keepcaps}" = x"yes"; then
1413 AC_CHECK_HEADERS(sys/capability.h)
1414 fi
1415 if test x"${ac_cv_header_sys_capability_h}" = x"yes"; then
1416 AC_CHECK_LIB(cap, cap_init,
1417 [AC_DEFINE(HAVE_LCAPS,1,Capabilities)
1418 LIBCAP="-lcap"
paulceacedb2005-09-29 14:39:32 +00001419 quagga_ac_lcaps="yes"]
hasso41d3fc92004-04-06 11:59:00 +00001420 )
paulceacedb2005-09-29 14:39:32 +00001421 else
1422 AC_CHECK_HEADERS(priv.h,
1423 [AC_MSG_CHECKING(Solaris style privileges are available)
1424 AC_TRY_COMPILE([#include <priv.h>],[getpflags(PRIV_AWARE);],
1425 [AC_MSG_RESULT(yes)
1426 AC_DEFINE(HAVE_SOLARIS_CAPABILITIES,1,getpflags)
1427 quagga_ac_scaps="yes"],
1428 AC_MSG_RESULT(no)
1429 )
1430 ]
1431 )
1432 fi
1433 if test x"${quagga_ac_scaps}" = x"yes" \
1434 -o x"${quagga_ac_lcaps}" = x"yes"; then
1435 AC_DEFINE(HAVE_CAPABILITIES,1,capabilities)
hasso41d3fc92004-04-06 11:59:00 +00001436 fi
pauledd7c242003-06-04 13:59:38 +00001437fi
1438AC_SUBST(LIBCAP)
1439
Doug VanLeuven327c4cd2012-12-14 14:58:30 +02001440dnl ---------------------------------------------------------------------------
1441dnl http://www.gnu.org/software/autoconf-archive/ax_sys_weak_alias.html
1442dnl Check for and set one of the following = 1
1443dnl HAVE_SYS_WEAK_ALIAS_ATTRIBUTE
1444dnl HAVE_SYS_WEAK_ALIAS_PRAGMA
1445dnl HAVE_SYS_WEAK_ALIAS_HPSECONDARY
1446dnl HAVE_SYS_WEAK_ALIAS_CRIDUPLICATE
1447dnl If any scheme is found, set
1448dnl HAVE_SYS_WEAK_ALIAS=1
1449dnl The following variable is set to text value
1450dnl WEAK_ALIAS = "attribute" || "pragma" || "hpsecondary" || "criduplicate" || "no"
1451dnl If weak alias can cross object file boundaries
1452dnl WEAK_ALIAS_CROSSFILE = "yes" || "no"
1453dnl ---------------------------------------------------------------------------
1454AX_SYS_WEAK_ALIAS
1455
paulfb2d1502003-06-04 09:40:54 +00001456dnl ---------------------------
1457dnl check for glibc 'backtrace'
1458dnl ---------------------------
David Lamparter8c99b4c2013-08-01 07:43:36 +00001459if test x"${enable_backtrace}" != x"no" ; then
1460 backtrace_ok=no
1461 AC_CHECK_HEADER([execinfo.h], [
1462 AC_SEARCH_LIBS([backtrace], [execinfo], [
1463 AC_DEFINE(HAVE_GLIBC_BACKTRACE,,[Glibc backtrace])
1464 AC_DEFINE(HAVE_STACK_TRACE,,[Stack symbol decoding])
1465 backtrace_ok=yes
1466 ],, [-lm])
Dmitrij Tejblumeda35292011-09-15 20:00:33 +04001467 ])
David Lamparter8c99b4c2013-08-01 07:43:36 +00001468
1469 if test x"${enable_backtrace}" = x"yes" -a x"${backtrace_ok}" = x"no"; then
1470 dnl user explicitly requested backtrace but we failed to find support
1471 AC_MSG_FAILURE([failed to find backtrace support])
1472 fi
1473fi
paulfb2d1502003-06-04 09:40:54 +00001474
Paul Jakma41be32b2006-03-30 13:53:59 +00001475dnl -----------------------------------------
1476dnl check for malloc mallinfo struct and call
1477dnl this must try and link using LIBS, in
1478dnl order to check no alternative allocator
1479dnl has been specified, which might not provide
1480dnl mallinfo, e.g. such as Umem on Solaris.
1481dnl -----------------------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001482AC_CHECK_HEADER([malloc.h],
Paul Jakma41be32b2006-03-30 13:53:59 +00001483 [AC_MSG_CHECKING(whether mallinfo is available)
1484 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <malloc.h>]],
1485 [[struct mallinfo ac_x; ac_x = mallinfo ();]])],
1486 [AC_MSG_RESULT(yes)
1487 AC_DEFINE(HAVE_MALLINFO,,mallinfo)],
1488 AC_MSG_RESULT(no)
1489 )
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001490 ], [], QUAGGA_INCLUDES)
Paul Jakma41be32b2006-03-30 13:53:59 +00001491
paul408ad942003-05-20 00:03:33 +00001492dnl ----------
1493dnl configure date
1494dnl ----------
1495CONFDATE=`date '+%Y%m%d'`
1496AC_SUBST(CONFDATE)
1497
David Lamparterf281ab92013-02-26 16:21:20 +01001498dnl -------
1499dnl DejaGNU
1500dnl -------
1501if test x"$DEJAGNU" = x
1502then
1503 DEJAGNU="\$(top_srcdir)/tests/global-conf.exp"
1504fi
1505RUNTESTDEFAULTFLAGS="-x --tool \$\$tool"
1506
1507AC_SUBST(DEJAGNU)
1508AC_SUBST(RUNTESTDEFAULTFLAGS)
1509
paul7ea487b2003-03-17 02:05:07 +00001510dnl ------------------------------
paula159ed92003-06-04 11:01:45 +00001511dnl set paths for state directory
paul23bd12c2003-04-07 06:11:09 +00001512dnl ------------------------------
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001513AC_MSG_CHECKING(directory to use for state file)
paul23bd12c2003-04-07 06:11:09 +00001514if test "${prefix}" = "NONE"; then
paule8f29842003-08-12 13:08:31 +00001515 quagga_statedir_prefix="";
paul23bd12c2003-04-07 06:11:09 +00001516else
paule8f29842003-08-12 13:08:31 +00001517 quagga_statedir_prefix=${prefix}
paul23bd12c2003-04-07 06:11:09 +00001518fi
1519if test "${localstatedir}" = '${prefix}/var'; then
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001520 for QUAGGA_STATE_DIR in ${quagga_statedir_prefix}/var/run dnl
paule8f29842003-08-12 13:08:31 +00001521 ${quagga_statedir_prefix}/var/adm dnl
1522 ${quagga_statedir_prefix}/etc dnl
paula159ed92003-06-04 11:01:45 +00001523 /var/run dnl
1524 /var/adm dnl
1525 /etc dnl
1526 /dev/null;
paul23bd12c2003-04-07 06:11:09 +00001527 do
paule8f29842003-08-12 13:08:31 +00001528 test -d $QUAGGA_STATE_DIR && break
paul23bd12c2003-04-07 06:11:09 +00001529 done
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001530 quagga_statedir=$QUAGGA_STATE_DIR
paul23bd12c2003-04-07 06:11:09 +00001531else
paule8f29842003-08-12 13:08:31 +00001532 quagga_statedir=${localstatedir}
paul23bd12c2003-04-07 06:11:09 +00001533fi
paule8f29842003-08-12 13:08:31 +00001534if test $quagga_statedir = "/dev/null"; then
paula159ed92003-06-04 11:01:45 +00001535 AC_MSG_ERROR('STATE DIRECTORY NOT FOUND! FIX OR SPECIFY --localstatedir!')
1536fi
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001537AC_MSG_RESULT(${quagga_statedir})
1538AC_SUBST(quagga_statedir)
paula159ed92003-06-04 11:01:45 +00001539
paule8f29842003-08-12 13:08:31 +00001540AC_DEFINE_UNQUOTED(PATH_ZEBRA_PID, "$quagga_statedir/zebra.pid",zebra PID)
1541AC_DEFINE_UNQUOTED(PATH_RIPD_PID, "$quagga_statedir/ripd.pid",ripd PID)
1542AC_DEFINE_UNQUOTED(PATH_RIPNGD_PID, "$quagga_statedir/ripngd.pid",ripngd PID)
1543AC_DEFINE_UNQUOTED(PATH_BGPD_PID, "$quagga_statedir/bgpd.pid",bgpd PID)
1544AC_DEFINE_UNQUOTED(PATH_OSPFD_PID, "$quagga_statedir/ospfd.pid",ospfd PID)
1545AC_DEFINE_UNQUOTED(PATH_OSPF6D_PID, "$quagga_statedir/ospf6d.pid",ospf6d PID)
jardin9e867fe2003-12-23 08:56:18 +00001546AC_DEFINE_UNQUOTED(PATH_ISISD_PID, "$quagga_statedir/isisd.pid",isisd PID)
Everton Marques871dbcf2009-08-11 15:43:05 -03001547AC_DEFINE_UNQUOTED(PATH_PIMD_PID, "$quagga_statedir/pimd.pid",pimd PID)
ajsd0199432004-12-22 14:03:52 +00001548AC_DEFINE_UNQUOTED(PATH_WATCHQUAGGA_PID, "$quagga_statedir/watchquagga.pid",watchquagga PID)
paule8f29842003-08-12 13:08:31 +00001549AC_DEFINE_UNQUOTED(ZEBRA_SERV_PATH, "$quagga_statedir/zserv.api",zebra api socket)
1550AC_DEFINE_UNQUOTED(ZEBRA_VTYSH_PATH, "$quagga_statedir/zebra.vty",zebra vty socket)
1551AC_DEFINE_UNQUOTED(RIP_VTYSH_PATH, "$quagga_statedir/ripd.vty",rip vty socket)
1552AC_DEFINE_UNQUOTED(RIPNG_VTYSH_PATH, "$quagga_statedir/ripngd.vty",ripng vty socket)
1553AC_DEFINE_UNQUOTED(BGP_VTYSH_PATH, "$quagga_statedir/bgpd.vty",bgpd vty socket)
1554AC_DEFINE_UNQUOTED(OSPF_VTYSH_PATH, "$quagga_statedir/ospfd.vty",ospfd vty socket)
1555AC_DEFINE_UNQUOTED(OSPF6_VTYSH_PATH, "$quagga_statedir/ospf6d.vty",ospf6d vty socket)
jardin9e867fe2003-12-23 08:56:18 +00001556AC_DEFINE_UNQUOTED(ISIS_VTYSH_PATH, "$quagga_statedir/isisd.vty",isisd vty socket)
Everton Marques871dbcf2009-08-11 15:43:05 -03001557AC_DEFINE_UNQUOTED(PIM_VTYSH_PATH, "$quagga_statedir/pimd.vty",pimd vty socket)
ajs515210b2004-12-22 15:35:12 +00001558AC_DEFINE_UNQUOTED(DAEMON_VTY_DIR, "$quagga_statedir",daemon vty directory)
paul7ea487b2003-03-17 02:05:07 +00001559
paul1eb8ef22005-04-07 07:30:20 +00001560dnl -------------------------------
1561dnl Quagga sources should always be
1562dnl current wrt interfaces. Dont
1563dnl allow deprecated interfaces to
1564dnl be exposed.
1565dnl -------------------------------
1566AC_DEFINE(QUAGGA_NO_DEPRECATED_INTERFACES, 1, Hide deprecated interfaces)
1567
paul7ea487b2003-03-17 02:05:07 +00001568dnl ---------------------------
1569dnl Check htonl works correctly
1570dnl ---------------------------
1571AC_MSG_CHECKING(for working htonl)
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001572AC_CACHE_VAL(ac_cv_htonl_works,
1573 [AC_LINK_IFELSE([AC_LANG_PROGRAM([QUAGGA_INCLUDES],[htonl (0);])],
1574 [ac_cv_htonl_works=yes], [ac_cv_htonl_works=no])
1575 ]
1576)
paul7ea487b2003-03-17 02:05:07 +00001577AC_MSG_RESULT($ac_cv_htonl_works)
1578
Avneesh Sachdev07e5b642016-04-04 10:54:55 -07001579AC_CONFIG_FILES([Makefile lib/Makefile qpb/Makefile zebra/Makefile ripd/Makefile
ajsd0199432004-12-22 14:03:52 +00001580 ripngd/Makefile bgpd/Makefile ospfd/Makefile watchquagga/Makefile
Paul Jakma336724d2015-05-11 15:13:31 +01001581 ospf6d/Makefile isisd/Makefile vtysh/Makefile
David Lamparterf281ab92013-02-26 16:21:20 +01001582 doc/Makefile ospfclient/Makefile tests/Makefile m4/Makefile
Everton Marques871dbcf2009-08-11 15:43:05 -03001583 pimd/Makefile
David Lamparter5bb7e4d2013-02-26 17:53:30 +01001584 tests/bgpd.tests/Makefile
David Lamparterc69905b2013-01-24 01:39:14 +01001585 tests/libzebra.tests/Makefile
David Lamparterf281ab92013-02-26 16:21:20 +01001586 redhat/Makefile
gdt69f1fc22004-08-27 15:57:35 +00001587 pkgsrc/Makefile
paul670bbf12004-11-12 09:05:00 +00001588 redhat/quagga.spec
gdtb7a97f82004-07-23 16:23:56 +00001589 lib/version.h
paul14c17fd2004-11-07 22:34:23 +00001590 doc/defines.texi
hassof695b012005-04-02 19:03:39 +00001591 isisd/topology/Makefile
gdtcbd04082004-08-31 18:16:36 +00001592 pkgsrc/bgpd.sh pkgsrc/ospf6d.sh pkgsrc/ospfd.sh
paulf31293a2004-11-12 09:27:04 +00001593 pkgsrc/ripd.sh pkgsrc/ripngd.sh pkgsrc/zebra.sh])
paul26275b02005-04-11 07:10:47 +00001594AC_CONFIG_FILES([solaris/Makefile])
1595
paul670bbf12004-11-12 09:05:00 +00001596AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl])
hasso48577192004-11-19 06:41:49 +00001597## Hack, but working solution to avoid rebuilding of quagga.info.
1598## It's already in CVS until texinfo 4.7 is more common.
paul14c17fd2004-11-07 22:34:23 +00001599AC_OUTPUT
paul7ea487b2003-03-17 02:05:07 +00001600
1601echo "
hassoc89f6492004-08-26 12:21:28 +00001602Quagga configuration
1603--------------------
1604quagga version : ${PACKAGE_VERSION}
Joachim Nilsson1080c132012-05-30 08:15:48 +02001605host operating system : ${host_os}
paul7ea487b2003-03-17 02:05:07 +00001606source code location : ${srcdir}
1607compiler : ${CC}
1608compiler flags : ${CFLAGS}
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001609make : ${MAKE-make}
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001610linker flags : ${LDFLAGS} ${LIBS} ${LIBCAP} ${LIBREADLINE} ${LIBM}
paule8f29842003-08-12 13:08:31 +00001611state file directory : ${quagga_statedir}
pauldc7a2bf2003-10-22 00:07:44 +00001612config file directory : `eval echo \`echo ${sysconfdir}\``
gdtd6b72f72003-12-03 17:24:27 +00001613example directory : `eval echo \`echo ${exampledir}\``
paul8d4aee52003-06-06 00:30:35 +00001614user to run as : ${enable_user}
1615group to run as : ${enable_group}
1616group for vty sockets : ${enable_vty_group}
gdtaa593d52003-12-22 20:15:53 +00001617config file mask : ${enable_configfile_mask}
1618log file mask : ${enable_logfile_mask}
Avneesh Sachdev07e5b642016-04-04 10:54:55 -07001619zebra protobuf enabled : ${have_protobuf:-no}
pauldc7a2bf2003-10-22 00:07:44 +00001620
1621The above user and group must have read/write access to the state file
Paul Jakma105b8232006-05-28 08:02:41 +00001622directory and to the config files in the config file directory."
1623
1624if test x"$quagga_cv_gnu_make" = x"no"; then echo "
1625Warning: The ${MAKE-make} programme detected, either in your path or
1626via the MAKE variable, is not GNU Make. GNU make may be installed as
1627gmake on some systems. and is required to complete a build of Quagga
1628" > /dev/stderr
1629fi