blob: 6864a29ca0a7e06ccc9e071c7fbebed445a77cba [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##
paule8f29842003-08-12 13:08:31 +00008AC_PREREQ(2.53)
paul7ea487b2003-03-17 02:05:07 +00009
David Lamparterd8d54ab2015-03-04 07:30:19 +010010AC_INIT(Quagga, 0.99.25-dev, [https://bugzilla.quagga.net])
David Lamparter7abd8752014-11-22 10:43:29 -080011CONFIG_ARGS="$*"
12AC_SUBST(CONFIG_ARGS)
paulfa1253d2003-09-24 05:09:26 +000013AC_CONFIG_SRCDIR(lib/zebra.h)
Paul Jakma62c9f502009-07-19 17:33:21 +010014AC_CONFIG_MACRO_DIR([m4])
ajsdfb9a542005-04-11 14:55:55 +000015
16dnl -----------------------------------
17dnl Get hostname and other information.
18dnl -----------------------------------
19AC_CANONICAL_BUILD()
20AC_CANONICAL_HOST()
21AC_CANONICAL_TARGET()
22
gdt81b81822004-04-07 22:48:47 +000023AM_INIT_AUTOMAKE(1.6)
David Lampartercc813082015-02-10 11:39:39 +010024AM_SILENT_RULES([yes])
Hasso Tepper303bb002013-01-13 17:45:28 +000025AC_CONFIG_HEADERS(config.h)
paul7ea487b2003-03-17 02:05:07 +000026
David Lamparter0be793e2012-11-27 01:34:56 +000027AC_PATH_PROG(PERL, perl)
Jeremy Jackson7ec57362009-01-21 22:10:40 -050028AC_CHECK_PROG([GAWK],[gawk],[gawk],[not-in-PATH])
29if test "x$GAWK" = "xnot-in-PATH" ; then
30 AC_MSG_ERROR([GNU awk is required for lib/memtype.h made by memtypes.awk.
31BSD awk complains: awk: gensub doesn't support backreferences (subst "\1") ])
32fi
paul03ecfb62005-04-16 15:38:23 +000033AC_ARG_VAR([GAWK],[GNU AWK])
34
gdtd6b72f72003-12-03 17:24:27 +000035dnl default is to match previous behavior
gdtc4f0efe2003-12-04 15:39:25 +000036exampledir=${sysconfdir}
gdtd6b72f72003-12-03 17:24:27 +000037AC_ARG_ENABLE([exampledir],
David Lamparterb6fa7602014-06-28 22:15:59 +020038 AS_HELP_STRING([--enable-exampledir],
gdtd6b72f72003-12-03 17:24:27 +000039 [specify alternate directory for examples]),
40 exampledir="$enableval",)
gdtc4f0efe2003-12-04 15:39:25 +000041dnl XXX add --exampledir to autoconf standard directory list somehow
gdtd6b72f72003-12-03 17:24:27 +000042AC_SUBST(exampledir)
43
gdtcbd04082004-08-31 18:16:36 +000044dnl default is to match previous behavior
45pkgsrcrcdir=""
46pkgsrcdir=""
47AC_ARG_ENABLE([pkgsrcrcdir],
David Lamparterb6fa7602014-06-28 22:15:59 +020048 AS_HELP_STRING([--enable-pkgsrcrcdir],
gdtcbd04082004-08-31 18:16:36 +000049 [specify directory for rc.d scripts]),
50 pkgsrcrcdir="$enableval"; pkgsrcdir="pkgsrc",)
51dnl XXX add --pkgsrcrcdir to autoconf standard directory list somehow
52AC_SUBST(pkgsrcdir)
53AC_SUBST(pkgsrcrcdir)
54
paul7ea487b2003-03-17 02:05:07 +000055dnl ------------
56dnl Check CFLAGS
57dnl ------------
58AC_ARG_WITH(cflags,
59[ --with-cflags Set CFLAGS for use in compilation.])
60if test "x$with_cflags" != "x" ; then
61 CFLAGS="$with_cflags" ; cflags_specified=yes ;
62elif test -n "$CFLAGS" ; then
63 cflags_specified=yes ;
64fi
65
hasso1969e4b2005-03-27 13:07:23 +000066dnl --------------------
67dnl Check CC and friends
68dnl --------------------
Paul P Komkoff Jr46bc0e42008-08-13 16:17:04 +010069AC_LANG([C])
paul7ea487b2003-03-17 02:05:07 +000070AC_PROG_CC
hasso1969e4b2005-03-27 13:07:23 +000071AC_PROG_CPP
Paul P Komkoff Jr46bc0e42008-08-13 16:17:04 +010072AM_PROG_CC_C_O
hasso1969e4b2005-03-27 13:07:23 +000073AC_PROG_EGREP
Greg Troxel553bdfe2007-02-06 20:10:35 +000074
75dnl autoconf 2.59 appears not to support AC_PROG_SED
76dnl AC_PROG_SED
77AC_CHECK_PROG([SED],[sed],[sed],[/bin/false])
hasso1969e4b2005-03-27 13:07:23 +000078
Paul Jakmafa482832012-03-08 13:51:21 +000079dnl pdflatex and latexmk are needed to build HACKING.pdf
80AC_CHECK_PROG([PDFLATEX],[pdflatex],[pdflatex],[/bin/false])
81AC_CHECK_PROG([LATEXMK],[latexmk],[latexmk],[/bin/false])
82if test "x$PDFLATEX" = "x/bin/false" -o "x$LATEXMK" = "x/bin/false"; then
83 AC_MSG_WARN([Will not be able to make PDF versions of TeX documents])
84else
85 HAVE_LATEX=true
86fi
87AM_CONDITIONAL([HAVE_LATEX], [test "x$HAVE_LATEX" = "xtrue"])
88
David Lamparter3a7e83c2015-03-03 09:55:51 +010089if test "x${GCC}" != "xyes" ; then
paul6a4b8832005-11-26 08:28:00 +000090 AC_MSG_CHECKING([whether we are using SunPro compiler])
91 AC_EGREP_CPP([^__SUNPRO_C.*0x5(7|8|9)], ["__SUNPRO_C" __SUNPRO_C],
92 [AC_MSG_RESULT([no])],
93 [COMPILER="SUNPRO"
94 AC_MSG_RESULT([yes])]
95 )
96fi
paul7ea487b2003-03-17 02:05:07 +000097
paula49c0ff2004-09-30 06:08:58 +000098dnl ---------------------------------------------
paul7ea487b2003-03-17 02:05:07 +000099dnl If CLFAGS doesn\'t exist set default value
paula49c0ff2004-09-30 06:08:58 +0000100dnl AC_PROG_CC will have set minimal default
101dnl already, eg "-O2 -g" for gcc, "-g" for others
paul27eebb32004-07-22 18:16:59 +0000102dnl (Wall is gcc specific... have to make sure
103dnl gcc is being used before setting it)
104dnl
paul6a4b8832005-11-26 08:28:00 +0000105dnl Sun Studio 10 / SunPro 5.7 is also supported,
106dnl so lets set some sane CFLAGS for it.
107dnl ---------------------------------------------
hasso1969e4b2005-03-27 13:07:23 +0000108
David Lamparter3a7e83c2015-03-03 09:55:51 +0100109AC_USE_SYSTEM_EXTENSIONS()
110AC_DEFUN([AC_C_FLAG], [{
111 AC_LANG_PUSH(C)
112 ac_c_flag_save="$CFLAGS"
113 CFLAGS="$CFLAGS $1"
114 AC_MSG_CHECKING([[whether $CC supports $1]])
115 AC_COMPILE_IFELSE(
116 [AC_LANG_PROGRAM([[]])],
117 [
118 AC_MSG_RESULT([yes])
119 m4_if([$3], [], [], [
120 CFLAGS="$ac_c_flag_save"
121 $3
122 ])
123 ], [
124 CFLAGS="$ac_c_flag_save"
125 AC_MSG_RESULT([no])
126 $2
127 ])
128 AC_LANG_POP(C)
129 }])
130
paul6a4b8832005-11-26 08:28:00 +0000131AC_MSG_CHECKING([whether to set a default CFLAGS])
132if test "x${cflags_specified}" = "x" ; then
133 case ${COMPILER} in
paul6a4b8832005-11-26 08:28:00 +0000134 "SUNPRO")
David Lamparter3a7e83c2015-03-03 09:55:51 +0100135 CFLAGS="-xO4 -v -g -xspace -xcode=pic32 -xstrconst -xc99"
136 AC_MSG_RESULT([SunPro default])
137 ;;
paul6a4b8832005-11-26 08:28:00 +0000138 *)
David Lamparter3a7e83c2015-03-03 09:55:51 +0100139 AC_MSG_RESULT([autodetecting])
140
141 AC_C_FLAG([-diag-error 10006])
142 AC_C_FLAG([-std=gnu99])
143 AC_C_FLAG([-g])
144 AC_C_FLAG([-Os], [
145 AC_C_FLAG([-O2])
146 ])
Paul Jakma52c0bc72015-08-20 21:30:17 +0100147 AC_C_FLAG([-fpie])
David Lamparter3a7e83c2015-03-03 09:55:51 +0100148 AC_C_FLAG([-fno-omit-frame-pointer])
149 AC_C_FLAG([-Wall])
150 AC_C_FLAG([-Wextra])
151 AC_C_FLAG([-Wmissing-prototypes])
152 AC_C_FLAG([-Wmissing-declarations])
153 AC_C_FLAG([-Wpointer-arith])
154 AC_C_FLAG([-Wbad-function-cast])
155 AC_C_FLAG([-Wwrite-strings])
156 if test x"${enable_gcc_ultra_verbose}" = x"yes" ; then
157 AC_C_FLAG([-Wcast-qual])
158 AC_C_FLAG([-Wstrict-prototypes])
159 AC_C_FLAG([-Wmissing-noreturn])
160 AC_C_FLAG([-Wmissing-format-attribute])
161 AC_C_FLAG([-Wunreachable-code])
162 AC_C_FLAG([-Wpacked])
163 AC_C_FLAG([-Wpadded])
164 else
165 AC_C_FLAG([-Wno-unused-result])
166 fi
167 AC_C_FLAG([-Wno-unused-parameter])
168 AC_C_FLAG([-Wno-missing-field-initializers])
169 # ICC emits a broken warning for const char *x = a ? "b" : "c";
170 # for some reason the string consts get 'promoted' to char *,
171 # triggering a const to non-const conversion warning.
172 AC_C_FLAG([-diag-disable 3179])
paul6a4b8832005-11-26 08:28:00 +0000173 ;;
174 esac
175else
176 AC_MSG_RESULT([CFLAGS supplied by user])
hasso1969e4b2005-03-27 13:07:23 +0000177fi
178
David Lamparterc0bedeb2015-03-03 10:00:43 +0100179if test x"${enable_werror}" = x"yes" ; then
180 WERROR="-Werror"
181fi
182AC_SUBST(WERROR)
183
paul7ea487b2003-03-17 02:05:07 +0000184dnl --------------
185dnl Check programs
186dnl --------------
paul7ea487b2003-03-17 02:05:07 +0000187AC_PROG_INSTALL
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000188AC_PROG_LN_S
paul7ea487b2003-03-17 02:05:07 +0000189AC_PROG_MAKE_SET
190AC_CHECK_TOOL(AR, ar)
paul7ea487b2003-03-17 02:05:07 +0000191
Paul Jakma105b8232006-05-28 08:02:41 +0000192dnl ---------------------------
193dnl We, perhaps unfortunately,
194dnl depend on GNU Make specific
195dnl constructs.
196dnl Give the user a warning if
197dnl not GNU Make.
198dnl ---------------------------
199AC_CACHE_CHECK([if ${MAKE-make} is GNU make], [quagga_cv_gnu_make],
200 [quagga_cv_gnu_make=no
201 if ${MAKE-make} --version 2>/dev/null | \
202 grep '^GNU Make ' >/dev/null ; then
203 quagga_cv_gnu_make=yes;
204 fi
205 ]
206)
207
Paul Jakmad46d2a22007-05-10 16:53:04 +0000208dnl -----------------
209dnl System extensions
210dnl -----------------
Paul Jakmad46d2a22007-05-10 16:53:04 +0000211AC_GNU_SOURCE
paul7ea487b2003-03-17 02:05:07 +0000212
gdt87efd642004-06-30 17:36:11 +0000213dnl -------
214dnl libtool
215dnl -------
Paul Jakma52c0bc72015-08-20 21:30:17 +0100216LT_INIT
gdt87efd642004-06-30 17:36:11 +0000217
paul7ea487b2003-03-17 02:05:07 +0000218dnl ----------------------
219dnl Packages configuration
220dnl ----------------------
Joachim Nilsson1080c132012-05-30 08:15:48 +0200221AC_ARG_WITH(pkg-extra-version,
222 AS_HELP_STRING([--with-pkg-extra-version=VER], [add extra version field, for packagers/distributions]),
223 [EXTRAVERSION=$withval],)
David Lamparter0be793e2012-11-27 01:34:56 +0000224AC_ARG_WITH(pkg-git-version,
225 AS_HELP_STRING([--with-pkg-git-version], [add git information to MOTD and build version string]),
David Lampartera16dcf72012-12-13 11:20:50 +0100226 [ test "x$withval" != "xno" && with_pkg_git_version="yes" ])
paul7ea487b2003-03-17 02:05:07 +0000227AC_ARG_ENABLE(vtysh,
David Lamparterb6fa7602014-06-28 22:15:59 +0200228 AS_HELP_STRING([--enable-vtysh], [include integrated vty shell for Quagga]))
Joakim Tjernlundcbcd9bf2009-02-16 09:40:39 +0100229AC_ARG_ENABLE(doc,
David Lamparterb6fa7602014-06-28 22:15:59 +0200230 AS_HELP_STRING([--disable-doc], [do not build docs]))
paul7ea487b2003-03-17 02:05:07 +0000231AC_ARG_ENABLE(zebra,
David Lamparterb6fa7602014-06-28 22:15:59 +0200232 AS_HELP_STRING([--disable-zebra], [do not build zebra daemon]))
paul7ea487b2003-03-17 02:05:07 +0000233AC_ARG_ENABLE(bgpd,
David Lamparterb6fa7602014-06-28 22:15:59 +0200234 AS_HELP_STRING([--disable-bgpd], [do not build bgpd]))
paul7ea487b2003-03-17 02:05:07 +0000235AC_ARG_ENABLE(ripd,
David Lamparterb6fa7602014-06-28 22:15:59 +0200236 AS_HELP_STRING([--disable-ripd], [do not build ripd]))
paul7ea487b2003-03-17 02:05:07 +0000237AC_ARG_ENABLE(ripngd,
David Lamparterb6fa7602014-06-28 22:15:59 +0200238 AS_HELP_STRING([--disable-ripngd], [do not build ripngd]))
paul7ea487b2003-03-17 02:05:07 +0000239AC_ARG_ENABLE(ospfd,
David Lamparterb6fa7602014-06-28 22:15:59 +0200240 AS_HELP_STRING([--disable-ospfd], [do not build ospfd]))
paul7ea487b2003-03-17 02:05:07 +0000241AC_ARG_ENABLE(ospf6d,
David Lamparterb6fa7602014-06-28 22:15:59 +0200242 AS_HELP_STRING([--disable-ospf6d], [do not build ospf6d]))
ajsd0199432004-12-22 14:03:52 +0000243AC_ARG_ENABLE(watchquagga,
David Lamparterb6fa7602014-06-28 22:15:59 +0200244 AS_HELP_STRING([--disable-watchquagga], [do not build watchquagga]))
jardin9e867fe2003-12-23 08:56:18 +0000245AC_ARG_ENABLE(isisd,
David Lamparter656a2c02015-02-09 11:36:10 +0100246 AS_HELP_STRING([--disable-isisd], [do not build isisd]))
Everton Marques871dbcf2009-08-11 15:43:05 -0300247AC_ARG_ENABLE(pimd,
David Lamparterb6fa7602014-06-28 22:15:59 +0200248 AS_HELP_STRING([--enable-pimd], [build pimd]))
paul7ea487b2003-03-17 02:05:07 +0000249AC_ARG_ENABLE(bgp-announce,
David Lamparterb6fa7602014-06-28 22:15:59 +0200250 AS_HELP_STRING([--disable-bgp-announce,], [turn off BGP route announcement]))
paul7ea487b2003-03-17 02:05:07 +0000251AC_ARG_ENABLE(snmp,
David Lamparterb6fa7602014-06-28 22:15:59 +0200252 AS_HELP_STRING([--enable-snmp=ARG], [enable SNMP support (smux or agentx)]))
paul7ea487b2003-03-17 02:05:07 +0000253AC_ARG_WITH(libpam,
David Lamparterb6fa7602014-06-28 22:15:59 +0200254 AS_HELP_STRING([--with-libpam], [use libpam for PAM support in vtysh]))
hasso71c0fb52003-05-25 20:18:13 +0000255AC_ARG_ENABLE(tcp-zebra,
David Lamparterb6fa7602014-06-28 22:15:59 +0200256 AS_HELP_STRING([--enable-tcp-zebra], [enable TCP/IP socket connection between zebra and protocol daemon]))
paul7ea487b2003-03-17 02:05:07 +0000257AC_ARG_ENABLE(opaque-lsa,
David Lamparterb6fa7602014-06-28 22:15:59 +0200258 AS_HELP_STRING([--disable-opaque-lsa],[do not build OSPF Opaque-LSA with OSPFAPI support (RFC2370)]))
paul1ef74ef2003-03-21 15:16:05 +0000259AC_ARG_ENABLE(ospfapi,
David Lamparterb6fa7602014-06-28 22:15:59 +0200260 AS_HELP_STRING([--disable-ospfapi], [do not build OSPFAPI to access the OSPF LSA Database]))
paul1ef74ef2003-03-21 15:16:05 +0000261AC_ARG_ENABLE(ospfclient,
David Lamparterb6fa7602014-06-28 22:15:59 +0200262 AS_HELP_STRING([--disable-ospfclient], [do not build OSPFAPI client for OSPFAPI,
263 (this is the default if --disable-ospfapi is set)]))
paul7ea487b2003-03-17 02:05:07 +0000264AC_ARG_ENABLE(ospf-te,
David Lamparterb6fa7602014-06-28 22:15:59 +0200265 AS_HELP_STRING([--disable-ospf-te],[disable Traffic Engineering Extension to OSPF]))
paul7ea487b2003-03-17 02:05:07 +0000266AC_ARG_ENABLE(multipath,
David Lamparterb6fa7602014-06-28 22:15:59 +0200267 AS_HELP_STRING([--enable-multipath=ARG], [enable multipath function, ARG must be digit]))
Paul P Komkoff Jrfe86b482008-08-13 16:56:05 +0100268AC_ARG_ENABLE(user,
David Lamparterb6fa7602014-06-28 22:15:59 +0200269 AS_HELP_STRING([--enable-user=USER], [user to run Quagga suite as (default quagga)]))
Paul P Komkoff Jrfe86b482008-08-13 16:56:05 +0100270AC_ARG_ENABLE(group,
David Lamparterb6fa7602014-06-28 22:15:59 +0200271 AS_HELP_STRING([--enable-group=GROUP], [group to run Quagga suite as (default quagga)]))
pauledd7c242003-06-04 13:59:38 +0000272AC_ARG_ENABLE(vty_group,
David Lamparterb6fa7602014-06-28 22:15:59 +0200273 AS_HELP_STRING([--enable-vty-group=ARG], [set vty sockets to have specified group as owner]))
gdtaa593d52003-12-22 20:15:53 +0000274AC_ARG_ENABLE(configfile_mask,
David Lamparterb6fa7602014-06-28 22:15:59 +0200275 AS_HELP_STRING([--enable-configfile-mask=ARG], [set mask for config files]))
gdtaa593d52003-12-22 20:15:53 +0000276AC_ARG_ENABLE(logfile_mask,
David Lamparterb6fa7602014-06-28 22:15:59 +0200277 AS_HELP_STRING([--enable-logfile-mask=ARG], [set mask for log files]))
pauledd7c242003-06-04 13:59:38 +0000278
hasso71c0fb52003-05-25 20:18:13 +0000279AC_ARG_ENABLE(rtadv,
David Lamparterb6fa7602014-06-28 22:15:59 +0200280 AS_HELP_STRING([--disable-rtadv], [disable IPV6 router advertisement feature]))
hassoca776982004-06-12 14:33:05 +0000281AC_ARG_ENABLE(irdp,
David Lamparterb6fa7602014-06-28 22:15:59 +0200282 AS_HELP_STRING([--enable-irdp], [enable IRDP server support in zebra]))
hassof695b012005-04-02 19:03:39 +0000283AC_ARG_ENABLE(isis_topology,
David Lamparterb6fa7602014-06-28 22:15:59 +0200284 AS_HELP_STRING([--enable-isis-topology], [enable IS-IS topology generator]))
hasso41d3fc92004-04-06 11:59:00 +0000285AC_ARG_ENABLE(capabilities,
David Lamparterb6fa7602014-06-28 22:15:59 +0200286 AS_HELP_STRING([--disable-capabilities], [disable using POSIX capabilities]))
Stephen Hemminger47f6aef2013-01-04 22:29:22 +0000287AC_ARG_ENABLE(rusage,
David Lamparterb6fa7602014-06-28 22:15:59 +0200288 AS_HELP_STRING([--disable-rusage], [disable using getrusage]))
paul6b6942f2004-10-22 04:55:05 +0000289AC_ARG_ENABLE(gcc_ultra_verbose,
David Lamparterb6fa7602014-06-28 22:15:59 +0200290 AS_HELP_STRING([--enable-gcc-ultra-verbose], [enable ultra verbose GCC warnings]))
Paul Jakma3453a712009-06-12 14:21:02 +0100291AC_ARG_ENABLE(linux24_tcp_md5,
David Lamparterb6fa7602014-06-28 22:15:59 +0200292 AS_HELP_STRING([--enable-linux24-tcp-md5], [enable support for old, Linux-2.4 RFC2385 patch]))
ajs3cade262004-12-29 17:50:22 +0000293AC_ARG_ENABLE(gcc-rdynamic,
David Lamparterb6fa7602014-06-28 22:15:59 +0200294 AS_HELP_STRING([--enable-gcc-rdynamic], [enable linking with -rdynamic for better backtraces (default if gcc)]))
David Lamparter8c99b4c2013-08-01 07:43:36 +0000295AC_ARG_ENABLE(backtrace,
David Lamparterb6fa7602014-06-28 22:15:59 +0200296 AS_HELP_STRING([--disable-backtrace,], [disable crash backtraces (default autodetect)]))
ajs924b9222005-04-16 17:11:24 +0000297AC_ARG_ENABLE(time-check,
David Lamparterb6fa7602014-06-28 22:15:59 +0200298 AS_HELP_STRING([--disable-time-check], [disable slow thread warning messages]))
Jeremy Jackson25f45882009-01-12 16:06:12 -0500299AC_ARG_ENABLE(pcreposix,
David Lamparterb6fa7602014-06-28 22:15:59 +0200300 AS_HELP_STRING([--enable-pcreposix], [enable using PCRE Posix libs for regex functions]))
Avneesh Sachdev5adc2522012-11-13 22:48:59 +0000301AC_ARG_ENABLE(fpm,
David Lamparterb6fa7602014-06-28 22:15:59 +0200302 AS_HELP_STRING([--enable-fpm], [enable Forwarding Plane Manager support]))
David Lamparterc0bedeb2015-03-03 10:00:43 +0100303AC_ARG_ENABLE(werror,
304 AS_HELP_STRING([--enable-werror], [enable -Werror (recommended for developers only)]))
paul6b6942f2004-10-22 04:55:05 +0000305
David Lamparter8c99b4c2013-08-01 07:43:36 +0000306if test x"${enable_gcc_rdynamic}" != x"no" ; then
307 if test x"${enable_gcc_rdynamic}" = x"yes" -o x"$COMPILER" = x"GCC"; then
308 LDFLAGS="${LDFLAGS} -rdynamic"
309 fi
ajs3cade262004-12-29 17:50:22 +0000310fi
311
ajs924b9222005-04-16 17:11:24 +0000312if test x"${enable_time_check}" != x"no" ; then
313 if test x"${enable_time_check}" = x"yes" -o x"${enable_time_check}" = x ; then
314 AC_DEFINE(CONSUMED_TIME_CHECK,5000000,Consumed Time Check)
315 else
316 AC_DEFINE_UNQUOTED(CONSUMED_TIME_CHECK,$enable_time_check,Consumed Time Check)
317 fi
318fi
319
Avneesh Sachdev5adc2522012-11-13 22:48:59 +0000320if test "${enable_fpm}" = "yes"; then
321 AC_DEFINE(HAVE_FPM,,Forwarding Plane Manager support)
322fi
323
paul7ea487b2003-03-17 02:05:07 +0000324if test "${enable_tcp_zebra}" = "yes"; then
325 AC_DEFINE(HAVE_TCP_ZEBRA,,Use TCP for zebra communication)
326fi
327
Paul Jakma36de2612011-03-22 10:18:05 +0000328if test "${enable_opaque_lsa}" != "no"; then
paul7ea487b2003-03-17 02:05:07 +0000329 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
330fi
331
Paul Jakma36de2612011-03-22 10:18:05 +0000332if test "${enable_ospf_te}" != "no"; then
paul7ea487b2003-03-17 02:05:07 +0000333 AC_DEFINE(HAVE_OPAQUE_LSA,,OSPF Opaque LSA)
334 AC_DEFINE(HAVE_OSPF_TE,,OSPF TE)
335fi
336
Paul Jakma3453a712009-06-12 14:21:02 +0100337if test "${enable_linux24_tcp_md5}" = "yes"; then
338 AC_DEFINE(HAVE_TCP_MD5_LINUX24,,Old Linux 2.4 TCP MD5 Signature Patch)
339fi
340
gdtd2a0ccc2003-12-03 18:13:48 +0000341AC_MSG_CHECKING(if zebra should be configurable to send Route Advertisements)
342if test "${enable_rtadv}" != "no"; then
hasso71c0fb52003-05-25 20:18:13 +0000343 AC_MSG_RESULT(yes)
gdtd2a0ccc2003-12-03 18:13:48 +0000344 AC_DEFINE(HAVE_RTADV,,Enable IPv6 Routing Advertisement support)
paul2487bea2003-05-25 23:51:31 +0000345else
346 AC_MSG_RESULT(no)
hasso71c0fb52003-05-25 20:18:13 +0000347fi
paul7ea487b2003-03-17 02:05:07 +0000348
hassoca776982004-06-12 14:33:05 +0000349if test "${enable_irdp}" = "yes"; then
350 AC_DEFINE(HAVE_IRDP,, IRDP )
351fi
352
David Lamparter656a2c02015-02-09 11:36:10 +0100353if test "${enable_isisd}" != "no" && test "${enable_isis_topology}" = yes; then
hassof695b012005-04-02 19:03:39 +0000354 AC_DEFINE(TOPOLOGY_GENERATE,,Enable IS-IS topology generator code)
David Lamparteree1ac2d2012-07-19 12:58:59 +0200355 ISIS_TOPOLOGY_INCLUDES="-I\$(srcdir)/topology"
hassof695b012005-04-02 19:03:39 +0000356 ISIS_TOPOLOGY_DIR="topology"
357 ISIS_TOPOLOGY_LIB="./topology/libtopology.a"
358fi
359
360AC_SUBST(ISIS_TOPOLOGY_INCLUDES)
361AC_SUBST(ISIS_TOPOLOGY_DIR)
362AC_SUBST(ISIS_TOPOLOGY_LIB)
363
paul79cb2162003-06-06 12:19:53 +0000364if test "${enable_user}" = "yes" || test x"${enable_user}" = x""; then
paule8f29842003-08-12 13:08:31 +0000365 enable_user="quagga"
pauledd7c242003-06-04 13:59:38 +0000366elif test "${enable_user}" = "no"; then
367 enable_user="root"
368fi
pauledd7c242003-06-04 13:59:38 +0000369
paul79cb2162003-06-06 12:19:53 +0000370if test "${enable_group}" = "yes" || test x"${enable_group}" = x""; then
paule8f29842003-08-12 13:08:31 +0000371 enable_group="quagga"
pauledd7c242003-06-04 13:59:38 +0000372elif test "${enable_group}" = "no"; then
373 enable_group="root"
374fi
pauledd7c242003-06-04 13:59:38 +0000375
376if test x"${enable_vty_group}" = x"yes" ; then
paul8d4aee52003-06-06 00:30:35 +0000377 AC_MSG_ERROR([--enable-vty-group requires a group as argument, not yes])
paul79cb2162003-06-06 12:19:53 +0000378elif test x"${enable_vty_group}" != x""; then
paul8d4aee52003-06-06 00:30:35 +0000379 if test x"${enable_vty_group}" != x"no"; then
pauledd7c242003-06-04 13:59:38 +0000380 AC_DEFINE_UNQUOTED(VTY_GROUP, "${enable_vty_group}", VTY Sockets Group)
381 fi
382fi
paul26275b02005-04-11 07:10:47 +0000383AC_SUBST([enable_user])
384AC_SUBST([enable_group])
385AC_SUBST([enable_vty_group])
386AC_DEFINE_UNQUOTED(QUAGGA_USER, "${enable_user}", Quagga User)
387AC_DEFINE_UNQUOTED(QUAGGA_GROUP, "${enable_group}", Quagga Group)
pauledd7c242003-06-04 13:59:38 +0000388
gdtaa593d52003-12-22 20:15:53 +0000389enable_configfile_mask=${enable_configfile_mask:-0600}
390AC_DEFINE_UNQUOTED(CONFIGFILE_MASK, ${enable_configfile_mask}, Mask for config files)
391
392enable_logfile_mask=${enable_logfile_mask:-0600}
393AC_DEFINE_UNQUOTED(LOGFILE_MASK, ${enable_logfile_mask}, Mask for log files)
394
paul7ea487b2003-03-17 02:05:07 +0000395MULTIPATH_NUM=1
396
397case "${enable_multipath}" in
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000398 [[0-9]|[1-9][0-9]])
paul7ea487b2003-03-17 02:05:07 +0000399 MULTIPATH_NUM="${enable_multipath}"
400 ;;
401 "")
402 ;;
403 *)
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000404 AC_MSG_FAILURE([Please specify digit to enable multipath ARG])
paul7ea487b2003-03-17 02:05:07 +0000405 ;;
406esac
407
paul7ea487b2003-03-17 02:05:07 +0000408AC_SUBST(MULTIPATH_NUM)
409
Joachim Nilsson1080c132012-05-30 08:15:48 +0200410dnl -----------------------------------
411dnl Add extra version string to package
412dnl name, string and version fields.
413dnl -----------------------------------
414if test "x${EXTRAVERSION}" != "x" ; then
David Lamparter0be793e2012-11-27 01:34:56 +0000415 VERSION="${VERSION}${EXTRAVERSION}"
416 PACKAGE_VERSION="${PACKAGE_VERSION}${EXTRAVERSION}"
417 PACKAGE_STRING="${PACKAGE_STRING}${EXTRAVERSION}"
Joachim Nilsson1080c132012-05-30 08:15:48 +0200418fi
419
David Lampartera16dcf72012-12-13 11:20:50 +0100420if test "x$with_pkg_git_version" = "xyes"; then
421 if test -d "${srcdir}/.git"; then
422 AC_DEFINE(GIT_VERSION, [1], [include git version info])
423 else with_pkg_git_version="no"
424 AC_MSG_WARN([--with-pkg-git-version given, but this is not a git checkout])
425 fi
426fi
427AM_CONDITIONAL([GIT_VERSION], [test "x$with_pkg_git_version" = "xyes"])
David Lamparter0be793e2012-11-27 01:34:56 +0000428
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000429dnl ------------------------------------
430dnl Check C keywords and standard types
431dnl ------------------------------------
432AC_C_CONST
433AC_C_INLINE
434AC_C_RESTRICT
435AC_C_VOLATILE
pauldc7a2bf2003-10-22 00:07:44 +0000436AC_HEADER_STDC
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000437AC_HEADER_TIME
438AC_HEADER_SYS_WAIT
439dnl AC_TYPE_PID_T
440AC_TYPE_UID_T
441AC_TYPE_MODE_T
442AC_TYPE_SIZE_T
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000443AC_STRUCT_TM
pauldc7a2bf2003-10-22 00:07:44 +0000444
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000445dnl -------------------------
446dnl Check other header files.
447dnl -------------------------
448AC_CHECK_HEADERS([stropts.h sys/ksym.h sys/times.h sys/select.h \
449 sys/types.h linux/version.h netdb.h asm/types.h \
Timo Teräs16ffb262014-07-29 09:41:54 +0000450 sys/cdefs.h sys/param.h limits.h signal.h \
Paul Jakma6511cab2009-06-18 17:38:01 +0100451 sys/socket.h netinet/in.h time.h sys/time.h])
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000452
453dnl Utility macro to avoid retyping includes all the time
454m4_define([QUAGGA_INCLUDES],
455[#ifdef SUNOS_5
456#define _XPG4_2
457#define __EXTENSIONS__
458#endif
459#include <stdio.h>
460#if STDC_HEADERS
461# include <stdlib.h>
462# include <stddef.h>
463#else
464# if HAVE_STDLIB_H
465# include <stdlib.h>
466# endif
467#endif
468#if HAVE_SYS_TYPES_H
469# include <sys/types.h>
470#endif
471/* sys/conf.h depends on param.h on FBSD at least */
472#if HAVE_SYS_PARAM_H
473# include <sys/param.h>
474#endif
475/* Required for MAXSIG */
476#if HAVE_SIGNAL_H
477# include <signal.h>
478#endif
479#if HAVE_SYS_SOCKET_H
480# include <sys/socket.h>
481#endif
Hasso Tepperea057672013-01-13 17:45:29 +0000482#ifdef __APPLE__
483# define __APPLE_USE_RFC_3542
484#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000485#if HAVE_NETINET_IN_H
486# include <netinet/in.h>
487#endif
Paul Jakma6511cab2009-06-18 17:38:01 +0100488#ifdef TIME_WITH_SYS_TIME
489# include <sys/time.h>
490# include <time.h>
491#else
492# ifdef HAVE_SYS_TIME_H
493# include <sys/time.h>
494# else
495# include <time.h>
496# endif
497#endif /* TIME_WITH_SYS_TIME */
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000498])dnl
499
Denis Ovsienko2b43bf22011-07-14 16:30:08 +0400500dnl HAVE_NET_IF_H must be discovered by the time the longer AC_CHECK_HEADERS
501dnl round below execution begins, otherwise it doesn't properly detect
502dnl HAVE_NETINET6_IN6_VAR_H, HAVE_NET_IF_VAR_H and HAVE_STRUCT_IN6_ALIASREQ
503dnl on FreeBSD (BZ#408).
504
505AC_CHECK_HEADERS([net/if.h], [], [], QUAGGA_INCLUDES)
506
507m4_define([QUAGGA_INCLUDES],
508QUAGGA_INCLUDES
509[#if HAVE_NET_IF_H
510# include <net/if.h>
511#endif
512])dnl
513
514dnl Same applies for HAVE_NET_IF_VAR_H, which HAVE_NETINET6_ND6_H and
515dnl HAVE_NETINET_IN_VAR_H depend upon. But if_var.h depends on if.h, hence
516dnl an additional round for it.
517
518AC_CHECK_HEADERS([net/if_var.h], [], [], QUAGGA_INCLUDES)
519
520m4_define([QUAGGA_INCLUDES],
521QUAGGA_INCLUDES
522[#if HAVE_NET_IF_VAR_H
523# include <net/if_var.h>
524#endif
525])dnl
526
527AC_CHECK_HEADERS([sys/un.h netinet/in_systm.h netinet/in_var.h \
528 net/if_dl.h net/netopt.h net/route.h \
Paul Jakma11770e12007-06-22 16:14:42 +0000529 inet/nd.h arpa/inet.h netinet/ip_icmp.h \
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000530 fcntl.h stddef.h sys/ioctl.h syslog.h wchar.h wctype.h \
531 sys/sysctl.h sys/sockio.h kvm.h sys/conf.h],
532 [], [], QUAGGA_INCLUDES)
533
534AC_CHECK_HEADERS([ucontext.h], [], [],
535[#ifndef __USE_GNU
536#define __USE_GNU
537#endif /* __USE_GNU */
538QUAGGA_INCLUDES
539])
540
Joakim Tjernlundb166ea22009-06-25 16:40:06 +0100541m4_define([UCONTEXT_INCLUDES],
542[#include <ucontext.h>])dnl
543
544AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.uc_regs],
545 [], [], [UCONTEXT_INCLUDES])
546AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.regs],
547 [AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.regs.nip],
548 [], [], [UCONTEXT_INCLUDES])],
549 [], [UCONTEXT_INCLUDES])
550AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.gregs],
551 [], [], [UCONTEXT_INCLUDES])
552
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000553m4_define([QUAGGA_INCLUDES],
554QUAGGA_INCLUDES
Denis Ovsienko2b43bf22011-07-14 16:30:08 +0400555[#if HAVE_SYS_UN_H
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000556# include <sys/un.h>
557#endif
558#if HAVE_NETINET_IN_SYSTM_H
559# include <netinet/in_systm.h>
560#endif
561#if HAVE_NETINET_IN_VAR_H
562# include <netinet/in_var.h>
563#endif
564#if HAVE_NET_IF_DL_H
565# include <net/if_dl.h>
566#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000567#if HAVE_NET_NETOPT_H
568# include <net/netopt.h>
569#endif
570#if HAVE_NET_ROUTE_H
571# include <net/route.h>
572#endif
573#if HAVE_INET_ND_H
574# include <inet/nd.h>
575#endif
576#if HAVE_ARPA_INET_H
577# include <arpa/inet.h>
578#endif
Paul Jakma11770e12007-06-22 16:14:42 +0000579/* Required for IDRP */
580#if HAVE_NETINET_IP_ICMP_H
581# include <netinet/ip_icmp.h>
582#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000583])dnl
pauldc7a2bf2003-10-22 00:07:44 +0000584
gdtfa3232e2003-12-03 17:52:30 +0000585dnl V6 headers are checked below, after we check for v6
paul7ea487b2003-03-17 02:05:07 +0000586
paul7ea487b2003-03-17 02:05:07 +0000587dnl Some systems (Solaris 2.x) require libnsl (Network Services Library)
588case "$host" in
paulafd8a122005-03-12 06:36:10 +0000589 [*-sunos5.[6-7]*] | [*-solaris2.[6-7]*])
paul7ea487b2003-03-17 02:05:07 +0000590 opsys=sol2-6
paulafd8a122005-03-12 06:36:10 +0000591 AC_DEFINE(SUNOS_56, 1, SunOS 5.6 to 5.7)
paul19877dd2004-05-11 10:49:35 +0000592 AC_DEFINE(SUNOS_5, 1, SunOS 5)
paul7ea487b2003-03-17 02:05:07 +0000593 AC_CHECK_LIB(xnet, main)
594 CURSES=-lcurses
David Lampartere8d0d242014-06-28 22:07:41 +0200595 SOLARIS="solaris"
paul7ea487b2003-03-17 02:05:07 +0000596 ;;
paul1b73de82005-04-10 16:31:51 +0000597 [*-sunos5.[8-9]] \
598 | [*-sunos5.1[0-9]] \
599 | [*-sunos5.1[0-9].[0-9]] \
600 | [*-solaris2.[8-9]] \
601 | [*-solaris2.1[0-9]] \
602 | [*-solaris2.1[0-9].[0-9]])
paulafd8a122005-03-12 06:36:10 +0000603 opsys=sol8
Paul Jakmafb66b292006-05-28 08:26:15 +0000604 AC_DEFINE(SUNOS_59, 1, [SunOS 5.8 up])
605 AC_DEFINE(SUNOS_5, 1, [SunOS 5])
paul19877dd2004-05-11 10:49:35 +0000606 AC_CHECK_LIB(socket, main)
607 AC_CHECK_LIB(nsl, main)
paul1b73de82005-04-10 16:31:51 +0000608 AC_CHECK_LIB(umem, main)
Paul Jakmafb66b292006-05-28 08:26:15 +0000609 AC_CHECK_FUNCS([printstack],
610 [AC_DEFINE([HAVE_PRINTSTACK],1,[Solaris printstack])
611 AC_DEFINE([HAVE_STACK_TRACE],1,[Stack symbols decode functionality])
612 ])
paul19877dd2004-05-11 10:49:35 +0000613 CURSES=-lcurses
David Lampartere8d0d242014-06-28 22:07:41 +0200614 SOLARIS="solaris"
paul19877dd2004-05-11 10:49:35 +0000615 ;;
paul7ea487b2003-03-17 02:05:07 +0000616 *-sunos5* | *-solaris2*)
paul19877dd2004-05-11 10:49:35 +0000617 AC_DEFINE(SUNOS_5,,SunOS 5, Unknown SunOS)
paul7ea487b2003-03-17 02:05:07 +0000618 AC_CHECK_LIB(socket, main)
619 AC_CHECK_LIB(nsl, main)
620 CURSES=-lcurses
David Lampartere8d0d242014-06-28 22:07:41 +0200621 SOLARIS="solaris"
paul7ea487b2003-03-17 02:05:07 +0000622 ;;
hassoc45eb832005-02-19 13:58:06 +0000623 *-linux*)
paul7ea487b2003-03-17 02:05:07 +0000624 opsys=gnu-linux
625 AC_DEFINE(GNU_LINUX,,GNU Linux)
626 ;;
paul7ea487b2003-03-17 02:05:07 +0000627 *-openbsd*)
628 opsys=openbsd
629 AC_DEFINE(OPEN_BSD,,OpenBSD)
630 ;;
paul7ea487b2003-03-17 02:05:07 +0000631esac
632
Paul Jakma62c9f502009-07-19 17:33:21 +0100633AC_SYS_LARGEFILE
634
paul7ea487b2003-03-17 02:05:07 +0000635dnl ---------------------
636dnl Integrated VTY option
637dnl ---------------------
638case "${enable_vtysh}" in
639 "yes") VTYSH="vtysh";
640 AC_DEFINE(VTYSH,,VTY shell)
gdtfc9d0742004-06-30 14:25:12 +0000641dnl Vtysh uses libreadline, which looks for termcap functions at
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000642dnl configure time. We follow readlines search order.
gdtfc9d0742004-06-30 14:25:12 +0000643dnl The required procedures are in libtermcap on NetBSD, in
644dnl [TODO] on Linux, and in [TODO] on Solaris.
hassoc0689392005-08-25 12:00:58 +0000645 AC_CHECK_LIB(termcap, tputs, LIBREADLINE="$LIBREADLINE -ltermcap",
paula9694592005-08-25 14:50:05 +0000646 [AC_CHECK_LIB(tinfo, tputs, LIBREADLINE="$LIBREADLINE -ltinfo",
647 [AC_CHECK_LIB(curses, tputs, LIBREADLINE="$LIBREADLINE -lcurses",
648 [AC_CHECK_LIB(ncurses, tputs,
649 LIBREADLINE="$LIBREADLINE -lncurses")]
650 )]
651 )]
652 )
653 AC_CHECK_LIB(readline, main, LIBREADLINE="$LIBREADLINE -lreadline",,
654 "$LIBREADLINE")
paul7ea487b2003-03-17 02:05:07 +0000655 if test $ac_cv_lib_readline_main = no; then
gdtfc9d0742004-06-30 14:25:12 +0000656 AC_MSG_ERROR([vtysh needs libreadline but was not found and usable on your system.])
paul7ea487b2003-03-17 02:05:07 +0000657 fi
658 AC_CHECK_HEADER(readline/history.h)
659 if test $ac_cv_header_readline_history_h = no;then
660 AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
661 fi
paula9694592005-08-25 14:50:05 +0000662 AC_CHECK_LIB(readline, rl_completion_matches,
663 LIBREADLINE="$LIBREADLINE",, "$LIBREADLINE")
paul3d3de8c2003-05-23 10:33:49 +0000664 if test $ac_cv_lib_readline_rl_completion_matches = no; then
665 AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
666 fi
667 ;;
paul7ea487b2003-03-17 02:05:07 +0000668 "no" ) VTYSH="";;
669 * ) ;;
670esac
hassoc0689392005-08-25 12:00:58 +0000671AC_SUBST(LIBREADLINE)
David Wardf027d332012-04-30 11:36:15 -0400672AM_CONDITIONAL(VTYSH, test "x$VTYSH" = "xvtysh")
paul7ea487b2003-03-17 02:05:07 +0000673
674dnl ----------
675dnl PAM module
Denis Ovsienko61599282011-07-15 00:24:15 +0400676dnl
677dnl Quagga detects the PAM library it is built against by checking for a
678dnl functional pam_misc.h (Linux-PAM) or openpam.h (OpenPAM) header. pam_misc.h
679dnl is known to #include pam_appl.h, the standard header of a PAM library, and
680dnl openpam.h doesn't do that, although depends on the header too. Hence a
681dnl little assistance to AC_CHECK_HEADER is necessary for the proper detection
682dnl of OpenPAM.
paul7ea487b2003-03-17 02:05:07 +0000683dnl ----------
684if test "$with_libpam" = "yes"; then
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000685 AC_CHECK_HEADER([security/pam_misc.h],
686 [AC_DEFINE(HAVE_PAM_MISC_H,,Have pam_misc.h)
687 AC_DEFINE(PAM_CONV_FUNC,misc_conv,Have misc_conv)
688 pam_conv_func="misc_conv"
689 ],
690 [], QUAGGA_INCLUDES)
691 AC_CHECK_HEADER([security/openpam.h],
692 [AC_DEFINE(HAVE_OPENPAM_H,,Have openpam.h)
693 AC_DEFINE(PAM_CONV_FUNC,openpam_ttyconv,Have openpam_ttyconv)
694 pam_conv_func="openpam_ttyconv"
695 ],
Denis Ovsienko61599282011-07-15 00:24:15 +0400696 [], QUAGGA_INCLUDES[#include <security/pam_appl.h>])
paul24cd4352003-05-06 12:16:27 +0000697 if test -z "$ac_cv_header_security_pam_misc_h$ac_cv_header_security_openpam_h" ; then
698 AC_MSG_WARN([*** pam support will not be built ***])
699 with_libpam="no"
700 fi
701fi
702
703if test "$with_libpam" = "yes"; then
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000704dnl took this test from proftpds configure.in and suited to our needs
paul7ea487b2003-03-17 02:05:07 +0000705dnl -------------------------------------------------------------------------
706dnl
707dnl This next check looks funky due to a linker problem with some versions
708dnl of the PAM library. Prior to 0.72 release, the Linux PAM shared library
709dnl omitted requiring libdl linking information. PAM-0.72 or better ships
710dnl with RedHat 6.2 and Debian 2.2 or better.
711AC_CHECK_LIB(pam, pam_start,
paul24cd4352003-05-06 12:16:27 +0000712 [AC_CHECK_LIB(pam, $pam_conv_func,
paul7ea487b2003-03-17 02:05:07 +0000713 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
714 LIBPAM="-lpam"],
715 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
716 LIBPAM="-lpam -lpam_misc"]
717 )
718 ],
719
720 [AC_CHECK_LIB(pam, pam_end,
paul24cd4352003-05-06 12:16:27 +0000721 [AC_CHECK_LIB(pam, $pam_conv_func,
paula159ed92003-06-04 11:01:45 +0000722 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
paul7ea487b2003-03-17 02:05:07 +0000723 LIBPAM="-lpam -ldl"],
paula159ed92003-06-04 11:01:45 +0000724 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
paul7ea487b2003-03-17 02:05:07 +0000725 LIBPAM="-lpam -ldl -lpam_misc"]
726 )
727 ],AC_MSG_WARN([*** pam support will not be built ***]),
728 [-ldl])
729 ]
730)
731fi
732AC_SUBST(LIBPAM)
733
734dnl -------------------------------
735dnl Endian-ness check
736dnl -------------------------------
737AC_WORDS_BIGENDIAN
738
739dnl -------------------------------
740dnl check the size in byte of the C
741dnl -------------------------------
742dnl AC_CHECK_SIZEOF(char)
743dnl AC_CHECK_SIZEOF(int)
744dnl AC_CHECK_SIZEOF(short)
745dnl AC_CHECK_SIZEOF(long)
746
747dnl ----------------------------
748dnl check existance of functions
749dnl ----------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000750AC_FUNC_CHOWN
751AC_FUNC_FNMATCH
752AC_FUNC_FORK
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000753AC_FUNC_MEMCMP
754AC_FUNC_MKTIME
755AC_FUNC_STRFTIME
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000756AC_FUNC_STAT
757AC_FUNC_SELECT_ARGTYPES
758AC_FUNC_STRFTIME
Paul Jakmad46d2a22007-05-10 16:53:04 +0000759dnl Avoid AC_FUNC_STRNLEN because it pulls in AC_SYSTEM_EXTENSIONS which
760dnl can lead to strange side effects. So we just check for strnlen
761dnl directly, see below.
Paul Jakma2b5cb412007-05-10 17:05:16 +0000762dnl AC_FUNC_STRNLENdnl
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000763AC_FUNC_VPRINTF
764
765dnl -------------------------------
766dnl bgpd needs pow() and hence libm
767dnl -------------------------------
768TMPLIBS="$LIBS"
769AC_CHECK_HEADER([math.h],
770 [AC_CHECK_LIB([m], [pow],
771 [LIBM="-lm"
772 LIBS="$LIBS $LIBM"
773 AC_DEFINE(HAVE_LIBM,, Have libm)
774 AC_CHECK_FUNCS(pow,[],[LIBM=""])
775 ])
776])
777if test x"$LIBM" = x ; then
778 AC_MSG_WARN([Unable to find working pow function - bgpd may not link])
779fi
780LIBS="$TMPLIBS"
781AC_SUBST(LIBM)
782
783dnl ---------------
784dnl other functions
785dnl ---------------
786AC_CHECK_FUNCS([dup2 ftruncate getcwd gethostbyname getpagesize gettimeofday \
Paul Jakmad46d2a22007-05-10 16:53:04 +0000787 inet_ntoa inet_aton strnlen \
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000788 memchr memmove memset select socket \
789 strcasecmp strchr strcspn strdup strerror \
790 strncasecmp strndup strrchr strspn strstr \
791 strtol strtoul strlcat strlcpy \
792 daemon snprintf vsnprintf \
793 if_nametoindex if_indextoname getifaddrs \
794 uname fcntl])
795
paula159ed92003-06-04 11:01:45 +0000796AC_CHECK_FUNCS(setproctitle, ,
797 [AC_CHECK_LIB(util, setproctitle,
798 [LIBS="$LIBS -lutil"
799 AC_DEFINE(HAVE_SETPROCTITLE,, Have setproctitle)
800 ]
801 )
802 ]
803)
paul7ea487b2003-03-17 02:05:07 +0000804
Feng Lu55cfa2f2014-07-03 18:24:34 +0800805AC_CHECK_HEADER([asm-generic/unistd.h],
806 [AC_CHECK_DECL(__NR_setns,
807 AC_DEFINE(HAVE_NETNS,, Have netns),,
808 QUAGGA_INCLUDES [#include <asm-generic/unistd.h>
809 ])
810 AC_CHECK_FUNCS(setns, AC_DEFINE(HAVE_SETNS,, Have setns))]
811 )
812
paul7ea487b2003-03-17 02:05:07 +0000813dnl ------------------------------------
814dnl Determine routing get and set method
815dnl ------------------------------------
816AC_MSG_CHECKING(zebra between kernel interface method)
817if test x"$opsys" = x"gnu-linux"; then
David Lamparter2e5ca492014-06-28 20:54:31 +0200818 AC_MSG_RESULT(netlink)
819 RT_METHOD=rt_netlink.o
820 AC_DEFINE(HAVE_NETLINK,,netlink)
821 netlink=yes
paul7ea487b2003-03-17 02:05:07 +0000822else
David Lamparter39b233f2014-06-28 21:49:18 +0200823 AC_MSG_RESULT(Route socket)
824 KERNEL_METHOD="kernel_socket.o"
825 RT_METHOD="rt_socket.o"
paul7ea487b2003-03-17 02:05:07 +0000826fi
827AC_SUBST(RT_METHOD)
828AC_SUBST(KERNEL_METHOD)
Avneesh Sachdev5adc2522012-11-13 22:48:59 +0000829AM_CONDITIONAL([HAVE_NETLINK], [test "x$netlink" = "xyes"])
paul7ea487b2003-03-17 02:05:07 +0000830
Paul Jakma238497f2007-08-07 18:49:18 +0000831dnl --------------------------
832dnl Determine IS-IS I/O method
833dnl --------------------------
David Lamparter745bf052010-02-02 21:49:35 +0100834AC_DEFINE(ISIS_METHOD_PFPACKET, 1, [ constant value for isis method pfpacket ])
835AC_DEFINE(ISIS_METHOD_DLPI, 2, [ constant value for isis method dlpi ])
836AC_DEFINE(ISIS_METHOD_BPF, 3, [ constant value for isis method bpf ])
Paul Jakma238497f2007-08-07 18:49:18 +0000837AC_CHECK_HEADER(net/bpf.h)
838AC_CHECK_HEADER(sys/dlpi.h)
839AC_MSG_CHECKING(zebra IS-IS I/O method)
840if test x"$opsys" = x"gnu-linux"; then
841 AC_MSG_RESULT(pfpacket)
David Lamparter745bf052010-02-02 21:49:35 +0100842 ISIS_METHOD_MACRO="ISIS_METHOD_PFPACKET"
Paul Jakma238497f2007-08-07 18:49:18 +0000843elif test x"$opsys" = x"sol2-6" -o x"$opsys" = x"sol8"; then
844 AC_MSG_RESULT(DLPI)
David Lamparter745bf052010-02-02 21:49:35 +0100845 ISIS_METHOD_MACRO="ISIS_METHOD_DLPI"
Paul Jakma238497f2007-08-07 18:49:18 +0000846else
847 if test $ac_cv_header_net_bpf_h = no; then
848 if test $ac_cv_header_sys_dlpi_h = no; then
849 AC_MSG_RESULT(none)
850 AC_MSG_WARN([*** IS-IS support will not be built ***])
851 ISISD=""
852 else
853 AC_MSG_RESULT(DLPI)
854 fi
David Lamparter745bf052010-02-02 21:49:35 +0100855 ISIS_METHOD_MACRO="ISIS_METHOD_DLPI"
Paul Jakma238497f2007-08-07 18:49:18 +0000856 else
857 AC_MSG_RESULT(BPF)
David Lamparter745bf052010-02-02 21:49:35 +0100858 ISIS_METHOD_MACRO="ISIS_METHOD_BPF"
Paul Jakma238497f2007-08-07 18:49:18 +0000859 fi
860fi
David Lamparter745bf052010-02-02 21:49:35 +0100861AC_DEFINE_UNQUOTED(ISIS_METHOD, $ISIS_METHOD_MACRO, [ selected method for isis, == one of the constants ])
Paul Jakma238497f2007-08-07 18:49:18 +0000862
ajsb99760a2005-01-04 16:24:43 +0000863dnl ------------------------------------
864dnl check for broken CMSG_FIRSTHDR macro
865dnl ------------------------------------
gdt6c200462005-01-04 17:02:48 +0000866AC_MSG_CHECKING(for broken CMSG_FIRSTHDR)
hasso5b087522005-04-03 23:46:37 +0000867AC_RUN_IFELSE([AC_LANG_SOURCE([[
ajsb99760a2005-01-04 16:24:43 +0000868#ifdef SUNOS_5
869#define _XPG4_2
870#define __EXTENSIONS__
871#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000872#ifdef HAVE_STDLIB_H
873# include <stdlib.h>
874#endif
875#ifdef HAVE_SYS_TYPES_H
ajsb99760a2005-01-04 16:24:43 +0000876#include <sys/types.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000877#endif
878#ifdef HAVE_SYS_SOCKET_H
ajsb99760a2005-01-04 16:24:43 +0000879#include <sys/socket.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000880#endif
ajsb99760a2005-01-04 16:24:43 +0000881
882main()
883{
884 struct msghdr msg;
885 char buf[4];
886
887 msg.msg_control = buf;
888 msg.msg_controllen = 0;
889
890 if (CMSG_FIRSTHDR(&msg) != NULL)
891 exit(0);
892 exit (1);
hasso5b087522005-04-03 23:46:37 +0000893}]])],[AC_MSG_RESULT(yes - using workaround) AC_DEFINE(HAVE_BROKEN_CMSG_FIRSTHDR,,Broken CMSG_FIRSTHDR)],
hassod33e8d72005-04-03 13:07:21 +0000894[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
ajsb99760a2005-01-04 16:24:43 +0000895
paul7ea487b2003-03-17 02:05:07 +0000896dnl ------------------------------
897dnl check kernel route read method
898dnl ------------------------------
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500899AC_CACHE_CHECK([route read method], [quagga_cv_rtread_method],
900[if test "x$netlink" = xyes; then
901 quagga_cv_rtread_method="netlink"
paul7ea487b2003-03-17 02:05:07 +0000902else
David Lamparter2e5ca492014-06-28 20:54:31 +0200903for quagga_cv_rtread_method in /dev/ip /dev/null;
paul7ea487b2003-03-17 02:05:07 +0000904do
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500905 test x`ls $quagga_cv_rtread_method 2>/dev/null` = x"$quagga_cv_rtread_method" && break
paul7ea487b2003-03-17 02:05:07 +0000906done
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500907case $quagga_cv_rtread_method in
paul9c30ab62003-07-08 08:36:17 +0000908 "/dev/ip")
909 case "$host" in
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500910 *-freebsd*) quagga_cv_rtread_method="sysctl";;
911 *) quagga_cv_rtread_method="getmsg";;
paul9c30ab62003-07-08 08:36:17 +0000912 esac;;
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500913 *)
914 quagga_cv_rtread_method="sysctl";;
paul7ea487b2003-03-17 02:05:07 +0000915esac
916fi])
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500917RTREAD_METHOD=rtread_${quagga_cv_rtread_method}.o
paul7ea487b2003-03-17 02:05:07 +0000918AC_SUBST(RTREAD_METHOD)
919
920dnl -----------------------------
921dnl check interface lookup method
922dnl -----------------------------
paul19877dd2004-05-11 10:49:35 +0000923IOCTL_METHOD=ioctl.o
paul7ea487b2003-03-17 02:05:07 +0000924AC_MSG_CHECKING(interface looking up method)
925if test "$netlink" = yes; then
926 AC_MSG_RESULT(netlink)
927 IF_METHOD=if_netlink.o
paul19877dd2004-05-11 10:49:35 +0000928elif test "$opsys" = "sol2-6";then
929 AC_MSG_RESULT(Solaris GIF)
930 IF_METHOD=if_ioctl.o
paulafd8a122005-03-12 06:36:10 +0000931elif test "$opsys" = "sol8";then
paul19877dd2004-05-11 10:49:35 +0000932 AC_MSG_RESULT(Solaris GLIF)
933 IF_METHOD=if_ioctl_solaris.o
934 IOCTL_METHOD=ioctl_solaris.o
paul19877dd2004-05-11 10:49:35 +0000935elif test "$opsys" = "openbsd";then
936 AC_MSG_RESULT(openbsd)
937 IF_METHOD=if_ioctl.o
938elif grep NET_RT_IFLIST /usr/include/sys/socket.h >/dev/null 2>&1; then
939 AC_MSG_RESULT(sysctl)
paul7ea487b2003-03-17 02:05:07 +0000940 IF_METHOD=if_sysctl.o
941 AC_DEFINE(HAVE_NET_RT_IFLIST,,NET_RT_IFLIST)
paul19877dd2004-05-11 10:49:35 +0000942else
paul7ea487b2003-03-17 02:05:07 +0000943 AC_MSG_RESULT(ioctl)
944 IF_METHOD=if_ioctl.o
paul7ea487b2003-03-17 02:05:07 +0000945fi
946AC_SUBST(IF_METHOD)
paul19877dd2004-05-11 10:49:35 +0000947AC_SUBST(IOCTL_METHOD)
paul7ea487b2003-03-17 02:05:07 +0000948
paul42c98192005-05-07 02:22:51 +0000949dnl ---------------------------------------------------------------
950dnl figure out how to specify an interface in multicast sockets API
951dnl ---------------------------------------------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000952AC_CHECK_MEMBERS([struct ip_mreqn.imr_ifindex], [], [], QUAGGA_INCLUDES)
paul42c98192005-05-07 02:22:51 +0000953
Donald Sharp1934e782015-06-05 12:15:44 -0700954AC_CHECK_HEADERS([linux/mroute.h], [], [],
955[
956#if HAVE_NETINET_IN_H
957#include<netinet/in.h>
958#endif])
paul42c98192005-05-07 02:22:51 +0000959AC_MSG_CHECKING([for BSD struct ip_mreq hack])
960AC_TRY_COMPILE([#ifdef HAVE_SYS_PARAM_H
961#include <sys/param.h>
Brian Bennettb8a893c2015-02-17 22:32:22 +0000962#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 +0000963 return (0);
964#else
965 #error No support for BSD struct ip_mreq hack detected
966#endif],[AC_MSG_RESULT(yes)
967AC_DEFINE(HAVE_BSD_STRUCT_IP_MREQ_HACK,,[Can pass ifindex in struct ip_mreq])],
968AC_MSG_RESULT(no))
969
Dmitrij Tejblum10d04cd2011-08-22 11:39:35 +0400970AC_MSG_CHECKING([for RFC3678 protocol-independed API])
971AC_TRY_COMPILE([
972#include <sys/types.h>
973#include <netinet/in.h>
974], [struct group_req gr; int sock; setsockopt(sock, IPPROTO_IP, MCAST_JOIN_GROUP, (void*)&gr, sizeof(gr));
975], [AC_MSG_RESULT(yes)
976AC_DEFINE(HAVE_RFC3678,1,[Have RFC3678 protocol-independed API])],
977AC_MSG_RESULT(no))
978
Andrew J. Schorrc543a172008-01-10 15:24:32 +0000979dnl ---------------------------------------------------------------
980dnl figure out how to check link-state
981dnl ---------------------------------------------------------------
Andrew J. Schorr6418bed2008-01-11 16:33:59 +0000982AC_CHECK_HEADER([net/if.h],
983 [AC_CHECK_HEADER( [net/if_media.h],
984 [m4_define([LINK_DETECT_INCLUDES],
985 QUAGGA_INCLUDES
986 [#include <net/if_media.h>
987 ])
988 AC_CHECK_MEMBERS( [struct ifmediareq.ifm_status],
989 AC_DEFINE(HAVE_BSD_LINK_DETECT,,[BSD link-detect]),
990 [], LINK_DETECT_INCLUDES)],
991 [],
992 QUAGGA_INCLUDES)],
993 [], QUAGGA_INCLUDES )
Andrew J. Schorrc543a172008-01-10 15:24:32 +0000994
Doug VanLeuven9234b382012-10-10 16:12:32 -0700995dnl ---------------------------------------------------------------
996dnl Additional, newer way to check link-state using ifi_link_state.
997dnl Not available in all BSD's when ifmediareq available
998dnl ---------------------------------------------------------------
999AC_CHECK_HEADER([net/if.h],
1000 AC_CHECK_MEMBERS([struct if_data.ifi_link_state],
1001 AC_DEFINE(HAVE_BSD_IFI_LINK_STATE,,[BSD ifi_link_state available]),
1002 [], QUAGGA_INCLUDES),
1003 ,)
1004
Paul Jakma0df7c912008-07-21 21:02:49 +00001005dnl ------------------------
1006dnl TCP_MD5SIG socket option
1007dnl ------------------------
1008
1009AC_CHECK_HEADER([netinet/tcp.h],
1010 [m4_define([MD5_INCLUDES],
1011 QUAGGA_INCLUDES
1012 [#include <netinet/tcp.h>
1013 ])
1014 AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)],
1015 [],
1016 QUAGGA_INCLUDES)
1017if test $ac_cv_have_decl_TCP_MD5SIG = no; then
1018 AC_CHECK_HEADER([linux/tcp.h],
1019 [m4_define([MD5_INCLUDES],
1020 QUAGGA_INCLUDES
1021 [#include <linux/tcp.h>
1022 ])
1023 AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)])
1024fi
1025
paul7ea487b2003-03-17 02:05:07 +00001026dnl -----------------------------
1027dnl check ipforward detect method
1028dnl -----------------------------
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001029AC_CACHE_CHECK([ipforward method], [quagga_cv_ipforward_method],
David Lamparterca9f3422009-09-16 02:11:00 +02001030[if test x$cross_compiling = xyes; then
1031 if test x"$opsys" = x"gnu-linux"; then
1032 quagga_cv_ipforward_method=/proc/net/snmp
1033 else
1034 quagga_cv_ipforward_method=/dev/ip
1035 fi
1036else
1037 for quagga_cv_ipforward_method in /proc/net/snmp /dev/ip /dev/null;
1038 do
1039 test x`ls $quagga_cv_ipforward_method 2>/dev/null` = x"$quagga_cv_ipforward_method" && break
1040 done
1041fi
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001042case $quagga_cv_ipforward_method in
1043 "/proc/net/snmp") quagga_cv_ipforward_method="proc";;
paul7ea487b2003-03-17 02:05:07 +00001044 "/dev/ip")
1045 case "$host" in
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001046 *-freebsd*) quagga_cv_ipforward_method="sysctl";;
1047 *) quagga_cv_ipforward_method="solaris";;
paul7ea487b2003-03-17 02:05:07 +00001048 esac;;
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001049 *) quagga_cv_ipforward_method="sysctl";;
paul7ea487b2003-03-17 02:05:07 +00001050esac])
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001051IPFORWARD=ipforward_${quagga_cv_ipforward_method}.o
paul7ea487b2003-03-17 02:05:07 +00001052AC_SUBST(IPFORWARD)
1053
1054AC_CHECK_FUNCS(getaddrinfo, [have_getaddrinfo=yes], [have_getaddrinfo=no])
1055
1056dnl ----------
1057dnl IPv6 check
1058dnl ----------
1059AC_MSG_CHECKING(whether does this OS have IPv6 stack)
paul7ea487b2003-03-17 02:05:07 +00001060dnl ---------
1061dnl KAME IPv6
1062dnl ---------
David Lamparter6d6df302014-06-28 21:12:37 +02001063 if grep WIDE /usr/include/netinet6/in6.h >/dev/null 2>&1; then
paula159ed92003-06-04 11:01:45 +00001064 AC_DEFINE(KAME,1,KAME IPv6)
paula159ed92003-06-04 11:01:45 +00001065 AC_MSG_RESULT(KAME)
paul19877dd2004-05-11 10:49:35 +00001066dnl ------------------------------------
1067dnl Solaris 9, 10 and potentially higher
1068dnl ------------------------------------
paulafd8a122005-03-12 06:36:10 +00001069 elif test x"$opsys" = x"sol8"; then
paul19877dd2004-05-11 10:49:35 +00001070 AC_DEFINE(SOLARIS_IPV6, 1, Solaris IPv6)
paul19877dd2004-05-11 10:49:35 +00001071 AC_MSG_RESULT(Solaris IPv6)
paul7ea487b2003-03-17 02:05:07 +00001072dnl ----------
1073dnl Linux IPv6
1074dnl ----------
David Lamparter29ed6222014-06-28 21:42:25 +02001075 elif test x"$opsys" = x"gnu-linux"; then
Timo Teräs3ef0b872014-07-29 09:41:56 +00001076 AC_DEFINE(LINUX_IPV6,1,Linux IPv6 stack)
David Lamparter29ed6222014-06-28 21:42:25 +02001077 AC_MSG_RESULT(Linux IPv6)
1078 else
David Lamparter7fe17e62014-11-22 10:31:33 -08001079 AC_MSG_ERROR([Failed to detect IPv6 stack])
paula159ed92003-06-04 11:01:45 +00001080 fi
paul7ea487b2003-03-17 02:05:07 +00001081
David Lamparter7fe17e62014-11-22 10:31:33 -08001082dnl this is unconditial, for compatibility
1083AC_DEFINE(HAVE_IPV6,1,IPv6)
paul7ea487b2003-03-17 02:05:07 +00001084
gdtfa3232e2003-12-03 17:52:30 +00001085dnl ------------------
1086dnl IPv6 header checks
1087dnl ------------------
gdtfa3232e2003-12-03 17:52:30 +00001088AC_CHECK_HEADERS([netinet6/in6.h netinet/in6_var.h netinet/icmp6.h \
David Lamparter05a69d22015-05-27 22:15:37 +02001089 netinet6/in6_var.h netinet6/nd6.h], [], [],
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001090 QUAGGA_INCLUDES)
gdtfa3232e2003-12-03 17:52:30 +00001091
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001092m4_define([QUAGGA_INCLUDES],dnl
1093QUAGGA_INCLUDES
1094[#if HAVE_NETINET6_IN6_H
1095#include <netinet6/in6.h>
1096#endif
1097#if HAVE_NETINET_IN6_VAR_H
1098#include <netinet/in6_var.h>
1099#endif
1100#if HAVE_NETINET_ICMP6_H
1101# include <netinet/icmp6.h>
1102#endif
1103#if HAVE_NETINET6_IN6_VAR_H
1104# include <netinet6/in6_var.h>
1105#endif
1106#if HAVE_NETINET6_ND6_H
Hasso Tepperfbf24542007-06-25 19:30:59 +00001107# include <netinet6/nd6.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001108#endif
1109])dnl
1110
Joakim Tjernlundcbcd9bf2009-02-16 09:40:39 +01001111dnl disable doc check
1112if test "${enable_doc}" = "no";then
1113 DOC=""
1114else
1115 DOC="doc"
1116fi
1117
paul7ea487b2003-03-17 02:05:07 +00001118dnl --------------------
1119dnl Daemon disable check
1120dnl --------------------
1121if test "${enable_zebra}" = "no";then
1122 ZEBRA=""
1123else
1124 ZEBRA="zebra"
1125fi
David Wardf027d332012-04-30 11:36:15 -04001126AM_CONDITIONAL(ZEBRA, test "x$ZEBRA" = "xzebra")
paul7ea487b2003-03-17 02:05:07 +00001127
1128if test "${enable_bgpd}" = "no";then
1129 BGPD=""
1130else
1131 BGPD="bgpd"
1132fi
David Wardf027d332012-04-30 11:36:15 -04001133AM_CONDITIONAL(BGPD, test "x$BGPD" = "xbgpd")
paul7ea487b2003-03-17 02:05:07 +00001134
1135if test "${enable_ripd}" = "no";then
1136 RIPD=""
1137else
1138 RIPD="ripd"
1139fi
David Wardf027d332012-04-30 11:36:15 -04001140AM_CONDITIONAL(RIPD, test "x$RIPD" = "xripd")
paul7ea487b2003-03-17 02:05:07 +00001141
1142if test "${enable_ospfd}" = "no";then
1143 OSPFD=""
1144else
1145 OSPFD="ospfd"
1146fi
David Wardf027d332012-04-30 11:36:15 -04001147AM_CONDITIONAL(OSPFD, test "x$OSPFD" = "xospfd")
paul7ea487b2003-03-17 02:05:07 +00001148
ajsd0199432004-12-22 14:03:52 +00001149if test "${enable_watchquagga}" = "no";then
1150 WATCHQUAGGA=""
1151else
1152 WATCHQUAGGA="watchquagga"
1153fi
David Wardf027d332012-04-30 11:36:15 -04001154AM_CONDITIONAL(WATCHQUAGGA, test "x$WATCHQUAGGA" = "xwatchquagga")
ajsd0199432004-12-22 14:03:52 +00001155
paul1ef74ef2003-03-21 15:16:05 +00001156OSPFCLIENT=""
Greg Troxel0d51c7e2011-03-24 10:19:43 -04001157if test "${enable_opaque_lsa}" != "no"; then
paul1ef74ef2003-03-21 15:16:05 +00001158 if test "${enable_ospfapi}" != "no";then
paul9a569842003-03-28 01:45:13 +00001159 AC_DEFINE(SUPPORT_OSPF_API,,OSPFAPI)
paul1ef74ef2003-03-21 15:16:05 +00001160
1161 if test "${enable_ospfclient}" != "no";then
1162 OSPFCLIENT="ospfclient"
1163 fi
1164 fi
1165
paul7ea487b2003-03-17 02:05:07 +00001166fi
David Wardf027d332012-04-30 11:36:15 -04001167AM_CONDITIONAL(OSPFCLIENT, test "x$OSPFCLIENT" = "xospfclient")
paul7ea487b2003-03-17 02:05:07 +00001168
1169case "${enable_ripngd}" in
paul7ea487b2003-03-17 02:05:07 +00001170 "no" ) RIPNGD="";;
David Lamparter7fe17e62014-11-22 10:31:33 -08001171 * ) RIPNGD="ripngd";;
paul7ea487b2003-03-17 02:05:07 +00001172esac
David Wardf027d332012-04-30 11:36:15 -04001173AM_CONDITIONAL(RIPNGD, test "x$RIPNGD" = "xripngd")
paul7ea487b2003-03-17 02:05:07 +00001174
1175case "${enable_ospf6d}" in
paul7ea487b2003-03-17 02:05:07 +00001176 "no" ) OSPF6D="";;
David Lamparter7fe17e62014-11-22 10:31:33 -08001177 * ) OSPF6D="ospf6d";;
paul7ea487b2003-03-17 02:05:07 +00001178esac
David Wardf027d332012-04-30 11:36:15 -04001179AM_CONDITIONAL(OSPF6D, test "x$OSPF6D" = "xospf6d")
paul7ea487b2003-03-17 02:05:07 +00001180
jardin9e867fe2003-12-23 08:56:18 +00001181case "${enable_isisd}" in
jardin9e867fe2003-12-23 08:56:18 +00001182 "no" ) ISISD="";;
David Lamparter656a2c02015-02-09 11:36:10 +01001183 * ) ISISD="isisd";;
jardin9e867fe2003-12-23 08:56:18 +00001184esac
David Wardf027d332012-04-30 11:36:15 -04001185AM_CONDITIONAL(ISISD, test "x$ISISD" = "xisisd")
jardin9e867fe2003-12-23 08:56:18 +00001186
Everton Marques871dbcf2009-08-11 15:43:05 -03001187case "${enable_pimd}" in
1188 "yes") PIMD="pimd";;
1189 "no" ) PIMD="";;
1190 * ) ;;
1191esac
Everton Marquesff57d362014-06-25 15:54:03 -03001192AM_CONDITIONAL(PIMD, test "x$PIMD" = "xpimd")
Everton Marques871dbcf2009-08-11 15:43:05 -03001193
paul7ea487b2003-03-17 02:05:07 +00001194if test "${enable_bgp_announce}" = "no";then
Paul Jakma750e8142008-07-22 21:11:48 +00001195 AC_DEFINE(DISABLE_BGP_ANNOUNCE,1,Disable BGP installation to zebra)
1196else
1197 AC_DEFINE(DISABLE_BGP_ANNOUNCE,0,Disable BGP installation to zebra)
paul7ea487b2003-03-17 02:05:07 +00001198fi
1199
Joakim Tjernlundcbcd9bf2009-02-16 09:40:39 +01001200AC_SUBST(DOC)
paul7ea487b2003-03-17 02:05:07 +00001201AC_SUBST(ZEBRA)
1202AC_SUBST(BGPD)
1203AC_SUBST(RIPD)
1204AC_SUBST(RIPNGD)
1205AC_SUBST(OSPFD)
1206AC_SUBST(OSPF6D)
ajsd0199432004-12-22 14:03:52 +00001207AC_SUBST(WATCHQUAGGA)
jardin9e867fe2003-12-23 08:56:18 +00001208AC_SUBST(ISISD)
Everton Marques871dbcf2009-08-11 15:43:05 -03001209AC_SUBST(PIMD)
Greg Troxel97cee872007-08-02 13:36:56 +00001210AC_SUBST(SOLARIS)
paul7ea487b2003-03-17 02:05:07 +00001211AC_SUBST(VTYSH)
paul7ea487b2003-03-17 02:05:07 +00001212AC_SUBST(CURSES)
1213AC_SUBST(OSPFCLIENT)
paul1ef74ef2003-03-21 15:16:05 +00001214AC_SUBST(OSPFAPI)
paul7ea487b2003-03-17 02:05:07 +00001215AC_CHECK_LIB(c, inet_ntop, [AC_DEFINE(HAVE_INET_NTOP,,inet_ntop)])
1216AC_CHECK_LIB(c, inet_pton, [AC_DEFINE(HAVE_INET_PTON,,inet_pton)])
1217AC_CHECK_LIB(crypt, crypt)
1218AC_CHECK_LIB(resolv, res_init)
paul7ea487b2003-03-17 02:05:07 +00001219
paul7ea487b2003-03-17 02:05:07 +00001220dnl ---------------------------
Jeremy Jackson25f45882009-01-12 16:06:12 -05001221dnl check system has PCRE regexp
1222dnl ---------------------------
1223if test "x$enable_pcreposix" = "xyes"; then
1224 AC_CHECK_LIB(pcreposix, pcreposix_regexec, ,[enable_pcreposix=no
1225 AC_MSG_WARN([*** falling back to other regex library ***]) ])
1226fi
1227
1228if test "x$enable_pcreposix" != "xyes"; then
1229dnl ---------------------------
paul7ea487b2003-03-17 02:05:07 +00001230dnl check system has GNU regexp
1231dnl ---------------------------
Jeremy Jackson25f45882009-01-12 16:06:12 -05001232AC_MSG_CHECKING(whether system has GNU regex)
paul7ea487b2003-03-17 02:05:07 +00001233AC_CHECK_LIB(c, regexec,
1234[AC_DEFINE(HAVE_GNU_REGEX,,GNU regexp library)
1235 LIB_REGEX=""],
1236[LIB_REGEX="regex.o"])
Jeremy Jackson25f45882009-01-12 16:06:12 -05001237fi
1238AC_SUBST(HAVE_LIBPCREPOSIX)
paul7ea487b2003-03-17 02:05:07 +00001239AC_SUBST(LIB_REGEX)
1240
1241dnl ------------------
paulb1fc9ac2006-01-31 10:09:27 +00001242dnl check Net-SNMP library
paul7ea487b2003-03-17 02:05:07 +00001243dnl ------------------
Vincent Bernatd6be5fb2012-05-24 09:44:43 +02001244if test "${enable_snmp}" != ""; then
Vincent Bernat08d7f652012-05-22 22:29:17 +02001245 AC_PATH_TOOL([NETSNMP_CONFIG], [net-snmp-config], [no])
1246 if test x"$NETSNMP_CONFIG" = x"no"; then
1247 AC_MSG_ERROR([--enable-snmp given but unable to find net-snmp-config])
1248 fi
1249 LIBS="$LIBS `${NETSNMP_CONFIG} --agent-libs`"
1250 CFLAGS="`${NETSNMP_CONFIG} --base-cflags` $CFLAGS"
1251 AC_MSG_CHECKING([whether we can link to Net-SNMP])
1252 AC_LINK_IFELSE([AC_LANG_PROGRAM([
1253int main(void);
1254],
1255[
1256{
1257 return 0;
1258}
1259])],[AC_MSG_RESULT(yes)],[
1260 AC_MSG_RESULT(no)
1261 AC_MSG_ERROR([--enable-snmp given but not usable])])
1262 AC_DEFINE(HAVE_SNMP,,SNMP)
Vincent Bernatd6be5fb2012-05-24 09:44:43 +02001263 case "${enable_snmp}" in
1264 yes)
1265 SNMP_METHOD=agentx
1266 ;;
1267 smux|agentx)
1268 SNMP_METHOD="${enable_snmp}"
1269 ;;
1270 *)
1271 AC_MSG_ERROR([--enable-snmp given with an unknown method (${enable_snmp}). Use smux or agentx])
1272 ;;
1273 esac
1274 AH_TEMPLATE([SNMP_SMUX], [Use SNMP SMUX to interface with snmpd])
1275 AH_TEMPLATE([SNMP_AGENTX], [Use SNMP AgentX to interface with snmpd])
1276 AC_DEFINE_UNQUOTED(AS_TR_CPP(SNMP_${SNMP_METHOD}),,SNMP method to interface with snmpd)
paul7ea487b2003-03-17 02:05:07 +00001277fi
1278
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001279dnl ---------------------------
1280dnl sockaddr and netinet checks
1281dnl ---------------------------
1282AC_CHECK_TYPES([struct sockaddr, struct sockaddr_in,
1283 struct sockaddr_in6, struct sockaddr_un, struct sockaddr_dl,
Everton Marques871dbcf2009-08-11 15:43:05 -03001284 socklen_t, struct vifctl, struct mfcctl, struct sioc_sg_req,
1285 vifi_t, struct sioc_vif_req, struct igmpmsg,
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001286 struct ifaliasreq, struct if6_aliasreq, struct in6_aliasreq,
1287 struct nd_opt_adv_interval, struct rt_addrinfo,
Paul Jakma11770e12007-06-22 16:14:42 +00001288 struct nd_opt_homeagent_info, struct nd_opt_adv_interval],
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001289 [], [], QUAGGA_INCLUDES)
paul7ea487b2003-03-17 02:05:07 +00001290
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001291AC_CHECK_MEMBERS([struct sockaddr.sa_len,
1292 struct sockaddr_in.sin_len, struct sockaddr_un.sun_len,
1293 struct sockaddr_in6.sin6_scope_id,
David Lamparterca3ccd82012-09-26 14:52:39 +02001294 struct sockaddr_dl.sdl_len,
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001295 struct if6_aliasreq.ifra_lifetime,
1296 struct nd_opt_adv_interval.nd_opt_ai_type],
1297 [], [], QUAGGA_INCLUDES)
hasso71c0fb52003-05-25 20:18:13 +00001298
paul7ea487b2003-03-17 02:05:07 +00001299dnl ---------------------------
Paul Jakma11770e12007-06-22 16:14:42 +00001300dnl IRDP/pktinfo/icmphdr checks
paul7ea487b2003-03-17 02:05:07 +00001301dnl ---------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001302AC_CHECK_TYPES([struct in_pktinfo],
Paul Jakma11770e12007-06-22 16:14:42 +00001303 [AC_CHECK_TYPES([struct icmphdr],
1304 [if test "${enable_irdp}" != "no"; then
1305 AC_DEFINE(HAVE_IRDP,, IRDP)
1306 fi],
1307 [if test "${enable_irdp}" = "yes"; then
1308 AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
1309 fi], [QUAGGA_INCLUDES])],
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001310 [if test "${enable_irdp}" = "yes"; then
1311 AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
1312 fi], [QUAGGA_INCLUDES])
vincent29c4c9b2005-03-25 13:05:47 +00001313
Everton Marques871dbcf2009-08-11 15:43:05 -03001314dnl -----------------------
1315dnl checking for IP_PKTINFO
1316dnl -----------------------
1317AC_MSG_CHECKING(for IP_PKTINFO)
1318AC_TRY_COMPILE([#include <netdb.h>], [
1319 int opt = IP_PKTINFO;
1320], [
1321 AC_MSG_RESULT(yes)
1322 AC_DEFINE(HAVE_IP_PKTINFO, 1, [Have IP_PKTINFO])
1323], [
1324 AC_MSG_RESULT(no)
1325])
1326
1327dnl ---------------------------
1328dnl checking for IP_RECVDSTADDR
1329dnl ---------------------------
1330AC_MSG_CHECKING(for IP_RECVDSTADDR)
1331AC_TRY_COMPILE([#include <netinet/in.h>], [
1332 int opt = IP_RECVDSTADDR;
1333], [
1334 AC_MSG_RESULT(yes)
1335 AC_DEFINE(HAVE_IP_RECVDSTADDR, 1, [Have IP_RECVDSTADDR])
1336], [
1337 AC_MSG_RESULT(no)
1338])
1339
1340dnl ----------------------
1341dnl checking for IP_RECVIF
1342dnl ----------------------
1343AC_MSG_CHECKING(for IP_RECVIF)
1344AC_TRY_COMPILE([#include <netinet/in.h>], [
1345 int opt = IP_RECVIF;
1346], [
1347 AC_MSG_RESULT(yes)
1348 AC_DEFINE(HAVE_IP_RECVIF, 1, [Have IP_RECVIF])
1349], [
1350 AC_MSG_RESULT(no)
1351])
1352
paul7ea487b2003-03-17 02:05:07 +00001353dnl --------------------------------------
1354dnl checking for getrusage struct and call
1355dnl --------------------------------------
Stephen Hemminger47f6aef2013-01-04 22:29:22 +00001356if test "${enable_rusage}" != "no"; then
1357 AC_MSG_CHECKING(whether getrusage is available)
1358 AC_TRY_COMPILE([#include <sys/resource.h>],[struct rusage ac_x; getrusage (RUSAGE_SELF, &ac_x);],
1359 [AC_MSG_RESULT(yes)
1360 AC_DEFINE(HAVE_RUSAGE,,rusage)],
1361 AC_MSG_RESULT(no))
1362fi
paul7ea487b2003-03-17 02:05:07 +00001363
Stephen Hemmingerc4376c92009-05-28 15:29:10 -07001364dnl --------------------------------------
1365dnl checking for clock_time monotonic struct and call
1366dnl --------------------------------------
Paul Jakma6511cab2009-06-18 17:38:01 +01001367AC_CHECK_DECL(CLOCK_MONOTONIC,
1368 [AC_CHECK_LIB(rt, clock_gettime, [LIBS="$LIBS -lrt"])
Dmitry Tejblum9964fcf2009-11-05 16:50:36 +03001369 AC_DEFINE(HAVE_CLOCK_MONOTONIC,, Have monotonic clock)
Paul Jakma6511cab2009-06-18 17:38:01 +01001370], [AC_MSG_RESULT(no)], [QUAGGA_INCLUDES])
Stephen Hemmingerc4376c92009-05-28 15:29:10 -07001371
pauledd7c242003-06-04 13:59:38 +00001372dnl -------------------
1373dnl capabilities checks
1374dnl -------------------
hasso41d3fc92004-04-06 11:59:00 +00001375if test "${enable_capabilities}" != "no"; then
1376 AC_MSG_CHECKING(whether prctl PR_SET_KEEPCAPS is available)
1377 AC_TRY_COMPILE([#include <sys/prctl.h>],[prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);],
1378 [AC_MSG_RESULT(yes)
1379 AC_DEFINE(HAVE_PR_SET_KEEPCAPS,,prctl)
1380 quagga_ac_keepcaps="yes"],
1381 AC_MSG_RESULT(no)
pauledd7c242003-06-04 13:59:38 +00001382 )
hasso41d3fc92004-04-06 11:59:00 +00001383 if test x"${quagga_ac_keepcaps}" = x"yes"; then
1384 AC_CHECK_HEADERS(sys/capability.h)
1385 fi
1386 if test x"${ac_cv_header_sys_capability_h}" = x"yes"; then
1387 AC_CHECK_LIB(cap, cap_init,
1388 [AC_DEFINE(HAVE_LCAPS,1,Capabilities)
1389 LIBCAP="-lcap"
paulceacedb2005-09-29 14:39:32 +00001390 quagga_ac_lcaps="yes"]
hasso41d3fc92004-04-06 11:59:00 +00001391 )
paulceacedb2005-09-29 14:39:32 +00001392 else
1393 AC_CHECK_HEADERS(priv.h,
1394 [AC_MSG_CHECKING(Solaris style privileges are available)
1395 AC_TRY_COMPILE([#include <priv.h>],[getpflags(PRIV_AWARE);],
1396 [AC_MSG_RESULT(yes)
1397 AC_DEFINE(HAVE_SOLARIS_CAPABILITIES,1,getpflags)
1398 quagga_ac_scaps="yes"],
1399 AC_MSG_RESULT(no)
1400 )
1401 ]
1402 )
1403 fi
1404 if test x"${quagga_ac_scaps}" = x"yes" \
1405 -o x"${quagga_ac_lcaps}" = x"yes"; then
1406 AC_DEFINE(HAVE_CAPABILITIES,1,capabilities)
hasso41d3fc92004-04-06 11:59:00 +00001407 fi
pauledd7c242003-06-04 13:59:38 +00001408fi
1409AC_SUBST(LIBCAP)
1410
Doug VanLeuven327c4cd2012-12-14 14:58:30 +02001411dnl ---------------------------------------------------------------------------
1412dnl http://www.gnu.org/software/autoconf-archive/ax_sys_weak_alias.html
1413dnl Check for and set one of the following = 1
1414dnl HAVE_SYS_WEAK_ALIAS_ATTRIBUTE
1415dnl HAVE_SYS_WEAK_ALIAS_PRAGMA
1416dnl HAVE_SYS_WEAK_ALIAS_HPSECONDARY
1417dnl HAVE_SYS_WEAK_ALIAS_CRIDUPLICATE
1418dnl If any scheme is found, set
1419dnl HAVE_SYS_WEAK_ALIAS=1
1420dnl The following variable is set to text value
1421dnl WEAK_ALIAS = "attribute" || "pragma" || "hpsecondary" || "criduplicate" || "no"
1422dnl If weak alias can cross object file boundaries
1423dnl WEAK_ALIAS_CROSSFILE = "yes" || "no"
1424dnl ---------------------------------------------------------------------------
1425AX_SYS_WEAK_ALIAS
1426
paulfb2d1502003-06-04 09:40:54 +00001427dnl ---------------------------
1428dnl check for glibc 'backtrace'
1429dnl ---------------------------
David Lamparter8c99b4c2013-08-01 07:43:36 +00001430if test x"${enable_backtrace}" != x"no" ; then
1431 backtrace_ok=no
1432 AC_CHECK_HEADER([execinfo.h], [
1433 AC_SEARCH_LIBS([backtrace], [execinfo], [
1434 AC_DEFINE(HAVE_GLIBC_BACKTRACE,,[Glibc backtrace])
1435 AC_DEFINE(HAVE_STACK_TRACE,,[Stack symbol decoding])
1436 backtrace_ok=yes
1437 ],, [-lm])
Dmitrij Tejblumeda35292011-09-15 20:00:33 +04001438 ])
David Lamparter8c99b4c2013-08-01 07:43:36 +00001439
1440 if test x"${enable_backtrace}" = x"yes" -a x"${backtrace_ok}" = x"no"; then
1441 dnl user explicitly requested backtrace but we failed to find support
1442 AC_MSG_FAILURE([failed to find backtrace support])
1443 fi
1444fi
paulfb2d1502003-06-04 09:40:54 +00001445
Paul Jakma41be32b2006-03-30 13:53:59 +00001446dnl -----------------------------------------
1447dnl check for malloc mallinfo struct and call
1448dnl this must try and link using LIBS, in
1449dnl order to check no alternative allocator
1450dnl has been specified, which might not provide
1451dnl mallinfo, e.g. such as Umem on Solaris.
1452dnl -----------------------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001453AC_CHECK_HEADER([malloc.h],
Paul Jakma41be32b2006-03-30 13:53:59 +00001454 [AC_MSG_CHECKING(whether mallinfo is available)
1455 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <malloc.h>]],
1456 [[struct mallinfo ac_x; ac_x = mallinfo ();]])],
1457 [AC_MSG_RESULT(yes)
1458 AC_DEFINE(HAVE_MALLINFO,,mallinfo)],
1459 AC_MSG_RESULT(no)
1460 )
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001461 ], [], QUAGGA_INCLUDES)
Paul Jakma41be32b2006-03-30 13:53:59 +00001462
paul408ad942003-05-20 00:03:33 +00001463dnl ----------
1464dnl configure date
1465dnl ----------
1466CONFDATE=`date '+%Y%m%d'`
1467AC_SUBST(CONFDATE)
1468
David Lamparterf281ab92013-02-26 16:21:20 +01001469dnl -------
1470dnl DejaGNU
1471dnl -------
1472if test x"$DEJAGNU" = x
1473then
1474 DEJAGNU="\$(top_srcdir)/tests/global-conf.exp"
1475fi
1476RUNTESTDEFAULTFLAGS="-x --tool \$\$tool"
1477
1478AC_SUBST(DEJAGNU)
1479AC_SUBST(RUNTESTDEFAULTFLAGS)
1480
paul7ea487b2003-03-17 02:05:07 +00001481dnl ------------------------------
paula159ed92003-06-04 11:01:45 +00001482dnl set paths for state directory
paul23bd12c2003-04-07 06:11:09 +00001483dnl ------------------------------
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001484AC_MSG_CHECKING(directory to use for state file)
paul23bd12c2003-04-07 06:11:09 +00001485if test "${prefix}" = "NONE"; then
paule8f29842003-08-12 13:08:31 +00001486 quagga_statedir_prefix="";
paul23bd12c2003-04-07 06:11:09 +00001487else
paule8f29842003-08-12 13:08:31 +00001488 quagga_statedir_prefix=${prefix}
paul23bd12c2003-04-07 06:11:09 +00001489fi
1490if test "${localstatedir}" = '${prefix}/var'; then
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001491 for QUAGGA_STATE_DIR in ${quagga_statedir_prefix}/var/run dnl
paule8f29842003-08-12 13:08:31 +00001492 ${quagga_statedir_prefix}/var/adm dnl
1493 ${quagga_statedir_prefix}/etc dnl
paula159ed92003-06-04 11:01:45 +00001494 /var/run dnl
1495 /var/adm dnl
1496 /etc dnl
1497 /dev/null;
paul23bd12c2003-04-07 06:11:09 +00001498 do
paule8f29842003-08-12 13:08:31 +00001499 test -d $QUAGGA_STATE_DIR && break
paul23bd12c2003-04-07 06:11:09 +00001500 done
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001501 quagga_statedir=$QUAGGA_STATE_DIR
paul23bd12c2003-04-07 06:11:09 +00001502else
paule8f29842003-08-12 13:08:31 +00001503 quagga_statedir=${localstatedir}
paul23bd12c2003-04-07 06:11:09 +00001504fi
paule8f29842003-08-12 13:08:31 +00001505if test $quagga_statedir = "/dev/null"; then
paula159ed92003-06-04 11:01:45 +00001506 AC_MSG_ERROR('STATE DIRECTORY NOT FOUND! FIX OR SPECIFY --localstatedir!')
1507fi
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001508AC_MSG_RESULT(${quagga_statedir})
1509AC_SUBST(quagga_statedir)
paula159ed92003-06-04 11:01:45 +00001510
paule8f29842003-08-12 13:08:31 +00001511AC_DEFINE_UNQUOTED(PATH_ZEBRA_PID, "$quagga_statedir/zebra.pid",zebra PID)
1512AC_DEFINE_UNQUOTED(PATH_RIPD_PID, "$quagga_statedir/ripd.pid",ripd PID)
1513AC_DEFINE_UNQUOTED(PATH_RIPNGD_PID, "$quagga_statedir/ripngd.pid",ripngd PID)
1514AC_DEFINE_UNQUOTED(PATH_BGPD_PID, "$quagga_statedir/bgpd.pid",bgpd PID)
1515AC_DEFINE_UNQUOTED(PATH_OSPFD_PID, "$quagga_statedir/ospfd.pid",ospfd PID)
1516AC_DEFINE_UNQUOTED(PATH_OSPF6D_PID, "$quagga_statedir/ospf6d.pid",ospf6d PID)
jardin9e867fe2003-12-23 08:56:18 +00001517AC_DEFINE_UNQUOTED(PATH_ISISD_PID, "$quagga_statedir/isisd.pid",isisd PID)
Everton Marques871dbcf2009-08-11 15:43:05 -03001518AC_DEFINE_UNQUOTED(PATH_PIMD_PID, "$quagga_statedir/pimd.pid",pimd PID)
ajsd0199432004-12-22 14:03:52 +00001519AC_DEFINE_UNQUOTED(PATH_WATCHQUAGGA_PID, "$quagga_statedir/watchquagga.pid",watchquagga PID)
paule8f29842003-08-12 13:08:31 +00001520AC_DEFINE_UNQUOTED(ZEBRA_SERV_PATH, "$quagga_statedir/zserv.api",zebra api socket)
1521AC_DEFINE_UNQUOTED(ZEBRA_VTYSH_PATH, "$quagga_statedir/zebra.vty",zebra vty socket)
1522AC_DEFINE_UNQUOTED(RIP_VTYSH_PATH, "$quagga_statedir/ripd.vty",rip vty socket)
1523AC_DEFINE_UNQUOTED(RIPNG_VTYSH_PATH, "$quagga_statedir/ripngd.vty",ripng vty socket)
1524AC_DEFINE_UNQUOTED(BGP_VTYSH_PATH, "$quagga_statedir/bgpd.vty",bgpd vty socket)
1525AC_DEFINE_UNQUOTED(OSPF_VTYSH_PATH, "$quagga_statedir/ospfd.vty",ospfd vty socket)
1526AC_DEFINE_UNQUOTED(OSPF6_VTYSH_PATH, "$quagga_statedir/ospf6d.vty",ospf6d vty socket)
jardin9e867fe2003-12-23 08:56:18 +00001527AC_DEFINE_UNQUOTED(ISIS_VTYSH_PATH, "$quagga_statedir/isisd.vty",isisd vty socket)
Everton Marques871dbcf2009-08-11 15:43:05 -03001528AC_DEFINE_UNQUOTED(PIM_VTYSH_PATH, "$quagga_statedir/pimd.vty",pimd vty socket)
ajs515210b2004-12-22 15:35:12 +00001529AC_DEFINE_UNQUOTED(DAEMON_VTY_DIR, "$quagga_statedir",daemon vty directory)
paul7ea487b2003-03-17 02:05:07 +00001530
paul1eb8ef22005-04-07 07:30:20 +00001531dnl -------------------------------
1532dnl Quagga sources should always be
1533dnl current wrt interfaces. Dont
1534dnl allow deprecated interfaces to
1535dnl be exposed.
1536dnl -------------------------------
1537AC_DEFINE(QUAGGA_NO_DEPRECATED_INTERFACES, 1, Hide deprecated interfaces)
1538
paul7ea487b2003-03-17 02:05:07 +00001539dnl ---------------------------
1540dnl Check htonl works correctly
1541dnl ---------------------------
1542AC_MSG_CHECKING(for working htonl)
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001543AC_CACHE_VAL(ac_cv_htonl_works,
1544 [AC_LINK_IFELSE([AC_LANG_PROGRAM([QUAGGA_INCLUDES],[htonl (0);])],
1545 [ac_cv_htonl_works=yes], [ac_cv_htonl_works=no])
1546 ]
1547)
paul7ea487b2003-03-17 02:05:07 +00001548AC_MSG_RESULT($ac_cv_htonl_works)
1549
paul14c17fd2004-11-07 22:34:23 +00001550AC_CONFIG_FILES([Makefile lib/Makefile zebra/Makefile ripd/Makefile
ajsd0199432004-12-22 14:03:52 +00001551 ripngd/Makefile bgpd/Makefile ospfd/Makefile watchquagga/Makefile
Paul Jakma336724d2015-05-11 15:13:31 +01001552 ospf6d/Makefile isisd/Makefile vtysh/Makefile
David Lamparterf281ab92013-02-26 16:21:20 +01001553 doc/Makefile ospfclient/Makefile tests/Makefile m4/Makefile
Everton Marques871dbcf2009-08-11 15:43:05 -03001554 pimd/Makefile
David Lamparter5bb7e4d2013-02-26 17:53:30 +01001555 tests/bgpd.tests/Makefile
David Lamparterc69905b2013-01-24 01:39:14 +01001556 tests/libzebra.tests/Makefile
David Lamparterf281ab92013-02-26 16:21:20 +01001557 redhat/Makefile
gdt69f1fc22004-08-27 15:57:35 +00001558 pkgsrc/Makefile
paul670bbf12004-11-12 09:05:00 +00001559 redhat/quagga.spec
gdtb7a97f82004-07-23 16:23:56 +00001560 lib/version.h
paul14c17fd2004-11-07 22:34:23 +00001561 doc/defines.texi
hassof695b012005-04-02 19:03:39 +00001562 isisd/topology/Makefile
gdtcbd04082004-08-31 18:16:36 +00001563 pkgsrc/bgpd.sh pkgsrc/ospf6d.sh pkgsrc/ospfd.sh
paulf31293a2004-11-12 09:27:04 +00001564 pkgsrc/ripd.sh pkgsrc/ripngd.sh pkgsrc/zebra.sh])
paul26275b02005-04-11 07:10:47 +00001565AC_CONFIG_FILES([solaris/Makefile])
1566
paul670bbf12004-11-12 09:05:00 +00001567AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl])
hasso48577192004-11-19 06:41:49 +00001568## Hack, but working solution to avoid rebuilding of quagga.info.
1569## It's already in CVS until texinfo 4.7 is more common.
paul14c17fd2004-11-07 22:34:23 +00001570AC_OUTPUT
paul7ea487b2003-03-17 02:05:07 +00001571
1572echo "
hassoc89f6492004-08-26 12:21:28 +00001573Quagga configuration
1574--------------------
1575quagga version : ${PACKAGE_VERSION}
Joachim Nilsson1080c132012-05-30 08:15:48 +02001576host operating system : ${host_os}
paul7ea487b2003-03-17 02:05:07 +00001577source code location : ${srcdir}
1578compiler : ${CC}
1579compiler flags : ${CFLAGS}
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001580make : ${MAKE-make}
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001581linker flags : ${LDFLAGS} ${LIBS} ${LIBCAP} ${LIBREADLINE} ${LIBM}
paule8f29842003-08-12 13:08:31 +00001582state file directory : ${quagga_statedir}
pauldc7a2bf2003-10-22 00:07:44 +00001583config file directory : `eval echo \`echo ${sysconfdir}\``
gdtd6b72f72003-12-03 17:24:27 +00001584example directory : `eval echo \`echo ${exampledir}\``
paul8d4aee52003-06-06 00:30:35 +00001585user to run as : ${enable_user}
1586group to run as : ${enable_group}
1587group for vty sockets : ${enable_vty_group}
gdtaa593d52003-12-22 20:15:53 +00001588config file mask : ${enable_configfile_mask}
1589log file mask : ${enable_logfile_mask}
pauldc7a2bf2003-10-22 00:07:44 +00001590
1591The above user and group must have read/write access to the state file
Paul Jakma105b8232006-05-28 08:02:41 +00001592directory and to the config files in the config file directory."
1593
1594if test x"$quagga_cv_gnu_make" = x"no"; then echo "
1595Warning: The ${MAKE-make} programme detected, either in your path or
1596via the MAKE variable, is not GNU Make. GNU make may be installed as
1597gmake on some systems. and is required to complete a build of Quagga
1598" > /dev/stderr
1599fi