blob: 5808db30a531a705ab2614afcb42b5bcb7a6126e [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,
Donald Sharpe6756782015-07-16 21:18:34 -0400228 AS_HELP_STRING([--disable-vtysh], [do not build 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,
Donald Sharpe6756782015-07-16 21:18:34 -0400248 AS_HELP_STRING([--disable-pimd], [do not 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]))
paul1ef74ef2003-03-21 15:16:05 +0000257AC_ARG_ENABLE(ospfapi,
David Lamparterb6fa7602014-06-28 22:15:59 +0200258 AS_HELP_STRING([--disable-ospfapi], [do not build OSPFAPI to access the OSPF LSA Database]))
paul1ef74ef2003-03-21 15:16:05 +0000259AC_ARG_ENABLE(ospfclient,
David Lamparterb6fa7602014-06-28 22:15:59 +0200260 AS_HELP_STRING([--disable-ospfclient], [do not build OSPFAPI client for OSPFAPI,
261 (this is the default if --disable-ospfapi is set)]))
paul7ea487b2003-03-17 02:05:07 +0000262AC_ARG_ENABLE(ospf-te,
David Lamparterb6fa7602014-06-28 22:15:59 +0200263 AS_HELP_STRING([--disable-ospf-te],[disable Traffic Engineering Extension to OSPF]))
paul7ea487b2003-03-17 02:05:07 +0000264AC_ARG_ENABLE(multipath,
David Lamparterb6fa7602014-06-28 22:15:59 +0200265 AS_HELP_STRING([--enable-multipath=ARG], [enable multipath function, ARG must be digit]))
Paul P Komkoff Jrfe86b482008-08-13 16:56:05 +0100266AC_ARG_ENABLE(user,
David Lamparterb6fa7602014-06-28 22:15:59 +0200267 AS_HELP_STRING([--enable-user=USER], [user to run Quagga suite as (default quagga)]))
Paul P Komkoff Jrfe86b482008-08-13 16:56:05 +0100268AC_ARG_ENABLE(group,
David Lamparterb6fa7602014-06-28 22:15:59 +0200269 AS_HELP_STRING([--enable-group=GROUP], [group to run Quagga suite as (default quagga)]))
pauledd7c242003-06-04 13:59:38 +0000270AC_ARG_ENABLE(vty_group,
David Lamparterb6fa7602014-06-28 22:15:59 +0200271 AS_HELP_STRING([--enable-vty-group=ARG], [set vty sockets to have specified group as owner]))
gdtaa593d52003-12-22 20:15:53 +0000272AC_ARG_ENABLE(configfile_mask,
David Lamparterb6fa7602014-06-28 22:15:59 +0200273 AS_HELP_STRING([--enable-configfile-mask=ARG], [set mask for config files]))
gdtaa593d52003-12-22 20:15:53 +0000274AC_ARG_ENABLE(logfile_mask,
David Lamparterb6fa7602014-06-28 22:15:59 +0200275 AS_HELP_STRING([--enable-logfile-mask=ARG], [set mask for log files]))
pauledd7c242003-06-04 13:59:38 +0000276
hasso71c0fb52003-05-25 20:18:13 +0000277AC_ARG_ENABLE(rtadv,
David Lamparterb6fa7602014-06-28 22:15:59 +0200278 AS_HELP_STRING([--disable-rtadv], [disable IPV6 router advertisement feature]))
hassoca776982004-06-12 14:33:05 +0000279AC_ARG_ENABLE(irdp,
David Lamparterb6fa7602014-06-28 22:15:59 +0200280 AS_HELP_STRING([--enable-irdp], [enable IRDP server support in zebra]))
hassof695b012005-04-02 19:03:39 +0000281AC_ARG_ENABLE(isis_topology,
David Lamparterb6fa7602014-06-28 22:15:59 +0200282 AS_HELP_STRING([--enable-isis-topology], [enable IS-IS topology generator]))
hasso41d3fc92004-04-06 11:59:00 +0000283AC_ARG_ENABLE(capabilities,
David Lamparterb6fa7602014-06-28 22:15:59 +0200284 AS_HELP_STRING([--disable-capabilities], [disable using POSIX capabilities]))
Stephen Hemminger47f6aef2013-01-04 22:29:22 +0000285AC_ARG_ENABLE(rusage,
David Lamparterb6fa7602014-06-28 22:15:59 +0200286 AS_HELP_STRING([--disable-rusage], [disable using getrusage]))
paul6b6942f2004-10-22 04:55:05 +0000287AC_ARG_ENABLE(gcc_ultra_verbose,
David Lamparterb6fa7602014-06-28 22:15:59 +0200288 AS_HELP_STRING([--enable-gcc-ultra-verbose], [enable ultra verbose GCC warnings]))
Paul Jakma3453a712009-06-12 14:21:02 +0100289AC_ARG_ENABLE(linux24_tcp_md5,
David Lamparterb6fa7602014-06-28 22:15:59 +0200290 AS_HELP_STRING([--enable-linux24-tcp-md5], [enable support for old, Linux-2.4 RFC2385 patch]))
ajs3cade262004-12-29 17:50:22 +0000291AC_ARG_ENABLE(gcc-rdynamic,
David Lamparterb6fa7602014-06-28 22:15:59 +0200292 AS_HELP_STRING([--enable-gcc-rdynamic], [enable linking with -rdynamic for better backtraces (default if gcc)]))
David Lamparter8c99b4c2013-08-01 07:43:36 +0000293AC_ARG_ENABLE(backtrace,
David Lamparterb6fa7602014-06-28 22:15:59 +0200294 AS_HELP_STRING([--disable-backtrace,], [disable crash backtraces (default autodetect)]))
ajs924b9222005-04-16 17:11:24 +0000295AC_ARG_ENABLE(time-check,
David Lamparterb6fa7602014-06-28 22:15:59 +0200296 AS_HELP_STRING([--disable-time-check], [disable slow thread warning messages]))
Jeremy Jackson25f45882009-01-12 16:06:12 -0500297AC_ARG_ENABLE(pcreposix,
David Lamparterb6fa7602014-06-28 22:15:59 +0200298 AS_HELP_STRING([--enable-pcreposix], [enable using PCRE Posix libs for regex functions]))
Avneesh Sachdev5adc2522012-11-13 22:48:59 +0000299AC_ARG_ENABLE(fpm,
David Lamparterb6fa7602014-06-28 22:15:59 +0200300 AS_HELP_STRING([--enable-fpm], [enable Forwarding Plane Manager support]))
David Lamparterc0bedeb2015-03-03 10:00:43 +0100301AC_ARG_ENABLE(werror,
302 AS_HELP_STRING([--enable-werror], [enable -Werror (recommended for developers only)]))
paul6b6942f2004-10-22 04:55:05 +0000303
David Lamparter8c99b4c2013-08-01 07:43:36 +0000304if test x"${enable_gcc_rdynamic}" != x"no" ; then
305 if test x"${enable_gcc_rdynamic}" = x"yes" -o x"$COMPILER" = x"GCC"; then
306 LDFLAGS="${LDFLAGS} -rdynamic"
307 fi
ajs3cade262004-12-29 17:50:22 +0000308fi
309
ajs924b9222005-04-16 17:11:24 +0000310if test x"${enable_time_check}" != x"no" ; then
311 if test x"${enable_time_check}" = x"yes" -o x"${enable_time_check}" = x ; then
312 AC_DEFINE(CONSUMED_TIME_CHECK,5000000,Consumed Time Check)
313 else
314 AC_DEFINE_UNQUOTED(CONSUMED_TIME_CHECK,$enable_time_check,Consumed Time Check)
315 fi
316fi
317
Avneesh Sachdev5adc2522012-11-13 22:48:59 +0000318if test "${enable_fpm}" = "yes"; then
319 AC_DEFINE(HAVE_FPM,,Forwarding Plane Manager support)
320fi
321
paul7ea487b2003-03-17 02:05:07 +0000322if test "${enable_tcp_zebra}" = "yes"; then
323 AC_DEFINE(HAVE_TCP_ZEBRA,,Use TCP for zebra communication)
324fi
325
Paul Jakma36de2612011-03-22 10:18:05 +0000326if test "${enable_ospf_te}" != "no"; then
paul7ea487b2003-03-17 02:05:07 +0000327 AC_DEFINE(HAVE_OSPF_TE,,OSPF TE)
328fi
329
Paul Jakma3453a712009-06-12 14:21:02 +0100330if test "${enable_linux24_tcp_md5}" = "yes"; then
331 AC_DEFINE(HAVE_TCP_MD5_LINUX24,,Old Linux 2.4 TCP MD5 Signature Patch)
332fi
333
gdtd2a0ccc2003-12-03 18:13:48 +0000334AC_MSG_CHECKING(if zebra should be configurable to send Route Advertisements)
335if test "${enable_rtadv}" != "no"; then
hasso71c0fb52003-05-25 20:18:13 +0000336 AC_MSG_RESULT(yes)
gdtd2a0ccc2003-12-03 18:13:48 +0000337 AC_DEFINE(HAVE_RTADV,,Enable IPv6 Routing Advertisement support)
paul2487bea2003-05-25 23:51:31 +0000338else
339 AC_MSG_RESULT(no)
hasso71c0fb52003-05-25 20:18:13 +0000340fi
paul7ea487b2003-03-17 02:05:07 +0000341
hassoca776982004-06-12 14:33:05 +0000342if test "${enable_irdp}" = "yes"; then
343 AC_DEFINE(HAVE_IRDP,, IRDP )
344fi
345
David Lamparter656a2c02015-02-09 11:36:10 +0100346if test "${enable_isisd}" != "no" && test "${enable_isis_topology}" = yes; then
hassof695b012005-04-02 19:03:39 +0000347 AC_DEFINE(TOPOLOGY_GENERATE,,Enable IS-IS topology generator code)
David Lamparteree1ac2d2012-07-19 12:58:59 +0200348 ISIS_TOPOLOGY_INCLUDES="-I\$(srcdir)/topology"
hassof695b012005-04-02 19:03:39 +0000349 ISIS_TOPOLOGY_DIR="topology"
350 ISIS_TOPOLOGY_LIB="./topology/libtopology.a"
351fi
352
353AC_SUBST(ISIS_TOPOLOGY_INCLUDES)
354AC_SUBST(ISIS_TOPOLOGY_DIR)
355AC_SUBST(ISIS_TOPOLOGY_LIB)
356
paul79cb2162003-06-06 12:19:53 +0000357if test "${enable_user}" = "yes" || test x"${enable_user}" = x""; then
paule8f29842003-08-12 13:08:31 +0000358 enable_user="quagga"
pauledd7c242003-06-04 13:59:38 +0000359elif test "${enable_user}" = "no"; then
360 enable_user="root"
361fi
pauledd7c242003-06-04 13:59:38 +0000362
paul79cb2162003-06-06 12:19:53 +0000363if test "${enable_group}" = "yes" || test x"${enable_group}" = x""; then
paule8f29842003-08-12 13:08:31 +0000364 enable_group="quagga"
pauledd7c242003-06-04 13:59:38 +0000365elif test "${enable_group}" = "no"; then
366 enable_group="root"
367fi
pauledd7c242003-06-04 13:59:38 +0000368
369if test x"${enable_vty_group}" = x"yes" ; then
paul8d4aee52003-06-06 00:30:35 +0000370 AC_MSG_ERROR([--enable-vty-group requires a group as argument, not yes])
paul79cb2162003-06-06 12:19:53 +0000371elif test x"${enable_vty_group}" != x""; then
paul8d4aee52003-06-06 00:30:35 +0000372 if test x"${enable_vty_group}" != x"no"; then
pauledd7c242003-06-04 13:59:38 +0000373 AC_DEFINE_UNQUOTED(VTY_GROUP, "${enable_vty_group}", VTY Sockets Group)
374 fi
375fi
paul26275b02005-04-11 07:10:47 +0000376AC_SUBST([enable_user])
377AC_SUBST([enable_group])
378AC_SUBST([enable_vty_group])
379AC_DEFINE_UNQUOTED(QUAGGA_USER, "${enable_user}", Quagga User)
380AC_DEFINE_UNQUOTED(QUAGGA_GROUP, "${enable_group}", Quagga Group)
pauledd7c242003-06-04 13:59:38 +0000381
gdtaa593d52003-12-22 20:15:53 +0000382enable_configfile_mask=${enable_configfile_mask:-0600}
383AC_DEFINE_UNQUOTED(CONFIGFILE_MASK, ${enable_configfile_mask}, Mask for config files)
384
385enable_logfile_mask=${enable_logfile_mask:-0600}
386AC_DEFINE_UNQUOTED(LOGFILE_MASK, ${enable_logfile_mask}, Mask for log files)
387
paul7ea487b2003-03-17 02:05:07 +0000388MULTIPATH_NUM=1
389
390case "${enable_multipath}" in
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000391 [[0-9]|[1-9][0-9]])
paul7ea487b2003-03-17 02:05:07 +0000392 MULTIPATH_NUM="${enable_multipath}"
393 ;;
394 "")
395 ;;
396 *)
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000397 AC_MSG_FAILURE([Please specify digit to enable multipath ARG])
paul7ea487b2003-03-17 02:05:07 +0000398 ;;
399esac
400
paul7ea487b2003-03-17 02:05:07 +0000401AC_SUBST(MULTIPATH_NUM)
402
Joachim Nilsson1080c132012-05-30 08:15:48 +0200403dnl -----------------------------------
404dnl Add extra version string to package
405dnl name, string and version fields.
406dnl -----------------------------------
407if test "x${EXTRAVERSION}" != "x" ; then
David Lamparter0be793e2012-11-27 01:34:56 +0000408 VERSION="${VERSION}${EXTRAVERSION}"
409 PACKAGE_VERSION="${PACKAGE_VERSION}${EXTRAVERSION}"
410 PACKAGE_STRING="${PACKAGE_STRING}${EXTRAVERSION}"
Joachim Nilsson1080c132012-05-30 08:15:48 +0200411fi
412
David Lampartera16dcf72012-12-13 11:20:50 +0100413if test "x$with_pkg_git_version" = "xyes"; then
414 if test -d "${srcdir}/.git"; then
415 AC_DEFINE(GIT_VERSION, [1], [include git version info])
416 else with_pkg_git_version="no"
417 AC_MSG_WARN([--with-pkg-git-version given, but this is not a git checkout])
418 fi
419fi
420AM_CONDITIONAL([GIT_VERSION], [test "x$with_pkg_git_version" = "xyes"])
David Lamparter0be793e2012-11-27 01:34:56 +0000421
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000422dnl ------------------------------------
423dnl Check C keywords and standard types
424dnl ------------------------------------
425AC_C_CONST
426AC_C_INLINE
427AC_C_RESTRICT
428AC_C_VOLATILE
pauldc7a2bf2003-10-22 00:07:44 +0000429AC_HEADER_STDC
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000430AC_HEADER_TIME
431AC_HEADER_SYS_WAIT
Paul Jakmae8441a82015-09-15 16:15:27 +0100432AC_HEADER_STDBOOL
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000433dnl AC_TYPE_PID_T
434AC_TYPE_UID_T
435AC_TYPE_MODE_T
436AC_TYPE_SIZE_T
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000437AC_STRUCT_TM
pauldc7a2bf2003-10-22 00:07:44 +0000438
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000439dnl -------------------------
440dnl Check other header files.
441dnl -------------------------
442AC_CHECK_HEADERS([stropts.h sys/ksym.h sys/times.h sys/select.h \
443 sys/types.h linux/version.h netdb.h asm/types.h \
Timo Teräs16ffb262014-07-29 09:41:54 +0000444 sys/cdefs.h sys/param.h limits.h signal.h \
Paul Jakma6511cab2009-06-18 17:38:01 +0100445 sys/socket.h netinet/in.h time.h sys/time.h])
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000446
447dnl Utility macro to avoid retyping includes all the time
448m4_define([QUAGGA_INCLUDES],
449[#ifdef SUNOS_5
450#define _XPG4_2
451#define __EXTENSIONS__
452#endif
453#include <stdio.h>
454#if STDC_HEADERS
455# include <stdlib.h>
456# include <stddef.h>
457#else
458# if HAVE_STDLIB_H
459# include <stdlib.h>
460# endif
461#endif
462#if HAVE_SYS_TYPES_H
463# include <sys/types.h>
464#endif
465/* sys/conf.h depends on param.h on FBSD at least */
466#if HAVE_SYS_PARAM_H
467# include <sys/param.h>
468#endif
469/* Required for MAXSIG */
470#if HAVE_SIGNAL_H
471# include <signal.h>
472#endif
473#if HAVE_SYS_SOCKET_H
474# include <sys/socket.h>
475#endif
Hasso Tepperea057672013-01-13 17:45:29 +0000476#ifdef __APPLE__
477# define __APPLE_USE_RFC_3542
478#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000479#if HAVE_NETINET_IN_H
480# include <netinet/in.h>
481#endif
Paul Jakma6511cab2009-06-18 17:38:01 +0100482#ifdef TIME_WITH_SYS_TIME
483# include <sys/time.h>
484# include <time.h>
485#else
486# ifdef HAVE_SYS_TIME_H
487# include <sys/time.h>
488# else
489# include <time.h>
490# endif
491#endif /* TIME_WITH_SYS_TIME */
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000492])dnl
493
Denis Ovsienko2b43bf22011-07-14 16:30:08 +0400494dnl HAVE_NET_IF_H must be discovered by the time the longer AC_CHECK_HEADERS
495dnl round below execution begins, otherwise it doesn't properly detect
496dnl HAVE_NETINET6_IN6_VAR_H, HAVE_NET_IF_VAR_H and HAVE_STRUCT_IN6_ALIASREQ
497dnl on FreeBSD (BZ#408).
498
499AC_CHECK_HEADERS([net/if.h], [], [], QUAGGA_INCLUDES)
500
501m4_define([QUAGGA_INCLUDES],
502QUAGGA_INCLUDES
503[#if HAVE_NET_IF_H
504# include <net/if.h>
505#endif
506])dnl
507
508dnl Same applies for HAVE_NET_IF_VAR_H, which HAVE_NETINET6_ND6_H and
509dnl HAVE_NETINET_IN_VAR_H depend upon. But if_var.h depends on if.h, hence
510dnl an additional round for it.
511
512AC_CHECK_HEADERS([net/if_var.h], [], [], QUAGGA_INCLUDES)
513
514m4_define([QUAGGA_INCLUDES],
515QUAGGA_INCLUDES
516[#if HAVE_NET_IF_VAR_H
517# include <net/if_var.h>
518#endif
519])dnl
520
521AC_CHECK_HEADERS([sys/un.h netinet/in_systm.h netinet/in_var.h \
522 net/if_dl.h net/netopt.h net/route.h \
Paul Jakma11770e12007-06-22 16:14:42 +0000523 inet/nd.h arpa/inet.h netinet/ip_icmp.h \
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000524 fcntl.h stddef.h sys/ioctl.h syslog.h wchar.h wctype.h \
525 sys/sysctl.h sys/sockio.h kvm.h sys/conf.h],
526 [], [], QUAGGA_INCLUDES)
527
528AC_CHECK_HEADERS([ucontext.h], [], [],
529[#ifndef __USE_GNU
530#define __USE_GNU
531#endif /* __USE_GNU */
532QUAGGA_INCLUDES
533])
534
Joakim Tjernlundb166ea22009-06-25 16:40:06 +0100535m4_define([UCONTEXT_INCLUDES],
536[#include <ucontext.h>])dnl
537
538AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.uc_regs],
539 [], [], [UCONTEXT_INCLUDES])
540AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.regs],
541 [AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.regs.nip],
542 [], [], [UCONTEXT_INCLUDES])],
543 [], [UCONTEXT_INCLUDES])
544AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.gregs],
545 [], [], [UCONTEXT_INCLUDES])
546
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000547m4_define([QUAGGA_INCLUDES],
548QUAGGA_INCLUDES
Denis Ovsienko2b43bf22011-07-14 16:30:08 +0400549[#if HAVE_SYS_UN_H
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000550# include <sys/un.h>
551#endif
552#if HAVE_NETINET_IN_SYSTM_H
553# include <netinet/in_systm.h>
554#endif
555#if HAVE_NETINET_IN_VAR_H
556# include <netinet/in_var.h>
557#endif
558#if HAVE_NET_IF_DL_H
559# include <net/if_dl.h>
560#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000561#if HAVE_NET_NETOPT_H
562# include <net/netopt.h>
563#endif
564#if HAVE_NET_ROUTE_H
565# include <net/route.h>
566#endif
567#if HAVE_INET_ND_H
568# include <inet/nd.h>
569#endif
570#if HAVE_ARPA_INET_H
571# include <arpa/inet.h>
572#endif
Paul Jakma11770e12007-06-22 16:14:42 +0000573/* Required for IDRP */
574#if HAVE_NETINET_IP_ICMP_H
575# include <netinet/ip_icmp.h>
576#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000577])dnl
pauldc7a2bf2003-10-22 00:07:44 +0000578
gdtfa3232e2003-12-03 17:52:30 +0000579dnl V6 headers are checked below, after we check for v6
paul7ea487b2003-03-17 02:05:07 +0000580
paul7ea487b2003-03-17 02:05:07 +0000581dnl Some systems (Solaris 2.x) require libnsl (Network Services Library)
582case "$host" in
paulafd8a122005-03-12 06:36:10 +0000583 [*-sunos5.[6-7]*] | [*-solaris2.[6-7]*])
paul7ea487b2003-03-17 02:05:07 +0000584 opsys=sol2-6
paulafd8a122005-03-12 06:36:10 +0000585 AC_DEFINE(SUNOS_56, 1, SunOS 5.6 to 5.7)
paul19877dd2004-05-11 10:49:35 +0000586 AC_DEFINE(SUNOS_5, 1, SunOS 5)
paul7ea487b2003-03-17 02:05:07 +0000587 AC_CHECK_LIB(xnet, main)
588 CURSES=-lcurses
David Lampartere8d0d242014-06-28 22:07:41 +0200589 SOLARIS="solaris"
paul7ea487b2003-03-17 02:05:07 +0000590 ;;
paul1b73de82005-04-10 16:31:51 +0000591 [*-sunos5.[8-9]] \
592 | [*-sunos5.1[0-9]] \
593 | [*-sunos5.1[0-9].[0-9]] \
594 | [*-solaris2.[8-9]] \
595 | [*-solaris2.1[0-9]] \
596 | [*-solaris2.1[0-9].[0-9]])
paulafd8a122005-03-12 06:36:10 +0000597 opsys=sol8
Paul Jakmafb66b292006-05-28 08:26:15 +0000598 AC_DEFINE(SUNOS_59, 1, [SunOS 5.8 up])
599 AC_DEFINE(SUNOS_5, 1, [SunOS 5])
paul19877dd2004-05-11 10:49:35 +0000600 AC_CHECK_LIB(socket, main)
601 AC_CHECK_LIB(nsl, main)
paul1b73de82005-04-10 16:31:51 +0000602 AC_CHECK_LIB(umem, main)
Paul Jakmafb66b292006-05-28 08:26:15 +0000603 AC_CHECK_FUNCS([printstack],
604 [AC_DEFINE([HAVE_PRINTSTACK],1,[Solaris printstack])
605 AC_DEFINE([HAVE_STACK_TRACE],1,[Stack symbols decode functionality])
606 ])
paul19877dd2004-05-11 10:49:35 +0000607 CURSES=-lcurses
David Lampartere8d0d242014-06-28 22:07:41 +0200608 SOLARIS="solaris"
paul19877dd2004-05-11 10:49:35 +0000609 ;;
paul7ea487b2003-03-17 02:05:07 +0000610 *-sunos5* | *-solaris2*)
paul19877dd2004-05-11 10:49:35 +0000611 AC_DEFINE(SUNOS_5,,SunOS 5, Unknown SunOS)
paul7ea487b2003-03-17 02:05:07 +0000612 AC_CHECK_LIB(socket, main)
613 AC_CHECK_LIB(nsl, main)
614 CURSES=-lcurses
David Lampartere8d0d242014-06-28 22:07:41 +0200615 SOLARIS="solaris"
paul7ea487b2003-03-17 02:05:07 +0000616 ;;
hassoc45eb832005-02-19 13:58:06 +0000617 *-linux*)
paul7ea487b2003-03-17 02:05:07 +0000618 opsys=gnu-linux
619 AC_DEFINE(GNU_LINUX,,GNU Linux)
620 ;;
paul7ea487b2003-03-17 02:05:07 +0000621 *-openbsd*)
622 opsys=openbsd
623 AC_DEFINE(OPEN_BSD,,OpenBSD)
624 ;;
paul7ea487b2003-03-17 02:05:07 +0000625esac
626
Paul Jakma62c9f502009-07-19 17:33:21 +0100627AC_SYS_LARGEFILE
628
paul7ea487b2003-03-17 02:05:07 +0000629dnl ---------------------
630dnl Integrated VTY option
631dnl ---------------------
632case "${enable_vtysh}" in
Donald Sharpe6756782015-07-16 21:18:34 -0400633 "no") VTYSH="";;
634 *) VTYSH="vtysh";
paul7ea487b2003-03-17 02:05:07 +0000635 AC_DEFINE(VTYSH,,VTY shell)
gdtfc9d0742004-06-30 14:25:12 +0000636dnl Vtysh uses libreadline, which looks for termcap functions at
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000637dnl configure time. We follow readlines search order.
gdtfc9d0742004-06-30 14:25:12 +0000638dnl The required procedures are in libtermcap on NetBSD, in
639dnl [TODO] on Linux, and in [TODO] on Solaris.
hassoc0689392005-08-25 12:00:58 +0000640 AC_CHECK_LIB(termcap, tputs, LIBREADLINE="$LIBREADLINE -ltermcap",
paula9694592005-08-25 14:50:05 +0000641 [AC_CHECK_LIB(tinfo, tputs, LIBREADLINE="$LIBREADLINE -ltinfo",
642 [AC_CHECK_LIB(curses, tputs, LIBREADLINE="$LIBREADLINE -lcurses",
643 [AC_CHECK_LIB(ncurses, tputs,
644 LIBREADLINE="$LIBREADLINE -lncurses")]
645 )]
646 )]
647 )
648 AC_CHECK_LIB(readline, main, LIBREADLINE="$LIBREADLINE -lreadline",,
649 "$LIBREADLINE")
paul7ea487b2003-03-17 02:05:07 +0000650 if test $ac_cv_lib_readline_main = no; then
gdtfc9d0742004-06-30 14:25:12 +0000651 AC_MSG_ERROR([vtysh needs libreadline but was not found and usable on your system.])
paul7ea487b2003-03-17 02:05:07 +0000652 fi
653 AC_CHECK_HEADER(readline/history.h)
654 if test $ac_cv_header_readline_history_h = no;then
655 AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
656 fi
paula9694592005-08-25 14:50:05 +0000657 AC_CHECK_LIB(readline, rl_completion_matches,
658 LIBREADLINE="$LIBREADLINE",, "$LIBREADLINE")
paul3d3de8c2003-05-23 10:33:49 +0000659 if test $ac_cv_lib_readline_rl_completion_matches = no; then
660 AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
661 fi
662 ;;
paul7ea487b2003-03-17 02:05:07 +0000663 "no" ) VTYSH="";;
paul7ea487b2003-03-17 02:05:07 +0000664esac
hassoc0689392005-08-25 12:00:58 +0000665AC_SUBST(LIBREADLINE)
David Wardf027d332012-04-30 11:36:15 -0400666AM_CONDITIONAL(VTYSH, test "x$VTYSH" = "xvtysh")
paul7ea487b2003-03-17 02:05:07 +0000667
668dnl ----------
669dnl PAM module
Denis Ovsienko61599282011-07-15 00:24:15 +0400670dnl
671dnl Quagga detects the PAM library it is built against by checking for a
672dnl functional pam_misc.h (Linux-PAM) or openpam.h (OpenPAM) header. pam_misc.h
673dnl is known to #include pam_appl.h, the standard header of a PAM library, and
674dnl openpam.h doesn't do that, although depends on the header too. Hence a
675dnl little assistance to AC_CHECK_HEADER is necessary for the proper detection
676dnl of OpenPAM.
paul7ea487b2003-03-17 02:05:07 +0000677dnl ----------
678if test "$with_libpam" = "yes"; then
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000679 AC_CHECK_HEADER([security/pam_misc.h],
680 [AC_DEFINE(HAVE_PAM_MISC_H,,Have pam_misc.h)
681 AC_DEFINE(PAM_CONV_FUNC,misc_conv,Have misc_conv)
682 pam_conv_func="misc_conv"
683 ],
684 [], QUAGGA_INCLUDES)
685 AC_CHECK_HEADER([security/openpam.h],
686 [AC_DEFINE(HAVE_OPENPAM_H,,Have openpam.h)
687 AC_DEFINE(PAM_CONV_FUNC,openpam_ttyconv,Have openpam_ttyconv)
688 pam_conv_func="openpam_ttyconv"
689 ],
Denis Ovsienko61599282011-07-15 00:24:15 +0400690 [], QUAGGA_INCLUDES[#include <security/pam_appl.h>])
paul24cd4352003-05-06 12:16:27 +0000691 if test -z "$ac_cv_header_security_pam_misc_h$ac_cv_header_security_openpam_h" ; then
692 AC_MSG_WARN([*** pam support will not be built ***])
693 with_libpam="no"
694 fi
695fi
696
697if test "$with_libpam" = "yes"; then
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000698dnl took this test from proftpds configure.in and suited to our needs
paul7ea487b2003-03-17 02:05:07 +0000699dnl -------------------------------------------------------------------------
700dnl
701dnl This next check looks funky due to a linker problem with some versions
702dnl of the PAM library. Prior to 0.72 release, the Linux PAM shared library
703dnl omitted requiring libdl linking information. PAM-0.72 or better ships
704dnl with RedHat 6.2 and Debian 2.2 or better.
705AC_CHECK_LIB(pam, pam_start,
paul24cd4352003-05-06 12:16:27 +0000706 [AC_CHECK_LIB(pam, $pam_conv_func,
paul7ea487b2003-03-17 02:05:07 +0000707 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
708 LIBPAM="-lpam"],
709 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
710 LIBPAM="-lpam -lpam_misc"]
711 )
712 ],
713
714 [AC_CHECK_LIB(pam, pam_end,
paul24cd4352003-05-06 12:16:27 +0000715 [AC_CHECK_LIB(pam, $pam_conv_func,
paula159ed92003-06-04 11:01:45 +0000716 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
paul7ea487b2003-03-17 02:05:07 +0000717 LIBPAM="-lpam -ldl"],
paula159ed92003-06-04 11:01:45 +0000718 [AC_DEFINE(USE_PAM,,Use PAM for authentication)
paul7ea487b2003-03-17 02:05:07 +0000719 LIBPAM="-lpam -ldl -lpam_misc"]
720 )
721 ],AC_MSG_WARN([*** pam support will not be built ***]),
722 [-ldl])
723 ]
724)
725fi
726AC_SUBST(LIBPAM)
727
728dnl -------------------------------
729dnl Endian-ness check
730dnl -------------------------------
731AC_WORDS_BIGENDIAN
732
733dnl -------------------------------
734dnl check the size in byte of the C
735dnl -------------------------------
736dnl AC_CHECK_SIZEOF(char)
737dnl AC_CHECK_SIZEOF(int)
738dnl AC_CHECK_SIZEOF(short)
739dnl AC_CHECK_SIZEOF(long)
740
741dnl ----------------------------
742dnl check existance of functions
743dnl ----------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000744AC_FUNC_CHOWN
745AC_FUNC_FNMATCH
746AC_FUNC_FORK
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000747AC_FUNC_MEMCMP
748AC_FUNC_MKTIME
749AC_FUNC_STRFTIME
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000750AC_FUNC_STAT
751AC_FUNC_SELECT_ARGTYPES
752AC_FUNC_STRFTIME
Paul Jakmad46d2a22007-05-10 16:53:04 +0000753dnl Avoid AC_FUNC_STRNLEN because it pulls in AC_SYSTEM_EXTENSIONS which
754dnl can lead to strange side effects. So we just check for strnlen
755dnl directly, see below.
Paul Jakma2b5cb412007-05-10 17:05:16 +0000756dnl AC_FUNC_STRNLENdnl
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000757AC_FUNC_VPRINTF
758
759dnl -------------------------------
760dnl bgpd needs pow() and hence libm
761dnl -------------------------------
762TMPLIBS="$LIBS"
763AC_CHECK_HEADER([math.h],
764 [AC_CHECK_LIB([m], [pow],
765 [LIBM="-lm"
766 LIBS="$LIBS $LIBM"
767 AC_DEFINE(HAVE_LIBM,, Have libm)
768 AC_CHECK_FUNCS(pow,[],[LIBM=""])
769 ])
770])
771if test x"$LIBM" = x ; then
772 AC_MSG_WARN([Unable to find working pow function - bgpd may not link])
773fi
774LIBS="$TMPLIBS"
775AC_SUBST(LIBM)
776
777dnl ---------------
778dnl other functions
779dnl ---------------
780AC_CHECK_FUNCS([dup2 ftruncate getcwd gethostbyname getpagesize gettimeofday \
Paul Jakmad46d2a22007-05-10 16:53:04 +0000781 inet_ntoa inet_aton strnlen \
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000782 memchr memmove memset select socket \
783 strcasecmp strchr strcspn strdup strerror \
784 strncasecmp strndup strrchr strspn strstr \
785 strtol strtoul strlcat strlcpy \
786 daemon snprintf vsnprintf \
787 if_nametoindex if_indextoname getifaddrs \
David Lamparter12bbd622015-09-15 02:26:44 -0700788 uname fcntl getgrouplist])
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000789
paula159ed92003-06-04 11:01:45 +0000790AC_CHECK_FUNCS(setproctitle, ,
791 [AC_CHECK_LIB(util, setproctitle,
792 [LIBS="$LIBS -lutil"
793 AC_DEFINE(HAVE_SETPROCTITLE,, Have setproctitle)
794 ]
795 )
796 ]
797)
paul7ea487b2003-03-17 02:05:07 +0000798
Feng Lu55cfa2f2014-07-03 18:24:34 +0800799AC_CHECK_HEADER([asm-generic/unistd.h],
800 [AC_CHECK_DECL(__NR_setns,
801 AC_DEFINE(HAVE_NETNS,, Have netns),,
802 QUAGGA_INCLUDES [#include <asm-generic/unistd.h>
803 ])
804 AC_CHECK_FUNCS(setns, AC_DEFINE(HAVE_SETNS,, Have setns))]
805 )
806
paul7ea487b2003-03-17 02:05:07 +0000807dnl ------------------------------------
808dnl Determine routing get and set method
809dnl ------------------------------------
810AC_MSG_CHECKING(zebra between kernel interface method)
811if test x"$opsys" = x"gnu-linux"; then
David Lamparter2e5ca492014-06-28 20:54:31 +0200812 AC_MSG_RESULT(netlink)
813 RT_METHOD=rt_netlink.o
814 AC_DEFINE(HAVE_NETLINK,,netlink)
815 netlink=yes
paul7ea487b2003-03-17 02:05:07 +0000816else
David Lamparter39b233f2014-06-28 21:49:18 +0200817 AC_MSG_RESULT(Route socket)
818 KERNEL_METHOD="kernel_socket.o"
819 RT_METHOD="rt_socket.o"
paul7ea487b2003-03-17 02:05:07 +0000820fi
821AC_SUBST(RT_METHOD)
822AC_SUBST(KERNEL_METHOD)
Avneesh Sachdev5adc2522012-11-13 22:48:59 +0000823AM_CONDITIONAL([HAVE_NETLINK], [test "x$netlink" = "xyes"])
paul7ea487b2003-03-17 02:05:07 +0000824
Paul Jakma238497f2007-08-07 18:49:18 +0000825dnl --------------------------
826dnl Determine IS-IS I/O method
827dnl --------------------------
David Lamparter745bf052010-02-02 21:49:35 +0100828AC_DEFINE(ISIS_METHOD_PFPACKET, 1, [ constant value for isis method pfpacket ])
829AC_DEFINE(ISIS_METHOD_DLPI, 2, [ constant value for isis method dlpi ])
830AC_DEFINE(ISIS_METHOD_BPF, 3, [ constant value for isis method bpf ])
Paul Jakma238497f2007-08-07 18:49:18 +0000831AC_CHECK_HEADER(net/bpf.h)
832AC_CHECK_HEADER(sys/dlpi.h)
833AC_MSG_CHECKING(zebra IS-IS I/O method)
834if test x"$opsys" = x"gnu-linux"; then
835 AC_MSG_RESULT(pfpacket)
David Lamparter745bf052010-02-02 21:49:35 +0100836 ISIS_METHOD_MACRO="ISIS_METHOD_PFPACKET"
Paul Jakma238497f2007-08-07 18:49:18 +0000837elif test x"$opsys" = x"sol2-6" -o x"$opsys" = x"sol8"; then
838 AC_MSG_RESULT(DLPI)
David Lamparter745bf052010-02-02 21:49:35 +0100839 ISIS_METHOD_MACRO="ISIS_METHOD_DLPI"
Paul Jakma238497f2007-08-07 18:49:18 +0000840else
841 if test $ac_cv_header_net_bpf_h = no; then
842 if test $ac_cv_header_sys_dlpi_h = no; then
843 AC_MSG_RESULT(none)
844 AC_MSG_WARN([*** IS-IS support will not be built ***])
845 ISISD=""
846 else
847 AC_MSG_RESULT(DLPI)
848 fi
David Lamparter745bf052010-02-02 21:49:35 +0100849 ISIS_METHOD_MACRO="ISIS_METHOD_DLPI"
Paul Jakma238497f2007-08-07 18:49:18 +0000850 else
851 AC_MSG_RESULT(BPF)
David Lamparter745bf052010-02-02 21:49:35 +0100852 ISIS_METHOD_MACRO="ISIS_METHOD_BPF"
Paul Jakma238497f2007-08-07 18:49:18 +0000853 fi
854fi
David Lamparter745bf052010-02-02 21:49:35 +0100855AC_DEFINE_UNQUOTED(ISIS_METHOD, $ISIS_METHOD_MACRO, [ selected method for isis, == one of the constants ])
Paul Jakma238497f2007-08-07 18:49:18 +0000856
ajsb99760a2005-01-04 16:24:43 +0000857dnl ------------------------------------
858dnl check for broken CMSG_FIRSTHDR macro
859dnl ------------------------------------
gdt6c200462005-01-04 17:02:48 +0000860AC_MSG_CHECKING(for broken CMSG_FIRSTHDR)
hasso5b087522005-04-03 23:46:37 +0000861AC_RUN_IFELSE([AC_LANG_SOURCE([[
ajsb99760a2005-01-04 16:24:43 +0000862#ifdef SUNOS_5
863#define _XPG4_2
864#define __EXTENSIONS__
865#endif
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000866#ifdef HAVE_STDLIB_H
867# include <stdlib.h>
868#endif
869#ifdef HAVE_SYS_TYPES_H
ajsb99760a2005-01-04 16:24:43 +0000870#include <sys/types.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000871#endif
872#ifdef HAVE_SYS_SOCKET_H
ajsb99760a2005-01-04 16:24:43 +0000873#include <sys/socket.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000874#endif
ajsb99760a2005-01-04 16:24:43 +0000875
876main()
877{
878 struct msghdr msg;
879 char buf[4];
880
881 msg.msg_control = buf;
882 msg.msg_controllen = 0;
883
884 if (CMSG_FIRSTHDR(&msg) != NULL)
885 exit(0);
886 exit (1);
hasso5b087522005-04-03 23:46:37 +0000887}]])],[AC_MSG_RESULT(yes - using workaround) AC_DEFINE(HAVE_BROKEN_CMSG_FIRSTHDR,,Broken CMSG_FIRSTHDR)],
hassod33e8d72005-04-03 13:07:21 +0000888[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
ajsb99760a2005-01-04 16:24:43 +0000889
paul7ea487b2003-03-17 02:05:07 +0000890dnl ------------------------------
891dnl check kernel route read method
892dnl ------------------------------
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500893AC_CACHE_CHECK([route read method], [quagga_cv_rtread_method],
894[if test "x$netlink" = xyes; then
895 quagga_cv_rtread_method="netlink"
paul7ea487b2003-03-17 02:05:07 +0000896else
David Lamparter2e5ca492014-06-28 20:54:31 +0200897for quagga_cv_rtread_method in /dev/ip /dev/null;
paul7ea487b2003-03-17 02:05:07 +0000898do
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500899 test x`ls $quagga_cv_rtread_method 2>/dev/null` = x"$quagga_cv_rtread_method" && break
paul7ea487b2003-03-17 02:05:07 +0000900done
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500901case $quagga_cv_rtread_method in
paul9c30ab62003-07-08 08:36:17 +0000902 "/dev/ip")
903 case "$host" in
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500904 *-freebsd*) quagga_cv_rtread_method="sysctl";;
905 *) quagga_cv_rtread_method="getmsg";;
paul9c30ab62003-07-08 08:36:17 +0000906 esac;;
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500907 *)
908 quagga_cv_rtread_method="sysctl";;
paul7ea487b2003-03-17 02:05:07 +0000909esac
910fi])
Jeremy Jackson5589ffa2009-01-21 18:27:37 -0500911RTREAD_METHOD=rtread_${quagga_cv_rtread_method}.o
paul7ea487b2003-03-17 02:05:07 +0000912AC_SUBST(RTREAD_METHOD)
913
914dnl -----------------------------
915dnl check interface lookup method
916dnl -----------------------------
paul19877dd2004-05-11 10:49:35 +0000917IOCTL_METHOD=ioctl.o
paul7ea487b2003-03-17 02:05:07 +0000918AC_MSG_CHECKING(interface looking up method)
919if test "$netlink" = yes; then
920 AC_MSG_RESULT(netlink)
921 IF_METHOD=if_netlink.o
paul19877dd2004-05-11 10:49:35 +0000922elif test "$opsys" = "sol2-6";then
923 AC_MSG_RESULT(Solaris GIF)
924 IF_METHOD=if_ioctl.o
paulafd8a122005-03-12 06:36:10 +0000925elif test "$opsys" = "sol8";then
paul19877dd2004-05-11 10:49:35 +0000926 AC_MSG_RESULT(Solaris GLIF)
927 IF_METHOD=if_ioctl_solaris.o
928 IOCTL_METHOD=ioctl_solaris.o
paul19877dd2004-05-11 10:49:35 +0000929elif test "$opsys" = "openbsd";then
930 AC_MSG_RESULT(openbsd)
931 IF_METHOD=if_ioctl.o
932elif grep NET_RT_IFLIST /usr/include/sys/socket.h >/dev/null 2>&1; then
933 AC_MSG_RESULT(sysctl)
paul7ea487b2003-03-17 02:05:07 +0000934 IF_METHOD=if_sysctl.o
935 AC_DEFINE(HAVE_NET_RT_IFLIST,,NET_RT_IFLIST)
paul19877dd2004-05-11 10:49:35 +0000936else
paul7ea487b2003-03-17 02:05:07 +0000937 AC_MSG_RESULT(ioctl)
938 IF_METHOD=if_ioctl.o
paul7ea487b2003-03-17 02:05:07 +0000939fi
940AC_SUBST(IF_METHOD)
paul19877dd2004-05-11 10:49:35 +0000941AC_SUBST(IOCTL_METHOD)
paul7ea487b2003-03-17 02:05:07 +0000942
paul42c98192005-05-07 02:22:51 +0000943dnl ---------------------------------------------------------------
944dnl figure out how to specify an interface in multicast sockets API
945dnl ---------------------------------------------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +0000946AC_CHECK_MEMBERS([struct ip_mreqn.imr_ifindex], [], [], QUAGGA_INCLUDES)
paul42c98192005-05-07 02:22:51 +0000947
Donald Sharp1934e782015-06-05 12:15:44 -0700948AC_CHECK_HEADERS([linux/mroute.h], [], [],
949[
950#if HAVE_NETINET_IN_H
951#include<netinet/in.h>
952#endif])
paul42c98192005-05-07 02:22:51 +0000953AC_MSG_CHECKING([for BSD struct ip_mreq hack])
954AC_TRY_COMPILE([#ifdef HAVE_SYS_PARAM_H
955#include <sys/param.h>
Brian Bennettb8a893c2015-02-17 22:32:22 +0000956#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 +0000957 return (0);
958#else
959 #error No support for BSD struct ip_mreq hack detected
960#endif],[AC_MSG_RESULT(yes)
961AC_DEFINE(HAVE_BSD_STRUCT_IP_MREQ_HACK,,[Can pass ifindex in struct ip_mreq])],
962AC_MSG_RESULT(no))
963
Dmitrij Tejblum10d04cd2011-08-22 11:39:35 +0400964AC_MSG_CHECKING([for RFC3678 protocol-independed API])
965AC_TRY_COMPILE([
966#include <sys/types.h>
967#include <netinet/in.h>
968], [struct group_req gr; int sock; setsockopt(sock, IPPROTO_IP, MCAST_JOIN_GROUP, (void*)&gr, sizeof(gr));
969], [AC_MSG_RESULT(yes)
970AC_DEFINE(HAVE_RFC3678,1,[Have RFC3678 protocol-independed API])],
971AC_MSG_RESULT(no))
972
Andrew J. Schorrc543a172008-01-10 15:24:32 +0000973dnl ---------------------------------------------------------------
974dnl figure out how to check link-state
975dnl ---------------------------------------------------------------
Andrew J. Schorr6418bed2008-01-11 16:33:59 +0000976AC_CHECK_HEADER([net/if.h],
977 [AC_CHECK_HEADER( [net/if_media.h],
978 [m4_define([LINK_DETECT_INCLUDES],
979 QUAGGA_INCLUDES
980 [#include <net/if_media.h>
981 ])
982 AC_CHECK_MEMBERS( [struct ifmediareq.ifm_status],
983 AC_DEFINE(HAVE_BSD_LINK_DETECT,,[BSD link-detect]),
984 [], LINK_DETECT_INCLUDES)],
985 [],
986 QUAGGA_INCLUDES)],
987 [], QUAGGA_INCLUDES )
Andrew J. Schorrc543a172008-01-10 15:24:32 +0000988
Doug VanLeuven9234b382012-10-10 16:12:32 -0700989dnl ---------------------------------------------------------------
990dnl Additional, newer way to check link-state using ifi_link_state.
991dnl Not available in all BSD's when ifmediareq available
992dnl ---------------------------------------------------------------
993AC_CHECK_HEADER([net/if.h],
994 AC_CHECK_MEMBERS([struct if_data.ifi_link_state],
995 AC_DEFINE(HAVE_BSD_IFI_LINK_STATE,,[BSD ifi_link_state available]),
996 [], QUAGGA_INCLUDES),
997 ,)
998
Paul Jakma0df7c912008-07-21 21:02:49 +0000999dnl ------------------------
1000dnl TCP_MD5SIG socket option
1001dnl ------------------------
1002
1003AC_CHECK_HEADER([netinet/tcp.h],
1004 [m4_define([MD5_INCLUDES],
1005 QUAGGA_INCLUDES
1006 [#include <netinet/tcp.h>
1007 ])
1008 AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)],
1009 [],
1010 QUAGGA_INCLUDES)
1011if test $ac_cv_have_decl_TCP_MD5SIG = no; then
1012 AC_CHECK_HEADER([linux/tcp.h],
1013 [m4_define([MD5_INCLUDES],
1014 QUAGGA_INCLUDES
1015 [#include <linux/tcp.h>
1016 ])
1017 AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)])
1018fi
1019
paul7ea487b2003-03-17 02:05:07 +00001020dnl -----------------------------
1021dnl check ipforward detect method
1022dnl -----------------------------
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001023AC_CACHE_CHECK([ipforward method], [quagga_cv_ipforward_method],
David Lamparterca9f3422009-09-16 02:11:00 +02001024[if test x$cross_compiling = xyes; then
1025 if test x"$opsys" = x"gnu-linux"; then
1026 quagga_cv_ipforward_method=/proc/net/snmp
1027 else
1028 quagga_cv_ipforward_method=/dev/ip
1029 fi
1030else
1031 for quagga_cv_ipforward_method in /proc/net/snmp /dev/ip /dev/null;
1032 do
1033 test x`ls $quagga_cv_ipforward_method 2>/dev/null` = x"$quagga_cv_ipforward_method" && break
1034 done
1035fi
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001036case $quagga_cv_ipforward_method in
1037 "/proc/net/snmp") quagga_cv_ipforward_method="proc";;
paul7ea487b2003-03-17 02:05:07 +00001038 "/dev/ip")
1039 case "$host" in
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001040 *-freebsd*) quagga_cv_ipforward_method="sysctl";;
1041 *) quagga_cv_ipforward_method="solaris";;
paul7ea487b2003-03-17 02:05:07 +00001042 esac;;
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001043 *) quagga_cv_ipforward_method="sysctl";;
paul7ea487b2003-03-17 02:05:07 +00001044esac])
Jeremy Jackson5589ffa2009-01-21 18:27:37 -05001045IPFORWARD=ipforward_${quagga_cv_ipforward_method}.o
paul7ea487b2003-03-17 02:05:07 +00001046AC_SUBST(IPFORWARD)
1047
1048AC_CHECK_FUNCS(getaddrinfo, [have_getaddrinfo=yes], [have_getaddrinfo=no])
1049
1050dnl ----------
1051dnl IPv6 check
1052dnl ----------
1053AC_MSG_CHECKING(whether does this OS have IPv6 stack)
paul7ea487b2003-03-17 02:05:07 +00001054dnl ---------
1055dnl KAME IPv6
1056dnl ---------
David Lamparter6d6df302014-06-28 21:12:37 +02001057 if grep WIDE /usr/include/netinet6/in6.h >/dev/null 2>&1; then
paula159ed92003-06-04 11:01:45 +00001058 AC_DEFINE(KAME,1,KAME IPv6)
paula159ed92003-06-04 11:01:45 +00001059 AC_MSG_RESULT(KAME)
paul19877dd2004-05-11 10:49:35 +00001060dnl ------------------------------------
1061dnl Solaris 9, 10 and potentially higher
1062dnl ------------------------------------
paulafd8a122005-03-12 06:36:10 +00001063 elif test x"$opsys" = x"sol8"; then
paul19877dd2004-05-11 10:49:35 +00001064 AC_DEFINE(SOLARIS_IPV6, 1, Solaris IPv6)
paul19877dd2004-05-11 10:49:35 +00001065 AC_MSG_RESULT(Solaris IPv6)
paul7ea487b2003-03-17 02:05:07 +00001066dnl ----------
1067dnl Linux IPv6
1068dnl ----------
David Lamparter29ed6222014-06-28 21:42:25 +02001069 elif test x"$opsys" = x"gnu-linux"; then
Timo Teräs3ef0b872014-07-29 09:41:56 +00001070 AC_DEFINE(LINUX_IPV6,1,Linux IPv6 stack)
David Lamparter29ed6222014-06-28 21:42:25 +02001071 AC_MSG_RESULT(Linux IPv6)
1072 else
David Lamparter7fe17e62014-11-22 10:31:33 -08001073 AC_MSG_ERROR([Failed to detect IPv6 stack])
paula159ed92003-06-04 11:01:45 +00001074 fi
paul7ea487b2003-03-17 02:05:07 +00001075
David Lamparter7fe17e62014-11-22 10:31:33 -08001076dnl this is unconditial, for compatibility
1077AC_DEFINE(HAVE_IPV6,1,IPv6)
paul7ea487b2003-03-17 02:05:07 +00001078
gdtfa3232e2003-12-03 17:52:30 +00001079dnl ------------------
1080dnl IPv6 header checks
1081dnl ------------------
gdtfa3232e2003-12-03 17:52:30 +00001082AC_CHECK_HEADERS([netinet6/in6.h netinet/in6_var.h netinet/icmp6.h \
David Lamparter05a69d22015-05-27 22:15:37 +02001083 netinet6/in6_var.h netinet6/nd6.h], [], [],
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001084 QUAGGA_INCLUDES)
gdtfa3232e2003-12-03 17:52:30 +00001085
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001086m4_define([QUAGGA_INCLUDES],dnl
1087QUAGGA_INCLUDES
1088[#if HAVE_NETINET6_IN6_H
1089#include <netinet6/in6.h>
1090#endif
1091#if HAVE_NETINET_IN6_VAR_H
1092#include <netinet/in6_var.h>
1093#endif
1094#if HAVE_NETINET_ICMP6_H
1095# include <netinet/icmp6.h>
1096#endif
1097#if HAVE_NETINET6_IN6_VAR_H
1098# include <netinet6/in6_var.h>
1099#endif
1100#if HAVE_NETINET6_ND6_H
Hasso Tepperfbf24542007-06-25 19:30:59 +00001101# include <netinet6/nd6.h>
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001102#endif
1103])dnl
1104
Joakim Tjernlundcbcd9bf2009-02-16 09:40:39 +01001105dnl disable doc check
1106if test "${enable_doc}" = "no";then
1107 DOC=""
1108else
1109 DOC="doc"
1110fi
1111
paul7ea487b2003-03-17 02:05:07 +00001112dnl --------------------
1113dnl Daemon disable check
1114dnl --------------------
1115if test "${enable_zebra}" = "no";then
1116 ZEBRA=""
1117else
1118 ZEBRA="zebra"
1119fi
David Wardf027d332012-04-30 11:36:15 -04001120AM_CONDITIONAL(ZEBRA, test "x$ZEBRA" = "xzebra")
paul7ea487b2003-03-17 02:05:07 +00001121
1122if test "${enable_bgpd}" = "no";then
1123 BGPD=""
1124else
1125 BGPD="bgpd"
1126fi
David Wardf027d332012-04-30 11:36:15 -04001127AM_CONDITIONAL(BGPD, test "x$BGPD" = "xbgpd")
paul7ea487b2003-03-17 02:05:07 +00001128
1129if test "${enable_ripd}" = "no";then
1130 RIPD=""
1131else
1132 RIPD="ripd"
1133fi
David Wardf027d332012-04-30 11:36:15 -04001134AM_CONDITIONAL(RIPD, test "x$RIPD" = "xripd")
paul7ea487b2003-03-17 02:05:07 +00001135
1136if test "${enable_ospfd}" = "no";then
1137 OSPFD=""
1138else
1139 OSPFD="ospfd"
1140fi
David Wardf027d332012-04-30 11:36:15 -04001141AM_CONDITIONAL(OSPFD, test "x$OSPFD" = "xospfd")
paul7ea487b2003-03-17 02:05:07 +00001142
ajsd0199432004-12-22 14:03:52 +00001143if test "${enable_watchquagga}" = "no";then
1144 WATCHQUAGGA=""
1145else
1146 WATCHQUAGGA="watchquagga"
1147fi
David Wardf027d332012-04-30 11:36:15 -04001148AM_CONDITIONAL(WATCHQUAGGA, test "x$WATCHQUAGGA" = "xwatchquagga")
ajsd0199432004-12-22 14:03:52 +00001149
paul1ef74ef2003-03-21 15:16:05 +00001150OSPFCLIENT=""
Donald Sharp36fef572015-12-16 14:22:10 -05001151if test "${enable_ospfapi}" != "no";then
paul9a569842003-03-28 01:45:13 +00001152 AC_DEFINE(SUPPORT_OSPF_API,,OSPFAPI)
paul1ef74ef2003-03-21 15:16:05 +00001153
Donald Sharp36fef572015-12-16 14:22:10 -05001154 if test "${enable_ospfclient}" != "no";then
paul1ef74ef2003-03-21 15:16:05 +00001155 OSPFCLIENT="ospfclient"
paul1ef74ef2003-03-21 15:16:05 +00001156 fi
paul7ea487b2003-03-17 02:05:07 +00001157fi
Donald Sharp36fef572015-12-16 14:22:10 -05001158
David Wardf027d332012-04-30 11:36:15 -04001159AM_CONDITIONAL(OSPFCLIENT, test "x$OSPFCLIENT" = "xospfclient")
paul7ea487b2003-03-17 02:05:07 +00001160
1161case "${enable_ripngd}" in
paul7ea487b2003-03-17 02:05:07 +00001162 "no" ) RIPNGD="";;
David Lamparter7fe17e62014-11-22 10:31:33 -08001163 * ) RIPNGD="ripngd";;
paul7ea487b2003-03-17 02:05:07 +00001164esac
David Wardf027d332012-04-30 11:36:15 -04001165AM_CONDITIONAL(RIPNGD, test "x$RIPNGD" = "xripngd")
paul7ea487b2003-03-17 02:05:07 +00001166
1167case "${enable_ospf6d}" in
paul7ea487b2003-03-17 02:05:07 +00001168 "no" ) OSPF6D="";;
David Lamparter7fe17e62014-11-22 10:31:33 -08001169 * ) OSPF6D="ospf6d";;
paul7ea487b2003-03-17 02:05:07 +00001170esac
David Wardf027d332012-04-30 11:36:15 -04001171AM_CONDITIONAL(OSPF6D, test "x$OSPF6D" = "xospf6d")
paul7ea487b2003-03-17 02:05:07 +00001172
jardin9e867fe2003-12-23 08:56:18 +00001173case "${enable_isisd}" in
jardin9e867fe2003-12-23 08:56:18 +00001174 "no" ) ISISD="";;
David Lamparter656a2c02015-02-09 11:36:10 +01001175 * ) ISISD="isisd";;
jardin9e867fe2003-12-23 08:56:18 +00001176esac
David Wardf027d332012-04-30 11:36:15 -04001177AM_CONDITIONAL(ISISD, test "x$ISISD" = "xisisd")
jardin9e867fe2003-12-23 08:56:18 +00001178
Everton Marques871dbcf2009-08-11 15:43:05 -03001179case "${enable_pimd}" in
Everton Marques871dbcf2009-08-11 15:43:05 -03001180 "no" ) PIMD="";;
Donald Sharpe6756782015-07-16 21:18:34 -04001181 * ) PIMD="pimd";;
Everton Marques871dbcf2009-08-11 15:43:05 -03001182esac
Everton Marquesff57d362014-06-25 15:54:03 -03001183AM_CONDITIONAL(PIMD, test "x$PIMD" = "xpimd")
Everton Marques871dbcf2009-08-11 15:43:05 -03001184
paul7ea487b2003-03-17 02:05:07 +00001185if test "${enable_bgp_announce}" = "no";then
Paul Jakma750e8142008-07-22 21:11:48 +00001186 AC_DEFINE(DISABLE_BGP_ANNOUNCE,1,Disable BGP installation to zebra)
1187else
1188 AC_DEFINE(DISABLE_BGP_ANNOUNCE,0,Disable BGP installation to zebra)
paul7ea487b2003-03-17 02:05:07 +00001189fi
1190
Joakim Tjernlundcbcd9bf2009-02-16 09:40:39 +01001191AC_SUBST(DOC)
paul7ea487b2003-03-17 02:05:07 +00001192AC_SUBST(ZEBRA)
1193AC_SUBST(BGPD)
1194AC_SUBST(RIPD)
1195AC_SUBST(RIPNGD)
1196AC_SUBST(OSPFD)
1197AC_SUBST(OSPF6D)
ajsd0199432004-12-22 14:03:52 +00001198AC_SUBST(WATCHQUAGGA)
jardin9e867fe2003-12-23 08:56:18 +00001199AC_SUBST(ISISD)
Everton Marques871dbcf2009-08-11 15:43:05 -03001200AC_SUBST(PIMD)
Greg Troxel97cee872007-08-02 13:36:56 +00001201AC_SUBST(SOLARIS)
paul7ea487b2003-03-17 02:05:07 +00001202AC_SUBST(VTYSH)
paul7ea487b2003-03-17 02:05:07 +00001203AC_SUBST(CURSES)
1204AC_SUBST(OSPFCLIENT)
paul1ef74ef2003-03-21 15:16:05 +00001205AC_SUBST(OSPFAPI)
paul7ea487b2003-03-17 02:05:07 +00001206AC_CHECK_LIB(c, inet_ntop, [AC_DEFINE(HAVE_INET_NTOP,,inet_ntop)])
1207AC_CHECK_LIB(c, inet_pton, [AC_DEFINE(HAVE_INET_PTON,,inet_pton)])
1208AC_CHECK_LIB(crypt, crypt)
1209AC_CHECK_LIB(resolv, res_init)
paul7ea487b2003-03-17 02:05:07 +00001210
paul7ea487b2003-03-17 02:05:07 +00001211dnl ---------------------------
Jeremy Jackson25f45882009-01-12 16:06:12 -05001212dnl check system has PCRE regexp
1213dnl ---------------------------
1214if test "x$enable_pcreposix" = "xyes"; then
1215 AC_CHECK_LIB(pcreposix, pcreposix_regexec, ,[enable_pcreposix=no
1216 AC_MSG_WARN([*** falling back to other regex library ***]) ])
1217fi
1218
1219if test "x$enable_pcreposix" != "xyes"; then
1220dnl ---------------------------
paul7ea487b2003-03-17 02:05:07 +00001221dnl check system has GNU regexp
1222dnl ---------------------------
Jeremy Jackson25f45882009-01-12 16:06:12 -05001223AC_MSG_CHECKING(whether system has GNU regex)
paul7ea487b2003-03-17 02:05:07 +00001224AC_CHECK_LIB(c, regexec,
1225[AC_DEFINE(HAVE_GNU_REGEX,,GNU regexp library)
1226 LIB_REGEX=""],
1227[LIB_REGEX="regex.o"])
Jeremy Jackson25f45882009-01-12 16:06:12 -05001228fi
1229AC_SUBST(HAVE_LIBPCREPOSIX)
paul7ea487b2003-03-17 02:05:07 +00001230AC_SUBST(LIB_REGEX)
1231
1232dnl ------------------
paulb1fc9ac2006-01-31 10:09:27 +00001233dnl check Net-SNMP library
paul7ea487b2003-03-17 02:05:07 +00001234dnl ------------------
Vincent Bernatd6be5fb2012-05-24 09:44:43 +02001235if test "${enable_snmp}" != ""; then
Vincent Bernat08d7f652012-05-22 22:29:17 +02001236 AC_PATH_TOOL([NETSNMP_CONFIG], [net-snmp-config], [no])
1237 if test x"$NETSNMP_CONFIG" = x"no"; then
1238 AC_MSG_ERROR([--enable-snmp given but unable to find net-snmp-config])
1239 fi
1240 LIBS="$LIBS `${NETSNMP_CONFIG} --agent-libs`"
1241 CFLAGS="`${NETSNMP_CONFIG} --base-cflags` $CFLAGS"
1242 AC_MSG_CHECKING([whether we can link to Net-SNMP])
1243 AC_LINK_IFELSE([AC_LANG_PROGRAM([
1244int main(void);
1245],
1246[
1247{
1248 return 0;
1249}
1250])],[AC_MSG_RESULT(yes)],[
1251 AC_MSG_RESULT(no)
1252 AC_MSG_ERROR([--enable-snmp given but not usable])])
1253 AC_DEFINE(HAVE_SNMP,,SNMP)
Vincent Bernatd6be5fb2012-05-24 09:44:43 +02001254 case "${enable_snmp}" in
1255 yes)
1256 SNMP_METHOD=agentx
1257 ;;
1258 smux|agentx)
1259 SNMP_METHOD="${enable_snmp}"
1260 ;;
1261 *)
1262 AC_MSG_ERROR([--enable-snmp given with an unknown method (${enable_snmp}). Use smux or agentx])
1263 ;;
1264 esac
1265 AH_TEMPLATE([SNMP_SMUX], [Use SNMP SMUX to interface with snmpd])
1266 AH_TEMPLATE([SNMP_AGENTX], [Use SNMP AgentX to interface with snmpd])
1267 AC_DEFINE_UNQUOTED(AS_TR_CPP(SNMP_${SNMP_METHOD}),,SNMP method to interface with snmpd)
paul7ea487b2003-03-17 02:05:07 +00001268fi
1269
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001270dnl ---------------------------
1271dnl sockaddr and netinet checks
1272dnl ---------------------------
1273AC_CHECK_TYPES([struct sockaddr, struct sockaddr_in,
1274 struct sockaddr_in6, struct sockaddr_un, struct sockaddr_dl,
Everton Marques871dbcf2009-08-11 15:43:05 -03001275 socklen_t, struct vifctl, struct mfcctl, struct sioc_sg_req,
1276 vifi_t, struct sioc_vif_req, struct igmpmsg,
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001277 struct ifaliasreq, struct if6_aliasreq, struct in6_aliasreq,
1278 struct nd_opt_adv_interval, struct rt_addrinfo,
Paul Jakma11770e12007-06-22 16:14:42 +00001279 struct nd_opt_homeagent_info, struct nd_opt_adv_interval],
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001280 [], [], QUAGGA_INCLUDES)
paul7ea487b2003-03-17 02:05:07 +00001281
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001282AC_CHECK_MEMBERS([struct sockaddr.sa_len,
1283 struct sockaddr_in.sin_len, struct sockaddr_un.sun_len,
1284 struct sockaddr_in6.sin6_scope_id,
David Lamparterca3ccd82012-09-26 14:52:39 +02001285 struct sockaddr_dl.sdl_len,
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001286 struct if6_aliasreq.ifra_lifetime,
1287 struct nd_opt_adv_interval.nd_opt_ai_type],
1288 [], [], QUAGGA_INCLUDES)
hasso71c0fb52003-05-25 20:18:13 +00001289
paul7ea487b2003-03-17 02:05:07 +00001290dnl ---------------------------
Paul Jakma11770e12007-06-22 16:14:42 +00001291dnl IRDP/pktinfo/icmphdr checks
paul7ea487b2003-03-17 02:05:07 +00001292dnl ---------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001293AC_CHECK_TYPES([struct in_pktinfo],
Paul Jakma11770e12007-06-22 16:14:42 +00001294 [AC_CHECK_TYPES([struct icmphdr],
1295 [if test "${enable_irdp}" != "no"; then
1296 AC_DEFINE(HAVE_IRDP,, IRDP)
1297 fi],
1298 [if test "${enable_irdp}" = "yes"; then
1299 AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
1300 fi], [QUAGGA_INCLUDES])],
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001301 [if test "${enable_irdp}" = "yes"; then
1302 AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
1303 fi], [QUAGGA_INCLUDES])
vincent29c4c9b2005-03-25 13:05:47 +00001304
Everton Marques871dbcf2009-08-11 15:43:05 -03001305dnl -----------------------
1306dnl checking for IP_PKTINFO
1307dnl -----------------------
1308AC_MSG_CHECKING(for IP_PKTINFO)
1309AC_TRY_COMPILE([#include <netdb.h>], [
1310 int opt = IP_PKTINFO;
1311], [
1312 AC_MSG_RESULT(yes)
1313 AC_DEFINE(HAVE_IP_PKTINFO, 1, [Have IP_PKTINFO])
1314], [
1315 AC_MSG_RESULT(no)
1316])
1317
1318dnl ---------------------------
1319dnl checking for IP_RECVDSTADDR
1320dnl ---------------------------
1321AC_MSG_CHECKING(for IP_RECVDSTADDR)
1322AC_TRY_COMPILE([#include <netinet/in.h>], [
1323 int opt = IP_RECVDSTADDR;
1324], [
1325 AC_MSG_RESULT(yes)
1326 AC_DEFINE(HAVE_IP_RECVDSTADDR, 1, [Have IP_RECVDSTADDR])
1327], [
1328 AC_MSG_RESULT(no)
1329])
1330
1331dnl ----------------------
1332dnl checking for IP_RECVIF
1333dnl ----------------------
1334AC_MSG_CHECKING(for IP_RECVIF)
1335AC_TRY_COMPILE([#include <netinet/in.h>], [
1336 int opt = IP_RECVIF;
1337], [
1338 AC_MSG_RESULT(yes)
1339 AC_DEFINE(HAVE_IP_RECVIF, 1, [Have IP_RECVIF])
1340], [
1341 AC_MSG_RESULT(no)
1342])
1343
paul7ea487b2003-03-17 02:05:07 +00001344dnl --------------------------------------
1345dnl checking for getrusage struct and call
1346dnl --------------------------------------
Stephen Hemminger47f6aef2013-01-04 22:29:22 +00001347if test "${enable_rusage}" != "no"; then
1348 AC_MSG_CHECKING(whether getrusage is available)
1349 AC_TRY_COMPILE([#include <sys/resource.h>],[struct rusage ac_x; getrusage (RUSAGE_SELF, &ac_x);],
1350 [AC_MSG_RESULT(yes)
1351 AC_DEFINE(HAVE_RUSAGE,,rusage)],
1352 AC_MSG_RESULT(no))
1353fi
paul7ea487b2003-03-17 02:05:07 +00001354
Stephen Hemmingerc4376c92009-05-28 15:29:10 -07001355dnl --------------------------------------
1356dnl checking for clock_time monotonic struct and call
1357dnl --------------------------------------
Paul Jakma6511cab2009-06-18 17:38:01 +01001358AC_CHECK_DECL(CLOCK_MONOTONIC,
1359 [AC_CHECK_LIB(rt, clock_gettime, [LIBS="$LIBS -lrt"])
Dmitry Tejblum9964fcf2009-11-05 16:50:36 +03001360 AC_DEFINE(HAVE_CLOCK_MONOTONIC,, Have monotonic clock)
Paul Jakma6511cab2009-06-18 17:38:01 +01001361], [AC_MSG_RESULT(no)], [QUAGGA_INCLUDES])
Stephen Hemmingerc4376c92009-05-28 15:29:10 -07001362
pauledd7c242003-06-04 13:59:38 +00001363dnl -------------------
1364dnl capabilities checks
1365dnl -------------------
hasso41d3fc92004-04-06 11:59:00 +00001366if test "${enable_capabilities}" != "no"; then
1367 AC_MSG_CHECKING(whether prctl PR_SET_KEEPCAPS is available)
1368 AC_TRY_COMPILE([#include <sys/prctl.h>],[prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);],
1369 [AC_MSG_RESULT(yes)
1370 AC_DEFINE(HAVE_PR_SET_KEEPCAPS,,prctl)
1371 quagga_ac_keepcaps="yes"],
1372 AC_MSG_RESULT(no)
pauledd7c242003-06-04 13:59:38 +00001373 )
hasso41d3fc92004-04-06 11:59:00 +00001374 if test x"${quagga_ac_keepcaps}" = x"yes"; then
1375 AC_CHECK_HEADERS(sys/capability.h)
1376 fi
1377 if test x"${ac_cv_header_sys_capability_h}" = x"yes"; then
1378 AC_CHECK_LIB(cap, cap_init,
1379 [AC_DEFINE(HAVE_LCAPS,1,Capabilities)
1380 LIBCAP="-lcap"
paulceacedb2005-09-29 14:39:32 +00001381 quagga_ac_lcaps="yes"]
hasso41d3fc92004-04-06 11:59:00 +00001382 )
paulceacedb2005-09-29 14:39:32 +00001383 else
1384 AC_CHECK_HEADERS(priv.h,
1385 [AC_MSG_CHECKING(Solaris style privileges are available)
1386 AC_TRY_COMPILE([#include <priv.h>],[getpflags(PRIV_AWARE);],
1387 [AC_MSG_RESULT(yes)
1388 AC_DEFINE(HAVE_SOLARIS_CAPABILITIES,1,getpflags)
1389 quagga_ac_scaps="yes"],
1390 AC_MSG_RESULT(no)
1391 )
1392 ]
1393 )
1394 fi
1395 if test x"${quagga_ac_scaps}" = x"yes" \
1396 -o x"${quagga_ac_lcaps}" = x"yes"; then
1397 AC_DEFINE(HAVE_CAPABILITIES,1,capabilities)
hasso41d3fc92004-04-06 11:59:00 +00001398 fi
pauledd7c242003-06-04 13:59:38 +00001399fi
1400AC_SUBST(LIBCAP)
1401
Doug VanLeuven327c4cd2012-12-14 14:58:30 +02001402dnl ---------------------------------------------------------------------------
1403dnl http://www.gnu.org/software/autoconf-archive/ax_sys_weak_alias.html
1404dnl Check for and set one of the following = 1
1405dnl HAVE_SYS_WEAK_ALIAS_ATTRIBUTE
1406dnl HAVE_SYS_WEAK_ALIAS_PRAGMA
1407dnl HAVE_SYS_WEAK_ALIAS_HPSECONDARY
1408dnl HAVE_SYS_WEAK_ALIAS_CRIDUPLICATE
1409dnl If any scheme is found, set
1410dnl HAVE_SYS_WEAK_ALIAS=1
1411dnl The following variable is set to text value
1412dnl WEAK_ALIAS = "attribute" || "pragma" || "hpsecondary" || "criduplicate" || "no"
1413dnl If weak alias can cross object file boundaries
1414dnl WEAK_ALIAS_CROSSFILE = "yes" || "no"
1415dnl ---------------------------------------------------------------------------
1416AX_SYS_WEAK_ALIAS
1417
paulfb2d1502003-06-04 09:40:54 +00001418dnl ---------------------------
1419dnl check for glibc 'backtrace'
1420dnl ---------------------------
David Lamparter8c99b4c2013-08-01 07:43:36 +00001421if test x"${enable_backtrace}" != x"no" ; then
1422 backtrace_ok=no
1423 AC_CHECK_HEADER([execinfo.h], [
1424 AC_SEARCH_LIBS([backtrace], [execinfo], [
1425 AC_DEFINE(HAVE_GLIBC_BACKTRACE,,[Glibc backtrace])
1426 AC_DEFINE(HAVE_STACK_TRACE,,[Stack symbol decoding])
1427 backtrace_ok=yes
1428 ],, [-lm])
Dmitrij Tejblumeda35292011-09-15 20:00:33 +04001429 ])
David Lamparter8c99b4c2013-08-01 07:43:36 +00001430
1431 if test x"${enable_backtrace}" = x"yes" -a x"${backtrace_ok}" = x"no"; then
1432 dnl user explicitly requested backtrace but we failed to find support
1433 AC_MSG_FAILURE([failed to find backtrace support])
1434 fi
1435fi
paulfb2d1502003-06-04 09:40:54 +00001436
Paul Jakma41be32b2006-03-30 13:53:59 +00001437dnl -----------------------------------------
1438dnl check for malloc mallinfo struct and call
1439dnl this must try and link using LIBS, in
1440dnl order to check no alternative allocator
1441dnl has been specified, which might not provide
1442dnl mallinfo, e.g. such as Umem on Solaris.
1443dnl -----------------------------------------
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001444AC_CHECK_HEADER([malloc.h],
Paul Jakma41be32b2006-03-30 13:53:59 +00001445 [AC_MSG_CHECKING(whether mallinfo is available)
1446 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <malloc.h>]],
1447 [[struct mallinfo ac_x; ac_x = mallinfo ();]])],
1448 [AC_MSG_RESULT(yes)
1449 AC_DEFINE(HAVE_MALLINFO,,mallinfo)],
1450 AC_MSG_RESULT(no)
1451 )
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001452 ], [], QUAGGA_INCLUDES)
Paul Jakma41be32b2006-03-30 13:53:59 +00001453
paul408ad942003-05-20 00:03:33 +00001454dnl ----------
1455dnl configure date
1456dnl ----------
1457CONFDATE=`date '+%Y%m%d'`
1458AC_SUBST(CONFDATE)
1459
David Lamparterf281ab92013-02-26 16:21:20 +01001460dnl -------
1461dnl DejaGNU
1462dnl -------
1463if test x"$DEJAGNU" = x
1464then
1465 DEJAGNU="\$(top_srcdir)/tests/global-conf.exp"
1466fi
1467RUNTESTDEFAULTFLAGS="-x --tool \$\$tool"
1468
1469AC_SUBST(DEJAGNU)
1470AC_SUBST(RUNTESTDEFAULTFLAGS)
1471
paul7ea487b2003-03-17 02:05:07 +00001472dnl ------------------------------
paula159ed92003-06-04 11:01:45 +00001473dnl set paths for state directory
paul23bd12c2003-04-07 06:11:09 +00001474dnl ------------------------------
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001475AC_MSG_CHECKING(directory to use for state file)
paul23bd12c2003-04-07 06:11:09 +00001476if test "${prefix}" = "NONE"; then
paule8f29842003-08-12 13:08:31 +00001477 quagga_statedir_prefix="";
paul23bd12c2003-04-07 06:11:09 +00001478else
paule8f29842003-08-12 13:08:31 +00001479 quagga_statedir_prefix=${prefix}
paul23bd12c2003-04-07 06:11:09 +00001480fi
1481if test "${localstatedir}" = '${prefix}/var'; then
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001482 for QUAGGA_STATE_DIR in ${quagga_statedir_prefix}/var/run dnl
paule8f29842003-08-12 13:08:31 +00001483 ${quagga_statedir_prefix}/var/adm dnl
1484 ${quagga_statedir_prefix}/etc dnl
paula159ed92003-06-04 11:01:45 +00001485 /var/run dnl
1486 /var/adm dnl
1487 /etc dnl
1488 /dev/null;
paul23bd12c2003-04-07 06:11:09 +00001489 do
paule8f29842003-08-12 13:08:31 +00001490 test -d $QUAGGA_STATE_DIR && break
paul23bd12c2003-04-07 06:11:09 +00001491 done
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001492 quagga_statedir=$QUAGGA_STATE_DIR
paul23bd12c2003-04-07 06:11:09 +00001493else
paule8f29842003-08-12 13:08:31 +00001494 quagga_statedir=${localstatedir}
paul23bd12c2003-04-07 06:11:09 +00001495fi
paule8f29842003-08-12 13:08:31 +00001496if test $quagga_statedir = "/dev/null"; then
paula159ed92003-06-04 11:01:45 +00001497 AC_MSG_ERROR('STATE DIRECTORY NOT FOUND! FIX OR SPECIFY --localstatedir!')
1498fi
Jeremy Jacksone84999d2009-01-21 20:29:39 -05001499AC_MSG_RESULT(${quagga_statedir})
1500AC_SUBST(quagga_statedir)
paula159ed92003-06-04 11:01:45 +00001501
paule8f29842003-08-12 13:08:31 +00001502AC_DEFINE_UNQUOTED(PATH_ZEBRA_PID, "$quagga_statedir/zebra.pid",zebra PID)
1503AC_DEFINE_UNQUOTED(PATH_RIPD_PID, "$quagga_statedir/ripd.pid",ripd PID)
1504AC_DEFINE_UNQUOTED(PATH_RIPNGD_PID, "$quagga_statedir/ripngd.pid",ripngd PID)
1505AC_DEFINE_UNQUOTED(PATH_BGPD_PID, "$quagga_statedir/bgpd.pid",bgpd PID)
1506AC_DEFINE_UNQUOTED(PATH_OSPFD_PID, "$quagga_statedir/ospfd.pid",ospfd PID)
1507AC_DEFINE_UNQUOTED(PATH_OSPF6D_PID, "$quagga_statedir/ospf6d.pid",ospf6d PID)
jardin9e867fe2003-12-23 08:56:18 +00001508AC_DEFINE_UNQUOTED(PATH_ISISD_PID, "$quagga_statedir/isisd.pid",isisd PID)
Everton Marques871dbcf2009-08-11 15:43:05 -03001509AC_DEFINE_UNQUOTED(PATH_PIMD_PID, "$quagga_statedir/pimd.pid",pimd PID)
ajsd0199432004-12-22 14:03:52 +00001510AC_DEFINE_UNQUOTED(PATH_WATCHQUAGGA_PID, "$quagga_statedir/watchquagga.pid",watchquagga PID)
paule8f29842003-08-12 13:08:31 +00001511AC_DEFINE_UNQUOTED(ZEBRA_SERV_PATH, "$quagga_statedir/zserv.api",zebra api socket)
1512AC_DEFINE_UNQUOTED(ZEBRA_VTYSH_PATH, "$quagga_statedir/zebra.vty",zebra vty socket)
1513AC_DEFINE_UNQUOTED(RIP_VTYSH_PATH, "$quagga_statedir/ripd.vty",rip vty socket)
1514AC_DEFINE_UNQUOTED(RIPNG_VTYSH_PATH, "$quagga_statedir/ripngd.vty",ripng vty socket)
1515AC_DEFINE_UNQUOTED(BGP_VTYSH_PATH, "$quagga_statedir/bgpd.vty",bgpd vty socket)
1516AC_DEFINE_UNQUOTED(OSPF_VTYSH_PATH, "$quagga_statedir/ospfd.vty",ospfd vty socket)
1517AC_DEFINE_UNQUOTED(OSPF6_VTYSH_PATH, "$quagga_statedir/ospf6d.vty",ospf6d vty socket)
jardin9e867fe2003-12-23 08:56:18 +00001518AC_DEFINE_UNQUOTED(ISIS_VTYSH_PATH, "$quagga_statedir/isisd.vty",isisd vty socket)
Everton Marques871dbcf2009-08-11 15:43:05 -03001519AC_DEFINE_UNQUOTED(PIM_VTYSH_PATH, "$quagga_statedir/pimd.vty",pimd vty socket)
ajs515210b2004-12-22 15:35:12 +00001520AC_DEFINE_UNQUOTED(DAEMON_VTY_DIR, "$quagga_statedir",daemon vty directory)
paul7ea487b2003-03-17 02:05:07 +00001521
paul1eb8ef22005-04-07 07:30:20 +00001522dnl -------------------------------
1523dnl Quagga sources should always be
1524dnl current wrt interfaces. Dont
1525dnl allow deprecated interfaces to
1526dnl be exposed.
1527dnl -------------------------------
1528AC_DEFINE(QUAGGA_NO_DEPRECATED_INTERFACES, 1, Hide deprecated interfaces)
1529
paul7ea487b2003-03-17 02:05:07 +00001530dnl ---------------------------
1531dnl Check htonl works correctly
1532dnl ---------------------------
1533AC_MSG_CHECKING(for working htonl)
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001534AC_CACHE_VAL(ac_cv_htonl_works,
1535 [AC_LINK_IFELSE([AC_LANG_PROGRAM([QUAGGA_INCLUDES],[htonl (0);])],
1536 [ac_cv_htonl_works=yes], [ac_cv_htonl_works=no])
1537 ]
1538)
paul7ea487b2003-03-17 02:05:07 +00001539AC_MSG_RESULT($ac_cv_htonl_works)
1540
paul14c17fd2004-11-07 22:34:23 +00001541AC_CONFIG_FILES([Makefile lib/Makefile zebra/Makefile ripd/Makefile
ajsd0199432004-12-22 14:03:52 +00001542 ripngd/Makefile bgpd/Makefile ospfd/Makefile watchquagga/Makefile
Paul Jakma336724d2015-05-11 15:13:31 +01001543 ospf6d/Makefile isisd/Makefile vtysh/Makefile
David Lamparterf281ab92013-02-26 16:21:20 +01001544 doc/Makefile ospfclient/Makefile tests/Makefile m4/Makefile
Everton Marques871dbcf2009-08-11 15:43:05 -03001545 pimd/Makefile
David Lamparter5bb7e4d2013-02-26 17:53:30 +01001546 tests/bgpd.tests/Makefile
David Lamparterc69905b2013-01-24 01:39:14 +01001547 tests/libzebra.tests/Makefile
David Lamparterf281ab92013-02-26 16:21:20 +01001548 redhat/Makefile
gdt69f1fc22004-08-27 15:57:35 +00001549 pkgsrc/Makefile
paul670bbf12004-11-12 09:05:00 +00001550 redhat/quagga.spec
gdtb7a97f82004-07-23 16:23:56 +00001551 lib/version.h
paul14c17fd2004-11-07 22:34:23 +00001552 doc/defines.texi
hassof695b012005-04-02 19:03:39 +00001553 isisd/topology/Makefile
gdtcbd04082004-08-31 18:16:36 +00001554 pkgsrc/bgpd.sh pkgsrc/ospf6d.sh pkgsrc/ospfd.sh
paulf31293a2004-11-12 09:27:04 +00001555 pkgsrc/ripd.sh pkgsrc/ripngd.sh pkgsrc/zebra.sh])
paul26275b02005-04-11 07:10:47 +00001556AC_CONFIG_FILES([solaris/Makefile])
1557
paul670bbf12004-11-12 09:05:00 +00001558AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl])
hasso48577192004-11-19 06:41:49 +00001559## Hack, but working solution to avoid rebuilding of quagga.info.
1560## It's already in CVS until texinfo 4.7 is more common.
paul14c17fd2004-11-07 22:34:23 +00001561AC_OUTPUT
paul7ea487b2003-03-17 02:05:07 +00001562
1563echo "
hassoc89f6492004-08-26 12:21:28 +00001564Quagga configuration
1565--------------------
1566quagga version : ${PACKAGE_VERSION}
Joachim Nilsson1080c132012-05-30 08:15:48 +02001567host operating system : ${host_os}
paul7ea487b2003-03-17 02:05:07 +00001568source code location : ${srcdir}
1569compiler : ${CC}
1570compiler flags : ${CFLAGS}
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001571make : ${MAKE-make}
Paul Jakma6f0e3f62007-05-10 02:38:51 +00001572linker flags : ${LDFLAGS} ${LIBS} ${LIBCAP} ${LIBREADLINE} ${LIBM}
paule8f29842003-08-12 13:08:31 +00001573state file directory : ${quagga_statedir}
pauldc7a2bf2003-10-22 00:07:44 +00001574config file directory : `eval echo \`echo ${sysconfdir}\``
gdtd6b72f72003-12-03 17:24:27 +00001575example directory : `eval echo \`echo ${exampledir}\``
paul8d4aee52003-06-06 00:30:35 +00001576user to run as : ${enable_user}
1577group to run as : ${enable_group}
1578group for vty sockets : ${enable_vty_group}
gdtaa593d52003-12-22 20:15:53 +00001579config file mask : ${enable_configfile_mask}
1580log file mask : ${enable_logfile_mask}
pauldc7a2bf2003-10-22 00:07:44 +00001581
1582The above user and group must have read/write access to the state file
Paul Jakma105b8232006-05-28 08:02:41 +00001583directory and to the config files in the config file directory."
1584
1585if test x"$quagga_cv_gnu_make" = x"no"; then echo "
1586Warning: The ${MAKE-make} programme detected, either in your path or
1587via the MAKE variable, is not GNU Make. GNU make may be installed as
1588gmake on some systems. and is required to complete a build of Quagga
1589" > /dev/stderr
1590fi