blob: 55898441388be794874ed753a7dacf5dd74af83d [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
Timo Teräsdafa05e2017-01-19 17:27:01 +020079PKG_PROG_PKG_CONFIG
Greg Troxel553bdfe2007-02-06 20:10:35 +000080
81dnl autoconf 2.59 appears not to support AC_PROG_SED
82dnl AC_PROG_SED
83AC_CHECK_PROG([SED],[sed],[sed],[/bin/false])
hasso1969e4b2005-03-27 13:07:23 +000084
Paul Jakmafa482832012-03-08 13:51:21 +000085dnl pdflatex and latexmk are needed to build HACKING.pdf
86AC_CHECK_PROG([PDFLATEX],[pdflatex],[pdflatex],[/bin/false])
87AC_CHECK_PROG([LATEXMK],[latexmk],[latexmk],[/bin/false])
88if test "x$PDFLATEX" = "x/bin/false" -o "x$LATEXMK" = "x/bin/false"; then
89 AC_MSG_WARN([Will not be able to make PDF versions of TeX documents])
90else
91 HAVE_LATEX=true
92fi
93AM_CONDITIONAL([HAVE_LATEX], [test "x$HAVE_LATEX" = "xtrue"])
94
David Lamparter3a7e83c2015-03-03 09:55:51 +010095if test "x${GCC}" != "xyes" ; then
paul6a4b8832005-11-26 08:28:00 +000096 AC_MSG_CHECKING([whether we are using SunPro compiler])
97 AC_EGREP_CPP([^__SUNPRO_C.*0x5(7|8|9)], ["__SUNPRO_C" __SUNPRO_C],
98 [AC_MSG_RESULT([no])],
99 [COMPILER="SUNPRO"
100 AC_MSG_RESULT([yes])]
101 )
102fi
paul7ea487b2003-03-17 02:05:07 +0000103
paula49c0ff2004-09-30 06:08:58 +0000104dnl ---------------------------------------------
paul7ea487b2003-03-17 02:05:07 +0000105dnl If CLFAGS doesn\'t exist set default value
paula49c0ff2004-09-30 06:08:58 +0000106dnl AC_PROG_CC will have set minimal default
107dnl already, eg "-O2 -g" for gcc, "-g" for others
paul27eebb32004-07-22 18:16:59 +0000108dnl (Wall is gcc specific... have to make sure
109dnl gcc is being used before setting it)
110dnl
paul6a4b8832005-11-26 08:28:00 +0000111dnl Sun Studio 10 / SunPro 5.7 is also supported,
112dnl so lets set some sane CFLAGS for it.
113dnl ---------------------------------------------
hasso1969e4b2005-03-27 13:07:23 +0000114
David Lamparter3a7e83c2015-03-03 09:55:51 +0100115AC_USE_SYSTEM_EXTENSIONS()
116AC_DEFUN([AC_C_FLAG], [{
117 AC_LANG_PUSH(C)
118 ac_c_flag_save="$CFLAGS"
119 CFLAGS="$CFLAGS $1"
120 AC_MSG_CHECKING([[whether $CC supports $1]])
121 AC_COMPILE_IFELSE(
122 [AC_LANG_PROGRAM([[]])],
123 [
124 AC_MSG_RESULT([yes])
125 m4_if([$3], [], [], [
126 CFLAGS="$ac_c_flag_save"
127 $3
128 ])
129 ], [
130 CFLAGS="$ac_c_flag_save"
131 AC_MSG_RESULT([no])
132 $2
133 ])
134 AC_LANG_POP(C)
135 }])
136
paul6a4b8832005-11-26 08:28:00 +0000137AC_MSG_CHECKING([whether to set a default CFLAGS])
138if test "x${cflags_specified}" = "x" ; then
139 case ${COMPILER} in
paul6a4b8832005-11-26 08:28:00 +0000140 "SUNPRO")
David Lamparter3a7e83c2015-03-03 09:55:51 +0100141 CFLAGS="-xO4 -v -g -xspace -xcode=pic32 -xstrconst -xc99"
142 AC_MSG_RESULT([SunPro default])
143 ;;
paul6a4b8832005-11-26 08:28:00 +0000144 *)
David Lamparter3a7e83c2015-03-03 09:55:51 +0100145 AC_MSG_RESULT([autodetecting])
146
147 AC_C_FLAG([-diag-error 10006])
148 AC_C_FLAG([-std=gnu99])
149 AC_C_FLAG([-g])
150 AC_C_FLAG([-Os], [
151 AC_C_FLAG([-O2])
152 ])
Paul Jakma52c0bc72015-08-20 21:30:17 +0100153 AC_C_FLAG([-fpie])
David Lamparter3a7e83c2015-03-03 09:55:51 +0100154 AC_C_FLAG([-fno-omit-frame-pointer])
155 AC_C_FLAG([-Wall])
156 AC_C_FLAG([-Wextra])
157 AC_C_FLAG([-Wmissing-prototypes])
158 AC_C_FLAG([-Wmissing-declarations])
159 AC_C_FLAG([-Wpointer-arith])
160 AC_C_FLAG([-Wbad-function-cast])
161 AC_C_FLAG([-Wwrite-strings])
162 if test x"${enable_gcc_ultra_verbose}" = x"yes" ; then
163 AC_C_FLAG([-Wcast-qual])
164 AC_C_FLAG([-Wstrict-prototypes])
165 AC_C_FLAG([-Wmissing-noreturn])
166 AC_C_FLAG([-Wmissing-format-attribute])
167 AC_C_FLAG([-Wunreachable-code])
168 AC_C_FLAG([-Wpacked])
169 AC_C_FLAG([-Wpadded])
170 else
171 AC_C_FLAG([-Wno-unused-result])
172 fi
173 AC_C_FLAG([-Wno-unused-parameter])
174 AC_C_FLAG([-Wno-missing-field-initializers])
175 # ICC emits a broken warning for const char *x = a ? "b" : "c";
176 # for some reason the string consts get 'promoted' to char *,
177 # triggering a const to non-const conversion warning.
178 AC_C_FLAG([-diag-disable 3179])
paul6a4b8832005-11-26 08:28:00 +0000179 ;;
180 esac
181else
182 AC_MSG_RESULT([CFLAGS supplied by user])
hasso1969e4b2005-03-27 13:07:23 +0000183fi
184
David Lamparterc0bedeb2015-03-03 10:00:43 +0100185if test x"${enable_werror}" = x"yes" ; then
186 WERROR="-Werror"
187fi
188AC_SUBST(WERROR)
189
paul7ea487b2003-03-17 02:05:07 +0000190dnl --------------
191dnl Check programs
192dnl --------------
paul7ea487b2003-03-17 02:05:07 +0000193AC_PROG_INSTALL
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000194AC_PROG_LN_S
paul7ea487b2003-03-17 02:05:07 +0000195AC_PROG_MAKE_SET
196AC_CHECK_TOOL(AR, ar)
paul7ea487b2003-03-17 02:05:07 +0000197
Paul Jakma105b8232006-05-28 08:02:41 +0000198dnl ---------------------------
199dnl We, perhaps unfortunately,
200dnl depend on GNU Make specific
201dnl constructs.
202dnl Give the user a warning if
203dnl not GNU Make.
204dnl ---------------------------
205AC_CACHE_CHECK([if ${MAKE-make} is GNU make], [quagga_cv_gnu_make],
206 [quagga_cv_gnu_make=no
207 if ${MAKE-make} --version 2>/dev/null | \
208 grep '^GNU Make ' >/dev/null ; then
209 quagga_cv_gnu_make=yes;
210 fi
211 ]
212)
213
Paul Jakmad46d2a22007-05-10 16:53:04 +0000214dnl -----------------
215dnl System extensions
216dnl -----------------
Paul Jakmad46d2a22007-05-10 16:53:04 +0000217AC_GNU_SOURCE
paul7ea487b2003-03-17 02:05:07 +0000218
gdt87efd642004-06-30 17:36:11 +0000219dnl -------
220dnl libtool
221dnl -------
Paul Jakma52c0bc72015-08-20 21:30:17 +0100222LT_INIT
gdt87efd642004-06-30 17:36:11 +0000223
paul7ea487b2003-03-17 02:05:07 +0000224dnl ----------------------
225dnl Packages configuration
226dnl ----------------------
Joachim Nilsson1080c132012-05-30 08:15:48 +0200227AC_ARG_WITH(pkg-extra-version,
228 AS_HELP_STRING([--with-pkg-extra-version=VER], [add extra version field, for packagers/distributions]),
229 [EXTRAVERSION=$withval],)
David Lamparter0be793e2012-11-27 01:34:56 +0000230AC_ARG_WITH(pkg-git-version,
231 AS_HELP_STRING([--with-pkg-git-version], [add git information to MOTD and build version string]),
David Lampartera16dcf72012-12-13 11:20:50 +0100232 [ test "x$withval" != "xno" && with_pkg_git_version="yes" ])
paul7ea487b2003-03-17 02:05:07 +0000233AC_ARG_ENABLE(vtysh,
Donald Sharpe6756782015-07-16 21:18:34 -0400234 AS_HELP_STRING([--disable-vtysh], [do not build integrated vty shell for Quagga]))
Joakim Tjernlundcbcd9bf2009-02-16 09:40:39 +0100235AC_ARG_ENABLE(doc,
David Lamparterb6fa7602014-06-28 22:15:59 +0200236 AS_HELP_STRING([--disable-doc], [do not build docs]))
paul7ea487b2003-03-17 02:05:07 +0000237AC_ARG_ENABLE(zebra,
David Lamparterb6fa7602014-06-28 22:15:59 +0200238 AS_HELP_STRING([--disable-zebra], [do not build zebra daemon]))
paul7ea487b2003-03-17 02:05:07 +0000239AC_ARG_ENABLE(bgpd,
David Lamparterb6fa7602014-06-28 22:15:59 +0200240 AS_HELP_STRING([--disable-bgpd], [do not build bgpd]))
paul7ea487b2003-03-17 02:05:07 +0000241AC_ARG_ENABLE(ripd,
David Lamparterb6fa7602014-06-28 22:15:59 +0200242 AS_HELP_STRING([--disable-ripd], [do not build ripd]))
paul7ea487b2003-03-17 02:05:07 +0000243AC_ARG_ENABLE(ripngd,
David Lamparterb6fa7602014-06-28 22:15:59 +0200244 AS_HELP_STRING([--disable-ripngd], [do not build ripngd]))
paul7ea487b2003-03-17 02:05:07 +0000245AC_ARG_ENABLE(ospfd,
David Lamparterb6fa7602014-06-28 22:15:59 +0200246 AS_HELP_STRING([--disable-ospfd], [do not build ospfd]))
paul7ea487b2003-03-17 02:05:07 +0000247AC_ARG_ENABLE(ospf6d,
David Lamparterb6fa7602014-06-28 22:15:59 +0200248 AS_HELP_STRING([--disable-ospf6d], [do not build ospf6d]))
Timo Teräsdafa05e2017-01-19 17:27:01 +0200249AC_ARG_ENABLE(nhrpd,
250 AS_HELP_STRING([--disable-nhrpd], [do not build nhrpd]))
ajsd0199432004-12-22 14:03:52 +0000251AC_ARG_ENABLE(watchquagga,
David Lamparterb6fa7602014-06-28 22:15:59 +0200252 AS_HELP_STRING([--disable-watchquagga], [do not build watchquagga]))
jardin9e867fe2003-12-23 08:56:18 +0000253AC_ARG_ENABLE(isisd,
David Lamparter656a2c02015-02-09 11:36:10 +0100254 AS_HELP_STRING([--disable-isisd], [do not build isisd]))
Everton Marques871dbcf2009-08-11 15:43:05 -0300255AC_ARG_ENABLE(pimd,
Donald Sharpe6756782015-07-16 21:18:34 -0400256 AS_HELP_STRING([--disable-pimd], [do not build pimd]))
paul7ea487b2003-03-17 02:05:07 +0000257AC_ARG_ENABLE(bgp-announce,
David Lamparterb6fa7602014-06-28 22:15:59 +0200258 AS_HELP_STRING([--disable-bgp-announce,], [turn off BGP route announcement]))
paul7ea487b2003-03-17 02:05:07 +0000259AC_ARG_ENABLE(snmp,
David Lamparterb6fa7602014-06-28 22:15:59 +0200260 AS_HELP_STRING([--enable-snmp=ARG], [enable SNMP support (smux or agentx)]))
paul7ea487b2003-03-17 02:05:07 +0000261AC_ARG_WITH(libpam,
David Lamparterb6fa7602014-06-28 22:15:59 +0200262 AS_HELP_STRING([--with-libpam], [use libpam for PAM support in vtysh]))
hasso71c0fb52003-05-25 20:18:13 +0000263AC_ARG_ENABLE(tcp-zebra,
David Lamparterb6fa7602014-06-28 22:15:59 +0200264 AS_HELP_STRING([--enable-tcp-zebra], [enable TCP/IP socket connection between zebra and protocol daemon]))
paul1ef74ef2003-03-21 15:16:05 +0000265AC_ARG_ENABLE(ospfapi,
David Lamparterb6fa7602014-06-28 22:15:59 +0200266 AS_HELP_STRING([--disable-ospfapi], [do not build OSPFAPI to access the OSPF LSA Database]))
paul1ef74ef2003-03-21 15:16:05 +0000267AC_ARG_ENABLE(ospfclient,
David Lamparterb6fa7602014-06-28 22:15:59 +0200268 AS_HELP_STRING([--disable-ospfclient], [do not build OSPFAPI client for OSPFAPI,
269 (this is the default if --disable-ospfapi is set)]))
paul7ea487b2003-03-17 02:05:07 +0000270AC_ARG_ENABLE(multipath,
David Lamparterb6fa7602014-06-28 22:15:59 +0200271 AS_HELP_STRING([--enable-multipath=ARG], [enable multipath function, ARG must be digit]))
Paul P Komkoff Jrfe86b482008-08-13 16:56:05 +0100272AC_ARG_ENABLE(user,
David Lamparterb6fa7602014-06-28 22:15:59 +0200273 AS_HELP_STRING([--enable-user=USER], [user to run Quagga suite as (default quagga)]))
Paul P Komkoff Jrfe86b482008-08-13 16:56:05 +0100274AC_ARG_ENABLE(group,
David Lamparterb6fa7602014-06-28 22:15:59 +0200275 AS_HELP_STRING([--enable-group=GROUP], [group to run Quagga suite as (default quagga)]))
pauledd7c242003-06-04 13:59:38 +0000276AC_ARG_ENABLE(vty_group,
David Lamparterb6fa7602014-06-28 22:15:59 +0200277 AS_HELP_STRING([--enable-vty-group=ARG], [set vty sockets to have specified group as owner]))
gdtaa593d52003-12-22 20:15:53 +0000278AC_ARG_ENABLE(configfile_mask,
David Lamparterb6fa7602014-06-28 22:15:59 +0200279 AS_HELP_STRING([--enable-configfile-mask=ARG], [set mask for config files]))
gdtaa593d52003-12-22 20:15:53 +0000280AC_ARG_ENABLE(logfile_mask,
David Lamparterb6fa7602014-06-28 22:15:59 +0200281 AS_HELP_STRING([--enable-logfile-mask=ARG], [set mask for log files]))
pauledd7c242003-06-04 13:59:38 +0000282
hasso71c0fb52003-05-25 20:18:13 +0000283AC_ARG_ENABLE(rtadv,
David Lamparterb6fa7602014-06-28 22:15:59 +0200284 AS_HELP_STRING([--disable-rtadv], [disable IPV6 router advertisement feature]))
hassoca776982004-06-12 14:33:05 +0000285AC_ARG_ENABLE(irdp,
David Lamparterb6fa7602014-06-28 22:15:59 +0200286 AS_HELP_STRING([--enable-irdp], [enable IRDP server support in zebra]))
hassof695b012005-04-02 19:03:39 +0000287AC_ARG_ENABLE(isis_topology,
David Lamparterb6fa7602014-06-28 22:15:59 +0200288 AS_HELP_STRING([--enable-isis-topology], [enable IS-IS topology generator]))
hasso41d3fc92004-04-06 11:59:00 +0000289AC_ARG_ENABLE(capabilities,
David Lamparterb6fa7602014-06-28 22:15:59 +0200290 AS_HELP_STRING([--disable-capabilities], [disable using POSIX capabilities]))
Stephen Hemminger47f6aef2013-01-04 22:29:22 +0000291AC_ARG_ENABLE(rusage,
David Lamparterb6fa7602014-06-28 22:15:59 +0200292 AS_HELP_STRING([--disable-rusage], [disable using getrusage]))
paul6b6942f2004-10-22 04:55:05 +0000293AC_ARG_ENABLE(gcc_ultra_verbose,
David Lamparterb6fa7602014-06-28 22:15:59 +0200294 AS_HELP_STRING([--enable-gcc-ultra-verbose], [enable ultra verbose GCC warnings]))
Paul Jakma3453a712009-06-12 14:21:02 +0100295AC_ARG_ENABLE(linux24_tcp_md5,
David Lamparterb6fa7602014-06-28 22:15:59 +0200296 AS_HELP_STRING([--enable-linux24-tcp-md5], [enable support for old, Linux-2.4 RFC2385 patch]))
ajs3cade262004-12-29 17:50:22 +0000297AC_ARG_ENABLE(gcc-rdynamic,
David Lamparterb6fa7602014-06-28 22:15:59 +0200298 AS_HELP_STRING([--enable-gcc-rdynamic], [enable linking with -rdynamic for better backtraces (default if gcc)]))
David Lamparter8c99b4c2013-08-01 07:43:36 +0000299AC_ARG_ENABLE(backtrace,
David Lamparterb6fa7602014-06-28 22:15:59 +0200300 AS_HELP_STRING([--disable-backtrace,], [disable crash backtraces (default autodetect)]))
ajs924b9222005-04-16 17:11:24 +0000301AC_ARG_ENABLE(time-check,
David Lamparterb6fa7602014-06-28 22:15:59 +0200302 AS_HELP_STRING([--disable-time-check], [disable slow thread warning messages]))
Jeremy Jackson25f45882009-01-12 16:06:12 -0500303AC_ARG_ENABLE(pcreposix,
David Lamparterb6fa7602014-06-28 22:15:59 +0200304 AS_HELP_STRING([--enable-pcreposix], [enable using PCRE Posix libs for regex functions]))
Avneesh Sachdev5adc2522012-11-13 22:48:59 +0000305AC_ARG_ENABLE(fpm,
David Lamparterb6fa7602014-06-28 22:15:59 +0200306 AS_HELP_STRING([--enable-fpm], [enable Forwarding Plane Manager support]))
David Lamparterc0bedeb2015-03-03 10:00:43 +0100307AC_ARG_ENABLE(werror,
308 AS_HELP_STRING([--enable-werror], [enable -Werror (recommended for developers only)]))
Avneesh Sachdev07e5b642016-04-04 10:54:55 -0700309AC_ARG_ENABLE([protobuf],
310 AS_HELP_STRING([--enable-protobuf], [Enable experimental protobuf support]))
paul6b6942f2004-10-22 04:55:05 +0000311
Avneesh Sachdev7e4025c2016-03-11 12:21:24 -0800312AC_ARG_ENABLE([dev_build],
313 AS_HELP_STRING([--enable-dev-build], [build for development]))
314
David Lamparter8c99b4c2013-08-01 07:43:36 +0000315if test x"${enable_gcc_rdynamic}" != x"no" ; then
316 if test x"${enable_gcc_rdynamic}" = x"yes" -o x"$COMPILER" = x"GCC"; then
317 LDFLAGS="${LDFLAGS} -rdynamic"
318 fi
ajs3cade262004-12-29 17:50:22 +0000319fi
320
ajs924b9222005-04-16 17:11:24 +0000321if test x"${enable_time_check}" != x"no" ; then
322 if test x"${enable_time_check}" = x"yes" -o x"${enable_time_check}" = x ; then
323 AC_DEFINE(CONSUMED_TIME_CHECK,5000000,Consumed Time Check)
324 else
325 AC_DEFINE_UNQUOTED(CONSUMED_TIME_CHECK,$enable_time_check,Consumed Time Check)
326 fi
327fi
328
Avneesh Sachdev5adc2522012-11-13 22:48:59 +0000329if test "${enable_fpm}" = "yes"; then
330 AC_DEFINE(HAVE_FPM,,Forwarding Plane Manager support)
331fi
332
Avneesh Sachdev7e4025c2016-03-11 12:21:24 -0800333if test "x${enable_dev_build}" = "xyes"; then
334 AC_DEFINE(DEV_BUILD,,Build for development)
335fi
336AM_CONDITIONAL([DEV_BUILD], [test "x$enable_dev_build" = "xyes"])
337
Avneesh Sachdev07e5b642016-04-04 10:54:55 -0700338#
339# Logic for protobuf support.
340#
341if test "$enable_protobuf" = "yes"; then
342 have_protobuf=yes
343
344 # Check for protoc-c
345 AC_CHECK_PROG([PROTOC_C], [protoc-c], [protoc-c], [/bin/false])
346 if test "x$PROTOC_C" = "x/bin/false"; then
347 have_protobuf=no
348 else
349 found_protobuf_c=no
350 PKG_CHECK_MODULES([PROTOBUF_C], libprotobuf-c >= 0.14,
351 [found_protobuf_c=yes],
352 [AC_MSG_RESULT([pkg-config did not find libprotobuf-c])])
353
354 if test "x$found_protobuf_c" = "xyes"; then
355 LDFLAGS="$LDFLAGS $PROTOBUF_C_LIBS"
356 CFLAGS="$CFLAGS $PROTOBUF_C_CFLAGS"
357 else
358 AC_CHECK_HEADER([google/protobuf-c/protobuf-c.h], [],
359 [have_protobuf=no; AC_MSG_RESULT([Couldn't find google/protobuf-c.h])])
360 fi
361 fi
362fi
363
364# Fail if the user explicity enabled protobuf support and we couldn't
365# find the compiler or libraries.
366if test "x$have_protobuf" = "xno" && test "x$enable_protobuf" = "xyes"; then
367 AC_MSG_ERROR([Protobuf enabled explicitly but can't find libraries/tools])
368fi
369
370if test "x$have_protobuf" = "xyes"; then
371 AC_DEFINE(HAVE_PROTOBUF,, protobuf)
372fi
373
374AM_CONDITIONAL([HAVE_PROTOBUF], [test "x$have_protobuf" = "xyes"])
375
376#
377# End of logic for protobuf support.
378#
379
paul7ea487b2003-03-17 02:05:07 +0000380if test "${enable_tcp_zebra}" = "yes"; then
381 AC_DEFINE(HAVE_TCP_ZEBRA,,Use TCP for zebra communication)
382fi
383
Paul Jakma3453a712009-06-12 14:21:02 +0100384if test "${enable_linux24_tcp_md5}" = "yes"; then
385 AC_DEFINE(HAVE_TCP_MD5_LINUX24,,Old Linux 2.4 TCP MD5 Signature Patch)
386fi
387
gdtd2a0ccc2003-12-03 18:13:48 +0000388AC_MSG_CHECKING(if zebra should be configurable to send Route Advertisements)
389if test "${enable_rtadv}" != "no"; then
hasso71c0fb52003-05-25 20:18:13 +0000390 AC_MSG_RESULT(yes)
gdtd2a0ccc2003-12-03 18:13:48 +0000391 AC_DEFINE(HAVE_RTADV,,Enable IPv6 Routing Advertisement support)
paul2487bea2003-05-25 23:51:31 +0000392else
393 AC_MSG_RESULT(no)
hasso71c0fb52003-05-25 20:18:13 +0000394fi
paul7ea487b2003-03-17 02:05:07 +0000395
hassoca776982004-06-12 14:33:05 +0000396if test "${enable_irdp}" = "yes"; then
397 AC_DEFINE(HAVE_IRDP,, IRDP )
398fi
399
David Lamparter656a2c02015-02-09 11:36:10 +0100400if test "${enable_isisd}" != "no" && test "${enable_isis_topology}" = yes; then
hassof695b012005-04-02 19:03:39 +0000401 AC_DEFINE(TOPOLOGY_GENERATE,,Enable IS-IS topology generator code)
David Lamparteree1ac2d2012-07-19 12:58:59 +0200402 ISIS_TOPOLOGY_INCLUDES="-I\$(srcdir)/topology"
hassof695b012005-04-02 19:03:39 +0000403 ISIS_TOPOLOGY_DIR="topology"
404 ISIS_TOPOLOGY_LIB="./topology/libtopology.a"
405fi
406
407AC_SUBST(ISIS_TOPOLOGY_INCLUDES)
408AC_SUBST(ISIS_TOPOLOGY_DIR)
409AC_SUBST(ISIS_TOPOLOGY_LIB)
410
Jafar Al-Gharaibeha8f97902016-07-28 14:41:20 -0500411if test x"${enable_user}" = x"no"; then
412 enable_user=""
413else
414 if test x"${enable_user}" = x"yes" || test x"${enable_user}" = x""; then
415 enable_user="quagga"
416 fi
417 AC_DEFINE_UNQUOTED(QUAGGA_USER, "${enable_user}", Quagga User)
pauledd7c242003-06-04 13:59:38 +0000418fi
pauledd7c242003-06-04 13:59:38 +0000419
Jafar Al-Gharaibeha8f97902016-07-28 14:41:20 -0500420if test x"${enable_group}" = x"no"; then
421 enable_group=""
422else
423 if test x"${enable_group}" = x"yes" || test x"${enable_group}" = x""; then
424 enable_group="quagga"
425 fi
426 AC_DEFINE_UNQUOTED(QUAGGA_GROUP, "${enable_group}", Quagga Group)
pauledd7c242003-06-04 13:59:38 +0000427fi
pauledd7c242003-06-04 13:59:38 +0000428
429if test x"${enable_vty_group}" = x"yes" ; then
paul8d4aee52003-06-06 00:30:35 +0000430 AC_MSG_ERROR([--enable-vty-group requires a group as argument, not yes])
paul79cb2162003-06-06 12:19:53 +0000431elif test x"${enable_vty_group}" != x""; then
paul8d4aee52003-06-06 00:30:35 +0000432 if test x"${enable_vty_group}" != x"no"; then
pauledd7c242003-06-04 13:59:38 +0000433 AC_DEFINE_UNQUOTED(VTY_GROUP, "${enable_vty_group}", VTY Sockets Group)
434 fi
435fi
paul26275b02005-04-11 07:10:47 +0000436AC_SUBST([enable_user])
437AC_SUBST([enable_group])
438AC_SUBST([enable_vty_group])
pauledd7c242003-06-04 13:59:38 +0000439
gdtaa593d52003-12-22 20:15:53 +0000440enable_configfile_mask=${enable_configfile_mask:-0600}
441AC_DEFINE_UNQUOTED(CONFIGFILE_MASK, ${enable_configfile_mask}, Mask for config files)
442
443enable_logfile_mask=${enable_logfile_mask:-0600}
444AC_DEFINE_UNQUOTED(LOGFILE_MASK, ${enable_logfile_mask}, Mask for log files)
445
Donald Sharpd1839632015-12-09 08:24:44 -0500446MPATH_NUM=1
paul7ea487b2003-03-17 02:05:07 +0000447
448case "${enable_multipath}" in
Donald Sharpd1839632015-12-09 08:24:44 -0500449 0)
450 MPATH_NUM=64
451 ;;
452 [[1-9]|[1-9][0-9]|[1-9][0-9][0-9]])
453 MPATH_NUM="${enable_multipath}"
paul7ea487b2003-03-17 02:05:07 +0000454 ;;
455 "")
456 ;;
457 *)
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000458 AC_MSG_FAILURE([Please specify digit to enable multipath ARG])
paul7ea487b2003-03-17 02:05:07 +0000459 ;;
460esac
461
Donald Sharpd1839632015-12-09 08:24:44 -0500462AC_DEFINE_UNQUOTED(MULTIPATH_NUM, $MPATH_NUM, Maximum number of paths for a route)
paul7ea487b2003-03-17 02:05:07 +0000463
Joachim Nilsson1080c132012-05-30 08:15:48 +0200464dnl -----------------------------------
465dnl Add extra version string to package
466dnl name, string and version fields.
467dnl -----------------------------------
468if test "x${EXTRAVERSION}" != "x" ; then
David Lamparter0be793e2012-11-27 01:34:56 +0000469 VERSION="${VERSION}${EXTRAVERSION}"
470 PACKAGE_VERSION="${PACKAGE_VERSION}${EXTRAVERSION}"
471 PACKAGE_STRING="${PACKAGE_STRING}${EXTRAVERSION}"
Joachim Nilsson1080c132012-05-30 08:15:48 +0200472fi
473
David Lampartera16dcf72012-12-13 11:20:50 +0100474if test "x$with_pkg_git_version" = "xyes"; then
475 if test -d "${srcdir}/.git"; then
476 AC_DEFINE(GIT_VERSION, [1], [include git version info])
477 else with_pkg_git_version="no"
478 AC_MSG_WARN([--with-pkg-git-version given, but this is not a git checkout])
479 fi
480fi
481AM_CONDITIONAL([GIT_VERSION], [test "x$with_pkg_git_version" = "xyes"])
David Lamparter0be793e2012-11-27 01:34:56 +0000482
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000483dnl ------------------------------------
484dnl Check C keywords and standard types
485dnl ------------------------------------
486AC_C_CONST
487AC_C_INLINE
488AC_C_RESTRICT
489AC_C_VOLATILE
pauldc7a2bf2003-10-22 00:07:44 +0000490AC_HEADER_STDC
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000491AC_HEADER_TIME
492AC_HEADER_SYS_WAIT
Paul Jakmae8441a82015-09-15 16:15:27 +0100493AC_HEADER_STDBOOL
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000494dnl AC_TYPE_PID_T
495AC_TYPE_UID_T
496AC_TYPE_MODE_T
497AC_TYPE_SIZE_T
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000498AC_STRUCT_TM
pauldc7a2bf2003-10-22 00:07:44 +0000499
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000500dnl -------------------------
501dnl Check other header files.
502dnl -------------------------
503AC_CHECK_HEADERS([stropts.h sys/ksym.h sys/times.h sys/select.h \
504 sys/types.h linux/version.h netdb.h asm/types.h \
Timo Teräs16ffb262014-07-29 09:41:54 +0000505 sys/cdefs.h sys/param.h limits.h signal.h \
Paul Jakma7e49a4f2016-08-02 13:36:03 +0100506 sys/socket.h netinet/in.h time.h sys/time.h features.h])
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000507
508dnl Utility macro to avoid retyping includes all the time
509m4_define([QUAGGA_INCLUDES],
510[#ifdef SUNOS_5
511#define _XPG4_2
512#define __EXTENSIONS__
513#endif
514#include <stdio.h>
515#if STDC_HEADERS
516# include <stdlib.h>
517# include <stddef.h>
518#else
519# if HAVE_STDLIB_H
520# include <stdlib.h>
521# endif
522#endif
523#if HAVE_SYS_TYPES_H
524# include <sys/types.h>
525#endif
526/* sys/conf.h depends on param.h on FBSD at least */
527#if HAVE_SYS_PARAM_H
528# include <sys/param.h>
529#endif
530/* Required for MAXSIG */
531#if HAVE_SIGNAL_H
532# include <signal.h>
533#endif
534#if HAVE_SYS_SOCKET_H
535# include <sys/socket.h>
536#endif
Hasso Tepperea057672013-01-13 17:45:29 +0000537#ifdef __APPLE__
538# define __APPLE_USE_RFC_3542
539#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000540#if HAVE_NETINET_IN_H
541# include <netinet/in.h>
542#endif
Paul Jakma6511cab2009-06-18 17:38:01 +0100543#ifdef TIME_WITH_SYS_TIME
544# include <sys/time.h>
545# include <time.h>
546#else
547# ifdef HAVE_SYS_TIME_H
548# include <sys/time.h>
549# else
550# include <time.h>
551# endif
552#endif /* TIME_WITH_SYS_TIME */
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000553])dnl
554
Denis Ovsienko2b43bf22011-07-14 16:30:08 +0400555dnl HAVE_NET_IF_H must be discovered by the time the longer AC_CHECK_HEADERS
556dnl round below execution begins, otherwise it doesn't properly detect
557dnl HAVE_NETINET6_IN6_VAR_H, HAVE_NET_IF_VAR_H and HAVE_STRUCT_IN6_ALIASREQ
558dnl on FreeBSD (BZ#408).
559
560AC_CHECK_HEADERS([net/if.h], [], [], QUAGGA_INCLUDES)
561
562m4_define([QUAGGA_INCLUDES],
563QUAGGA_INCLUDES
564[#if HAVE_NET_IF_H
565# include <net/if.h>
566#endif
567])dnl
568
569dnl Same applies for HAVE_NET_IF_VAR_H, which HAVE_NETINET6_ND6_H and
570dnl HAVE_NETINET_IN_VAR_H depend upon. But if_var.h depends on if.h, hence
571dnl an additional round for it.
572
573AC_CHECK_HEADERS([net/if_var.h], [], [], QUAGGA_INCLUDES)
574
575m4_define([QUAGGA_INCLUDES],
576QUAGGA_INCLUDES
577[#if HAVE_NET_IF_VAR_H
578# include <net/if_var.h>
579#endif
580])dnl
581
582AC_CHECK_HEADERS([sys/un.h netinet/in_systm.h netinet/in_var.h \
583 net/if_dl.h net/netopt.h net/route.h \
Paul Jakma11770e12007-06-22 16:14:42 +0000584 inet/nd.h arpa/inet.h netinet/ip_icmp.h \
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000585 fcntl.h stddef.h sys/ioctl.h syslog.h wchar.h wctype.h \
586 sys/sysctl.h sys/sockio.h kvm.h sys/conf.h],
587 [], [], QUAGGA_INCLUDES)
588
589AC_CHECK_HEADERS([ucontext.h], [], [],
590[#ifndef __USE_GNU
591#define __USE_GNU
592#endif /* __USE_GNU */
593QUAGGA_INCLUDES
594])
595
Joakim Tjernlundb166ea22009-06-25 16:40:06 +0100596m4_define([UCONTEXT_INCLUDES],
597[#include <ucontext.h>])dnl
598
599AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.uc_regs],
600 [], [], [UCONTEXT_INCLUDES])
601AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.regs],
602 [AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.regs.nip],
603 [], [], [UCONTEXT_INCLUDES])],
604 [], [UCONTEXT_INCLUDES])
605AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.gregs],
606 [], [], [UCONTEXT_INCLUDES])
607
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000608m4_define([QUAGGA_INCLUDES],
609QUAGGA_INCLUDES
Denis Ovsienko2b43bf22011-07-14 16:30:08 +0400610[#if HAVE_SYS_UN_H
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000611# include <sys/un.h>
612#endif
613#if HAVE_NETINET_IN_SYSTM_H
614# include <netinet/in_systm.h>
615#endif
616#if HAVE_NETINET_IN_VAR_H
617# include <netinet/in_var.h>
618#endif
619#if HAVE_NET_IF_DL_H
620# include <net/if_dl.h>
621#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000622#if HAVE_NET_NETOPT_H
623# include <net/netopt.h>
624#endif
625#if HAVE_NET_ROUTE_H
626# include <net/route.h>
627#endif
628#if HAVE_INET_ND_H
629# include <inet/nd.h>
630#endif
631#if HAVE_ARPA_INET_H
632# include <arpa/inet.h>
633#endif
Paul Jakma11770e12007-06-22 16:14:42 +0000634/* Required for IDRP */
635#if HAVE_NETINET_IP_ICMP_H
636# include <netinet/ip_icmp.h>
637#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000638])dnl
pauldc7a2bf2003-10-22 00:07:44 +0000639
gdtfa3232e2003-12-03 17:52:30 +0000640dnl V6 headers are checked below, after we check for v6
paul7ea487b2003-03-17 02:05:07 +0000641
paul7ea487b2003-03-17 02:05:07 +0000642dnl Some systems (Solaris 2.x) require libnsl (Network Services Library)
643case "$host" in
paulafd8a122005-03-12 06:36:10 +0000644 [*-sunos5.[6-7]*] | [*-solaris2.[6-7]*])
paul7ea487b2003-03-17 02:05:07 +0000645 opsys=sol2-6
paulafd8a122005-03-12 06:36:10 +0000646 AC_DEFINE(SUNOS_56, 1, SunOS 5.6 to 5.7)
paul19877dd2004-05-11 10:49:35 +0000647 AC_DEFINE(SUNOS_5, 1, SunOS 5)
paul7ea487b2003-03-17 02:05:07 +0000648 AC_CHECK_LIB(xnet, main)
649 CURSES=-lcurses
David Lampartere8d0d242014-06-28 22:07:41 +0200650 SOLARIS="solaris"
paul7ea487b2003-03-17 02:05:07 +0000651 ;;
paul1b73de82005-04-10 16:31:51 +0000652 [*-sunos5.[8-9]] \
653 | [*-sunos5.1[0-9]] \
654 | [*-sunos5.1[0-9].[0-9]] \
655 | [*-solaris2.[8-9]] \
656 | [*-solaris2.1[0-9]] \
657 | [*-solaris2.1[0-9].[0-9]])
paulafd8a122005-03-12 06:36:10 +0000658 opsys=sol8
Paul Jakmafb66b292006-05-28 08:26:15 +0000659 AC_DEFINE(SUNOS_59, 1, [SunOS 5.8 up])
660 AC_DEFINE(SUNOS_5, 1, [SunOS 5])
paul19877dd2004-05-11 10:49:35 +0000661 AC_CHECK_LIB(socket, main)
662 AC_CHECK_LIB(nsl, main)
paul1b73de82005-04-10 16:31:51 +0000663 AC_CHECK_LIB(umem, main)
Paul Jakmafb66b292006-05-28 08:26:15 +0000664 AC_CHECK_FUNCS([printstack],
665 [AC_DEFINE([HAVE_PRINTSTACK],1,[Solaris printstack])
666 AC_DEFINE([HAVE_STACK_TRACE],1,[Stack symbols decode functionality])
667 ])
paul19877dd2004-05-11 10:49:35 +0000668 CURSES=-lcurses
David Lampartere8d0d242014-06-28 22:07:41 +0200669 SOLARIS="solaris"
paul19877dd2004-05-11 10:49:35 +0000670 ;;
paul7ea487b2003-03-17 02:05:07 +0000671 *-sunos5* | *-solaris2*)
paul19877dd2004-05-11 10:49:35 +0000672 AC_DEFINE(SUNOS_5,,SunOS 5, Unknown SunOS)
paul7ea487b2003-03-17 02:05:07 +0000673 AC_CHECK_LIB(socket, main)
674 AC_CHECK_LIB(nsl, main)
675 CURSES=-lcurses
David Lampartere8d0d242014-06-28 22:07:41 +0200676 SOLARIS="solaris"
paul7ea487b2003-03-17 02:05:07 +0000677 ;;
hassoc45eb832005-02-19 13:58:06 +0000678 *-linux*)
paul7ea487b2003-03-17 02:05:07 +0000679 opsys=gnu-linux
680 AC_DEFINE(GNU_LINUX,,GNU Linux)
681 ;;
paul7ea487b2003-03-17 02:05:07 +0000682 *-openbsd*)
683 opsys=openbsd
684 AC_DEFINE(OPEN_BSD,,OpenBSD)
685 ;;
paul7ea487b2003-03-17 02:05:07 +0000686esac
687
Paul Jakma62c9f502009-07-19 17:33:21 +0100688AC_SYS_LARGEFILE
689
paul7ea487b2003-03-17 02:05:07 +0000690dnl ---------------------
691dnl Integrated VTY option
692dnl ---------------------
693case "${enable_vtysh}" in
Donald Sharpe6756782015-07-16 21:18:34 -0400694 "no") VTYSH="";;
695 *) VTYSH="vtysh";
paul7ea487b2003-03-17 02:05:07 +0000696 AC_DEFINE(VTYSH,,VTY shell)
gdtfc9d0742004-06-30 14:25:12 +0000697dnl Vtysh uses libreadline, which looks for termcap functions at
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000698dnl configure time. We follow readlines search order.
gdtfc9d0742004-06-30 14:25:12 +0000699dnl The required procedures are in libtermcap on NetBSD, in
700dnl [TODO] on Linux, and in [TODO] on Solaris.
hassoc0689392005-08-25 12:00:58 +0000701 AC_CHECK_LIB(termcap, tputs, LIBREADLINE="$LIBREADLINE -ltermcap",
paula9694592005-08-25 14:50:05 +0000702 [AC_CHECK_LIB(tinfo, tputs, LIBREADLINE="$LIBREADLINE -ltinfo",
703 [AC_CHECK_LIB(curses, tputs, LIBREADLINE="$LIBREADLINE -lcurses",
704 [AC_CHECK_LIB(ncurses, tputs,
705 LIBREADLINE="$LIBREADLINE -lncurses")]
706 )]
707 )]
708 )
Thomas Petazzoni64f8c7d2016-08-21 09:23:04 +0300709 AC_CHECK_LIB(readline, main, LIBREADLINE="-lreadline $LIBREADLINE",,
paula9694592005-08-25 14:50:05 +0000710 "$LIBREADLINE")
paul7ea487b2003-03-17 02:05:07 +0000711 if test $ac_cv_lib_readline_main = no; then
gdtfc9d0742004-06-30 14:25:12 +0000712 AC_MSG_ERROR([vtysh needs libreadline but was not found and usable on your system.])
paul7ea487b2003-03-17 02:05:07 +0000713 fi
714 AC_CHECK_HEADER(readline/history.h)
715 if test $ac_cv_header_readline_history_h = no;then
716 AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
717 fi
paula9694592005-08-25 14:50:05 +0000718 AC_CHECK_LIB(readline, rl_completion_matches,
719 LIBREADLINE="$LIBREADLINE",, "$LIBREADLINE")
paul3d3de8c2003-05-23 10:33:49 +0000720 if test $ac_cv_lib_readline_rl_completion_matches = no; then
721 AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
722 fi
723 ;;
paul7ea487b2003-03-17 02:05:07 +0000724 "no" ) VTYSH="";;
paul7ea487b2003-03-17 02:05:07 +0000725esac
hassoc0689392005-08-25 12:00:58 +0000726AC_SUBST(LIBREADLINE)
David Wardf027d332012-04-30 11:36:15 -0400727AM_CONDITIONAL(VTYSH, test "x$VTYSH" = "xvtysh")
paul7ea487b2003-03-17 02:05:07 +0000728
729dnl ----------
730dnl PAM module
Denis Ovsienko61599282011-07-15 00:24:15 +0400731dnl
732dnl Quagga detects the PAM library it is built against by checking for a
733dnl functional pam_misc.h (Linux-PAM) or openpam.h (OpenPAM) header. pam_misc.h
734dnl is known to #include pam_appl.h, the standard header of a PAM library, and
735dnl openpam.h doesn't do that, although depends on the header too. Hence a
736dnl little assistance to AC_CHECK_HEADER is necessary for the proper detection
737dnl of OpenPAM.
paul7ea487b2003-03-17 02:05:07 +0000738dnl ----------
739if test "$with_libpam" = "yes"; then
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000740 AC_CHECK_HEADER([security/pam_misc.h],
741 [AC_DEFINE(HAVE_PAM_MISC_H,,Have pam_misc.h)
742 AC_DEFINE(PAM_CONV_FUNC,misc_conv,Have misc_conv)
743 pam_conv_func="misc_conv"
744 ],
745 [], QUAGGA_INCLUDES)
746 AC_CHECK_HEADER([security/openpam.h],
747 [AC_DEFINE(HAVE_OPENPAM_H,,Have openpam.h)
748 AC_DEFINE(PAM_CONV_FUNC,openpam_ttyconv,Have openpam_ttyconv)
749 pam_conv_func="openpam_ttyconv"
750 ],
Denis Ovsienko61599282011-07-15 00:24:15 +0400751 [], QUAGGA_INCLUDES[#include <security/pam_appl.h>])
paul24cd4352003-05-06 12:16:27 +0000752 if test -z "$ac_cv_header_security_pam_misc_h$ac_cv_header_security_openpam_h" ; then
753 AC_MSG_WARN([*** pam support will not be built ***])
754 with_libpam="no"
755 fi
756fi
757
758if test "$with_libpam" = "yes"; then
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000759dnl took this test from proftpds configure.in and suited to our needs
paul7ea487b2003-03-17 02:05:07 +0000760dnl -------------------------------------------------------------------------
761dnl
762dnl This next check looks funky due to a linker problem with some versions
763dnl of the PAM library. Prior to 0.72 release, the Linux PAM shared library
764dnl omitted requiring libdl linking information. PAM-0.72 or better ships
765dnl with RedHat 6.2 and Debian 2.2 or better.
766AC_CHECK_LIB(pam, pam_start,
paul24cd4352003-05-06 12:16:27 +0000767 [AC_CHECK_LIB(pam, $pam_conv_func,
paul7ea487b2003-03-17 02:05:07 +0000768 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
769 LIBPAM="-lpam"],
770 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
771 LIBPAM="-lpam -lpam_misc"]
772 )
773 ],
774
775 [AC_CHECK_LIB(pam, pam_end,
paul24cd4352003-05-06 12:16:27 +0000776 [AC_CHECK_LIB(pam, $pam_conv_func,
paula159ed92003-06-04 11:01:45 +0000777 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
paul7ea487b2003-03-17 02:05:07 +0000778 LIBPAM="-lpam -ldl"],
paula159ed92003-06-04 11:01:45 +0000779 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
paul7ea487b2003-03-17 02:05:07 +0000780 LIBPAM="-lpam -ldl -lpam_misc"]
781 )
782 ],AC_MSG_WARN([*** pam support will not be built ***]),
783 [-ldl])
784 ]
785)
786fi
787AC_SUBST(LIBPAM)
788
789dnl -------------------------------
790dnl Endian-ness check
791dnl -------------------------------
792AC_WORDS_BIGENDIAN
793
794dnl -------------------------------
795dnl check the size in byte of the C
796dnl -------------------------------
797dnl AC_CHECK_SIZEOF(char)
798dnl AC_CHECK_SIZEOF(int)
799dnl AC_CHECK_SIZEOF(short)
800dnl AC_CHECK_SIZEOF(long)
801
802dnl ----------------------------
803dnl check existance of functions
804dnl ----------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000805AC_FUNC_CHOWN
806AC_FUNC_FNMATCH
807AC_FUNC_FORK
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000808AC_FUNC_MEMCMP
809AC_FUNC_MKTIME
810AC_FUNC_STRFTIME
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000811AC_FUNC_STAT
812AC_FUNC_SELECT_ARGTYPES
813AC_FUNC_STRFTIME
Paul Jakmad46d2a22007-05-10 16:53:04 +0000814dnl Avoid AC_FUNC_STRNLEN because it pulls in AC_SYSTEM_EXTENSIONS which
815dnl can lead to strange side effects. So we just check for strnlen
816dnl directly, see below.
Paul Jakma2b5cb412007-05-10 17:05:16 +0000817dnl AC_FUNC_STRNLENdnl
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000818AC_FUNC_VPRINTF
819
820dnl -------------------------------
821dnl bgpd needs pow() and hence libm
822dnl -------------------------------
823TMPLIBS="$LIBS"
824AC_CHECK_HEADER([math.h],
825 [AC_CHECK_LIB([m], [pow],
826 [LIBM="-lm"
827 LIBS="$LIBS $LIBM"
828 AC_DEFINE(HAVE_LIBM,, Have libm)
829 AC_CHECK_FUNCS(pow,[],[LIBM=""])
830 ])
831])
832if test x"$LIBM" = x ; then
833 AC_MSG_WARN([Unable to find working pow function - bgpd may not link])
834fi
835LIBS="$TMPLIBS"
836AC_SUBST(LIBM)
837
838dnl ---------------
839dnl other functions
840dnl ---------------
841AC_CHECK_FUNCS([dup2 ftruncate getcwd gethostbyname getpagesize gettimeofday \
Paul Jakmad46d2a22007-05-10 16:53:04 +0000842 inet_ntoa inet_aton strnlen \
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000843 memchr memmove memset select socket \
844 strcasecmp strchr strcspn strdup strerror \
845 strncasecmp strndup strrchr strspn strstr \
846 strtol strtoul strlcat strlcpy \
847 daemon snprintf vsnprintf \
848 if_nametoindex if_indextoname getifaddrs \
David Lamparter12bbd622015-09-15 02:26:44 -0700849 uname fcntl getgrouplist])
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000850
paul7ea487b2003-03-17 02:05:07 +0000851
Feng Lu55cfa2f2014-07-03 18:24:34 +0800852AC_CHECK_HEADER([asm-generic/unistd.h],
853 [AC_CHECK_DECL(__NR_setns,
854 AC_DEFINE(HAVE_NETNS,, Have netns),,
855 QUAGGA_INCLUDES [#include <asm-generic/unistd.h>
856 ])
857 AC_CHECK_FUNCS(setns, AC_DEFINE(HAVE_SETNS,, Have setns))]
858 )
859
paul7ea487b2003-03-17 02:05:07 +0000860dnl ------------------------------------
861dnl Determine routing get and set method
862dnl ------------------------------------
863AC_MSG_CHECKING(zebra between kernel interface method)
864if test x"$opsys" = x"gnu-linux"; then
David Lamparter2e5ca492014-06-28 20:54:31 +0200865 AC_MSG_RESULT(netlink)
866 RT_METHOD=rt_netlink.o
867 AC_DEFINE(HAVE_NETLINK,,netlink)
868 netlink=yes
paul7ea487b2003-03-17 02:05:07 +0000869else
David Lamparter39b233f2014-06-28 21:49:18 +0200870 AC_MSG_RESULT(Route socket)
871 KERNEL_METHOD="kernel_socket.o"
872 RT_METHOD="rt_socket.o"
paul7ea487b2003-03-17 02:05:07 +0000873fi
874AC_SUBST(RT_METHOD)
875AC_SUBST(KERNEL_METHOD)
Avneesh Sachdev5adc2522012-11-13 22:48:59 +0000876AM_CONDITIONAL([HAVE_NETLINK], [test "x$netlink" = "xyes"])
paul7ea487b2003-03-17 02:05:07 +0000877
Paul Jakma238497f2007-08-07 18:49:18 +0000878dnl --------------------------
879dnl Determine IS-IS I/O method
880dnl --------------------------
David Lamparter745bf052010-02-02 21:49:35 +0100881AC_DEFINE(ISIS_METHOD_PFPACKET, 1, [ constant value for isis method pfpacket ])
882AC_DEFINE(ISIS_METHOD_DLPI, 2, [ constant value for isis method dlpi ])
883AC_DEFINE(ISIS_METHOD_BPF, 3, [ constant value for isis method bpf ])
Paul Jakma238497f2007-08-07 18:49:18 +0000884AC_CHECK_HEADER(net/bpf.h)
885AC_CHECK_HEADER(sys/dlpi.h)
886AC_MSG_CHECKING(zebra IS-IS I/O method)
887if test x"$opsys" = x"gnu-linux"; then
888 AC_MSG_RESULT(pfpacket)
David Lamparter745bf052010-02-02 21:49:35 +0100889 ISIS_METHOD_MACRO="ISIS_METHOD_PFPACKET"
Paul Jakma238497f2007-08-07 18:49:18 +0000890elif test x"$opsys" = x"sol2-6" -o x"$opsys" = x"sol8"; then
891 AC_MSG_RESULT(DLPI)
David Lamparter745bf052010-02-02 21:49:35 +0100892 ISIS_METHOD_MACRO="ISIS_METHOD_DLPI"
Paul Jakma238497f2007-08-07 18:49:18 +0000893else
894 if test $ac_cv_header_net_bpf_h = no; then
895 if test $ac_cv_header_sys_dlpi_h = no; then
896 AC_MSG_RESULT(none)
897 AC_MSG_WARN([*** IS-IS support will not be built ***])
898 ISISD=""
899 else
900 AC_MSG_RESULT(DLPI)
901 fi
David Lamparter745bf052010-02-02 21:49:35 +0100902 ISIS_METHOD_MACRO="ISIS_METHOD_DLPI"
Paul Jakma238497f2007-08-07 18:49:18 +0000903 else
904 AC_MSG_RESULT(BPF)
David Lamparter745bf052010-02-02 21:49:35 +0100905 ISIS_METHOD_MACRO="ISIS_METHOD_BPF"
Paul Jakma238497f2007-08-07 18:49:18 +0000906 fi
907fi
David Lamparter745bf052010-02-02 21:49:35 +0100908AC_DEFINE_UNQUOTED(ISIS_METHOD, $ISIS_METHOD_MACRO, [ selected method for isis, == one of the constants ])
Paul Jakma238497f2007-08-07 18:49:18 +0000909
ajsb99760a2005-01-04 16:24:43 +0000910dnl ------------------------------------
911dnl check for broken CMSG_FIRSTHDR macro
912dnl ------------------------------------
gdt6c200462005-01-04 17:02:48 +0000913AC_MSG_CHECKING(for broken CMSG_FIRSTHDR)
hasso5b087522005-04-03 23:46:37 +0000914AC_RUN_IFELSE([AC_LANG_SOURCE([[
ajsb99760a2005-01-04 16:24:43 +0000915#ifdef SUNOS_5
916#define _XPG4_2
917#define __EXTENSIONS__
918#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000919#ifdef HAVE_STDLIB_H
920# include <stdlib.h>
921#endif
922#ifdef HAVE_SYS_TYPES_H
ajsb99760a2005-01-04 16:24:43 +0000923#include <sys/types.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000924#endif
925#ifdef HAVE_SYS_SOCKET_H
ajsb99760a2005-01-04 16:24:43 +0000926#include <sys/socket.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000927#endif
ajsb99760a2005-01-04 16:24:43 +0000928
929main()
930{
931 struct msghdr msg;
932 char buf[4];
933
934 msg.msg_control = buf;
935 msg.msg_controllen = 0;
936
937 if (CMSG_FIRSTHDR(&msg) != NULL)
938 exit(0);
939 exit (1);
hasso5b087522005-04-03 23:46:37 +0000940}]])],[AC_MSG_RESULT(yes - using workaround) AC_DEFINE(HAVE_BROKEN_CMSG_FIRSTHDR,,Broken CMSG_FIRSTHDR)],
hassod33e8d72005-04-03 13:07:21 +0000941[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
ajsb99760a2005-01-04 16:24:43 +0000942
paul7ea487b2003-03-17 02:05:07 +0000943dnl ------------------------------
944dnl check kernel route read method
945dnl ------------------------------
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500946AC_CACHE_CHECK([route read method], [quagga_cv_rtread_method],
947[if test "x$netlink" = xyes; then
948 quagga_cv_rtread_method="netlink"
paul7ea487b2003-03-17 02:05:07 +0000949else
David Lamparter2e5ca492014-06-28 20:54:31 +0200950for quagga_cv_rtread_method in /dev/ip /dev/null;
paul7ea487b2003-03-17 02:05:07 +0000951do
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500952 test x`ls $quagga_cv_rtread_method 2>/dev/null` = x"$quagga_cv_rtread_method" && break
paul7ea487b2003-03-17 02:05:07 +0000953done
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500954case $quagga_cv_rtread_method in
paul9c30ab62003-07-08 08:36:17 +0000955 "/dev/ip")
956 case "$host" in
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500957 *-freebsd*) quagga_cv_rtread_method="sysctl";;
958 *) quagga_cv_rtread_method="getmsg";;
paul9c30ab62003-07-08 08:36:17 +0000959 esac;;
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500960 *)
961 quagga_cv_rtread_method="sysctl";;
paul7ea487b2003-03-17 02:05:07 +0000962esac
963fi])
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500964RTREAD_METHOD=rtread_${quagga_cv_rtread_method}.o
paul7ea487b2003-03-17 02:05:07 +0000965AC_SUBST(RTREAD_METHOD)
966
967dnl -----------------------------
968dnl check interface lookup method
969dnl -----------------------------
paul19877dd2004-05-11 10:49:35 +0000970IOCTL_METHOD=ioctl.o
paul7ea487b2003-03-17 02:05:07 +0000971AC_MSG_CHECKING(interface looking up method)
972if test "$netlink" = yes; then
973 AC_MSG_RESULT(netlink)
974 IF_METHOD=if_netlink.o
paul19877dd2004-05-11 10:49:35 +0000975elif test "$opsys" = "sol2-6";then
976 AC_MSG_RESULT(Solaris GIF)
977 IF_METHOD=if_ioctl.o
paulafd8a122005-03-12 06:36:10 +0000978elif test "$opsys" = "sol8";then
paul19877dd2004-05-11 10:49:35 +0000979 AC_MSG_RESULT(Solaris GLIF)
980 IF_METHOD=if_ioctl_solaris.o
981 IOCTL_METHOD=ioctl_solaris.o
paul19877dd2004-05-11 10:49:35 +0000982elif test "$opsys" = "openbsd";then
983 AC_MSG_RESULT(openbsd)
984 IF_METHOD=if_ioctl.o
985elif grep NET_RT_IFLIST /usr/include/sys/socket.h >/dev/null 2>&1; then
986 AC_MSG_RESULT(sysctl)
paul7ea487b2003-03-17 02:05:07 +0000987 IF_METHOD=if_sysctl.o
988 AC_DEFINE(HAVE_NET_RT_IFLIST,,NET_RT_IFLIST)
paul19877dd2004-05-11 10:49:35 +0000989else
paul7ea487b2003-03-17 02:05:07 +0000990 AC_MSG_RESULT(ioctl)
991 IF_METHOD=if_ioctl.o
paul7ea487b2003-03-17 02:05:07 +0000992fi
993AC_SUBST(IF_METHOD)
paul19877dd2004-05-11 10:49:35 +0000994AC_SUBST(IOCTL_METHOD)
paul7ea487b2003-03-17 02:05:07 +0000995
paul42c98192005-05-07 02:22:51 +0000996dnl ---------------------------------------------------------------
997dnl figure out how to specify an interface in multicast sockets API
998dnl ---------------------------------------------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000999AC_CHECK_MEMBERS([struct ip_mreqn.imr_ifindex], [], [], QUAGGA_INCLUDES)
paul42c98192005-05-07 02:22:51 +00001000
Donald Sharp1934e782015-06-05 12:15:44 -07001001AC_CHECK_HEADERS([linux/mroute.h], [], [],
1002[
1003#if HAVE_NETINET_IN_H
1004#include<netinet/in.h>
1005#endif])
paul42c98192005-05-07 02:22:51 +00001006AC_MSG_CHECKING([for BSD struct ip_mreq hack])
1007AC_TRY_COMPILE([#ifdef HAVE_SYS_PARAM_H
1008#include <sys/param.h>
Brian Bennettb8a893c2015-02-17 22:32:22 +00001009#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 +00001010 return (0);
1011#else
1012 #error No support for BSD struct ip_mreq hack detected
1013#endif],[AC_MSG_RESULT(yes)
1014AC_DEFINE(HAVE_BSD_STRUCT_IP_MREQ_HACK,,[Can pass ifindex in struct ip_mreq])],
1015AC_MSG_RESULT(no))
1016
Dmitrij Tejblum10d04cd2011-08-22 11:39:35 +04001017AC_MSG_CHECKING([for RFC3678 protocol-independed API])
1018AC_TRY_COMPILE([
1019#include <sys/types.h>
1020#include <netinet/in.h>
1021], [struct group_req gr; int sock; setsockopt(sock, IPPROTO_IP, MCAST_JOIN_GROUP, (void*)&gr, sizeof(gr));
1022], [AC_MSG_RESULT(yes)
1023AC_DEFINE(HAVE_RFC3678,1,[Have RFC3678 protocol-independed API])],
1024AC_MSG_RESULT(no))
1025
Andrew J. Schorrc543a172008-01-10 15:24:32 +00001026dnl ---------------------------------------------------------------
1027dnl figure out how to check link-state
1028dnl ---------------------------------------------------------------
Andrew J. Schorr6418bed2008-01-11 16:33:59 +00001029AC_CHECK_HEADER([net/if.h],
1030 [AC_CHECK_HEADER( [net/if_media.h],
1031 [m4_define([LINK_DETECT_INCLUDES],
1032 QUAGGA_INCLUDES
1033 [#include <net/if_media.h>
1034 ])
1035 AC_CHECK_MEMBERS( [struct ifmediareq.ifm_status],
1036 AC_DEFINE(HAVE_BSD_LINK_DETECT,,[BSD link-detect]),
1037 [], LINK_DETECT_INCLUDES)],
1038 [],
1039 QUAGGA_INCLUDES)],
1040 [], QUAGGA_INCLUDES )
Andrew J. Schorrc543a172008-01-10 15:24:32 +00001041
Doug VanLeuven9234b382012-10-10 16:12:32 -07001042dnl ---------------------------------------------------------------
1043dnl Additional, newer way to check link-state using ifi_link_state.
1044dnl Not available in all BSD's when ifmediareq available
1045dnl ---------------------------------------------------------------
1046AC_CHECK_HEADER([net/if.h],
1047 AC_CHECK_MEMBERS([struct if_data.ifi_link_state],
1048 AC_DEFINE(HAVE_BSD_IFI_LINK_STATE,,[BSD ifi_link_state available]),
1049 [], QUAGGA_INCLUDES),
1050 ,)
1051
Paul Jakma0df7c912008-07-21 21:02:49 +00001052dnl ------------------------
1053dnl TCP_MD5SIG socket option
1054dnl ------------------------
1055
1056AC_CHECK_HEADER([netinet/tcp.h],
1057 [m4_define([MD5_INCLUDES],
1058 QUAGGA_INCLUDES
1059 [#include <netinet/tcp.h>
1060 ])
1061 AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)],
1062 [],
1063 QUAGGA_INCLUDES)
1064if test $ac_cv_have_decl_TCP_MD5SIG = no; then
1065 AC_CHECK_HEADER([linux/tcp.h],
1066 [m4_define([MD5_INCLUDES],
1067 QUAGGA_INCLUDES
1068 [#include <linux/tcp.h>
1069 ])
1070 AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)])
1071fi
1072
paul7ea487b2003-03-17 02:05:07 +00001073dnl -----------------------------
1074dnl check ipforward detect method
1075dnl -----------------------------
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001076AC_CACHE_CHECK([ipforward method], [quagga_cv_ipforward_method],
David Lamparterca9f3422009-09-16 02:11:00 +02001077[if test x$cross_compiling = xyes; then
1078 if test x"$opsys" = x"gnu-linux"; then
1079 quagga_cv_ipforward_method=/proc/net/snmp
1080 else
1081 quagga_cv_ipforward_method=/dev/ip
1082 fi
1083else
1084 for quagga_cv_ipforward_method in /proc/net/snmp /dev/ip /dev/null;
1085 do
1086 test x`ls $quagga_cv_ipforward_method 2>/dev/null` = x"$quagga_cv_ipforward_method" && break
1087 done
1088fi
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001089case $quagga_cv_ipforward_method in
1090 "/proc/net/snmp") quagga_cv_ipforward_method="proc";;
paul7ea487b2003-03-17 02:05:07 +00001091 "/dev/ip")
1092 case "$host" in
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001093 *-freebsd*) quagga_cv_ipforward_method="sysctl";;
1094 *) quagga_cv_ipforward_method="solaris";;
paul7ea487b2003-03-17 02:05:07 +00001095 esac;;
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001096 *) quagga_cv_ipforward_method="sysctl";;
paul7ea487b2003-03-17 02:05:07 +00001097esac])
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001098IPFORWARD=ipforward_${quagga_cv_ipforward_method}.o
paul7ea487b2003-03-17 02:05:07 +00001099AC_SUBST(IPFORWARD)
1100
1101AC_CHECK_FUNCS(getaddrinfo, [have_getaddrinfo=yes], [have_getaddrinfo=no])
1102
1103dnl ----------
1104dnl IPv6 check
1105dnl ----------
1106AC_MSG_CHECKING(whether does this OS have IPv6 stack)
paul7ea487b2003-03-17 02:05:07 +00001107dnl ---------
1108dnl KAME IPv6
1109dnl ---------
David Lamparter6d6df302014-06-28 21:12:37 +02001110 if grep WIDE /usr/include/netinet6/in6.h >/dev/null 2>&1; then
paula159ed92003-06-04 11:01:45 +00001111 AC_DEFINE(KAME,1,KAME IPv6)
paula159ed92003-06-04 11:01:45 +00001112 AC_MSG_RESULT(KAME)
paul19877dd2004-05-11 10:49:35 +00001113dnl ------------------------------------
1114dnl Solaris 9, 10 and potentially higher
1115dnl ------------------------------------
paulafd8a122005-03-12 06:36:10 +00001116 elif test x"$opsys" = x"sol8"; then
paul19877dd2004-05-11 10:49:35 +00001117 AC_DEFINE(SOLARIS_IPV6, 1, Solaris IPv6)
paul19877dd2004-05-11 10:49:35 +00001118 AC_MSG_RESULT(Solaris IPv6)
paul7ea487b2003-03-17 02:05:07 +00001119dnl ----------
1120dnl Linux IPv6
1121dnl ----------
David Lamparter29ed6222014-06-28 21:42:25 +02001122 elif test x"$opsys" = x"gnu-linux"; then
Timo Teräs3ef0b872014-07-29 09:41:56 +00001123 AC_DEFINE(LINUX_IPV6,1,Linux IPv6 stack)
David Lamparter29ed6222014-06-28 21:42:25 +02001124 AC_MSG_RESULT(Linux IPv6)
1125 else
David Lamparter7fe17e62014-11-22 10:31:33 -08001126 AC_MSG_ERROR([Failed to detect IPv6 stack])
paula159ed92003-06-04 11:01:45 +00001127 fi
paul7ea487b2003-03-17 02:05:07 +00001128
David Lamparter7fe17e62014-11-22 10:31:33 -08001129dnl this is unconditial, for compatibility
1130AC_DEFINE(HAVE_IPV6,1,IPv6)
paul7ea487b2003-03-17 02:05:07 +00001131
gdtfa3232e2003-12-03 17:52:30 +00001132dnl ------------------
1133dnl IPv6 header checks
1134dnl ------------------
gdtfa3232e2003-12-03 17:52:30 +00001135AC_CHECK_HEADERS([netinet6/in6.h netinet/in6_var.h netinet/icmp6.h \
David Lamparter05a69d22015-05-27 22:15:37 +02001136 netinet6/in6_var.h netinet6/nd6.h], [], [],
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001137 QUAGGA_INCLUDES)
gdtfa3232e2003-12-03 17:52:30 +00001138
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001139m4_define([QUAGGA_INCLUDES],dnl
1140QUAGGA_INCLUDES
1141[#if HAVE_NETINET6_IN6_H
1142#include <netinet6/in6.h>
1143#endif
1144#if HAVE_NETINET_IN6_VAR_H
1145#include <netinet/in6_var.h>
1146#endif
1147#if HAVE_NETINET_ICMP6_H
1148# include <netinet/icmp6.h>
1149#endif
1150#if HAVE_NETINET6_IN6_VAR_H
1151# include <netinet6/in6_var.h>
1152#endif
1153#if HAVE_NETINET6_ND6_H
Hasso Tepperfbf24542007-06-25 19:30:59 +00001154# include <netinet6/nd6.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001155#endif
1156])dnl
1157
Joakim Tjernlundcbcd9bf2009-02-16 09:40:39 +01001158dnl disable doc check
1159if test "${enable_doc}" = "no";then
1160 DOC=""
1161else
1162 DOC="doc"
1163fi
1164
paul7ea487b2003-03-17 02:05:07 +00001165dnl --------------------
1166dnl Daemon disable check
1167dnl --------------------
1168if test "${enable_zebra}" = "no";then
1169 ZEBRA=""
1170else
1171 ZEBRA="zebra"
1172fi
David Wardf027d332012-04-30 11:36:15 -04001173AM_CONDITIONAL(ZEBRA, test "x$ZEBRA" = "xzebra")
paul7ea487b2003-03-17 02:05:07 +00001174
1175if test "${enable_bgpd}" = "no";then
1176 BGPD=""
1177else
1178 BGPD="bgpd"
1179fi
David Wardf027d332012-04-30 11:36:15 -04001180AM_CONDITIONAL(BGPD, test "x$BGPD" = "xbgpd")
paul7ea487b2003-03-17 02:05:07 +00001181
1182if test "${enable_ripd}" = "no";then
1183 RIPD=""
1184else
1185 RIPD="ripd"
1186fi
David Wardf027d332012-04-30 11:36:15 -04001187AM_CONDITIONAL(RIPD, test "x$RIPD" = "xripd")
paul7ea487b2003-03-17 02:05:07 +00001188
1189if test "${enable_ospfd}" = "no";then
1190 OSPFD=""
1191else
1192 OSPFD="ospfd"
1193fi
David Wardf027d332012-04-30 11:36:15 -04001194AM_CONDITIONAL(OSPFD, test "x$OSPFD" = "xospfd")
paul7ea487b2003-03-17 02:05:07 +00001195
Timo Teräsdafa05e2017-01-19 17:27:01 +02001196if test x"$opsys" != x"gnu-linux"; then
1197 dnl NHRPd works currently with Linux only.
1198 enable_nhrpd="no"
1199fi
1200if test "${enable_nhrpd}" = "no";then
1201 NHRPD=""
1202else
1203 NHRPD="nhrpd"
1204fi
1205AM_CONDITIONAL(NHRPD, test "x$NHRPD" = "xnhrpd")
1206
ajsd0199432004-12-22 14:03:52 +00001207if test "${enable_watchquagga}" = "no";then
1208 WATCHQUAGGA=""
1209else
1210 WATCHQUAGGA="watchquagga"
1211fi
David Wardf027d332012-04-30 11:36:15 -04001212AM_CONDITIONAL(WATCHQUAGGA, test "x$WATCHQUAGGA" = "xwatchquagga")
ajsd0199432004-12-22 14:03:52 +00001213
paul1ef74ef2003-03-21 15:16:05 +00001214OSPFCLIENT=""
Donald Sharp36fef572015-12-16 14:22:10 -05001215if test "${enable_ospfapi}" != "no";then
paul9a569842003-03-28 01:45:13 +00001216 AC_DEFINE(SUPPORT_OSPF_API,,OSPFAPI)
paul1ef74ef2003-03-21 15:16:05 +00001217
Donald Sharp36fef572015-12-16 14:22:10 -05001218 if test "${enable_ospfclient}" != "no";then
paul1ef74ef2003-03-21 15:16:05 +00001219 OSPFCLIENT="ospfclient"
paul1ef74ef2003-03-21 15:16:05 +00001220 fi
paul7ea487b2003-03-17 02:05:07 +00001221fi
Donald Sharp36fef572015-12-16 14:22:10 -05001222
David Wardf027d332012-04-30 11:36:15 -04001223AM_CONDITIONAL(OSPFCLIENT, test "x$OSPFCLIENT" = "xospfclient")
paul7ea487b2003-03-17 02:05:07 +00001224
1225case "${enable_ripngd}" in
paul7ea487b2003-03-17 02:05:07 +00001226 "no" ) RIPNGD="";;
David Lamparter7fe17e62014-11-22 10:31:33 -08001227 * ) RIPNGD="ripngd";;
paul7ea487b2003-03-17 02:05:07 +00001228esac
David Wardf027d332012-04-30 11:36:15 -04001229AM_CONDITIONAL(RIPNGD, test "x$RIPNGD" = "xripngd")
paul7ea487b2003-03-17 02:05:07 +00001230
1231case "${enable_ospf6d}" in
paul7ea487b2003-03-17 02:05:07 +00001232 "no" ) OSPF6D="";;
David Lamparter7fe17e62014-11-22 10:31:33 -08001233 * ) OSPF6D="ospf6d";;
paul7ea487b2003-03-17 02:05:07 +00001234esac
David Wardf027d332012-04-30 11:36:15 -04001235AM_CONDITIONAL(OSPF6D, test "x$OSPF6D" = "xospf6d")
paul7ea487b2003-03-17 02:05:07 +00001236
jardin9e867fe2003-12-23 08:56:18 +00001237case "${enable_isisd}" in
jardin9e867fe2003-12-23 08:56:18 +00001238 "no" ) ISISD="";;
David Lamparter656a2c02015-02-09 11:36:10 +01001239 * ) ISISD="isisd";;
jardin9e867fe2003-12-23 08:56:18 +00001240esac
David Wardf027d332012-04-30 11:36:15 -04001241AM_CONDITIONAL(ISISD, test "x$ISISD" = "xisisd")
jardin9e867fe2003-12-23 08:56:18 +00001242
Everton Marques871dbcf2009-08-11 15:43:05 -03001243case "${enable_pimd}" in
Everton Marques871dbcf2009-08-11 15:43:05 -03001244 "no" ) PIMD="";;
Donald Sharpe6756782015-07-16 21:18:34 -04001245 * ) PIMD="pimd";;
Everton Marques871dbcf2009-08-11 15:43:05 -03001246esac
Everton Marquesff57d362014-06-25 15:54:03 -03001247AM_CONDITIONAL(PIMD, test "x$PIMD" = "xpimd")
Everton Marques871dbcf2009-08-11 15:43:05 -03001248
paul7ea487b2003-03-17 02:05:07 +00001249if test "${enable_bgp_announce}" = "no";then
Paul Jakma750e8142008-07-22 21:11:48 +00001250 AC_DEFINE(DISABLE_BGP_ANNOUNCE,1,Disable BGP installation to zebra)
1251else
1252 AC_DEFINE(DISABLE_BGP_ANNOUNCE,0,Disable BGP installation to zebra)
paul7ea487b2003-03-17 02:05:07 +00001253fi
1254
Joakim Tjernlundcbcd9bf2009-02-16 09:40:39 +01001255AC_SUBST(DOC)
paul7ea487b2003-03-17 02:05:07 +00001256AC_SUBST(ZEBRA)
1257AC_SUBST(BGPD)
1258AC_SUBST(RIPD)
1259AC_SUBST(RIPNGD)
1260AC_SUBST(OSPFD)
1261AC_SUBST(OSPF6D)
Timo Teräsdafa05e2017-01-19 17:27:01 +02001262AC_SUBST(NHRPD)
ajsd0199432004-12-22 14:03:52 +00001263AC_SUBST(WATCHQUAGGA)
jardin9e867fe2003-12-23 08:56:18 +00001264AC_SUBST(ISISD)
Everton Marques871dbcf2009-08-11 15:43:05 -03001265AC_SUBST(PIMD)
Greg Troxel97cee872007-08-02 13:36:56 +00001266AC_SUBST(SOLARIS)
paul7ea487b2003-03-17 02:05:07 +00001267AC_SUBST(VTYSH)
paul7ea487b2003-03-17 02:05:07 +00001268AC_SUBST(CURSES)
1269AC_SUBST(OSPFCLIENT)
paul1ef74ef2003-03-21 15:16:05 +00001270AC_SUBST(OSPFAPI)
paul7ea487b2003-03-17 02:05:07 +00001271AC_CHECK_LIB(c, inet_ntop, [AC_DEFINE(HAVE_INET_NTOP,,inet_ntop)])
1272AC_CHECK_LIB(c, inet_pton, [AC_DEFINE(HAVE_INET_PTON,,inet_pton)])
1273AC_CHECK_LIB(crypt, crypt)
1274AC_CHECK_LIB(resolv, res_init)
paul7ea487b2003-03-17 02:05:07 +00001275
paul7ea487b2003-03-17 02:05:07 +00001276dnl ---------------------------
Jeremy Jackson25f45882009-01-12 16:06:12 -05001277dnl check system has PCRE regexp
1278dnl ---------------------------
1279if test "x$enable_pcreposix" = "xyes"; then
1280 AC_CHECK_LIB(pcreposix, pcreposix_regexec, ,[enable_pcreposix=no
1281 AC_MSG_WARN([*** falling back to other regex library ***]) ])
1282fi
1283
1284if test "x$enable_pcreposix" != "xyes"; then
1285dnl ---------------------------
paul7ea487b2003-03-17 02:05:07 +00001286dnl check system has GNU regexp
1287dnl ---------------------------
Jeremy Jackson25f45882009-01-12 16:06:12 -05001288AC_MSG_CHECKING(whether system has GNU regex)
paul7ea487b2003-03-17 02:05:07 +00001289AC_CHECK_LIB(c, regexec,
1290[AC_DEFINE(HAVE_GNU_REGEX,,GNU regexp library)
1291 LIB_REGEX=""],
1292[LIB_REGEX="regex.o"])
Jeremy Jackson25f45882009-01-12 16:06:12 -05001293fi
1294AC_SUBST(HAVE_LIBPCREPOSIX)
paul7ea487b2003-03-17 02:05:07 +00001295AC_SUBST(LIB_REGEX)
1296
1297dnl ------------------
Timo Teräsdafa05e2017-01-19 17:27:01 +02001298dnl check C-Ares library
1299dnl ------------------
1300if test "${enable_nhrpd}" != "no";then
1301 PKG_CHECK_MODULES([CARES], [libcares])
1302fi
1303
1304
1305dnl ------------------
paulb1fc9ac2006-01-31 10:09:27 +00001306dnl check Net-SNMP library
paul7ea487b2003-03-17 02:05:07 +00001307dnl ------------------
Vincent Bernatd6be5fb2012-05-24 09:44:43 +02001308if test "${enable_snmp}" != ""; then
Vincent Bernat08d7f652012-05-22 22:29:17 +02001309 AC_PATH_TOOL([NETSNMP_CONFIG], [net-snmp-config], [no])
1310 if test x"$NETSNMP_CONFIG" = x"no"; then
1311 AC_MSG_ERROR([--enable-snmp given but unable to find net-snmp-config])
1312 fi
1313 LIBS="$LIBS `${NETSNMP_CONFIG} --agent-libs`"
1314 CFLAGS="`${NETSNMP_CONFIG} --base-cflags` $CFLAGS"
1315 AC_MSG_CHECKING([whether we can link to Net-SNMP])
1316 AC_LINK_IFELSE([AC_LANG_PROGRAM([
1317int main(void);
1318],
1319[
1320{
1321 return 0;
1322}
1323])],[AC_MSG_RESULT(yes)],[
1324 AC_MSG_RESULT(no)
1325 AC_MSG_ERROR([--enable-snmp given but not usable])])
1326 AC_DEFINE(HAVE_SNMP,,SNMP)
Vincent Bernatd6be5fb2012-05-24 09:44:43 +02001327 case "${enable_snmp}" in
1328 yes)
1329 SNMP_METHOD=agentx
1330 ;;
1331 smux|agentx)
1332 SNMP_METHOD="${enable_snmp}"
1333 ;;
1334 *)
1335 AC_MSG_ERROR([--enable-snmp given with an unknown method (${enable_snmp}). Use smux or agentx])
1336 ;;
1337 esac
1338 AH_TEMPLATE([SNMP_SMUX], [Use SNMP SMUX to interface with snmpd])
1339 AH_TEMPLATE([SNMP_AGENTX], [Use SNMP AgentX to interface with snmpd])
1340 AC_DEFINE_UNQUOTED(AS_TR_CPP(SNMP_${SNMP_METHOD}),,SNMP method to interface with snmpd)
paul7ea487b2003-03-17 02:05:07 +00001341fi
1342
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001343dnl ---------------------------
1344dnl sockaddr and netinet checks
1345dnl ---------------------------
1346AC_CHECK_TYPES([struct sockaddr, struct sockaddr_in,
1347 struct sockaddr_in6, struct sockaddr_un, struct sockaddr_dl,
Everton Marques871dbcf2009-08-11 15:43:05 -03001348 socklen_t, struct vifctl, struct mfcctl, struct sioc_sg_req,
1349 vifi_t, struct sioc_vif_req, struct igmpmsg,
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001350 struct ifaliasreq, struct if6_aliasreq, struct in6_aliasreq,
1351 struct nd_opt_adv_interval, struct rt_addrinfo,
Paul Jakma11770e12007-06-22 16:14:42 +00001352 struct nd_opt_homeagent_info, struct nd_opt_adv_interval],
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001353 [], [], QUAGGA_INCLUDES)
paul7ea487b2003-03-17 02:05:07 +00001354
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001355AC_CHECK_MEMBERS([struct sockaddr.sa_len,
1356 struct sockaddr_in.sin_len, struct sockaddr_un.sun_len,
1357 struct sockaddr_in6.sin6_scope_id,
David Lamparterca3ccd82012-09-26 14:52:39 +02001358 struct sockaddr_dl.sdl_len,
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001359 struct if6_aliasreq.ifra_lifetime,
1360 struct nd_opt_adv_interval.nd_opt_ai_type],
1361 [], [], QUAGGA_INCLUDES)
hasso71c0fb52003-05-25 20:18:13 +00001362
paul7ea487b2003-03-17 02:05:07 +00001363dnl ---------------------------
Paul Jakma11770e12007-06-22 16:14:42 +00001364dnl IRDP/pktinfo/icmphdr checks
paul7ea487b2003-03-17 02:05:07 +00001365dnl ---------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001366AC_CHECK_TYPES([struct in_pktinfo],
Paul Jakma11770e12007-06-22 16:14:42 +00001367 [AC_CHECK_TYPES([struct icmphdr],
1368 [if test "${enable_irdp}" != "no"; then
1369 AC_DEFINE(HAVE_IRDP,, IRDP)
1370 fi],
1371 [if test "${enable_irdp}" = "yes"; then
1372 AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
1373 fi], [QUAGGA_INCLUDES])],
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001374 [if test "${enable_irdp}" = "yes"; then
1375 AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
1376 fi], [QUAGGA_INCLUDES])
vincent29c4c9b2005-03-25 13:05:47 +00001377
Everton Marques871dbcf2009-08-11 15:43:05 -03001378dnl -----------------------
1379dnl checking for IP_PKTINFO
1380dnl -----------------------
1381AC_MSG_CHECKING(for IP_PKTINFO)
1382AC_TRY_COMPILE([#include <netdb.h>], [
1383 int opt = IP_PKTINFO;
1384], [
1385 AC_MSG_RESULT(yes)
1386 AC_DEFINE(HAVE_IP_PKTINFO, 1, [Have IP_PKTINFO])
1387], [
1388 AC_MSG_RESULT(no)
1389])
1390
1391dnl ---------------------------
1392dnl checking for IP_RECVDSTADDR
1393dnl ---------------------------
1394AC_MSG_CHECKING(for IP_RECVDSTADDR)
1395AC_TRY_COMPILE([#include <netinet/in.h>], [
1396 int opt = IP_RECVDSTADDR;
1397], [
1398 AC_MSG_RESULT(yes)
1399 AC_DEFINE(HAVE_IP_RECVDSTADDR, 1, [Have IP_RECVDSTADDR])
1400], [
1401 AC_MSG_RESULT(no)
1402])
1403
1404dnl ----------------------
1405dnl checking for IP_RECVIF
1406dnl ----------------------
1407AC_MSG_CHECKING(for IP_RECVIF)
1408AC_TRY_COMPILE([#include <netinet/in.h>], [
1409 int opt = IP_RECVIF;
1410], [
1411 AC_MSG_RESULT(yes)
1412 AC_DEFINE(HAVE_IP_RECVIF, 1, [Have IP_RECVIF])
1413], [
1414 AC_MSG_RESULT(no)
1415])
1416
paul7ea487b2003-03-17 02:05:07 +00001417dnl --------------------------------------
1418dnl checking for getrusage struct and call
1419dnl --------------------------------------
Stephen Hemminger47f6aef2013-01-04 22:29:22 +00001420if test "${enable_rusage}" != "no"; then
1421 AC_MSG_CHECKING(whether getrusage is available)
1422 AC_TRY_COMPILE([#include <sys/resource.h>],[struct rusage ac_x; getrusage (RUSAGE_SELF, &ac_x);],
1423 [AC_MSG_RESULT(yes)
1424 AC_DEFINE(HAVE_RUSAGE,,rusage)],
1425 AC_MSG_RESULT(no))
1426fi
paul7ea487b2003-03-17 02:05:07 +00001427
Stephen Hemmingerc4376c92009-05-28 15:29:10 -07001428dnl --------------------------------------
1429dnl checking for clock_time monotonic struct and call
1430dnl --------------------------------------
Paul Jakma6511cab2009-06-18 17:38:01 +01001431AC_CHECK_DECL(CLOCK_MONOTONIC,
1432 [AC_CHECK_LIB(rt, clock_gettime, [LIBS="$LIBS -lrt"])
Dmitry Tejblum9964fcf2009-11-05 16:50:36 +03001433 AC_DEFINE(HAVE_CLOCK_MONOTONIC,, Have monotonic clock)
Paul Jakma6511cab2009-06-18 17:38:01 +01001434], [AC_MSG_RESULT(no)], [QUAGGA_INCLUDES])
Stephen Hemmingerc4376c92009-05-28 15:29:10 -07001435
pauledd7c242003-06-04 13:59:38 +00001436dnl -------------------
1437dnl capabilities checks
1438dnl -------------------
hasso41d3fc92004-04-06 11:59:00 +00001439if test "${enable_capabilities}" != "no"; then
1440 AC_MSG_CHECKING(whether prctl PR_SET_KEEPCAPS is available)
1441 AC_TRY_COMPILE([#include <sys/prctl.h>],[prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);],
1442 [AC_MSG_RESULT(yes)
1443 AC_DEFINE(HAVE_PR_SET_KEEPCAPS,,prctl)
1444 quagga_ac_keepcaps="yes"],
1445 AC_MSG_RESULT(no)
pauledd7c242003-06-04 13:59:38 +00001446 )
hasso41d3fc92004-04-06 11:59:00 +00001447 if test x"${quagga_ac_keepcaps}" = x"yes"; then
1448 AC_CHECK_HEADERS(sys/capability.h)
1449 fi
1450 if test x"${ac_cv_header_sys_capability_h}" = x"yes"; then
1451 AC_CHECK_LIB(cap, cap_init,
1452 [AC_DEFINE(HAVE_LCAPS,1,Capabilities)
1453 LIBCAP="-lcap"
paulceacedb2005-09-29 14:39:32 +00001454 quagga_ac_lcaps="yes"]
hasso41d3fc92004-04-06 11:59:00 +00001455 )
paulceacedb2005-09-29 14:39:32 +00001456 else
1457 AC_CHECK_HEADERS(priv.h,
1458 [AC_MSG_CHECKING(Solaris style privileges are available)
1459 AC_TRY_COMPILE([#include <priv.h>],[getpflags(PRIV_AWARE);],
1460 [AC_MSG_RESULT(yes)
1461 AC_DEFINE(HAVE_SOLARIS_CAPABILITIES,1,getpflags)
1462 quagga_ac_scaps="yes"],
1463 AC_MSG_RESULT(no)
1464 )
1465 ]
1466 )
1467 fi
1468 if test x"${quagga_ac_scaps}" = x"yes" \
1469 -o x"${quagga_ac_lcaps}" = x"yes"; then
1470 AC_DEFINE(HAVE_CAPABILITIES,1,capabilities)
hasso41d3fc92004-04-06 11:59:00 +00001471 fi
pauledd7c242003-06-04 13:59:38 +00001472fi
1473AC_SUBST(LIBCAP)
1474
Doug VanLeuven327c4cd2012-12-14 14:58:30 +02001475dnl ---------------------------------------------------------------------------
1476dnl http://www.gnu.org/software/autoconf-archive/ax_sys_weak_alias.html
1477dnl Check for and set one of the following = 1
1478dnl HAVE_SYS_WEAK_ALIAS_ATTRIBUTE
1479dnl HAVE_SYS_WEAK_ALIAS_PRAGMA
1480dnl HAVE_SYS_WEAK_ALIAS_HPSECONDARY
1481dnl HAVE_SYS_WEAK_ALIAS_CRIDUPLICATE
1482dnl If any scheme is found, set
1483dnl HAVE_SYS_WEAK_ALIAS=1
1484dnl The following variable is set to text value
1485dnl WEAK_ALIAS = "attribute" || "pragma" || "hpsecondary" || "criduplicate" || "no"
1486dnl If weak alias can cross object file boundaries
1487dnl WEAK_ALIAS_CROSSFILE = "yes" || "no"
1488dnl ---------------------------------------------------------------------------
1489AX_SYS_WEAK_ALIAS
1490
paulfb2d1502003-06-04 09:40:54 +00001491dnl ---------------------------
1492dnl check for glibc 'backtrace'
1493dnl ---------------------------
David Lamparter8c99b4c2013-08-01 07:43:36 +00001494if test x"${enable_backtrace}" != x"no" ; then
1495 backtrace_ok=no
1496 AC_CHECK_HEADER([execinfo.h], [
1497 AC_SEARCH_LIBS([backtrace], [execinfo], [
1498 AC_DEFINE(HAVE_GLIBC_BACKTRACE,,[Glibc backtrace])
1499 AC_DEFINE(HAVE_STACK_TRACE,,[Stack symbol decoding])
1500 backtrace_ok=yes
1501 ],, [-lm])
Dmitrij Tejblumeda35292011-09-15 20:00:33 +04001502 ])
David Lamparter8c99b4c2013-08-01 07:43:36 +00001503
1504 if test x"${enable_backtrace}" = x"yes" -a x"${backtrace_ok}" = x"no"; then
1505 dnl user explicitly requested backtrace but we failed to find support
1506 AC_MSG_FAILURE([failed to find backtrace support])
1507 fi
1508fi
paulfb2d1502003-06-04 09:40:54 +00001509
Paul Jakma41be32b2006-03-30 13:53:59 +00001510dnl -----------------------------------------
1511dnl check for malloc mallinfo struct and call
1512dnl this must try and link using LIBS, in
1513dnl order to check no alternative allocator
1514dnl has been specified, which might not provide
1515dnl mallinfo, e.g. such as Umem on Solaris.
1516dnl -----------------------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001517AC_CHECK_HEADER([malloc.h],
Paul Jakma41be32b2006-03-30 13:53:59 +00001518 [AC_MSG_CHECKING(whether mallinfo is available)
1519 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <malloc.h>]],
1520 [[struct mallinfo ac_x; ac_x = mallinfo ();]])],
1521 [AC_MSG_RESULT(yes)
1522 AC_DEFINE(HAVE_MALLINFO,,mallinfo)],
1523 AC_MSG_RESULT(no)
1524 )
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001525 ], [], QUAGGA_INCLUDES)
Paul Jakma41be32b2006-03-30 13:53:59 +00001526
paul408ad942003-05-20 00:03:33 +00001527dnl ----------
1528dnl configure date
1529dnl ----------
1530CONFDATE=`date '+%Y%m%d'`
1531AC_SUBST(CONFDATE)
1532
David Lamparterf281ab92013-02-26 16:21:20 +01001533dnl -------
1534dnl DejaGNU
1535dnl -------
1536if test x"$DEJAGNU" = x
1537then
1538 DEJAGNU="\$(top_srcdir)/tests/global-conf.exp"
1539fi
1540RUNTESTDEFAULTFLAGS="-x --tool \$\$tool"
1541
1542AC_SUBST(DEJAGNU)
1543AC_SUBST(RUNTESTDEFAULTFLAGS)
1544
paul7ea487b2003-03-17 02:05:07 +00001545dnl ------------------------------
paula159ed92003-06-04 11:01:45 +00001546dnl set paths for state directory
paul23bd12c2003-04-07 06:11:09 +00001547dnl ------------------------------
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001548AC_MSG_CHECKING(directory to use for state file)
paul23bd12c2003-04-07 06:11:09 +00001549if test "${prefix}" = "NONE"; then
paule8f29842003-08-12 13:08:31 +00001550 quagga_statedir_prefix="";
paul23bd12c2003-04-07 06:11:09 +00001551else
paule8f29842003-08-12 13:08:31 +00001552 quagga_statedir_prefix=${prefix}
paul23bd12c2003-04-07 06:11:09 +00001553fi
1554if test "${localstatedir}" = '${prefix}/var'; then
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001555 for QUAGGA_STATE_DIR in ${quagga_statedir_prefix}/var/run dnl
paule8f29842003-08-12 13:08:31 +00001556 ${quagga_statedir_prefix}/var/adm dnl
1557 ${quagga_statedir_prefix}/etc dnl
paula159ed92003-06-04 11:01:45 +00001558 /var/run dnl
1559 /var/adm dnl
1560 /etc dnl
1561 /dev/null;
paul23bd12c2003-04-07 06:11:09 +00001562 do
paule8f29842003-08-12 13:08:31 +00001563 test -d $QUAGGA_STATE_DIR && break
paul23bd12c2003-04-07 06:11:09 +00001564 done
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001565 quagga_statedir=$QUAGGA_STATE_DIR
paul23bd12c2003-04-07 06:11:09 +00001566else
paule8f29842003-08-12 13:08:31 +00001567 quagga_statedir=${localstatedir}
paul23bd12c2003-04-07 06:11:09 +00001568fi
paule8f29842003-08-12 13:08:31 +00001569if test $quagga_statedir = "/dev/null"; then
paula159ed92003-06-04 11:01:45 +00001570 AC_MSG_ERROR('STATE DIRECTORY NOT FOUND! FIX OR SPECIFY --localstatedir!')
1571fi
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001572AC_MSG_RESULT(${quagga_statedir})
1573AC_SUBST(quagga_statedir)
paula159ed92003-06-04 11:01:45 +00001574
paule8f29842003-08-12 13:08:31 +00001575AC_DEFINE_UNQUOTED(PATH_ZEBRA_PID, "$quagga_statedir/zebra.pid",zebra PID)
1576AC_DEFINE_UNQUOTED(PATH_RIPD_PID, "$quagga_statedir/ripd.pid",ripd PID)
1577AC_DEFINE_UNQUOTED(PATH_RIPNGD_PID, "$quagga_statedir/ripngd.pid",ripngd PID)
1578AC_DEFINE_UNQUOTED(PATH_BGPD_PID, "$quagga_statedir/bgpd.pid",bgpd PID)
1579AC_DEFINE_UNQUOTED(PATH_OSPFD_PID, "$quagga_statedir/ospfd.pid",ospfd PID)
1580AC_DEFINE_UNQUOTED(PATH_OSPF6D_PID, "$quagga_statedir/ospf6d.pid",ospf6d PID)
Timo Teräsdafa05e2017-01-19 17:27:01 +02001581AC_DEFINE_UNQUOTED(PATH_NHRPD_PID, "$quagga_statedir/nhrpd.pid",nhrpd PID)
jardin9e867fe2003-12-23 08:56:18 +00001582AC_DEFINE_UNQUOTED(PATH_ISISD_PID, "$quagga_statedir/isisd.pid",isisd PID)
Everton Marques871dbcf2009-08-11 15:43:05 -03001583AC_DEFINE_UNQUOTED(PATH_PIMD_PID, "$quagga_statedir/pimd.pid",pimd PID)
ajsd0199432004-12-22 14:03:52 +00001584AC_DEFINE_UNQUOTED(PATH_WATCHQUAGGA_PID, "$quagga_statedir/watchquagga.pid",watchquagga PID)
paule8f29842003-08-12 13:08:31 +00001585AC_DEFINE_UNQUOTED(ZEBRA_SERV_PATH, "$quagga_statedir/zserv.api",zebra api socket)
1586AC_DEFINE_UNQUOTED(ZEBRA_VTYSH_PATH, "$quagga_statedir/zebra.vty",zebra vty socket)
1587AC_DEFINE_UNQUOTED(RIP_VTYSH_PATH, "$quagga_statedir/ripd.vty",rip vty socket)
1588AC_DEFINE_UNQUOTED(RIPNG_VTYSH_PATH, "$quagga_statedir/ripngd.vty",ripng vty socket)
1589AC_DEFINE_UNQUOTED(BGP_VTYSH_PATH, "$quagga_statedir/bgpd.vty",bgpd vty socket)
1590AC_DEFINE_UNQUOTED(OSPF_VTYSH_PATH, "$quagga_statedir/ospfd.vty",ospfd vty socket)
1591AC_DEFINE_UNQUOTED(OSPF6_VTYSH_PATH, "$quagga_statedir/ospf6d.vty",ospf6d vty socket)
Timo Teräsdafa05e2017-01-19 17:27:01 +02001592AC_DEFINE_UNQUOTED(NHRP_VTYSH_PATH, "$quagga_statedir/nhrpd.vty",nhrpd vty socket)
jardin9e867fe2003-12-23 08:56:18 +00001593AC_DEFINE_UNQUOTED(ISIS_VTYSH_PATH, "$quagga_statedir/isisd.vty",isisd vty socket)
Everton Marques871dbcf2009-08-11 15:43:05 -03001594AC_DEFINE_UNQUOTED(PIM_VTYSH_PATH, "$quagga_statedir/pimd.vty",pimd vty socket)
ajs515210b2004-12-22 15:35:12 +00001595AC_DEFINE_UNQUOTED(DAEMON_VTY_DIR, "$quagga_statedir",daemon vty directory)
paul7ea487b2003-03-17 02:05:07 +00001596
paul1eb8ef22005-04-07 07:30:20 +00001597dnl -------------------------------
1598dnl Quagga sources should always be
1599dnl current wrt interfaces. Dont
1600dnl allow deprecated interfaces to
1601dnl be exposed.
1602dnl -------------------------------
1603AC_DEFINE(QUAGGA_NO_DEPRECATED_INTERFACES, 1, Hide deprecated interfaces)
1604
paul7ea487b2003-03-17 02:05:07 +00001605dnl ---------------------------
1606dnl Check htonl works correctly
1607dnl ---------------------------
1608AC_MSG_CHECKING(for working htonl)
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001609AC_CACHE_VAL(ac_cv_htonl_works,
1610 [AC_LINK_IFELSE([AC_LANG_PROGRAM([QUAGGA_INCLUDES],[htonl (0);])],
1611 [ac_cv_htonl_works=yes], [ac_cv_htonl_works=no])
1612 ]
1613)
paul7ea487b2003-03-17 02:05:07 +00001614AC_MSG_RESULT($ac_cv_htonl_works)
1615
Avneesh Sachdev07e5b642016-04-04 10:54:55 -07001616AC_CONFIG_FILES([Makefile lib/Makefile qpb/Makefile zebra/Makefile ripd/Makefile
ajsd0199432004-12-22 14:03:52 +00001617 ripngd/Makefile bgpd/Makefile ospfd/Makefile watchquagga/Makefile
Paul Jakma336724d2015-05-11 15:13:31 +01001618 ospf6d/Makefile isisd/Makefile vtysh/Makefile
David Lamparterf281ab92013-02-26 16:21:20 +01001619 doc/Makefile ospfclient/Makefile tests/Makefile m4/Makefile
Timo Teräsdafa05e2017-01-19 17:27:01 +02001620 pimd/Makefile nhrpd/Makefile
David Lamparter5bb7e4d2013-02-26 17:53:30 +01001621 tests/bgpd.tests/Makefile
David Lamparterc69905b2013-01-24 01:39:14 +01001622 tests/libzebra.tests/Makefile
David Lamparterf281ab92013-02-26 16:21:20 +01001623 redhat/Makefile
gdt69f1fc22004-08-27 15:57:35 +00001624 pkgsrc/Makefile
Avneesh Sachdevef20ef72016-04-04 10:54:57 -07001625 fpm/Makefile
paul670bbf12004-11-12 09:05:00 +00001626 redhat/quagga.spec
gdtb7a97f82004-07-23 16:23:56 +00001627 lib/version.h
paul14c17fd2004-11-07 22:34:23 +00001628 doc/defines.texi
hassof695b012005-04-02 19:03:39 +00001629 isisd/topology/Makefile
gdtcbd04082004-08-31 18:16:36 +00001630 pkgsrc/bgpd.sh pkgsrc/ospf6d.sh pkgsrc/ospfd.sh
paulf31293a2004-11-12 09:27:04 +00001631 pkgsrc/ripd.sh pkgsrc/ripngd.sh pkgsrc/zebra.sh])
paul26275b02005-04-11 07:10:47 +00001632AC_CONFIG_FILES([solaris/Makefile])
1633
paul670bbf12004-11-12 09:05:00 +00001634AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl])
hasso48577192004-11-19 06:41:49 +00001635## Hack, but working solution to avoid rebuilding of quagga.info.
1636## It's already in CVS until texinfo 4.7 is more common.
paul14c17fd2004-11-07 22:34:23 +00001637AC_OUTPUT
paul7ea487b2003-03-17 02:05:07 +00001638
1639echo "
hassoc89f6492004-08-26 12:21:28 +00001640Quagga configuration
1641--------------------
1642quagga version : ${PACKAGE_VERSION}
Joachim Nilsson1080c132012-05-30 08:15:48 +02001643host operating system : ${host_os}
paul7ea487b2003-03-17 02:05:07 +00001644source code location : ${srcdir}
1645compiler : ${CC}
1646compiler flags : ${CFLAGS}
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001647make : ${MAKE-make}
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001648linker flags : ${LDFLAGS} ${LIBS} ${LIBCAP} ${LIBREADLINE} ${LIBM}
paule8f29842003-08-12 13:08:31 +00001649state file directory : ${quagga_statedir}
pauldc7a2bf2003-10-22 00:07:44 +00001650config file directory : `eval echo \`echo ${sysconfdir}\``
gdtd6b72f72003-12-03 17:24:27 +00001651example directory : `eval echo \`echo ${exampledir}\``
paul8d4aee52003-06-06 00:30:35 +00001652user to run as : ${enable_user}
1653group to run as : ${enable_group}
1654group for vty sockets : ${enable_vty_group}
gdtaa593d52003-12-22 20:15:53 +00001655config file mask : ${enable_configfile_mask}
1656log file mask : ${enable_logfile_mask}
Avneesh Sachdev07e5b642016-04-04 10:54:55 -07001657zebra protobuf enabled : ${have_protobuf:-no}
pauldc7a2bf2003-10-22 00:07:44 +00001658
1659The above user and group must have read/write access to the state file
Paul Jakma105b8232006-05-28 08:02:41 +00001660directory and to the config files in the config file directory."
1661
1662if test x"$quagga_cv_gnu_make" = x"no"; then echo "
1663Warning: The ${MAKE-make} programme detected, either in your path or
1664via the MAKE variable, is not GNU Make. GNU make may be installed as
1665gmake on some systems. and is required to complete a build of Quagga
1666" > /dev/stderr
1667fi