blob: 1331deeb71c3f71ea9dda88e757c6bc416e1c840 [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
Martin Wintera53d4e52016-10-20 23:55:10 -070080AC_PROG_CC_C99
Greg Troxel553bdfe2007-02-06 20:10:35 +000081
82dnl autoconf 2.59 appears not to support AC_PROG_SED
83dnl AC_PROG_SED
84AC_CHECK_PROG([SED],[sed],[sed],[/bin/false])
hasso1969e4b2005-03-27 13:07:23 +000085
Paul Jakmafa482832012-03-08 13:51:21 +000086dnl pdflatex and latexmk are needed to build HACKING.pdf
87AC_CHECK_PROG([PDFLATEX],[pdflatex],[pdflatex],[/bin/false])
88AC_CHECK_PROG([LATEXMK],[latexmk],[latexmk],[/bin/false])
89if test "x$PDFLATEX" = "x/bin/false" -o "x$LATEXMK" = "x/bin/false"; then
90 AC_MSG_WARN([Will not be able to make PDF versions of TeX documents])
91else
92 HAVE_LATEX=true
93fi
94AM_CONDITIONAL([HAVE_LATEX], [test "x$HAVE_LATEX" = "xtrue"])
95
David Lamparter3a7e83c2015-03-03 09:55:51 +010096if test "x${GCC}" != "xyes" ; then
paul6a4b8832005-11-26 08:28:00 +000097 AC_MSG_CHECKING([whether we are using SunPro compiler])
98 AC_EGREP_CPP([^__SUNPRO_C.*0x5(7|8|9)], ["__SUNPRO_C" __SUNPRO_C],
99 [AC_MSG_RESULT([no])],
100 [COMPILER="SUNPRO"
101 AC_MSG_RESULT([yes])]
102 )
103fi
paul7ea487b2003-03-17 02:05:07 +0000104
paula49c0ff2004-09-30 06:08:58 +0000105dnl ---------------------------------------------
paul7ea487b2003-03-17 02:05:07 +0000106dnl If CLFAGS doesn\'t exist set default value
paula49c0ff2004-09-30 06:08:58 +0000107dnl AC_PROG_CC will have set minimal default
108dnl already, eg "-O2 -g" for gcc, "-g" for others
paul27eebb32004-07-22 18:16:59 +0000109dnl (Wall is gcc specific... have to make sure
110dnl gcc is being used before setting it)
111dnl
paul6a4b8832005-11-26 08:28:00 +0000112dnl Sun Studio 10 / SunPro 5.7 is also supported,
113dnl so lets set some sane CFLAGS for it.
114dnl ---------------------------------------------
hasso1969e4b2005-03-27 13:07:23 +0000115
David Lamparter3a7e83c2015-03-03 09:55:51 +0100116AC_USE_SYSTEM_EXTENSIONS()
117AC_DEFUN([AC_C_FLAG], [{
118 AC_LANG_PUSH(C)
119 ac_c_flag_save="$CFLAGS"
120 CFLAGS="$CFLAGS $1"
121 AC_MSG_CHECKING([[whether $CC supports $1]])
122 AC_COMPILE_IFELSE(
123 [AC_LANG_PROGRAM([[]])],
124 [
125 AC_MSG_RESULT([yes])
126 m4_if([$3], [], [], [
127 CFLAGS="$ac_c_flag_save"
128 $3
129 ])
130 ], [
131 CFLAGS="$ac_c_flag_save"
132 AC_MSG_RESULT([no])
133 $2
134 ])
135 AC_LANG_POP(C)
136 }])
137
paul6a4b8832005-11-26 08:28:00 +0000138AC_MSG_CHECKING([whether to set a default CFLAGS])
139if test "x${cflags_specified}" = "x" ; then
140 case ${COMPILER} in
paul6a4b8832005-11-26 08:28:00 +0000141 "SUNPRO")
David Lamparter3a7e83c2015-03-03 09:55:51 +0100142 CFLAGS="-xO4 -v -g -xspace -xcode=pic32 -xstrconst -xc99"
143 AC_MSG_RESULT([SunPro default])
144 ;;
paul6a4b8832005-11-26 08:28:00 +0000145 *)
David Lamparter3a7e83c2015-03-03 09:55:51 +0100146 AC_MSG_RESULT([autodetecting])
147
148 AC_C_FLAG([-diag-error 10006])
David Lamparter3a7e83c2015-03-03 09:55:51 +0100149 AC_C_FLAG([-g])
150 AC_C_FLAG([-Os], [
151 AC_C_FLAG([-O2])
152 ])
Paul Jakma40fc3dd2016-10-11 16:00:27 +0100153 AC_C_FLAG([-fstack-protector-strong])
Paul Jakma52c0bc72015-08-20 21:30:17 +0100154 AC_C_FLAG([-fpie])
David Lamparter3a7e83c2015-03-03 09:55:51 +0100155 AC_C_FLAG([-fno-omit-frame-pointer])
156 AC_C_FLAG([-Wall])
157 AC_C_FLAG([-Wextra])
158 AC_C_FLAG([-Wmissing-prototypes])
159 AC_C_FLAG([-Wmissing-declarations])
160 AC_C_FLAG([-Wpointer-arith])
161 AC_C_FLAG([-Wbad-function-cast])
162 AC_C_FLAG([-Wwrite-strings])
163 if test x"${enable_gcc_ultra_verbose}" = x"yes" ; then
164 AC_C_FLAG([-Wcast-qual])
165 AC_C_FLAG([-Wstrict-prototypes])
166 AC_C_FLAG([-Wmissing-noreturn])
167 AC_C_FLAG([-Wmissing-format-attribute])
168 AC_C_FLAG([-Wunreachable-code])
169 AC_C_FLAG([-Wpacked])
170 AC_C_FLAG([-Wpadded])
171 else
172 AC_C_FLAG([-Wno-unused-result])
173 fi
174 AC_C_FLAG([-Wno-unused-parameter])
175 AC_C_FLAG([-Wno-missing-field-initializers])
176 # ICC emits a broken warning for const char *x = a ? "b" : "c";
177 # for some reason the string consts get 'promoted' to char *,
178 # triggering a const to non-const conversion warning.
179 AC_C_FLAG([-diag-disable 3179])
paul6a4b8832005-11-26 08:28:00 +0000180 ;;
181 esac
182else
183 AC_MSG_RESULT([CFLAGS supplied by user])
hasso1969e4b2005-03-27 13:07:23 +0000184fi
185
David Lamparterc0bedeb2015-03-03 10:00:43 +0100186if test x"${enable_werror}" = x"yes" ; then
187 WERROR="-Werror"
188fi
189AC_SUBST(WERROR)
190
paul7ea487b2003-03-17 02:05:07 +0000191dnl --------------
192dnl Check programs
193dnl --------------
paul7ea487b2003-03-17 02:05:07 +0000194AC_PROG_INSTALL
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000195AC_PROG_LN_S
paul7ea487b2003-03-17 02:05:07 +0000196AC_PROG_MAKE_SET
197AC_CHECK_TOOL(AR, ar)
paul7ea487b2003-03-17 02:05:07 +0000198
Paul Jakma105b8232006-05-28 08:02:41 +0000199dnl ---------------------------
200dnl We, perhaps unfortunately,
201dnl depend on GNU Make specific
202dnl constructs.
203dnl Give the user a warning if
204dnl not GNU Make.
205dnl ---------------------------
206AC_CACHE_CHECK([if ${MAKE-make} is GNU make], [quagga_cv_gnu_make],
207 [quagga_cv_gnu_make=no
208 if ${MAKE-make} --version 2>/dev/null | \
209 grep '^GNU Make ' >/dev/null ; then
210 quagga_cv_gnu_make=yes;
211 fi
212 ]
213)
214
Paul Jakmad46d2a22007-05-10 16:53:04 +0000215dnl -----------------
216dnl System extensions
217dnl -----------------
Paul Jakmad46d2a22007-05-10 16:53:04 +0000218AC_GNU_SOURCE
paul7ea487b2003-03-17 02:05:07 +0000219
gdt87efd642004-06-30 17:36:11 +0000220dnl -------
221dnl libtool
222dnl -------
Paul Jakma52c0bc72015-08-20 21:30:17 +0100223LT_INIT
gdt87efd642004-06-30 17:36:11 +0000224
paul7ea487b2003-03-17 02:05:07 +0000225dnl ----------------------
226dnl Packages configuration
227dnl ----------------------
Joachim Nilsson1080c132012-05-30 08:15:48 +0200228AC_ARG_WITH(pkg-extra-version,
229 AS_HELP_STRING([--with-pkg-extra-version=VER], [add extra version field, for packagers/distributions]),
230 [EXTRAVERSION=$withval],)
David Lamparter0be793e2012-11-27 01:34:56 +0000231AC_ARG_WITH(pkg-git-version,
232 AS_HELP_STRING([--with-pkg-git-version], [add git information to MOTD and build version string]),
David Lampartera16dcf72012-12-13 11:20:50 +0100233 [ test "x$withval" != "xno" && with_pkg_git_version="yes" ])
paul7ea487b2003-03-17 02:05:07 +0000234AC_ARG_ENABLE(vtysh,
Donald Sharpe6756782015-07-16 21:18:34 -0400235 AS_HELP_STRING([--disable-vtysh], [do not build integrated vty shell for Quagga]))
Joakim Tjernlundcbcd9bf2009-02-16 09:40:39 +0100236AC_ARG_ENABLE(doc,
David Lamparterb6fa7602014-06-28 22:15:59 +0200237 AS_HELP_STRING([--disable-doc], [do not build docs]))
paul7ea487b2003-03-17 02:05:07 +0000238AC_ARG_ENABLE(zebra,
David Lamparterb6fa7602014-06-28 22:15:59 +0200239 AS_HELP_STRING([--disable-zebra], [do not build zebra daemon]))
paul7ea487b2003-03-17 02:05:07 +0000240AC_ARG_ENABLE(bgpd,
David Lamparterb6fa7602014-06-28 22:15:59 +0200241 AS_HELP_STRING([--disable-bgpd], [do not build bgpd]))
paul7ea487b2003-03-17 02:05:07 +0000242AC_ARG_ENABLE(ripd,
David Lamparterb6fa7602014-06-28 22:15:59 +0200243 AS_HELP_STRING([--disable-ripd], [do not build ripd]))
paul7ea487b2003-03-17 02:05:07 +0000244AC_ARG_ENABLE(ripngd,
David Lamparterb6fa7602014-06-28 22:15:59 +0200245 AS_HELP_STRING([--disable-ripngd], [do not build ripngd]))
paul7ea487b2003-03-17 02:05:07 +0000246AC_ARG_ENABLE(ospfd,
David Lamparterb6fa7602014-06-28 22:15:59 +0200247 AS_HELP_STRING([--disable-ospfd], [do not build ospfd]))
paul7ea487b2003-03-17 02:05:07 +0000248AC_ARG_ENABLE(ospf6d,
David Lamparterb6fa7602014-06-28 22:15:59 +0200249 AS_HELP_STRING([--disable-ospf6d], [do not build ospf6d]))
Timo Teräsdafa05e2017-01-19 17:27:01 +0200250AC_ARG_ENABLE(nhrpd,
251 AS_HELP_STRING([--disable-nhrpd], [do not build nhrpd]))
ajsd0199432004-12-22 14:03:52 +0000252AC_ARG_ENABLE(watchquagga,
David Lamparterb6fa7602014-06-28 22:15:59 +0200253 AS_HELP_STRING([--disable-watchquagga], [do not build watchquagga]))
jardin9e867fe2003-12-23 08:56:18 +0000254AC_ARG_ENABLE(isisd,
David Lamparter656a2c02015-02-09 11:36:10 +0100255 AS_HELP_STRING([--disable-isisd], [do not build isisd]))
Everton Marques871dbcf2009-08-11 15:43:05 -0300256AC_ARG_ENABLE(pimd,
Donald Sharpe6756782015-07-16 21:18:34 -0400257 AS_HELP_STRING([--disable-pimd], [do not build pimd]))
paul7ea487b2003-03-17 02:05:07 +0000258AC_ARG_ENABLE(bgp-announce,
David Lamparterb6fa7602014-06-28 22:15:59 +0200259 AS_HELP_STRING([--disable-bgp-announce,], [turn off BGP route announcement]))
paul7ea487b2003-03-17 02:05:07 +0000260AC_ARG_ENABLE(snmp,
David Lamparterb6fa7602014-06-28 22:15:59 +0200261 AS_HELP_STRING([--enable-snmp=ARG], [enable SNMP support (smux or agentx)]))
paul7ea487b2003-03-17 02:05:07 +0000262AC_ARG_WITH(libpam,
David Lamparterb6fa7602014-06-28 22:15:59 +0200263 AS_HELP_STRING([--with-libpam], [use libpam for PAM support in vtysh]))
hasso71c0fb52003-05-25 20:18:13 +0000264AC_ARG_ENABLE(tcp-zebra,
David Lamparterb6fa7602014-06-28 22:15:59 +0200265 AS_HELP_STRING([--enable-tcp-zebra], [enable TCP/IP socket connection between zebra and protocol daemon]))
paul1ef74ef2003-03-21 15:16:05 +0000266AC_ARG_ENABLE(ospfapi,
David Lamparterb6fa7602014-06-28 22:15:59 +0200267 AS_HELP_STRING([--disable-ospfapi], [do not build OSPFAPI to access the OSPF LSA Database]))
paul1ef74ef2003-03-21 15:16:05 +0000268AC_ARG_ENABLE(ospfclient,
David Lamparterb6fa7602014-06-28 22:15:59 +0200269 AS_HELP_STRING([--disable-ospfclient], [do not build OSPFAPI client for OSPFAPI,
270 (this is the default if --disable-ospfapi is set)]))
paul7ea487b2003-03-17 02:05:07 +0000271AC_ARG_ENABLE(multipath,
David Lamparterb6fa7602014-06-28 22:15:59 +0200272 AS_HELP_STRING([--enable-multipath=ARG], [enable multipath function, ARG must be digit]))
Paul P Komkoff Jrfe86b482008-08-13 16:56:05 +0100273AC_ARG_ENABLE(user,
David Lamparterb6fa7602014-06-28 22:15:59 +0200274 AS_HELP_STRING([--enable-user=USER], [user to run Quagga suite as (default quagga)]))
Paul P Komkoff Jrfe86b482008-08-13 16:56:05 +0100275AC_ARG_ENABLE(group,
David Lamparterb6fa7602014-06-28 22:15:59 +0200276 AS_HELP_STRING([--enable-group=GROUP], [group to run Quagga suite as (default quagga)]))
pauledd7c242003-06-04 13:59:38 +0000277AC_ARG_ENABLE(vty_group,
David Lamparterb6fa7602014-06-28 22:15:59 +0200278 AS_HELP_STRING([--enable-vty-group=ARG], [set vty sockets to have specified group as owner]))
gdtaa593d52003-12-22 20:15:53 +0000279AC_ARG_ENABLE(configfile_mask,
David Lamparterb6fa7602014-06-28 22:15:59 +0200280 AS_HELP_STRING([--enable-configfile-mask=ARG], [set mask for config files]))
gdtaa593d52003-12-22 20:15:53 +0000281AC_ARG_ENABLE(logfile_mask,
David Lamparterb6fa7602014-06-28 22:15:59 +0200282 AS_HELP_STRING([--enable-logfile-mask=ARG], [set mask for log files]))
pauledd7c242003-06-04 13:59:38 +0000283
hasso71c0fb52003-05-25 20:18:13 +0000284AC_ARG_ENABLE(rtadv,
David Lamparterb6fa7602014-06-28 22:15:59 +0200285 AS_HELP_STRING([--disable-rtadv], [disable IPV6 router advertisement feature]))
hassoca776982004-06-12 14:33:05 +0000286AC_ARG_ENABLE(irdp,
David Lamparterb6fa7602014-06-28 22:15:59 +0200287 AS_HELP_STRING([--enable-irdp], [enable IRDP server support in zebra]))
hassof695b012005-04-02 19:03:39 +0000288AC_ARG_ENABLE(isis_topology,
David Lamparterb6fa7602014-06-28 22:15:59 +0200289 AS_HELP_STRING([--enable-isis-topology], [enable IS-IS topology generator]))
hasso41d3fc92004-04-06 11:59:00 +0000290AC_ARG_ENABLE(capabilities,
David Lamparterb6fa7602014-06-28 22:15:59 +0200291 AS_HELP_STRING([--disable-capabilities], [disable using POSIX capabilities]))
Stephen Hemminger47f6aef2013-01-04 22:29:22 +0000292AC_ARG_ENABLE(rusage,
David Lamparterb6fa7602014-06-28 22:15:59 +0200293 AS_HELP_STRING([--disable-rusage], [disable using getrusage]))
paul6b6942f2004-10-22 04:55:05 +0000294AC_ARG_ENABLE(gcc_ultra_verbose,
David Lamparterb6fa7602014-06-28 22:15:59 +0200295 AS_HELP_STRING([--enable-gcc-ultra-verbose], [enable ultra verbose GCC warnings]))
Paul Jakma3453a712009-06-12 14:21:02 +0100296AC_ARG_ENABLE(linux24_tcp_md5,
David Lamparterb6fa7602014-06-28 22:15:59 +0200297 AS_HELP_STRING([--enable-linux24-tcp-md5], [enable support for old, Linux-2.4 RFC2385 patch]))
ajs3cade262004-12-29 17:50:22 +0000298AC_ARG_ENABLE(gcc-rdynamic,
David Lamparterb6fa7602014-06-28 22:15:59 +0200299 AS_HELP_STRING([--enable-gcc-rdynamic], [enable linking with -rdynamic for better backtraces (default if gcc)]))
David Lamparter8c99b4c2013-08-01 07:43:36 +0000300AC_ARG_ENABLE(backtrace,
David Lamparterb6fa7602014-06-28 22:15:59 +0200301 AS_HELP_STRING([--disable-backtrace,], [disable crash backtraces (default autodetect)]))
ajs924b9222005-04-16 17:11:24 +0000302AC_ARG_ENABLE(time-check,
David Lamparterb6fa7602014-06-28 22:15:59 +0200303 AS_HELP_STRING([--disable-time-check], [disable slow thread warning messages]))
Jeremy Jackson25f45882009-01-12 16:06:12 -0500304AC_ARG_ENABLE(pcreposix,
David Lamparterb6fa7602014-06-28 22:15:59 +0200305 AS_HELP_STRING([--enable-pcreposix], [enable using PCRE Posix libs for regex functions]))
Avneesh Sachdev5adc2522012-11-13 22:48:59 +0000306AC_ARG_ENABLE(fpm,
David Lamparterb6fa7602014-06-28 22:15:59 +0200307 AS_HELP_STRING([--enable-fpm], [enable Forwarding Plane Manager support]))
David Lamparterc0bedeb2015-03-03 10:00:43 +0100308AC_ARG_ENABLE(werror,
309 AS_HELP_STRING([--enable-werror], [enable -Werror (recommended for developers only)]))
Avneesh Sachdev07e5b642016-04-04 10:54:55 -0700310AC_ARG_ENABLE([protobuf],
311 AS_HELP_STRING([--enable-protobuf], [Enable experimental protobuf support]))
paul6b6942f2004-10-22 04:55:05 +0000312
Avneesh Sachdev7e4025c2016-03-11 12:21:24 -0800313AC_ARG_ENABLE([dev_build],
314 AS_HELP_STRING([--enable-dev-build], [build for development]))
315
David Lamparter8c99b4c2013-08-01 07:43:36 +0000316if test x"${enable_gcc_rdynamic}" != x"no" ; then
317 if test x"${enable_gcc_rdynamic}" = x"yes" -o x"$COMPILER" = x"GCC"; then
318 LDFLAGS="${LDFLAGS} -rdynamic"
319 fi
ajs3cade262004-12-29 17:50:22 +0000320fi
321
ajs924b9222005-04-16 17:11:24 +0000322if test x"${enable_time_check}" != x"no" ; then
323 if test x"${enable_time_check}" = x"yes" -o x"${enable_time_check}" = x ; then
324 AC_DEFINE(CONSUMED_TIME_CHECK,5000000,Consumed Time Check)
325 else
326 AC_DEFINE_UNQUOTED(CONSUMED_TIME_CHECK,$enable_time_check,Consumed Time Check)
327 fi
328fi
329
Avneesh Sachdev5adc2522012-11-13 22:48:59 +0000330if test "${enable_fpm}" = "yes"; then
331 AC_DEFINE(HAVE_FPM,,Forwarding Plane Manager support)
332fi
333
Avneesh Sachdev7e4025c2016-03-11 12:21:24 -0800334if test "x${enable_dev_build}" = "xyes"; then
335 AC_DEFINE(DEV_BUILD,,Build for development)
336fi
337AM_CONDITIONAL([DEV_BUILD], [test "x$enable_dev_build" = "xyes"])
338
Avneesh Sachdev07e5b642016-04-04 10:54:55 -0700339#
340# Logic for protobuf support.
341#
342if test "$enable_protobuf" = "yes"; then
343 have_protobuf=yes
344
345 # Check for protoc-c
346 AC_CHECK_PROG([PROTOC_C], [protoc-c], [protoc-c], [/bin/false])
347 if test "x$PROTOC_C" = "x/bin/false"; then
348 have_protobuf=no
349 else
350 found_protobuf_c=no
351 PKG_CHECK_MODULES([PROTOBUF_C], libprotobuf-c >= 0.14,
352 [found_protobuf_c=yes],
353 [AC_MSG_RESULT([pkg-config did not find libprotobuf-c])])
354
355 if test "x$found_protobuf_c" = "xyes"; then
356 LDFLAGS="$LDFLAGS $PROTOBUF_C_LIBS"
357 CFLAGS="$CFLAGS $PROTOBUF_C_CFLAGS"
358 else
359 AC_CHECK_HEADER([google/protobuf-c/protobuf-c.h], [],
360 [have_protobuf=no; AC_MSG_RESULT([Couldn't find google/protobuf-c.h])])
361 fi
362 fi
363fi
364
365# Fail if the user explicity enabled protobuf support and we couldn't
366# find the compiler or libraries.
367if test "x$have_protobuf" = "xno" && test "x$enable_protobuf" = "xyes"; then
368 AC_MSG_ERROR([Protobuf enabled explicitly but can't find libraries/tools])
369fi
370
371if test "x$have_protobuf" = "xyes"; then
372 AC_DEFINE(HAVE_PROTOBUF,, protobuf)
373fi
374
375AM_CONDITIONAL([HAVE_PROTOBUF], [test "x$have_protobuf" = "xyes"])
376
377#
378# End of logic for protobuf support.
379#
380
paul7ea487b2003-03-17 02:05:07 +0000381if test "${enable_tcp_zebra}" = "yes"; then
382 AC_DEFINE(HAVE_TCP_ZEBRA,,Use TCP for zebra communication)
383fi
384
Paul Jakma3453a712009-06-12 14:21:02 +0100385if test "${enable_linux24_tcp_md5}" = "yes"; then
386 AC_DEFINE(HAVE_TCP_MD5_LINUX24,,Old Linux 2.4 TCP MD5 Signature Patch)
387fi
388
gdtd2a0ccc2003-12-03 18:13:48 +0000389AC_MSG_CHECKING(if zebra should be configurable to send Route Advertisements)
390if test "${enable_rtadv}" != "no"; then
hasso71c0fb52003-05-25 20:18:13 +0000391 AC_MSG_RESULT(yes)
gdtd2a0ccc2003-12-03 18:13:48 +0000392 AC_DEFINE(HAVE_RTADV,,Enable IPv6 Routing Advertisement support)
paul2487bea2003-05-25 23:51:31 +0000393else
394 AC_MSG_RESULT(no)
hasso71c0fb52003-05-25 20:18:13 +0000395fi
paul7ea487b2003-03-17 02:05:07 +0000396
hassoca776982004-06-12 14:33:05 +0000397if test "${enable_irdp}" = "yes"; then
398 AC_DEFINE(HAVE_IRDP,, IRDP )
399fi
400
David Lamparter656a2c02015-02-09 11:36:10 +0100401if test "${enable_isisd}" != "no" && test "${enable_isis_topology}" = yes; then
hassof695b012005-04-02 19:03:39 +0000402 AC_DEFINE(TOPOLOGY_GENERATE,,Enable IS-IS topology generator code)
David Lamparteree1ac2d2012-07-19 12:58:59 +0200403 ISIS_TOPOLOGY_INCLUDES="-I\$(srcdir)/topology"
hassof695b012005-04-02 19:03:39 +0000404 ISIS_TOPOLOGY_DIR="topology"
405 ISIS_TOPOLOGY_LIB="./topology/libtopology.a"
406fi
407
408AC_SUBST(ISIS_TOPOLOGY_INCLUDES)
409AC_SUBST(ISIS_TOPOLOGY_DIR)
410AC_SUBST(ISIS_TOPOLOGY_LIB)
411
Jafar Al-Gharaibeha8f97902016-07-28 14:41:20 -0500412if test x"${enable_user}" = x"no"; then
413 enable_user=""
414else
415 if test x"${enable_user}" = x"yes" || test x"${enable_user}" = x""; then
416 enable_user="quagga"
417 fi
418 AC_DEFINE_UNQUOTED(QUAGGA_USER, "${enable_user}", Quagga User)
pauledd7c242003-06-04 13:59:38 +0000419fi
pauledd7c242003-06-04 13:59:38 +0000420
Jafar Al-Gharaibeha8f97902016-07-28 14:41:20 -0500421if test x"${enable_group}" = x"no"; then
422 enable_group=""
423else
424 if test x"${enable_group}" = x"yes" || test x"${enable_group}" = x""; then
425 enable_group="quagga"
426 fi
427 AC_DEFINE_UNQUOTED(QUAGGA_GROUP, "${enable_group}", Quagga Group)
pauledd7c242003-06-04 13:59:38 +0000428fi
pauledd7c242003-06-04 13:59:38 +0000429
430if test x"${enable_vty_group}" = x"yes" ; then
paul8d4aee52003-06-06 00:30:35 +0000431 AC_MSG_ERROR([--enable-vty-group requires a group as argument, not yes])
paul79cb2162003-06-06 12:19:53 +0000432elif test x"${enable_vty_group}" != x""; then
paul8d4aee52003-06-06 00:30:35 +0000433 if test x"${enable_vty_group}" != x"no"; then
pauledd7c242003-06-04 13:59:38 +0000434 AC_DEFINE_UNQUOTED(VTY_GROUP, "${enable_vty_group}", VTY Sockets Group)
435 fi
436fi
paul26275b02005-04-11 07:10:47 +0000437AC_SUBST([enable_user])
438AC_SUBST([enable_group])
439AC_SUBST([enable_vty_group])
pauledd7c242003-06-04 13:59:38 +0000440
gdtaa593d52003-12-22 20:15:53 +0000441enable_configfile_mask=${enable_configfile_mask:-0600}
442AC_DEFINE_UNQUOTED(CONFIGFILE_MASK, ${enable_configfile_mask}, Mask for config files)
443
444enable_logfile_mask=${enable_logfile_mask:-0600}
445AC_DEFINE_UNQUOTED(LOGFILE_MASK, ${enable_logfile_mask}, Mask for log files)
446
Donald Sharpd1839632015-12-09 08:24:44 -0500447MPATH_NUM=1
paul7ea487b2003-03-17 02:05:07 +0000448
449case "${enable_multipath}" in
Donald Sharpd1839632015-12-09 08:24:44 -0500450 0)
451 MPATH_NUM=64
452 ;;
453 [[1-9]|[1-9][0-9]|[1-9][0-9][0-9]])
454 MPATH_NUM="${enable_multipath}"
paul7ea487b2003-03-17 02:05:07 +0000455 ;;
456 "")
457 ;;
458 *)
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000459 AC_MSG_FAILURE([Please specify digit to enable multipath ARG])
paul7ea487b2003-03-17 02:05:07 +0000460 ;;
461esac
462
Donald Sharpd1839632015-12-09 08:24:44 -0500463AC_DEFINE_UNQUOTED(MULTIPATH_NUM, $MPATH_NUM, Maximum number of paths for a route)
paul7ea487b2003-03-17 02:05:07 +0000464
Joachim Nilsson1080c132012-05-30 08:15:48 +0200465dnl -----------------------------------
466dnl Add extra version string to package
467dnl name, string and version fields.
468dnl -----------------------------------
469if test "x${EXTRAVERSION}" != "x" ; then
David Lamparter0be793e2012-11-27 01:34:56 +0000470 VERSION="${VERSION}${EXTRAVERSION}"
471 PACKAGE_VERSION="${PACKAGE_VERSION}${EXTRAVERSION}"
472 PACKAGE_STRING="${PACKAGE_STRING}${EXTRAVERSION}"
Joachim Nilsson1080c132012-05-30 08:15:48 +0200473fi
474
David Lampartera16dcf72012-12-13 11:20:50 +0100475if test "x$with_pkg_git_version" = "xyes"; then
476 if test -d "${srcdir}/.git"; then
477 AC_DEFINE(GIT_VERSION, [1], [include git version info])
478 else with_pkg_git_version="no"
479 AC_MSG_WARN([--with-pkg-git-version given, but this is not a git checkout])
480 fi
481fi
482AM_CONDITIONAL([GIT_VERSION], [test "x$with_pkg_git_version" = "xyes"])
David Lamparter0be793e2012-11-27 01:34:56 +0000483
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000484dnl ------------------------------------
485dnl Check C keywords and standard types
486dnl ------------------------------------
487AC_C_CONST
488AC_C_INLINE
489AC_C_RESTRICT
490AC_C_VOLATILE
pauldc7a2bf2003-10-22 00:07:44 +0000491AC_HEADER_STDC
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000492AC_HEADER_TIME
493AC_HEADER_SYS_WAIT
Paul Jakmae8441a82015-09-15 16:15:27 +0100494AC_HEADER_STDBOOL
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000495dnl AC_TYPE_PID_T
496AC_TYPE_UID_T
497AC_TYPE_MODE_T
498AC_TYPE_SIZE_T
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000499AC_STRUCT_TM
pauldc7a2bf2003-10-22 00:07:44 +0000500
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000501dnl -------------------------
502dnl Check other header files.
503dnl -------------------------
504AC_CHECK_HEADERS([stropts.h sys/ksym.h sys/times.h sys/select.h \
505 sys/types.h linux/version.h netdb.h asm/types.h \
Timo Teräs16ffb262014-07-29 09:41:54 +0000506 sys/cdefs.h sys/param.h limits.h signal.h \
Paul Jakma7e49a4f2016-08-02 13:36:03 +0100507 sys/socket.h netinet/in.h time.h sys/time.h features.h])
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000508
509dnl Utility macro to avoid retyping includes all the time
510m4_define([QUAGGA_INCLUDES],
511[#ifdef SUNOS_5
512#define _XPG4_2
513#define __EXTENSIONS__
514#endif
515#include <stdio.h>
516#if STDC_HEADERS
517# include <stdlib.h>
518# include <stddef.h>
519#else
520# if HAVE_STDLIB_H
521# include <stdlib.h>
522# endif
523#endif
524#if HAVE_SYS_TYPES_H
525# include <sys/types.h>
526#endif
527/* sys/conf.h depends on param.h on FBSD at least */
528#if HAVE_SYS_PARAM_H
529# include <sys/param.h>
530#endif
531/* Required for MAXSIG */
532#if HAVE_SIGNAL_H
533# include <signal.h>
534#endif
535#if HAVE_SYS_SOCKET_H
536# include <sys/socket.h>
537#endif
Hasso Tepperea057672013-01-13 17:45:29 +0000538#ifdef __APPLE__
539# define __APPLE_USE_RFC_3542
540#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000541#if HAVE_NETINET_IN_H
542# include <netinet/in.h>
543#endif
Paul Jakma6511cab2009-06-18 17:38:01 +0100544#ifdef TIME_WITH_SYS_TIME
545# include <sys/time.h>
546# include <time.h>
547#else
548# ifdef HAVE_SYS_TIME_H
549# include <sys/time.h>
550# else
551# include <time.h>
552# endif
553#endif /* TIME_WITH_SYS_TIME */
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000554])dnl
555
Denis Ovsienko2b43bf22011-07-14 16:30:08 +0400556dnl HAVE_NET_IF_H must be discovered by the time the longer AC_CHECK_HEADERS
557dnl round below execution begins, otherwise it doesn't properly detect
558dnl HAVE_NETINET6_IN6_VAR_H, HAVE_NET_IF_VAR_H and HAVE_STRUCT_IN6_ALIASREQ
559dnl on FreeBSD (BZ#408).
560
561AC_CHECK_HEADERS([net/if.h], [], [], QUAGGA_INCLUDES)
562
563m4_define([QUAGGA_INCLUDES],
564QUAGGA_INCLUDES
565[#if HAVE_NET_IF_H
566# include <net/if.h>
567#endif
568])dnl
569
570dnl Same applies for HAVE_NET_IF_VAR_H, which HAVE_NETINET6_ND6_H and
571dnl HAVE_NETINET_IN_VAR_H depend upon. But if_var.h depends on if.h, hence
572dnl an additional round for it.
573
574AC_CHECK_HEADERS([net/if_var.h], [], [], QUAGGA_INCLUDES)
575
576m4_define([QUAGGA_INCLUDES],
577QUAGGA_INCLUDES
578[#if HAVE_NET_IF_VAR_H
579# include <net/if_var.h>
580#endif
581])dnl
582
583AC_CHECK_HEADERS([sys/un.h netinet/in_systm.h netinet/in_var.h \
584 net/if_dl.h net/netopt.h net/route.h \
Paul Jakma11770e12007-06-22 16:14:42 +0000585 inet/nd.h arpa/inet.h netinet/ip_icmp.h \
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000586 fcntl.h stddef.h sys/ioctl.h syslog.h wchar.h wctype.h \
587 sys/sysctl.h sys/sockio.h kvm.h sys/conf.h],
588 [], [], QUAGGA_INCLUDES)
589
590AC_CHECK_HEADERS([ucontext.h], [], [],
591[#ifndef __USE_GNU
592#define __USE_GNU
593#endif /* __USE_GNU */
594QUAGGA_INCLUDES
595])
596
Joakim Tjernlundb166ea22009-06-25 16:40:06 +0100597m4_define([UCONTEXT_INCLUDES],
598[#include <ucontext.h>])dnl
599
600AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.uc_regs],
601 [], [], [UCONTEXT_INCLUDES])
602AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.regs],
603 [AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.regs.nip],
604 [], [], [UCONTEXT_INCLUDES])],
605 [], [UCONTEXT_INCLUDES])
606AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.gregs],
607 [], [], [UCONTEXT_INCLUDES])
608
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000609m4_define([QUAGGA_INCLUDES],
610QUAGGA_INCLUDES
Denis Ovsienko2b43bf22011-07-14 16:30:08 +0400611[#if HAVE_SYS_UN_H
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000612# include <sys/un.h>
613#endif
614#if HAVE_NETINET_IN_SYSTM_H
615# include <netinet/in_systm.h>
616#endif
617#if HAVE_NETINET_IN_VAR_H
618# include <netinet/in_var.h>
619#endif
620#if HAVE_NET_IF_DL_H
621# include <net/if_dl.h>
622#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000623#if HAVE_NET_NETOPT_H
624# include <net/netopt.h>
625#endif
626#if HAVE_NET_ROUTE_H
627# include <net/route.h>
628#endif
629#if HAVE_INET_ND_H
630# include <inet/nd.h>
631#endif
632#if HAVE_ARPA_INET_H
633# include <arpa/inet.h>
634#endif
Paul Jakma11770e12007-06-22 16:14:42 +0000635/* Required for IDRP */
636#if HAVE_NETINET_IP_ICMP_H
637# include <netinet/ip_icmp.h>
638#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000639])dnl
pauldc7a2bf2003-10-22 00:07:44 +0000640
gdtfa3232e2003-12-03 17:52:30 +0000641dnl V6 headers are checked below, after we check for v6
paul7ea487b2003-03-17 02:05:07 +0000642
paul7ea487b2003-03-17 02:05:07 +0000643dnl Some systems (Solaris 2.x) require libnsl (Network Services Library)
644case "$host" in
paulafd8a122005-03-12 06:36:10 +0000645 [*-sunos5.[6-7]*] | [*-solaris2.[6-7]*])
paul7ea487b2003-03-17 02:05:07 +0000646 opsys=sol2-6
paulafd8a122005-03-12 06:36:10 +0000647 AC_DEFINE(SUNOS_56, 1, SunOS 5.6 to 5.7)
paul19877dd2004-05-11 10:49:35 +0000648 AC_DEFINE(SUNOS_5, 1, SunOS 5)
paul7ea487b2003-03-17 02:05:07 +0000649 AC_CHECK_LIB(xnet, main)
650 CURSES=-lcurses
David Lampartere8d0d242014-06-28 22:07:41 +0200651 SOLARIS="solaris"
paul7ea487b2003-03-17 02:05:07 +0000652 ;;
paul1b73de82005-04-10 16:31:51 +0000653 [*-sunos5.[8-9]] \
654 | [*-sunos5.1[0-9]] \
655 | [*-sunos5.1[0-9].[0-9]] \
656 | [*-solaris2.[8-9]] \
657 | [*-solaris2.1[0-9]] \
658 | [*-solaris2.1[0-9].[0-9]])
paulafd8a122005-03-12 06:36:10 +0000659 opsys=sol8
Paul Jakmafb66b292006-05-28 08:26:15 +0000660 AC_DEFINE(SUNOS_59, 1, [SunOS 5.8 up])
661 AC_DEFINE(SUNOS_5, 1, [SunOS 5])
paul19877dd2004-05-11 10:49:35 +0000662 AC_CHECK_LIB(socket, main)
663 AC_CHECK_LIB(nsl, main)
paul1b73de82005-04-10 16:31:51 +0000664 AC_CHECK_LIB(umem, main)
Paul Jakmafb66b292006-05-28 08:26:15 +0000665 AC_CHECK_FUNCS([printstack],
666 [AC_DEFINE([HAVE_PRINTSTACK],1,[Solaris printstack])
667 AC_DEFINE([HAVE_STACK_TRACE],1,[Stack symbols decode functionality])
668 ])
paul19877dd2004-05-11 10:49:35 +0000669 CURSES=-lcurses
David Lampartere8d0d242014-06-28 22:07:41 +0200670 SOLARIS="solaris"
paul19877dd2004-05-11 10:49:35 +0000671 ;;
paul7ea487b2003-03-17 02:05:07 +0000672 *-sunos5* | *-solaris2*)
paul19877dd2004-05-11 10:49:35 +0000673 AC_DEFINE(SUNOS_5,,SunOS 5, Unknown SunOS)
paul7ea487b2003-03-17 02:05:07 +0000674 AC_CHECK_LIB(socket, main)
675 AC_CHECK_LIB(nsl, main)
676 CURSES=-lcurses
David Lampartere8d0d242014-06-28 22:07:41 +0200677 SOLARIS="solaris"
paul7ea487b2003-03-17 02:05:07 +0000678 ;;
hassoc45eb832005-02-19 13:58:06 +0000679 *-linux*)
paul7ea487b2003-03-17 02:05:07 +0000680 opsys=gnu-linux
681 AC_DEFINE(GNU_LINUX,,GNU Linux)
682 ;;
paul7ea487b2003-03-17 02:05:07 +0000683 *-openbsd*)
684 opsys=openbsd
685 AC_DEFINE(OPEN_BSD,,OpenBSD)
686 ;;
paul7ea487b2003-03-17 02:05:07 +0000687esac
688
Paul Jakma62c9f502009-07-19 17:33:21 +0100689AC_SYS_LARGEFILE
690
paul7ea487b2003-03-17 02:05:07 +0000691dnl ---------------------
692dnl Integrated VTY option
693dnl ---------------------
694case "${enable_vtysh}" in
Donald Sharpe6756782015-07-16 21:18:34 -0400695 "no") VTYSH="";;
696 *) VTYSH="vtysh";
paul7ea487b2003-03-17 02:05:07 +0000697 AC_DEFINE(VTYSH,,VTY shell)
gdtfc9d0742004-06-30 14:25:12 +0000698dnl Vtysh uses libreadline, which looks for termcap functions at
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000699dnl configure time. We follow readlines search order.
gdtfc9d0742004-06-30 14:25:12 +0000700dnl The required procedures are in libtermcap on NetBSD, in
701dnl [TODO] on Linux, and in [TODO] on Solaris.
hassoc0689392005-08-25 12:00:58 +0000702 AC_CHECK_LIB(termcap, tputs, LIBREADLINE="$LIBREADLINE -ltermcap",
paula9694592005-08-25 14:50:05 +0000703 [AC_CHECK_LIB(tinfo, tputs, LIBREADLINE="$LIBREADLINE -ltinfo",
704 [AC_CHECK_LIB(curses, tputs, LIBREADLINE="$LIBREADLINE -lcurses",
705 [AC_CHECK_LIB(ncurses, tputs,
706 LIBREADLINE="$LIBREADLINE -lncurses")]
707 )]
708 )]
709 )
Thomas Petazzoni64f8c7d2016-08-21 09:23:04 +0300710 AC_CHECK_LIB(readline, main, LIBREADLINE="-lreadline $LIBREADLINE",,
paula9694592005-08-25 14:50:05 +0000711 "$LIBREADLINE")
paul7ea487b2003-03-17 02:05:07 +0000712 if test $ac_cv_lib_readline_main = no; then
gdtfc9d0742004-06-30 14:25:12 +0000713 AC_MSG_ERROR([vtysh needs libreadline but was not found and usable on your system.])
paul7ea487b2003-03-17 02:05:07 +0000714 fi
715 AC_CHECK_HEADER(readline/history.h)
716 if test $ac_cv_header_readline_history_h = no;then
717 AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
718 fi
paula9694592005-08-25 14:50:05 +0000719 AC_CHECK_LIB(readline, rl_completion_matches,
720 LIBREADLINE="$LIBREADLINE",, "$LIBREADLINE")
paul3d3de8c2003-05-23 10:33:49 +0000721 if test $ac_cv_lib_readline_rl_completion_matches = no; then
722 AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
723 fi
724 ;;
paul7ea487b2003-03-17 02:05:07 +0000725 "no" ) VTYSH="";;
paul7ea487b2003-03-17 02:05:07 +0000726esac
hassoc0689392005-08-25 12:00:58 +0000727AC_SUBST(LIBREADLINE)
David Wardf027d332012-04-30 11:36:15 -0400728AM_CONDITIONAL(VTYSH, test "x$VTYSH" = "xvtysh")
paul7ea487b2003-03-17 02:05:07 +0000729
730dnl ----------
731dnl PAM module
Denis Ovsienko61599282011-07-15 00:24:15 +0400732dnl
733dnl Quagga detects the PAM library it is built against by checking for a
734dnl functional pam_misc.h (Linux-PAM) or openpam.h (OpenPAM) header. pam_misc.h
735dnl is known to #include pam_appl.h, the standard header of a PAM library, and
736dnl openpam.h doesn't do that, although depends on the header too. Hence a
737dnl little assistance to AC_CHECK_HEADER is necessary for the proper detection
738dnl of OpenPAM.
paul7ea487b2003-03-17 02:05:07 +0000739dnl ----------
740if test "$with_libpam" = "yes"; then
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000741 AC_CHECK_HEADER([security/pam_misc.h],
742 [AC_DEFINE(HAVE_PAM_MISC_H,,Have pam_misc.h)
743 AC_DEFINE(PAM_CONV_FUNC,misc_conv,Have misc_conv)
744 pam_conv_func="misc_conv"
745 ],
746 [], QUAGGA_INCLUDES)
747 AC_CHECK_HEADER([security/openpam.h],
748 [AC_DEFINE(HAVE_OPENPAM_H,,Have openpam.h)
749 AC_DEFINE(PAM_CONV_FUNC,openpam_ttyconv,Have openpam_ttyconv)
750 pam_conv_func="openpam_ttyconv"
751 ],
Denis Ovsienko61599282011-07-15 00:24:15 +0400752 [], QUAGGA_INCLUDES[#include <security/pam_appl.h>])
paul24cd4352003-05-06 12:16:27 +0000753 if test -z "$ac_cv_header_security_pam_misc_h$ac_cv_header_security_openpam_h" ; then
754 AC_MSG_WARN([*** pam support will not be built ***])
755 with_libpam="no"
756 fi
757fi
758
759if test "$with_libpam" = "yes"; then
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000760dnl took this test from proftpds configure.in and suited to our needs
paul7ea487b2003-03-17 02:05:07 +0000761dnl -------------------------------------------------------------------------
762dnl
763dnl This next check looks funky due to a linker problem with some versions
764dnl of the PAM library. Prior to 0.72 release, the Linux PAM shared library
765dnl omitted requiring libdl linking information. PAM-0.72 or better ships
766dnl with RedHat 6.2 and Debian 2.2 or better.
767AC_CHECK_LIB(pam, pam_start,
paul24cd4352003-05-06 12:16:27 +0000768 [AC_CHECK_LIB(pam, $pam_conv_func,
paul7ea487b2003-03-17 02:05:07 +0000769 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
770 LIBPAM="-lpam"],
771 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
772 LIBPAM="-lpam -lpam_misc"]
773 )
774 ],
775
776 [AC_CHECK_LIB(pam, pam_end,
paul24cd4352003-05-06 12:16:27 +0000777 [AC_CHECK_LIB(pam, $pam_conv_func,
paula159ed92003-06-04 11:01:45 +0000778 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
paul7ea487b2003-03-17 02:05:07 +0000779 LIBPAM="-lpam -ldl"],
paula159ed92003-06-04 11:01:45 +0000780 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
paul7ea487b2003-03-17 02:05:07 +0000781 LIBPAM="-lpam -ldl -lpam_misc"]
782 )
783 ],AC_MSG_WARN([*** pam support will not be built ***]),
784 [-ldl])
785 ]
786)
787fi
788AC_SUBST(LIBPAM)
789
790dnl -------------------------------
791dnl Endian-ness check
792dnl -------------------------------
793AC_WORDS_BIGENDIAN
794
795dnl -------------------------------
796dnl check the size in byte of the C
797dnl -------------------------------
798dnl AC_CHECK_SIZEOF(char)
799dnl AC_CHECK_SIZEOF(int)
800dnl AC_CHECK_SIZEOF(short)
801dnl AC_CHECK_SIZEOF(long)
802
803dnl ----------------------------
804dnl check existance of functions
805dnl ----------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000806AC_FUNC_CHOWN
807AC_FUNC_FNMATCH
808AC_FUNC_FORK
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000809AC_FUNC_MEMCMP
810AC_FUNC_MKTIME
811AC_FUNC_STRFTIME
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000812AC_FUNC_STAT
813AC_FUNC_SELECT_ARGTYPES
814AC_FUNC_STRFTIME
Paul Jakmad46d2a22007-05-10 16:53:04 +0000815dnl Avoid AC_FUNC_STRNLEN because it pulls in AC_SYSTEM_EXTENSIONS which
816dnl can lead to strange side effects. So we just check for strnlen
817dnl directly, see below.
Paul Jakma2b5cb412007-05-10 17:05:16 +0000818dnl AC_FUNC_STRNLENdnl
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000819AC_FUNC_VPRINTF
820
821dnl -------------------------------
822dnl bgpd needs pow() and hence libm
823dnl -------------------------------
824TMPLIBS="$LIBS"
825AC_CHECK_HEADER([math.h],
826 [AC_CHECK_LIB([m], [pow],
827 [LIBM="-lm"
828 LIBS="$LIBS $LIBM"
829 AC_DEFINE(HAVE_LIBM,, Have libm)
830 AC_CHECK_FUNCS(pow,[],[LIBM=""])
831 ])
832])
833if test x"$LIBM" = x ; then
834 AC_MSG_WARN([Unable to find working pow function - bgpd may not link])
835fi
836LIBS="$TMPLIBS"
837AC_SUBST(LIBM)
838
839dnl ---------------
840dnl other functions
841dnl ---------------
842AC_CHECK_FUNCS([dup2 ftruncate getcwd gethostbyname getpagesize gettimeofday \
Paul Jakmad46d2a22007-05-10 16:53:04 +0000843 inet_ntoa inet_aton strnlen \
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000844 memchr memmove memset select socket \
845 strcasecmp strchr strcspn strdup strerror \
846 strncasecmp strndup strrchr strspn strstr \
847 strtol strtoul strlcat strlcpy \
848 daemon snprintf vsnprintf \
849 if_nametoindex if_indextoname getifaddrs \
David Lamparter12bbd622015-09-15 02:26:44 -0700850 uname fcntl getgrouplist])
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000851
paul7ea487b2003-03-17 02:05:07 +0000852
Feng Lu55cfa2f2014-07-03 18:24:34 +0800853AC_CHECK_HEADER([asm-generic/unistd.h],
854 [AC_CHECK_DECL(__NR_setns,
855 AC_DEFINE(HAVE_NETNS,, Have netns),,
856 QUAGGA_INCLUDES [#include <asm-generic/unistd.h>
857 ])
858 AC_CHECK_FUNCS(setns, AC_DEFINE(HAVE_SETNS,, Have setns))]
859 )
860
paul7ea487b2003-03-17 02:05:07 +0000861dnl ------------------------------------
862dnl Determine routing get and set method
863dnl ------------------------------------
864AC_MSG_CHECKING(zebra between kernel interface method)
865if test x"$opsys" = x"gnu-linux"; then
David Lamparter2e5ca492014-06-28 20:54:31 +0200866 AC_MSG_RESULT(netlink)
867 RT_METHOD=rt_netlink.o
868 AC_DEFINE(HAVE_NETLINK,,netlink)
869 netlink=yes
paul7ea487b2003-03-17 02:05:07 +0000870else
David Lamparter39b233f2014-06-28 21:49:18 +0200871 AC_MSG_RESULT(Route socket)
872 KERNEL_METHOD="kernel_socket.o"
873 RT_METHOD="rt_socket.o"
paul7ea487b2003-03-17 02:05:07 +0000874fi
875AC_SUBST(RT_METHOD)
876AC_SUBST(KERNEL_METHOD)
Avneesh Sachdev5adc2522012-11-13 22:48:59 +0000877AM_CONDITIONAL([HAVE_NETLINK], [test "x$netlink" = "xyes"])
paul7ea487b2003-03-17 02:05:07 +0000878
Paul Jakma238497f2007-08-07 18:49:18 +0000879dnl --------------------------
880dnl Determine IS-IS I/O method
881dnl --------------------------
David Lamparter745bf052010-02-02 21:49:35 +0100882AC_DEFINE(ISIS_METHOD_PFPACKET, 1, [ constant value for isis method pfpacket ])
883AC_DEFINE(ISIS_METHOD_DLPI, 2, [ constant value for isis method dlpi ])
884AC_DEFINE(ISIS_METHOD_BPF, 3, [ constant value for isis method bpf ])
Paul Jakma238497f2007-08-07 18:49:18 +0000885AC_CHECK_HEADER(net/bpf.h)
886AC_CHECK_HEADER(sys/dlpi.h)
887AC_MSG_CHECKING(zebra IS-IS I/O method)
888if test x"$opsys" = x"gnu-linux"; then
889 AC_MSG_RESULT(pfpacket)
David Lamparter745bf052010-02-02 21:49:35 +0100890 ISIS_METHOD_MACRO="ISIS_METHOD_PFPACKET"
Paul Jakma238497f2007-08-07 18:49:18 +0000891elif test x"$opsys" = x"sol2-6" -o x"$opsys" = x"sol8"; then
892 AC_MSG_RESULT(DLPI)
David Lamparter745bf052010-02-02 21:49:35 +0100893 ISIS_METHOD_MACRO="ISIS_METHOD_DLPI"
Paul Jakma238497f2007-08-07 18:49:18 +0000894else
895 if test $ac_cv_header_net_bpf_h = no; then
896 if test $ac_cv_header_sys_dlpi_h = no; then
897 AC_MSG_RESULT(none)
898 AC_MSG_WARN([*** IS-IS support will not be built ***])
899 ISISD=""
900 else
901 AC_MSG_RESULT(DLPI)
902 fi
David Lamparter745bf052010-02-02 21:49:35 +0100903 ISIS_METHOD_MACRO="ISIS_METHOD_DLPI"
Paul Jakma238497f2007-08-07 18:49:18 +0000904 else
905 AC_MSG_RESULT(BPF)
David Lamparter745bf052010-02-02 21:49:35 +0100906 ISIS_METHOD_MACRO="ISIS_METHOD_BPF"
Paul Jakma238497f2007-08-07 18:49:18 +0000907 fi
908fi
David Lamparter745bf052010-02-02 21:49:35 +0100909AC_DEFINE_UNQUOTED(ISIS_METHOD, $ISIS_METHOD_MACRO, [ selected method for isis, == one of the constants ])
Paul Jakma238497f2007-08-07 18:49:18 +0000910
ajsb99760a2005-01-04 16:24:43 +0000911dnl ------------------------------------
912dnl check for broken CMSG_FIRSTHDR macro
913dnl ------------------------------------
gdt6c200462005-01-04 17:02:48 +0000914AC_MSG_CHECKING(for broken CMSG_FIRSTHDR)
hasso5b087522005-04-03 23:46:37 +0000915AC_RUN_IFELSE([AC_LANG_SOURCE([[
ajsb99760a2005-01-04 16:24:43 +0000916#ifdef SUNOS_5
917#define _XPG4_2
918#define __EXTENSIONS__
919#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000920#ifdef HAVE_STDLIB_H
921# include <stdlib.h>
922#endif
923#ifdef HAVE_SYS_TYPES_H
ajsb99760a2005-01-04 16:24:43 +0000924#include <sys/types.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000925#endif
926#ifdef HAVE_SYS_SOCKET_H
ajsb99760a2005-01-04 16:24:43 +0000927#include <sys/socket.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000928#endif
ajsb99760a2005-01-04 16:24:43 +0000929
930main()
931{
932 struct msghdr msg;
933 char buf[4];
934
935 msg.msg_control = buf;
936 msg.msg_controllen = 0;
937
938 if (CMSG_FIRSTHDR(&msg) != NULL)
939 exit(0);
940 exit (1);
hasso5b087522005-04-03 23:46:37 +0000941}]])],[AC_MSG_RESULT(yes - using workaround) AC_DEFINE(HAVE_BROKEN_CMSG_FIRSTHDR,,Broken CMSG_FIRSTHDR)],
hassod33e8d72005-04-03 13:07:21 +0000942[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
ajsb99760a2005-01-04 16:24:43 +0000943
paul7ea487b2003-03-17 02:05:07 +0000944dnl ------------------------------
945dnl check kernel route read method
946dnl ------------------------------
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500947AC_CACHE_CHECK([route read method], [quagga_cv_rtread_method],
948[if test "x$netlink" = xyes; then
949 quagga_cv_rtread_method="netlink"
paul7ea487b2003-03-17 02:05:07 +0000950else
David Lamparter2e5ca492014-06-28 20:54:31 +0200951for quagga_cv_rtread_method in /dev/ip /dev/null;
paul7ea487b2003-03-17 02:05:07 +0000952do
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500953 test x`ls $quagga_cv_rtread_method 2>/dev/null` = x"$quagga_cv_rtread_method" && break
paul7ea487b2003-03-17 02:05:07 +0000954done
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500955case $quagga_cv_rtread_method in
paul9c30ab62003-07-08 08:36:17 +0000956 "/dev/ip")
957 case "$host" in
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500958 *-freebsd*) quagga_cv_rtread_method="sysctl";;
959 *) quagga_cv_rtread_method="getmsg";;
paul9c30ab62003-07-08 08:36:17 +0000960 esac;;
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500961 *)
962 quagga_cv_rtread_method="sysctl";;
paul7ea487b2003-03-17 02:05:07 +0000963esac
964fi])
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500965RTREAD_METHOD=rtread_${quagga_cv_rtread_method}.o
paul7ea487b2003-03-17 02:05:07 +0000966AC_SUBST(RTREAD_METHOD)
967
968dnl -----------------------------
969dnl check interface lookup method
970dnl -----------------------------
paul19877dd2004-05-11 10:49:35 +0000971IOCTL_METHOD=ioctl.o
paul7ea487b2003-03-17 02:05:07 +0000972AC_MSG_CHECKING(interface looking up method)
973if test "$netlink" = yes; then
974 AC_MSG_RESULT(netlink)
975 IF_METHOD=if_netlink.o
paul19877dd2004-05-11 10:49:35 +0000976elif test "$opsys" = "sol2-6";then
977 AC_MSG_RESULT(Solaris GIF)
978 IF_METHOD=if_ioctl.o
paulafd8a122005-03-12 06:36:10 +0000979elif test "$opsys" = "sol8";then
paul19877dd2004-05-11 10:49:35 +0000980 AC_MSG_RESULT(Solaris GLIF)
981 IF_METHOD=if_ioctl_solaris.o
982 IOCTL_METHOD=ioctl_solaris.o
paul19877dd2004-05-11 10:49:35 +0000983elif test "$opsys" = "openbsd";then
984 AC_MSG_RESULT(openbsd)
985 IF_METHOD=if_ioctl.o
986elif grep NET_RT_IFLIST /usr/include/sys/socket.h >/dev/null 2>&1; then
987 AC_MSG_RESULT(sysctl)
paul7ea487b2003-03-17 02:05:07 +0000988 IF_METHOD=if_sysctl.o
989 AC_DEFINE(HAVE_NET_RT_IFLIST,,NET_RT_IFLIST)
paul19877dd2004-05-11 10:49:35 +0000990else
paul7ea487b2003-03-17 02:05:07 +0000991 AC_MSG_RESULT(ioctl)
992 IF_METHOD=if_ioctl.o
paul7ea487b2003-03-17 02:05:07 +0000993fi
994AC_SUBST(IF_METHOD)
paul19877dd2004-05-11 10:49:35 +0000995AC_SUBST(IOCTL_METHOD)
paul7ea487b2003-03-17 02:05:07 +0000996
paul42c98192005-05-07 02:22:51 +0000997dnl ---------------------------------------------------------------
998dnl figure out how to specify an interface in multicast sockets API
999dnl ---------------------------------------------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001000AC_CHECK_MEMBERS([struct ip_mreqn.imr_ifindex], [], [], QUAGGA_INCLUDES)
paul42c98192005-05-07 02:22:51 +00001001
Donald Sharp1934e782015-06-05 12:15:44 -07001002AC_CHECK_HEADERS([linux/mroute.h], [], [],
1003[
1004#if HAVE_NETINET_IN_H
1005#include<netinet/in.h>
1006#endif])
paul42c98192005-05-07 02:22:51 +00001007AC_MSG_CHECKING([for BSD struct ip_mreq hack])
1008AC_TRY_COMPILE([#ifdef HAVE_SYS_PARAM_H
1009#include <sys/param.h>
Brian Bennettb8a893c2015-02-17 22:32:22 +00001010#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 +00001011 return (0);
1012#else
1013 #error No support for BSD struct ip_mreq hack detected
1014#endif],[AC_MSG_RESULT(yes)
1015AC_DEFINE(HAVE_BSD_STRUCT_IP_MREQ_HACK,,[Can pass ifindex in struct ip_mreq])],
1016AC_MSG_RESULT(no))
1017
Dmitrij Tejblum10d04cd2011-08-22 11:39:35 +04001018AC_MSG_CHECKING([for RFC3678 protocol-independed API])
1019AC_TRY_COMPILE([
1020#include <sys/types.h>
1021#include <netinet/in.h>
1022], [struct group_req gr; int sock; setsockopt(sock, IPPROTO_IP, MCAST_JOIN_GROUP, (void*)&gr, sizeof(gr));
1023], [AC_MSG_RESULT(yes)
1024AC_DEFINE(HAVE_RFC3678,1,[Have RFC3678 protocol-independed API])],
1025AC_MSG_RESULT(no))
1026
Andrew J. Schorrc543a172008-01-10 15:24:32 +00001027dnl ---------------------------------------------------------------
1028dnl figure out how to check link-state
1029dnl ---------------------------------------------------------------
Andrew J. Schorr6418bed2008-01-11 16:33:59 +00001030AC_CHECK_HEADER([net/if.h],
1031 [AC_CHECK_HEADER( [net/if_media.h],
1032 [m4_define([LINK_DETECT_INCLUDES],
1033 QUAGGA_INCLUDES
1034 [#include <net/if_media.h>
1035 ])
1036 AC_CHECK_MEMBERS( [struct ifmediareq.ifm_status],
1037 AC_DEFINE(HAVE_BSD_LINK_DETECT,,[BSD link-detect]),
1038 [], LINK_DETECT_INCLUDES)],
1039 [],
1040 QUAGGA_INCLUDES)],
1041 [], QUAGGA_INCLUDES )
Andrew J. Schorrc543a172008-01-10 15:24:32 +00001042
Doug VanLeuven9234b382012-10-10 16:12:32 -07001043dnl ---------------------------------------------------------------
1044dnl Additional, newer way to check link-state using ifi_link_state.
1045dnl Not available in all BSD's when ifmediareq available
1046dnl ---------------------------------------------------------------
1047AC_CHECK_HEADER([net/if.h],
1048 AC_CHECK_MEMBERS([struct if_data.ifi_link_state],
1049 AC_DEFINE(HAVE_BSD_IFI_LINK_STATE,,[BSD ifi_link_state available]),
1050 [], QUAGGA_INCLUDES),
1051 ,)
1052
Paul Jakma0df7c912008-07-21 21:02:49 +00001053dnl ------------------------
1054dnl TCP_MD5SIG socket option
1055dnl ------------------------
1056
1057AC_CHECK_HEADER([netinet/tcp.h],
1058 [m4_define([MD5_INCLUDES],
1059 QUAGGA_INCLUDES
1060 [#include <netinet/tcp.h>
1061 ])
1062 AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)],
1063 [],
1064 QUAGGA_INCLUDES)
1065if test $ac_cv_have_decl_TCP_MD5SIG = no; then
1066 AC_CHECK_HEADER([linux/tcp.h],
1067 [m4_define([MD5_INCLUDES],
1068 QUAGGA_INCLUDES
1069 [#include <linux/tcp.h>
1070 ])
1071 AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)])
1072fi
1073
paul7ea487b2003-03-17 02:05:07 +00001074dnl -----------------------------
1075dnl check ipforward detect method
1076dnl -----------------------------
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001077AC_CACHE_CHECK([ipforward method], [quagga_cv_ipforward_method],
David Lamparterca9f3422009-09-16 02:11:00 +02001078[if test x$cross_compiling = xyes; then
1079 if test x"$opsys" = x"gnu-linux"; then
1080 quagga_cv_ipforward_method=/proc/net/snmp
1081 else
1082 quagga_cv_ipforward_method=/dev/ip
1083 fi
1084else
1085 for quagga_cv_ipforward_method in /proc/net/snmp /dev/ip /dev/null;
1086 do
1087 test x`ls $quagga_cv_ipforward_method 2>/dev/null` = x"$quagga_cv_ipforward_method" && break
1088 done
1089fi
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001090case $quagga_cv_ipforward_method in
1091 "/proc/net/snmp") quagga_cv_ipforward_method="proc";;
paul7ea487b2003-03-17 02:05:07 +00001092 "/dev/ip")
1093 case "$host" in
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001094 *-freebsd*) quagga_cv_ipforward_method="sysctl";;
1095 *) quagga_cv_ipforward_method="solaris";;
paul7ea487b2003-03-17 02:05:07 +00001096 esac;;
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001097 *) quagga_cv_ipforward_method="sysctl";;
paul7ea487b2003-03-17 02:05:07 +00001098esac])
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001099IPFORWARD=ipforward_${quagga_cv_ipforward_method}.o
paul7ea487b2003-03-17 02:05:07 +00001100AC_SUBST(IPFORWARD)
1101
1102AC_CHECK_FUNCS(getaddrinfo, [have_getaddrinfo=yes], [have_getaddrinfo=no])
1103
1104dnl ----------
1105dnl IPv6 check
1106dnl ----------
1107AC_MSG_CHECKING(whether does this OS have IPv6 stack)
paul7ea487b2003-03-17 02:05:07 +00001108dnl ---------
1109dnl KAME IPv6
1110dnl ---------
David Lamparter6d6df302014-06-28 21:12:37 +02001111 if grep WIDE /usr/include/netinet6/in6.h >/dev/null 2>&1; then
paula159ed92003-06-04 11:01:45 +00001112 AC_DEFINE(KAME,1,KAME IPv6)
paula159ed92003-06-04 11:01:45 +00001113 AC_MSG_RESULT(KAME)
paul19877dd2004-05-11 10:49:35 +00001114dnl ------------------------------------
1115dnl Solaris 9, 10 and potentially higher
1116dnl ------------------------------------
paulafd8a122005-03-12 06:36:10 +00001117 elif test x"$opsys" = x"sol8"; then
paul19877dd2004-05-11 10:49:35 +00001118 AC_DEFINE(SOLARIS_IPV6, 1, Solaris IPv6)
paul19877dd2004-05-11 10:49:35 +00001119 AC_MSG_RESULT(Solaris IPv6)
paul7ea487b2003-03-17 02:05:07 +00001120dnl ----------
1121dnl Linux IPv6
1122dnl ----------
David Lamparter29ed6222014-06-28 21:42:25 +02001123 elif test x"$opsys" = x"gnu-linux"; then
Timo Teräs3ef0b872014-07-29 09:41:56 +00001124 AC_DEFINE(LINUX_IPV6,1,Linux IPv6 stack)
David Lamparter29ed6222014-06-28 21:42:25 +02001125 AC_MSG_RESULT(Linux IPv6)
1126 else
David Lamparter7fe17e62014-11-22 10:31:33 -08001127 AC_MSG_ERROR([Failed to detect IPv6 stack])
paula159ed92003-06-04 11:01:45 +00001128 fi
paul7ea487b2003-03-17 02:05:07 +00001129
David Lamparter7fe17e62014-11-22 10:31:33 -08001130dnl this is unconditial, for compatibility
1131AC_DEFINE(HAVE_IPV6,1,IPv6)
paul7ea487b2003-03-17 02:05:07 +00001132
gdtfa3232e2003-12-03 17:52:30 +00001133dnl ------------------
1134dnl IPv6 header checks
1135dnl ------------------
gdtfa3232e2003-12-03 17:52:30 +00001136AC_CHECK_HEADERS([netinet6/in6.h netinet/in6_var.h netinet/icmp6.h \
David Lamparter05a69d22015-05-27 22:15:37 +02001137 netinet6/in6_var.h netinet6/nd6.h], [], [],
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001138 QUAGGA_INCLUDES)
gdtfa3232e2003-12-03 17:52:30 +00001139
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001140m4_define([QUAGGA_INCLUDES],dnl
1141QUAGGA_INCLUDES
1142[#if HAVE_NETINET6_IN6_H
1143#include <netinet6/in6.h>
1144#endif
1145#if HAVE_NETINET_IN6_VAR_H
1146#include <netinet/in6_var.h>
1147#endif
1148#if HAVE_NETINET_ICMP6_H
1149# include <netinet/icmp6.h>
1150#endif
1151#if HAVE_NETINET6_IN6_VAR_H
1152# include <netinet6/in6_var.h>
1153#endif
1154#if HAVE_NETINET6_ND6_H
Hasso Tepperfbf24542007-06-25 19:30:59 +00001155# include <netinet6/nd6.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001156#endif
1157])dnl
1158
Joakim Tjernlundcbcd9bf2009-02-16 09:40:39 +01001159dnl disable doc check
1160if test "${enable_doc}" = "no";then
1161 DOC=""
1162else
1163 DOC="doc"
1164fi
1165
paul7ea487b2003-03-17 02:05:07 +00001166dnl --------------------
1167dnl Daemon disable check
1168dnl --------------------
1169if test "${enable_zebra}" = "no";then
1170 ZEBRA=""
1171else
1172 ZEBRA="zebra"
1173fi
David Wardf027d332012-04-30 11:36:15 -04001174AM_CONDITIONAL(ZEBRA, test "x$ZEBRA" = "xzebra")
paul7ea487b2003-03-17 02:05:07 +00001175
1176if test "${enable_bgpd}" = "no";then
1177 BGPD=""
1178else
1179 BGPD="bgpd"
1180fi
David Wardf027d332012-04-30 11:36:15 -04001181AM_CONDITIONAL(BGPD, test "x$BGPD" = "xbgpd")
paul7ea487b2003-03-17 02:05:07 +00001182
1183if test "${enable_ripd}" = "no";then
1184 RIPD=""
1185else
1186 RIPD="ripd"
1187fi
David Wardf027d332012-04-30 11:36:15 -04001188AM_CONDITIONAL(RIPD, test "x$RIPD" = "xripd")
paul7ea487b2003-03-17 02:05:07 +00001189
1190if test "${enable_ospfd}" = "no";then
1191 OSPFD=""
1192else
1193 OSPFD="ospfd"
1194fi
David Wardf027d332012-04-30 11:36:15 -04001195AM_CONDITIONAL(OSPFD, test "x$OSPFD" = "xospfd")
paul7ea487b2003-03-17 02:05:07 +00001196
Timo Teräsdafa05e2017-01-19 17:27:01 +02001197if test x"$opsys" != x"gnu-linux"; then
1198 dnl NHRPd works currently with Linux only.
1199 enable_nhrpd="no"
1200fi
1201if test "${enable_nhrpd}" = "no";then
1202 NHRPD=""
1203else
1204 NHRPD="nhrpd"
1205fi
1206AM_CONDITIONAL(NHRPD, test "x$NHRPD" = "xnhrpd")
1207
ajsd0199432004-12-22 14:03:52 +00001208if test "${enable_watchquagga}" = "no";then
1209 WATCHQUAGGA=""
1210else
1211 WATCHQUAGGA="watchquagga"
1212fi
David Wardf027d332012-04-30 11:36:15 -04001213AM_CONDITIONAL(WATCHQUAGGA, test "x$WATCHQUAGGA" = "xwatchquagga")
ajsd0199432004-12-22 14:03:52 +00001214
paul1ef74ef2003-03-21 15:16:05 +00001215OSPFCLIENT=""
Donald Sharp36fef572015-12-16 14:22:10 -05001216if test "${enable_ospfapi}" != "no";then
paul9a569842003-03-28 01:45:13 +00001217 AC_DEFINE(SUPPORT_OSPF_API,,OSPFAPI)
paul1ef74ef2003-03-21 15:16:05 +00001218
Donald Sharp36fef572015-12-16 14:22:10 -05001219 if test "${enable_ospfclient}" != "no";then
paul1ef74ef2003-03-21 15:16:05 +00001220 OSPFCLIENT="ospfclient"
paul1ef74ef2003-03-21 15:16:05 +00001221 fi
paul7ea487b2003-03-17 02:05:07 +00001222fi
Donald Sharp36fef572015-12-16 14:22:10 -05001223
David Wardf027d332012-04-30 11:36:15 -04001224AM_CONDITIONAL(OSPFCLIENT, test "x$OSPFCLIENT" = "xospfclient")
paul7ea487b2003-03-17 02:05:07 +00001225
1226case "${enable_ripngd}" in
paul7ea487b2003-03-17 02:05:07 +00001227 "no" ) RIPNGD="";;
David Lamparter7fe17e62014-11-22 10:31:33 -08001228 * ) RIPNGD="ripngd";;
paul7ea487b2003-03-17 02:05:07 +00001229esac
David Wardf027d332012-04-30 11:36:15 -04001230AM_CONDITIONAL(RIPNGD, test "x$RIPNGD" = "xripngd")
paul7ea487b2003-03-17 02:05:07 +00001231
1232case "${enable_ospf6d}" in
paul7ea487b2003-03-17 02:05:07 +00001233 "no" ) OSPF6D="";;
David Lamparter7fe17e62014-11-22 10:31:33 -08001234 * ) OSPF6D="ospf6d";;
paul7ea487b2003-03-17 02:05:07 +00001235esac
David Wardf027d332012-04-30 11:36:15 -04001236AM_CONDITIONAL(OSPF6D, test "x$OSPF6D" = "xospf6d")
paul7ea487b2003-03-17 02:05:07 +00001237
jardin9e867fe2003-12-23 08:56:18 +00001238case "${enable_isisd}" in
jardin9e867fe2003-12-23 08:56:18 +00001239 "no" ) ISISD="";;
David Lamparter656a2c02015-02-09 11:36:10 +01001240 * ) ISISD="isisd";;
jardin9e867fe2003-12-23 08:56:18 +00001241esac
David Wardf027d332012-04-30 11:36:15 -04001242AM_CONDITIONAL(ISISD, test "x$ISISD" = "xisisd")
jardin9e867fe2003-12-23 08:56:18 +00001243
Everton Marques871dbcf2009-08-11 15:43:05 -03001244case "${enable_pimd}" in
Everton Marques871dbcf2009-08-11 15:43:05 -03001245 "no" ) PIMD="";;
Donald Sharpe6756782015-07-16 21:18:34 -04001246 * ) PIMD="pimd";;
Everton Marques871dbcf2009-08-11 15:43:05 -03001247esac
Everton Marquesff57d362014-06-25 15:54:03 -03001248AM_CONDITIONAL(PIMD, test "x$PIMD" = "xpimd")
Everton Marques871dbcf2009-08-11 15:43:05 -03001249
paul7ea487b2003-03-17 02:05:07 +00001250if test "${enable_bgp_announce}" = "no";then
Paul Jakma750e8142008-07-22 21:11:48 +00001251 AC_DEFINE(DISABLE_BGP_ANNOUNCE,1,Disable BGP installation to zebra)
1252else
1253 AC_DEFINE(DISABLE_BGP_ANNOUNCE,0,Disable BGP installation to zebra)
paul7ea487b2003-03-17 02:05:07 +00001254fi
1255
Joakim Tjernlundcbcd9bf2009-02-16 09:40:39 +01001256AC_SUBST(DOC)
paul7ea487b2003-03-17 02:05:07 +00001257AC_SUBST(ZEBRA)
1258AC_SUBST(BGPD)
1259AC_SUBST(RIPD)
1260AC_SUBST(RIPNGD)
1261AC_SUBST(OSPFD)
1262AC_SUBST(OSPF6D)
Timo Teräsdafa05e2017-01-19 17:27:01 +02001263AC_SUBST(NHRPD)
ajsd0199432004-12-22 14:03:52 +00001264AC_SUBST(WATCHQUAGGA)
jardin9e867fe2003-12-23 08:56:18 +00001265AC_SUBST(ISISD)
Everton Marques871dbcf2009-08-11 15:43:05 -03001266AC_SUBST(PIMD)
Greg Troxel97cee872007-08-02 13:36:56 +00001267AC_SUBST(SOLARIS)
paul7ea487b2003-03-17 02:05:07 +00001268AC_SUBST(VTYSH)
paul7ea487b2003-03-17 02:05:07 +00001269AC_SUBST(CURSES)
1270AC_SUBST(OSPFCLIENT)
paul1ef74ef2003-03-21 15:16:05 +00001271AC_SUBST(OSPFAPI)
paul7ea487b2003-03-17 02:05:07 +00001272AC_CHECK_LIB(c, inet_ntop, [AC_DEFINE(HAVE_INET_NTOP,,inet_ntop)])
1273AC_CHECK_LIB(c, inet_pton, [AC_DEFINE(HAVE_INET_PTON,,inet_pton)])
1274AC_CHECK_LIB(crypt, crypt)
1275AC_CHECK_LIB(resolv, res_init)
paul7ea487b2003-03-17 02:05:07 +00001276
paul7ea487b2003-03-17 02:05:07 +00001277dnl ---------------------------
Jeremy Jackson25f45882009-01-12 16:06:12 -05001278dnl check system has PCRE regexp
1279dnl ---------------------------
1280if test "x$enable_pcreposix" = "xyes"; then
1281 AC_CHECK_LIB(pcreposix, pcreposix_regexec, ,[enable_pcreposix=no
1282 AC_MSG_WARN([*** falling back to other regex library ***]) ])
1283fi
1284
1285if test "x$enable_pcreposix" != "xyes"; then
1286dnl ---------------------------
paul7ea487b2003-03-17 02:05:07 +00001287dnl check system has GNU regexp
1288dnl ---------------------------
Jeremy Jackson25f45882009-01-12 16:06:12 -05001289AC_MSG_CHECKING(whether system has GNU regex)
paul7ea487b2003-03-17 02:05:07 +00001290AC_CHECK_LIB(c, regexec,
1291[AC_DEFINE(HAVE_GNU_REGEX,,GNU regexp library)
1292 LIB_REGEX=""],
1293[LIB_REGEX="regex.o"])
Jeremy Jackson25f45882009-01-12 16:06:12 -05001294fi
1295AC_SUBST(HAVE_LIBPCREPOSIX)
paul7ea487b2003-03-17 02:05:07 +00001296AC_SUBST(LIB_REGEX)
1297
1298dnl ------------------
Timo Teräsdafa05e2017-01-19 17:27:01 +02001299dnl check C-Ares library
1300dnl ------------------
1301if test "${enable_nhrpd}" != "no";then
1302 PKG_CHECK_MODULES([CARES], [libcares])
1303fi
1304
1305
1306dnl ------------------
paulb1fc9ac2006-01-31 10:09:27 +00001307dnl check Net-SNMP library
paul7ea487b2003-03-17 02:05:07 +00001308dnl ------------------
Vincent Bernatd6be5fb2012-05-24 09:44:43 +02001309if test "${enable_snmp}" != ""; then
Vincent Bernat08d7f652012-05-22 22:29:17 +02001310 AC_PATH_TOOL([NETSNMP_CONFIG], [net-snmp-config], [no])
1311 if test x"$NETSNMP_CONFIG" = x"no"; then
1312 AC_MSG_ERROR([--enable-snmp given but unable to find net-snmp-config])
1313 fi
1314 LIBS="$LIBS `${NETSNMP_CONFIG} --agent-libs`"
1315 CFLAGS="`${NETSNMP_CONFIG} --base-cflags` $CFLAGS"
1316 AC_MSG_CHECKING([whether we can link to Net-SNMP])
1317 AC_LINK_IFELSE([AC_LANG_PROGRAM([
1318int main(void);
1319],
1320[
1321{
1322 return 0;
1323}
1324])],[AC_MSG_RESULT(yes)],[
1325 AC_MSG_RESULT(no)
1326 AC_MSG_ERROR([--enable-snmp given but not usable])])
1327 AC_DEFINE(HAVE_SNMP,,SNMP)
Vincent Bernatd6be5fb2012-05-24 09:44:43 +02001328 case "${enable_snmp}" in
1329 yes)
1330 SNMP_METHOD=agentx
1331 ;;
1332 smux|agentx)
1333 SNMP_METHOD="${enable_snmp}"
1334 ;;
1335 *)
1336 AC_MSG_ERROR([--enable-snmp given with an unknown method (${enable_snmp}). Use smux or agentx])
1337 ;;
1338 esac
1339 AH_TEMPLATE([SNMP_SMUX], [Use SNMP SMUX to interface with snmpd])
1340 AH_TEMPLATE([SNMP_AGENTX], [Use SNMP AgentX to interface with snmpd])
1341 AC_DEFINE_UNQUOTED(AS_TR_CPP(SNMP_${SNMP_METHOD}),,SNMP method to interface with snmpd)
paul7ea487b2003-03-17 02:05:07 +00001342fi
1343
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001344dnl ---------------------------
1345dnl sockaddr and netinet checks
1346dnl ---------------------------
1347AC_CHECK_TYPES([struct sockaddr, struct sockaddr_in,
1348 struct sockaddr_in6, struct sockaddr_un, struct sockaddr_dl,
Everton Marques871dbcf2009-08-11 15:43:05 -03001349 socklen_t, struct vifctl, struct mfcctl, struct sioc_sg_req,
1350 vifi_t, struct sioc_vif_req, struct igmpmsg,
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001351 struct ifaliasreq, struct if6_aliasreq, struct in6_aliasreq,
1352 struct nd_opt_adv_interval, struct rt_addrinfo,
Paul Jakma11770e12007-06-22 16:14:42 +00001353 struct nd_opt_homeagent_info, struct nd_opt_adv_interval],
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001354 [], [], QUAGGA_INCLUDES)
paul7ea487b2003-03-17 02:05:07 +00001355
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001356AC_CHECK_MEMBERS([struct sockaddr.sa_len,
1357 struct sockaddr_in.sin_len, struct sockaddr_un.sun_len,
1358 struct sockaddr_in6.sin6_scope_id,
David Lamparterca3ccd82012-09-26 14:52:39 +02001359 struct sockaddr_dl.sdl_len,
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001360 struct if6_aliasreq.ifra_lifetime,
1361 struct nd_opt_adv_interval.nd_opt_ai_type],
1362 [], [], QUAGGA_INCLUDES)
hasso71c0fb52003-05-25 20:18:13 +00001363
paul7ea487b2003-03-17 02:05:07 +00001364dnl ---------------------------
Paul Jakma11770e12007-06-22 16:14:42 +00001365dnl IRDP/pktinfo/icmphdr checks
paul7ea487b2003-03-17 02:05:07 +00001366dnl ---------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001367AC_CHECK_TYPES([struct in_pktinfo],
Paul Jakma11770e12007-06-22 16:14:42 +00001368 [AC_CHECK_TYPES([struct icmphdr],
1369 [if test "${enable_irdp}" != "no"; then
1370 AC_DEFINE(HAVE_IRDP,, IRDP)
1371 fi],
1372 [if test "${enable_irdp}" = "yes"; then
1373 AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
1374 fi], [QUAGGA_INCLUDES])],
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001375 [if test "${enable_irdp}" = "yes"; then
1376 AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
1377 fi], [QUAGGA_INCLUDES])
vincent29c4c9b2005-03-25 13:05:47 +00001378
Everton Marques871dbcf2009-08-11 15:43:05 -03001379dnl -----------------------
1380dnl checking for IP_PKTINFO
1381dnl -----------------------
1382AC_MSG_CHECKING(for IP_PKTINFO)
1383AC_TRY_COMPILE([#include <netdb.h>], [
1384 int opt = IP_PKTINFO;
1385], [
1386 AC_MSG_RESULT(yes)
1387 AC_DEFINE(HAVE_IP_PKTINFO, 1, [Have IP_PKTINFO])
1388], [
1389 AC_MSG_RESULT(no)
1390])
1391
1392dnl ---------------------------
1393dnl checking for IP_RECVDSTADDR
1394dnl ---------------------------
1395AC_MSG_CHECKING(for IP_RECVDSTADDR)
1396AC_TRY_COMPILE([#include <netinet/in.h>], [
1397 int opt = IP_RECVDSTADDR;
1398], [
1399 AC_MSG_RESULT(yes)
1400 AC_DEFINE(HAVE_IP_RECVDSTADDR, 1, [Have IP_RECVDSTADDR])
1401], [
1402 AC_MSG_RESULT(no)
1403])
1404
1405dnl ----------------------
1406dnl checking for IP_RECVIF
1407dnl ----------------------
1408AC_MSG_CHECKING(for IP_RECVIF)
1409AC_TRY_COMPILE([#include <netinet/in.h>], [
1410 int opt = IP_RECVIF;
1411], [
1412 AC_MSG_RESULT(yes)
1413 AC_DEFINE(HAVE_IP_RECVIF, 1, [Have IP_RECVIF])
1414], [
1415 AC_MSG_RESULT(no)
1416])
1417
paul7ea487b2003-03-17 02:05:07 +00001418dnl --------------------------------------
1419dnl checking for getrusage struct and call
1420dnl --------------------------------------
Stephen Hemminger47f6aef2013-01-04 22:29:22 +00001421if test "${enable_rusage}" != "no"; then
1422 AC_MSG_CHECKING(whether getrusage is available)
1423 AC_TRY_COMPILE([#include <sys/resource.h>],[struct rusage ac_x; getrusage (RUSAGE_SELF, &ac_x);],
1424 [AC_MSG_RESULT(yes)
1425 AC_DEFINE(HAVE_RUSAGE,,rusage)],
1426 AC_MSG_RESULT(no))
1427fi
paul7ea487b2003-03-17 02:05:07 +00001428
Stephen Hemmingerc4376c92009-05-28 15:29:10 -07001429dnl --------------------------------------
1430dnl checking for clock_time monotonic struct and call
1431dnl --------------------------------------
Paul Jakma6511cab2009-06-18 17:38:01 +01001432AC_CHECK_DECL(CLOCK_MONOTONIC,
1433 [AC_CHECK_LIB(rt, clock_gettime, [LIBS="$LIBS -lrt"])
Dmitry Tejblum9964fcf2009-11-05 16:50:36 +03001434 AC_DEFINE(HAVE_CLOCK_MONOTONIC,, Have monotonic clock)
Paul Jakma6511cab2009-06-18 17:38:01 +01001435], [AC_MSG_RESULT(no)], [QUAGGA_INCLUDES])
Stephen Hemmingerc4376c92009-05-28 15:29:10 -07001436
pauledd7c242003-06-04 13:59:38 +00001437dnl -------------------
1438dnl capabilities checks
1439dnl -------------------
hasso41d3fc92004-04-06 11:59:00 +00001440if test "${enable_capabilities}" != "no"; then
1441 AC_MSG_CHECKING(whether prctl PR_SET_KEEPCAPS is available)
1442 AC_TRY_COMPILE([#include <sys/prctl.h>],[prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);],
1443 [AC_MSG_RESULT(yes)
1444 AC_DEFINE(HAVE_PR_SET_KEEPCAPS,,prctl)
1445 quagga_ac_keepcaps="yes"],
1446 AC_MSG_RESULT(no)
pauledd7c242003-06-04 13:59:38 +00001447 )
hasso41d3fc92004-04-06 11:59:00 +00001448 if test x"${quagga_ac_keepcaps}" = x"yes"; then
1449 AC_CHECK_HEADERS(sys/capability.h)
1450 fi
1451 if test x"${ac_cv_header_sys_capability_h}" = x"yes"; then
1452 AC_CHECK_LIB(cap, cap_init,
1453 [AC_DEFINE(HAVE_LCAPS,1,Capabilities)
1454 LIBCAP="-lcap"
paulceacedb2005-09-29 14:39:32 +00001455 quagga_ac_lcaps="yes"]
hasso41d3fc92004-04-06 11:59:00 +00001456 )
paulceacedb2005-09-29 14:39:32 +00001457 else
1458 AC_CHECK_HEADERS(priv.h,
1459 [AC_MSG_CHECKING(Solaris style privileges are available)
1460 AC_TRY_COMPILE([#include <priv.h>],[getpflags(PRIV_AWARE);],
1461 [AC_MSG_RESULT(yes)
1462 AC_DEFINE(HAVE_SOLARIS_CAPABILITIES,1,getpflags)
1463 quagga_ac_scaps="yes"],
1464 AC_MSG_RESULT(no)
1465 )
1466 ]
1467 )
1468 fi
1469 if test x"${quagga_ac_scaps}" = x"yes" \
1470 -o x"${quagga_ac_lcaps}" = x"yes"; then
1471 AC_DEFINE(HAVE_CAPABILITIES,1,capabilities)
hasso41d3fc92004-04-06 11:59:00 +00001472 fi
pauledd7c242003-06-04 13:59:38 +00001473fi
1474AC_SUBST(LIBCAP)
1475
Doug VanLeuven327c4cd2012-12-14 14:58:30 +02001476dnl ---------------------------------------------------------------------------
1477dnl http://www.gnu.org/software/autoconf-archive/ax_sys_weak_alias.html
1478dnl Check for and set one of the following = 1
1479dnl HAVE_SYS_WEAK_ALIAS_ATTRIBUTE
1480dnl HAVE_SYS_WEAK_ALIAS_PRAGMA
1481dnl HAVE_SYS_WEAK_ALIAS_HPSECONDARY
1482dnl HAVE_SYS_WEAK_ALIAS_CRIDUPLICATE
1483dnl If any scheme is found, set
1484dnl HAVE_SYS_WEAK_ALIAS=1
1485dnl The following variable is set to text value
1486dnl WEAK_ALIAS = "attribute" || "pragma" || "hpsecondary" || "criduplicate" || "no"
1487dnl If weak alias can cross object file boundaries
1488dnl WEAK_ALIAS_CROSSFILE = "yes" || "no"
1489dnl ---------------------------------------------------------------------------
1490AX_SYS_WEAK_ALIAS
1491
paulfb2d1502003-06-04 09:40:54 +00001492dnl ---------------------------
1493dnl check for glibc 'backtrace'
1494dnl ---------------------------
David Lamparter8c99b4c2013-08-01 07:43:36 +00001495if test x"${enable_backtrace}" != x"no" ; then
1496 backtrace_ok=no
1497 AC_CHECK_HEADER([execinfo.h], [
1498 AC_SEARCH_LIBS([backtrace], [execinfo], [
1499 AC_DEFINE(HAVE_GLIBC_BACKTRACE,,[Glibc backtrace])
1500 AC_DEFINE(HAVE_STACK_TRACE,,[Stack symbol decoding])
1501 backtrace_ok=yes
1502 ],, [-lm])
Dmitrij Tejblumeda35292011-09-15 20:00:33 +04001503 ])
David Lamparter8c99b4c2013-08-01 07:43:36 +00001504
1505 if test x"${enable_backtrace}" = x"yes" -a x"${backtrace_ok}" = x"no"; then
1506 dnl user explicitly requested backtrace but we failed to find support
1507 AC_MSG_FAILURE([failed to find backtrace support])
1508 fi
1509fi
paulfb2d1502003-06-04 09:40:54 +00001510
Paul Jakma41be32b2006-03-30 13:53:59 +00001511dnl -----------------------------------------
1512dnl check for malloc mallinfo struct and call
1513dnl this must try and link using LIBS, in
1514dnl order to check no alternative allocator
1515dnl has been specified, which might not provide
1516dnl mallinfo, e.g. such as Umem on Solaris.
1517dnl -----------------------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001518AC_CHECK_HEADER([malloc.h],
Paul Jakma41be32b2006-03-30 13:53:59 +00001519 [AC_MSG_CHECKING(whether mallinfo is available)
1520 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <malloc.h>]],
1521 [[struct mallinfo ac_x; ac_x = mallinfo ();]])],
1522 [AC_MSG_RESULT(yes)
1523 AC_DEFINE(HAVE_MALLINFO,,mallinfo)],
1524 AC_MSG_RESULT(no)
1525 )
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001526 ], [], QUAGGA_INCLUDES)
Paul Jakma41be32b2006-03-30 13:53:59 +00001527
paul408ad942003-05-20 00:03:33 +00001528dnl ----------
1529dnl configure date
1530dnl ----------
1531CONFDATE=`date '+%Y%m%d'`
1532AC_SUBST(CONFDATE)
1533
David Lamparterf281ab92013-02-26 16:21:20 +01001534dnl -------
1535dnl DejaGNU
1536dnl -------
1537if test x"$DEJAGNU" = x
1538then
1539 DEJAGNU="\$(top_srcdir)/tests/global-conf.exp"
1540fi
1541RUNTESTDEFAULTFLAGS="-x --tool \$\$tool"
1542
1543AC_SUBST(DEJAGNU)
1544AC_SUBST(RUNTESTDEFAULTFLAGS)
1545
paul7ea487b2003-03-17 02:05:07 +00001546dnl ------------------------------
paula159ed92003-06-04 11:01:45 +00001547dnl set paths for state directory
paul23bd12c2003-04-07 06:11:09 +00001548dnl ------------------------------
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001549AC_MSG_CHECKING(directory to use for state file)
paul23bd12c2003-04-07 06:11:09 +00001550if test "${prefix}" = "NONE"; then
paule8f29842003-08-12 13:08:31 +00001551 quagga_statedir_prefix="";
paul23bd12c2003-04-07 06:11:09 +00001552else
paule8f29842003-08-12 13:08:31 +00001553 quagga_statedir_prefix=${prefix}
paul23bd12c2003-04-07 06:11:09 +00001554fi
1555if test "${localstatedir}" = '${prefix}/var'; then
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001556 for QUAGGA_STATE_DIR in ${quagga_statedir_prefix}/var/run dnl
paule8f29842003-08-12 13:08:31 +00001557 ${quagga_statedir_prefix}/var/adm dnl
1558 ${quagga_statedir_prefix}/etc dnl
paula159ed92003-06-04 11:01:45 +00001559 /var/run dnl
1560 /var/adm dnl
1561 /etc dnl
1562 /dev/null;
paul23bd12c2003-04-07 06:11:09 +00001563 do
paule8f29842003-08-12 13:08:31 +00001564 test -d $QUAGGA_STATE_DIR && break
paul23bd12c2003-04-07 06:11:09 +00001565 done
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001566 quagga_statedir=$QUAGGA_STATE_DIR
paul23bd12c2003-04-07 06:11:09 +00001567else
paule8f29842003-08-12 13:08:31 +00001568 quagga_statedir=${localstatedir}
paul23bd12c2003-04-07 06:11:09 +00001569fi
paule8f29842003-08-12 13:08:31 +00001570if test $quagga_statedir = "/dev/null"; then
paula159ed92003-06-04 11:01:45 +00001571 AC_MSG_ERROR('STATE DIRECTORY NOT FOUND! FIX OR SPECIFY --localstatedir!')
1572fi
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001573AC_MSG_RESULT(${quagga_statedir})
1574AC_SUBST(quagga_statedir)
paula159ed92003-06-04 11:01:45 +00001575
paule8f29842003-08-12 13:08:31 +00001576AC_DEFINE_UNQUOTED(PATH_ZEBRA_PID, "$quagga_statedir/zebra.pid",zebra PID)
1577AC_DEFINE_UNQUOTED(PATH_RIPD_PID, "$quagga_statedir/ripd.pid",ripd PID)
1578AC_DEFINE_UNQUOTED(PATH_RIPNGD_PID, "$quagga_statedir/ripngd.pid",ripngd PID)
1579AC_DEFINE_UNQUOTED(PATH_BGPD_PID, "$quagga_statedir/bgpd.pid",bgpd PID)
1580AC_DEFINE_UNQUOTED(PATH_OSPFD_PID, "$quagga_statedir/ospfd.pid",ospfd PID)
1581AC_DEFINE_UNQUOTED(PATH_OSPF6D_PID, "$quagga_statedir/ospf6d.pid",ospf6d PID)
Timo Teräsdafa05e2017-01-19 17:27:01 +02001582AC_DEFINE_UNQUOTED(PATH_NHRPD_PID, "$quagga_statedir/nhrpd.pid",nhrpd PID)
jardin9e867fe2003-12-23 08:56:18 +00001583AC_DEFINE_UNQUOTED(PATH_ISISD_PID, "$quagga_statedir/isisd.pid",isisd PID)
Everton Marques871dbcf2009-08-11 15:43:05 -03001584AC_DEFINE_UNQUOTED(PATH_PIMD_PID, "$quagga_statedir/pimd.pid",pimd PID)
ajsd0199432004-12-22 14:03:52 +00001585AC_DEFINE_UNQUOTED(PATH_WATCHQUAGGA_PID, "$quagga_statedir/watchquagga.pid",watchquagga PID)
paule8f29842003-08-12 13:08:31 +00001586AC_DEFINE_UNQUOTED(ZEBRA_SERV_PATH, "$quagga_statedir/zserv.api",zebra api socket)
1587AC_DEFINE_UNQUOTED(ZEBRA_VTYSH_PATH, "$quagga_statedir/zebra.vty",zebra vty socket)
1588AC_DEFINE_UNQUOTED(RIP_VTYSH_PATH, "$quagga_statedir/ripd.vty",rip vty socket)
1589AC_DEFINE_UNQUOTED(RIPNG_VTYSH_PATH, "$quagga_statedir/ripngd.vty",ripng vty socket)
1590AC_DEFINE_UNQUOTED(BGP_VTYSH_PATH, "$quagga_statedir/bgpd.vty",bgpd vty socket)
1591AC_DEFINE_UNQUOTED(OSPF_VTYSH_PATH, "$quagga_statedir/ospfd.vty",ospfd vty socket)
1592AC_DEFINE_UNQUOTED(OSPF6_VTYSH_PATH, "$quagga_statedir/ospf6d.vty",ospf6d vty socket)
Timo Teräsdafa05e2017-01-19 17:27:01 +02001593AC_DEFINE_UNQUOTED(NHRP_VTYSH_PATH, "$quagga_statedir/nhrpd.vty",nhrpd vty socket)
jardin9e867fe2003-12-23 08:56:18 +00001594AC_DEFINE_UNQUOTED(ISIS_VTYSH_PATH, "$quagga_statedir/isisd.vty",isisd vty socket)
Everton Marques871dbcf2009-08-11 15:43:05 -03001595AC_DEFINE_UNQUOTED(PIM_VTYSH_PATH, "$quagga_statedir/pimd.vty",pimd vty socket)
ajs515210b2004-12-22 15:35:12 +00001596AC_DEFINE_UNQUOTED(DAEMON_VTY_DIR, "$quagga_statedir",daemon vty directory)
paul7ea487b2003-03-17 02:05:07 +00001597
paul1eb8ef22005-04-07 07:30:20 +00001598dnl -------------------------------
1599dnl Quagga sources should always be
1600dnl current wrt interfaces. Dont
1601dnl allow deprecated interfaces to
1602dnl be exposed.
1603dnl -------------------------------
1604AC_DEFINE(QUAGGA_NO_DEPRECATED_INTERFACES, 1, Hide deprecated interfaces)
1605
paul7ea487b2003-03-17 02:05:07 +00001606dnl ---------------------------
1607dnl Check htonl works correctly
1608dnl ---------------------------
1609AC_MSG_CHECKING(for working htonl)
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001610AC_CACHE_VAL(ac_cv_htonl_works,
1611 [AC_LINK_IFELSE([AC_LANG_PROGRAM([QUAGGA_INCLUDES],[htonl (0);])],
1612 [ac_cv_htonl_works=yes], [ac_cv_htonl_works=no])
1613 ]
1614)
paul7ea487b2003-03-17 02:05:07 +00001615AC_MSG_RESULT($ac_cv_htonl_works)
1616
Avneesh Sachdev07e5b642016-04-04 10:54:55 -07001617AC_CONFIG_FILES([Makefile lib/Makefile qpb/Makefile zebra/Makefile ripd/Makefile
ajsd0199432004-12-22 14:03:52 +00001618 ripngd/Makefile bgpd/Makefile ospfd/Makefile watchquagga/Makefile
Paul Jakma336724d2015-05-11 15:13:31 +01001619 ospf6d/Makefile isisd/Makefile vtysh/Makefile
David Lamparterf281ab92013-02-26 16:21:20 +01001620 doc/Makefile ospfclient/Makefile tests/Makefile m4/Makefile
Timo Teräsdafa05e2017-01-19 17:27:01 +02001621 pimd/Makefile nhrpd/Makefile
David Lamparter5bb7e4d2013-02-26 17:53:30 +01001622 tests/bgpd.tests/Makefile
David Lamparterc69905b2013-01-24 01:39:14 +01001623 tests/libzebra.tests/Makefile
David Lamparterf281ab92013-02-26 16:21:20 +01001624 redhat/Makefile
gdt69f1fc22004-08-27 15:57:35 +00001625 pkgsrc/Makefile
Avneesh Sachdevef20ef72016-04-04 10:54:57 -07001626 fpm/Makefile
paul670bbf12004-11-12 09:05:00 +00001627 redhat/quagga.spec
gdtb7a97f82004-07-23 16:23:56 +00001628 lib/version.h
paul14c17fd2004-11-07 22:34:23 +00001629 doc/defines.texi
hassof695b012005-04-02 19:03:39 +00001630 isisd/topology/Makefile
gdtcbd04082004-08-31 18:16:36 +00001631 pkgsrc/bgpd.sh pkgsrc/ospf6d.sh pkgsrc/ospfd.sh
paulf31293a2004-11-12 09:27:04 +00001632 pkgsrc/ripd.sh pkgsrc/ripngd.sh pkgsrc/zebra.sh])
paul26275b02005-04-11 07:10:47 +00001633AC_CONFIG_FILES([solaris/Makefile])
1634
paul670bbf12004-11-12 09:05:00 +00001635AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl])
hasso48577192004-11-19 06:41:49 +00001636## Hack, but working solution to avoid rebuilding of quagga.info.
1637## It's already in CVS until texinfo 4.7 is more common.
paul14c17fd2004-11-07 22:34:23 +00001638AC_OUTPUT
paul7ea487b2003-03-17 02:05:07 +00001639
1640echo "
hassoc89f6492004-08-26 12:21:28 +00001641Quagga configuration
1642--------------------
1643quagga version : ${PACKAGE_VERSION}
Joachim Nilsson1080c132012-05-30 08:15:48 +02001644host operating system : ${host_os}
paul7ea487b2003-03-17 02:05:07 +00001645source code location : ${srcdir}
1646compiler : ${CC}
1647compiler flags : ${CFLAGS}
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001648make : ${MAKE-make}
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001649linker flags : ${LDFLAGS} ${LIBS} ${LIBCAP} ${LIBREADLINE} ${LIBM}
paule8f29842003-08-12 13:08:31 +00001650state file directory : ${quagga_statedir}
pauldc7a2bf2003-10-22 00:07:44 +00001651config file directory : `eval echo \`echo ${sysconfdir}\``
gdtd6b72f72003-12-03 17:24:27 +00001652example directory : `eval echo \`echo ${exampledir}\``
paul8d4aee52003-06-06 00:30:35 +00001653user to run as : ${enable_user}
1654group to run as : ${enable_group}
1655group for vty sockets : ${enable_vty_group}
gdtaa593d52003-12-22 20:15:53 +00001656config file mask : ${enable_configfile_mask}
1657log file mask : ${enable_logfile_mask}
Avneesh Sachdev07e5b642016-04-04 10:54:55 -07001658zebra protobuf enabled : ${have_protobuf:-no}
pauldc7a2bf2003-10-22 00:07:44 +00001659
1660The above user and group must have read/write access to the state file
Paul Jakma105b8232006-05-28 08:02:41 +00001661directory and to the config files in the config file directory."
1662
1663if test x"$quagga_cv_gnu_make" = x"no"; then echo "
1664Warning: The ${MAKE-make} programme detected, either in your path or
1665via the MAKE variable, is not GNU Make. GNU make may be installed as
1666gmake on some systems. and is required to complete a build of Quagga
1667" > /dev/stderr
1668fi