##
AC_PREREQ(2.60)
-AC_INIT(frr, 5.1-dev, [https://github.com/frrouting/frr/issues])
+AC_INIT(frr, 6.0, [https://github.com/frrouting/frr/issues])
PACKAGE_URL="https://frrouting.org/"
AC_SUBST(PACKAGE_URL)
PACKAGE_FULLNAME="FRRouting"
AC_SUBST(PACKAGE_FULLNAME)
-CONFIG_ARGS="$ac_configure_args"
+CONFIG_ARGS="`echo $ac_configure_args | sed -e \"s% '[[A-Z]]*FLAGS=[[^']]\+'%%g\"`"
AC_SUBST(CONFIG_ARGS)
AC_CONFIG_SRCDIR(lib/zebra.h)
# Disable portability warnings -- our automake code (in particular
# common.am) uses some constructs specific to gmake.
-AM_INIT_AUTOMAKE([1.12 -Wno-portability])
+AM_INIT_AUTOMAKE([1.12 -Wno-portability foreign])
m4_ifndef([AM_SILENT_RULES], [m4_define([AM_SILENT_RULES],[])])
AM_SILENT_RULES([yes])
AC_CONFIG_HEADERS(config.h)
AC_USE_SYSTEM_EXTENSIONS
AC_DEFUN([AC_C_FLAG], [{
+ m4_pushdef([cachename],[m4_translit([frr_cv_$1],[ =-],[___])])
+ AC_CACHE_CHECK([[whether $CC supports $1]], cachename, [
AC_LANG_PUSH(C)
ac_c_flag_save="$CFLAGS"
CFLAGS="$CFLAGS $1"
- AC_MSG_CHECKING([[whether $CC supports $1]])
AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[]])],
[
- AC_MSG_RESULT([yes])
- m4_if([$3], [], [], [
- CFLAGS="$ac_c_flag_save"
- $3
- ])
+ cachename=yes
], [
- CFLAGS="$ac_c_flag_save"
- AC_MSG_RESULT([no])
- $2
+ cachename=no
])
+ CFLAGS="$ac_c_flag_save"
AC_LANG_POP(C)
- }])
+ ])
+ if test "${cachename}" = yes; then
+ m4_if([$3], [], [CFLAGS="$CFLAGS $1"], [$3])
+ else
+ :
+ $2
+ fi
+ m4_popdef([cachename])
+}])
AC_DEFUN([AC_LINK_IFELSE_FLAGS], [{
AC_LANG_PUSH(C)
AC_C_FLAG([-std=gnu11], [CC="$ac_cc"], [CC="$CC -std=gnu11"])
-dnl AddressSanitizer support
-AC_ARG_ENABLE([address-sanitizer], AS_HELP_STRING([--enable-address-sanitizer], \
- [enabled AddressSanitizer support for detecting a wide variety of \
- memory allocation and deallocation errors]), \
- [AC_DEFINE(HAVE_ADDRESS_SANITIZER, 1, [enable AddressSanitizer])
- ASAN_FLAGS="-fsanitize=address"
- SAN_CLIPPY_FLAGS="-fno-sanitize=all"
- AC_SUBST([ASAN_FLAGS])
- AC_SUBST([SAN_CLIPPY_FLAGS])
- LIBS="-ldl $LIBS"
- AC_TRY_COMPILE([],[const int i=0;],[AC_MSG_NOTICE([Address Sanitizer Enabled])],
- [AC_MSG_ERROR([Address Sanitizer not available])])
- ])
-
-dnl ThreadSanitizer support
-AC_ARG_ENABLE([thread-sanitizer], AS_HELP_STRING([--enable-thread-sanitizer], \
- [enabled ThreadSanitizer support for detecting data races]), \
- [AC_DEFINE(HAVE_THREAD_SANITIZER, 1, [enable ThreadSanitizer])
- TSAN_FLAGS="-fsanitize=thread"
- SAN_CLIPPY_FLAGS="-fno-sanitize=all"
- AC_SUBST([TSAN_FLAGS])
- AC_SUBST([SAN_CLIPPY_FLAGS])
- LIBS="-ldl $LIBS"
- AC_TRY_COMPILE([],[const int i=0;],[AC_MSG_NOTICE([Thread Sanitizer Enabled])],
- [AC_MSG_ERROR([Thread Sanitizer not available])])
- ])
-
-dnl MemorySanitizer support
-AC_ARG_ENABLE([memory-sanitizer], AS_HELP_STRING([--enable-memory-sanitizer], \
- [enabled MemorySanitizer support for detecting uninitialized memory reads]), \
- [AC_DEFINE(HAVE_THREAD_SANITIZER, 1, [enable MemorySanitizer])
- MSAN_FLAGS="-fsanitize=memory -fPIE -pie"
- SAN_CLIPPY_FLAGS="-fno-sanitize=all"
- AC_SUBST([MSAN_FLAGS])
- AC_SUBST([SAN_CLIPPY_FLAGS])
- LIBS="-ldl $LIBS"
- AC_TRY_COMPILE([],[const int i=0;],[AC_MSG_NOTICE([Memory Sanitizer Enabled])],
- [AC_MSG_ERROR([Memory Sanitizer not available])])
- ])
-
dnl if the user has specified any CFLAGS, override our settings
if test "x${enable_gcov}" = "xyes"; then
if test "z$orig_cflags" = "z"; then
fi
AC_SUBST(WERROR)
-dnl need link on this one, not compile
-AC_LANG_PUSH(C)
-ac_ld_flag_save="$LDFLAGS"
-LDFLAGS="$LDFLAGS -rdynamic"
-AC_MSG_CHECKING([[whether linker supports -rdynamic]])
-AC_LINK_IFELSE(
- [AC_LANG_PROGRAM([[]])],
- [AC_MSG_RESULT([yes])],
- [
- LDFLAGS="$ac_ld_flag_save"
- AC_MSG_RESULT([no])
- ])
-AC_LANG_POP(C)
+SAN_FLAGS=""
+if test "$enable_address_sanitizer" = "yes"; then
+ AC_C_FLAG([-fsanitize=address], [
+ AC_MSG_ERROR([$CC does not support Address Sanitizer.])
+ ], [
+ SAN_FLAGS="$SAN_FLAGS -fsanitize=address"
+ ])
+fi
+if test "$enable_thread_sanitizer" = "yes"; then
+ AC_C_FLAG([-fsanitize=thread], [
+ AC_MSG_ERROR([$CC does not support Thread Sanitizer.])
+ ], [
+ SAN_FLAGS="$SAN_FLAGS -fsanitize=thread"
+ ])
+fi
+if test "$enable_memory_sanitizer" = "yes"; then
+ AC_C_FLAG([-fsanitize=thread -fPIE -pie], [
+ AC_MSG_ERROR([$CC does not support Thread Sanitizer.])
+ ], [
+ SAN_FLAGS="-fsanitize=memory -fPIE -pie"
+ ])
+fi
+AC_SUBST([SAN_FLAGS])
dnl ----------
dnl Essentials
dnl -------
LT_INIT
+dnl $AR and $RANLIB are set by LT_INIT above
+AC_MSG_CHECKING([whether $AR supports D option])
+if $AR crD conftest.a; then
+ AC_MSG_RESULT([yes])
+ dnl ARFLAGS is for automake, AR_FLAGS for libtool m-(
+ ARFLAGS="crD"
+ AR_FLAGS="crD"
+else
+ AC_MSG_RESULT([no])
+ ARFLAGS="cru"
+ AR_FLAGS="cru"
+fi
+AC_SUBST(ARFLAGS)
+AC_SUBST(AR_FLAGS)
+
+AC_MSG_CHECKING([whether $RANLIB supports D option])
+if $RANLIB -D conftest.a; then
+ AC_MSG_RESULT([yes])
+ RANLIB="$RANLIB -D"
+else
+ AC_MSG_RESULT([no])
+fi
+AC_SUBST(RANLIB)
+
+test -f conftest.a && rm conftest.a
+
dnl ----------------------
dnl Packages configuration
dnl ----------------------
+if test -f config.version; then
+ . ./config.version
+elif test -f "${srcdir}/config.version"; then
+ . "${srcdir}/config.version"
+fi
AC_ARG_WITH(pkg-extra-version,
- AS_HELP_STRING([--with-pkg-extra-version=VER], [add extra version field, for packagers/distributions]),
- [EXTRAVERSION=$withval],)
+ AS_HELP_STRING([--with-pkg-extra-version=VER], [add extra version field, for packagers/distributions]), [
+ if test "$withval" = "no"; then
+ EXTRAVERSION=
+ else
+ EXTRAVERSION=$withval
+ fi
+], [])
AC_ARG_WITH(pkg-git-version,
AS_HELP_STRING([--with-pkg-git-version], [add git information to MOTD and build version string]),
[ test "x$withval" != "xno" && with_pkg_git_version="yes" ])
AS_HELP_STRING([--disable-vtysh], [do not build integrated vty shell for FRR]))
AC_ARG_ENABLE(doc,
AS_HELP_STRING([--disable-doc], [do not build docs]))
+AC_ARG_ENABLE(doc-html,
+ AS_HELP_STRING([--enable-doc-html], [build HTML docs]))
AC_ARG_ENABLE(zebra,
AS_HELP_STRING([--disable-zebra], [do not build zebra daemon]))
AC_ARG_ENABLE(bgpd,
AS_HELP_STRING([--disable-bgp-announce,], [turn off BGP route announcement]))
AC_ARG_ENABLE(bgp-vnc,
AS_HELP_STRING([--disable-bgp-vnc],[turn off BGP VNC support]))
-AC_ARG_WITH(rfp-path,
- AS_HELP_STRING([--with-rfp-path[=DIR]],[path to replaced stub RFP used with BGP VNC]))
AC_ARG_ENABLE(snmp,
- AS_HELP_STRING([--enable-snmp=ARG], [enable SNMP support (smux or agentx)]))
+ AS_HELP_STRING([--enable-snmp], [enable SNMP support for agentx]))
AC_ARG_ENABLE(zeromq,
AS_HELP_STRING([--enable-zeromq], [enable ZeroMQ handler (libfrrzmq)]))
AC_ARG_WITH(libpam,
AS_HELP_STRING([--disable-rusage], [disable using getrusage]))
AC_ARG_ENABLE(gcc_ultra_verbose,
AS_HELP_STRING([--enable-gcc-ultra-verbose], [enable ultra verbose GCC warnings]))
-AC_ARG_ENABLE(linux24_tcp_md5,
- AS_HELP_STRING([--enable-linux24-tcp-md5], [enable support for old, Linux-2.4 RFC2385 patch]))
AC_ARG_ENABLE(backtrace,
AS_HELP_STRING([--disable-backtrace,], [disable crash backtraces (default autodetect)]))
AC_ARG_ENABLE(time-check,
AS_HELP_STRING([--enable-gcov], [Add code coverage information]))
AC_ARG_ENABLE(bfdd,
AS_HELP_STRING([--disable-bfdd], [do not build bfdd]))
+AC_ARG_ENABLE([address-sanitizer],
+ AS_HELP_STRING([--enable-address-sanitizer], [enable AddressSanitizer support for detecting a wide variety of memory allocation and deallocation errors]))
+AC_ARG_ENABLE([thread-sanitizer],
+ AS_HELP_STRING([--enable-thread-sanitizer], [enable ThreadSanitizer support for detecting data races]))
+AC_ARG_ENABLE([memory-sanitizer],
+ AS_HELP_STRING([--enable-memory-sanitizer], [enable MemorySanitizer support for detecting uninitialized memory reads]))
AS_IF([test "${enable_clippy_only}" != "yes"], [
AC_CHECK_HEADERS(json-c/json.h)
AC_CHECK_LIB(json-c, json_object_get, LIBS="$LIBS -ljson-c", [], [-lm])
-if test $ac_cv_lib_json_c_json_object_get = no; then
+if test "$ac_cv_lib_json_c_json_object_get" = no; then
AC_CHECK_LIB(json, json_object_get, LIBS="$LIBS -ljson")
- if test $ac_cv_lib_json_json_object_get = no; then
+ if test "$ac_cv_lib_json_json_object_get" = no; then
AC_MSG_ERROR([lib json is needed to compile])
fi
fi
#
# Python for clippy
#
-AS_IF([test "$host" = "$build"], [
- PYTHONCONFIG=""
- # ordering:
- # 1. try python3, but respect the user's preference on which minor ver
- # 2. try python, which might be py3 or py2 again on the user's preference
- # 3. try python2 (can really only be 2.7 but eh)
- # 4. try 3.5 > 3.4 > 3.3 > 3.2 > 2.7 through pkg-config (no user pref)
- #
- # (AX_PYTHON_DEVEL has no clue about py3 vs py2)
- # (AX_PYTHON does not do what we need)
-
- AC_CHECK_TOOLS([PYTHONCONFIG], [python3-config python-config python2-config])
- if test -n "$PYTHONCONFIG"; then
- PYTHON_CFLAGS="`\"${PYTHONCONFIG}\" --includes`"
- PYTHON_LIBS="`\"${PYTHONCONFIG}\" --libs`"
-
- AC_MSG_CHECKING([whether we found a working Python version])
- AC_LINK_IFELSE_FLAGS([$PYTHON_CFLAGS], [$PYTHON_LIBS], [AC_LANG_PROGRAM([
+AC_DEFUN([FRR_PYTHON_CHECK_WORKING], [
+ AC_MSG_CHECKING([whether we found a working Python version])
+ AC_LINK_IFELSE_FLAGS([$PYTHON_CFLAGS], [$PYTHON_LIBS], [AC_LANG_PROGRAM([
#include <Python.h>
#if PY_VERSION_HEX < 0x02070000
#error python too old
return 0;
}
])], [
- PYTHONCONFIG=""
- unset PYTHON_LIBS
- unset PYTHON_CFLAGS
- ])
- fi
-
- if test -z "$PYTHONCONFIG"; then
- PKG_CHECK_MODULES([PYTHON], python-3.5, [], [
- PKG_CHECK_MODULES([PYTHON], python-3.4, [], [
- PKG_CHECK_MODULES([PYTHON], python-3.3, [], [
- PKG_CHECK_MODULES([PYTHON], python-3.2, [], [
- PKG_CHECK_MODULES([PYTHON], python-2.7, [], [
- AC_MSG_FAILURE([could not find python-config or pkg-config python, please install Python development files from libpython-dev or similar])
- ])])])])])
-
-
- AC_MSG_CHECKING([whether we found a working Python version])
+ # some python installs are missing the zlib dependency...
+ PYTHON_LIBS="${PYTHON_LIBS} -lz"
AC_LINK_IFELSE_FLAGS([$PYTHON_CFLAGS], [$PYTHON_LIBS], [AC_LANG_PROGRAM([
#include <Python.h>
#if PY_VERSION_HEX < 0x02070000
return 0;
}
])], [
+ m4_if([$1], [], [
+ PYTHONCONFIG=""
+ unset PYTHON_LIBS
+ unset PYTHON_CFLAGS
+ ], [$1])
+ ])
+ ])
+])
+
+AS_IF([test "$host" = "$build"], [
+ PYTHONCONFIG=""
+
+ # ordering:
+ # 1. try python3, but respect the user's preference on which minor ver
+ # 2. try python, which might be py3 or py2 again on the user's preference
+ # 3. try python2 (can really only be 2.7 but eh)
+ # 4. try 3.6 > 3.5 > 3.4 > 3.3 > 3.2 > 2.7 through pkg-config (no user pref)
+ #
+ # (AX_PYTHON_DEVEL has no clue about py3 vs py2)
+ # (AX_PYTHON does not do what we need)
+
+ AC_CHECK_TOOLS([PYTHONCONFIG], [ \
+ python3-config \
+ python-config \
+ python2-config \
+ python3.6-config \
+ python3.5-config \
+ python3.4-config \
+ python3.3-config \
+ python3.2-config \
+ python2.7-config ])
+ if test -n "$PYTHONCONFIG"; then
+ PYTHON_CFLAGS="`\"${PYTHONCONFIG}\" --includes`"
+ PYTHON_LIBS="`\"${PYTHONCONFIG}\" --ldflags`"
+
+ FRR_PYTHON_CHECK_WORKING([])
+ fi
+
+ if test -z "$PYTHONCONFIG"; then
+ PKG_CHECK_MODULES([PYTHON], python-3.6, [], [
+ PKG_CHECK_MODULES([PYTHON], python-3.5, [], [
+ PKG_CHECK_MODULES([PYTHON], python-3.4, [], [
+ PKG_CHECK_MODULES([PYTHON], python-3.3, [], [
+ PKG_CHECK_MODULES([PYTHON], python-3.2, [], [
+ PKG_CHECK_MODULES([PYTHON], python-2.7, [], [
+ AC_MSG_FAILURE([could not find python-config or pkg-config python, please install Python development files from libpython-dev or similar])
+ ])])])])])])
+
+
+ FRR_PYTHON_CHECK_WORKING([
AC_MSG_FAILURE([could not find python-config or pkg-config python, please install Python development files from libpython-dev or similar])
])
fi
# Logic for protobuf support.
#
if test "$enable_protobuf" = "yes"; then
- have_protobuf=yes
-
- # Check for protoc-c
- AC_CHECK_PROG([PROTOC_C], [protoc-c], [protoc-c], [/bin/false])
- if test "x$PROTOC_C" = "x/bin/false"; then
- have_protobuf=no
- else
- found_protobuf_c=no
- PKG_CHECK_MODULES([PROTOBUF_C], libprotobuf-c >= 0.14,
- [found_protobuf_c=yes],
- [AC_MSG_RESULT([pkg-config did not find libprotobuf-c])])
-
- if test "x$found_protobuf_c" = "xyes"; then
- LDFLAGS="$LDFLAGS $PROTOBUF_C_LIBS"
- CFLAGS="$CFLAGS $PROTOBUF_C_CFLAGS"
- else
- AC_CHECK_HEADER([google/protobuf-c/protobuf-c.h], [],
- [have_protobuf=no; AC_MSG_RESULT([Couldn't find google/protobuf-c.h])])
- fi
- fi
+ # Check for protoc & protoc-c
+
+ # protoc is not required, it's only for a "be nice" helper target
+ AC_CHECK_PROGS([PROTOC], [protoc], [/bin/false])
+
+ AC_CHECK_PROGS([PROTOC_C], [protoc-c], [/bin/false])
+ if test "$PROTOC_C" = "/bin/false"; then
+ AC_MSG_FAILURE([protobuf requested but protoc-c not found. Install protobuf-c.])
+ fi
+
+ PKG_CHECK_MODULES([PROTOBUF_C], [libprotobuf-c >= 0.14],, [
+ AC_MSG_FAILURE([protobuf requested but libprotobuf-c not found. Install protobuf-c.])
+ ])
+ AC_CHECK_HEADER([google/protobuf-c/protobuf-c.h], [], [
+ AC_MSG_FAILURE([protobuf requested but protobuf-c.h not found. Install protobuf-c.])
+ ])
+
+ AC_DEFINE(HAVE_PROTOBUF,, protobuf)
fi
+AM_CONDITIONAL([HAVE_PROTOBUF], [test "x$enable_protobuf" = "xyes"])
#
# Logic for old vpn commans support.
AC_DEFINE(KEEP_OLD_VPN_COMMANDS,, [Define for compiling with old vpn commands])
fi
-# Fail if the user explicity enabled protobuf support and we couldn't
-# find the compiler or libraries.
-if test "x$have_protobuf" = "xno" && test "x$enable_protobuf" = "xyes"; then
- AC_MSG_ERROR([Protobuf enabled explicitly but can't find libraries/tools])
-fi
-
-if test "x$have_protobuf" = "xyes"; then
- AC_DEFINE(HAVE_PROTOBUF,, protobuf)
-fi
-
-AM_CONDITIONAL([HAVE_PROTOBUF], [test "x$have_protobuf" = "xyes"])
-
#
# End of logic for protobuf support.
#
-if test "${enable_linux24_tcp_md5}" = "yes"; then
- AC_DEFINE(HAVE_TCP_MD5_LINUX24,,Old Linux 2.4 TCP MD5 Signature Patch)
-fi
-
AC_MSG_CHECKING(if zebra should be configurable to send Route Advertisements)
if test "${enable_rtadv}" != "no"; then
AC_MSG_RESULT(yes)
AC_SUBST(PACKAGE_EXTRAVERSION, ["${EXTRAVERSION}"])
PACKAGE_STRING="${PACKAGE_STRING}${EXTRAVERSION}"
fi
+AC_SUBST(EXTRAVERSION)
if test "x$with_pkg_git_version" = "xyes"; then
if test -d "${srcdir}/.git"; then
AC_DEFINE([HAVE_PRINTSTACK],1,[Solaris printstack])
AC_DEFINE([HAVE_STACK_TRACE],1,[Stack symbols decode functionality])
])
- CURSES=-lcurses
SOLARIS="solaris"
;;
linux*)
dnl Integrated VTY option
dnl ---------------------
case "${enable_vtysh}" in
- "no") VTYSH="";;
- *) VTYSH="vtysh";
- AC_DEFINE(VTYSH,,VTY shell)
-dnl Vtysh uses libreadline, which looks for termcap functions at
-dnl configure time. We follow readlines search order.
-dnl The required procedures are in libtermcap on NetBSD, in
-dnl [TODO] on Linux, and in [TODO] on Solaris.
- AC_CHECK_LIB(termcap, tputs, LIBREADLINE="$LIBREADLINE -ltermcap",
- [AC_CHECK_LIB(tinfo, tputs, LIBREADLINE="$LIBREADLINE -ltinfo",
- [AC_CHECK_LIB(curses, tputs, LIBREADLINE="$LIBREADLINE -lcurses",
- [AC_CHECK_LIB(ncurses, tputs,
- LIBREADLINE="$LIBREADLINE -lncurses")]
- )]
- )]
- )
- AC_CHECK_LIB(readline, main, LIBREADLINE="-lreadline $LIBREADLINE",,
- "$LIBREADLINE")
- if test $ac_cv_lib_readline_main = no; then
- AC_MSG_ERROR([vtysh needs libreadline but was not found and usable on your system.])
- fi
- AC_CHECK_HEADER(readline/history.h)
- if test $ac_cv_header_readline_history_h = no;then
- AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
- fi
- AC_CHECK_LIB(readline, rl_completion_matches,
- LIBREADLINE="$LIBREADLINE",, "$LIBREADLINE")
- if test $ac_cv_lib_readline_rl_completion_matches = no; then
- AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
- fi
- ;;
+"no")
+ VTYSH="";;
+*)
+ VTYSH="vtysh";
+ AC_DEFINE(VTYSH,,VTY shell)
+
+ prev_libs="$LIBS"
+ AC_CHECK_LIB(readline, main, [
+ LIBREADLINE="-lreadline"
+ ], [
+ dnl readline failed - it might be incorrectly linked and missing its
+ dnl termcap/tinfo/curses dependency. see if we can fix that...
+ AC_SEARCH_LIBS(tputs, [termcap tinfo curses ncurses], [
+ LIBREADLINE="$ac_cv_search_tputs"
+ ], [
+ AC_MSG_ERROR([libreadline (needed for vtysh) not found and/or missing dependencies])
+ ])
+
+ dnl re-try with the lib we found above
+ unset ac_cv_lib_readline_main
+ AC_CHECK_LIB(readline, main, [
+ LIBREADLINE="-lreadline $LIBREADLINE"
+ ], [
+ AC_MSG_ERROR([libreadline (needed for vtysh) not found and/or missing dependencies])
+ ], [$LIBREADLINE])
+ ], [])
+ LIBS="$prev_libs"
+
+ AC_CHECK_HEADER(readline/history.h)
+ if test $ac_cv_header_readline_history_h = no;then
+ AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
+ fi
+ AC_CHECK_LIB(readline, rl_completion_matches, [true], [], [$LIBREADLINE])
+ if test $ac_cv_lib_readline_rl_completion_matches = no; then
+ AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
+ fi
+ AC_CHECK_LIB(readline, [append_history], [frr_cv_append_history=yes], [frr_cv_append_history=no], [$LIBREADLINE])
+ if test "$frr_cv_append_history" = yes; then
+ AC_DEFINE(HAVE_APPEND_HISTORY, 1, [Have history.h append_history])
+ fi
+ ;;
esac
AC_SUBST(LIBREADLINE)
AM_CONDITIONAL(VTYSH, test "x$VTYSH" = "xvtysh")
])dnl
dnl disable doc check
-if test "${enable_doc}" = "no";then
- DOC=""
-else
- AC_CHECK_PROGS([SPHINXBUILD], [sphinx-build sphinx-build3 sphinx-build2], [no])
- DOC="doc"
+AC_CHECK_PROGS([SPHINXBUILD], [sphinx-build sphinx-build3 sphinx-build2], [/bin/false])
+if test "$SPHINXBUILD" = "/bin/false"; then
+ if test "${enable_doc}" = "yes"; then
+ AC_MSG_ERROR([Documentation was explicitly requested with --enable-doc but sphinx-build is not available. Please disable docs or install sphinx.])
+ fi
fi
+AM_CONDITIONAL(DOC, test "${enable_doc}" != "no" -a "$SPHINXBUILD" != "/bin/false")
+AM_CONDITIONAL(DOC_HTML, test "${enable_doc_html}" = "yes")
dnl --------------------
dnl Daemon disable check
AM_CONDITIONAL(BFDD, [test "x$BFDD" = "xbfdd"])
-if test $ac_cv_lib_json_c_json_object_get = no -a "x$BFDD" = "xbfdd"; then
+if test "$ac_cv_lib_json_c_json_object_get" = no -a "x$BFDD" = "xbfdd"; then
AC_MSG_ERROR(["you must use json-c library to use bfdd"])
fi
AC_DEFINE(DISABLE_BGP_ANNOUNCE,0,Disable BGP installation to zebra)
fi
-if test "${with_rfp_path}" = "yes" || test x"${with_rfp_path}" = x""; then
- with_rfp_path="bgpd/rfp-example"
-fi
-if test "${with_rfp_path}" != "no"; then
- VNC_RFP_PATH="${with_rfp_path}"
- AC_SUBST(VNC_RFP_PATH)
-fi
-
if test "${enable_bgp_vnc}" != "no";then
AC_DEFINE(ENABLE_BGP_VNC,1,Enable BGP VNC support)
- RFPTEST="${with_rfp_path}/rfptest"
- LIBRFP="${with_rfp_path}/librfp"
- RFPINC="${with_rfp_path}/librfp"
-else
- RFPTEST=
- LIBRFP=
- RFPINC="bgpd/rfp-example/librfp"
fi
-# set
AM_CONDITIONAL([ENABLE_BGP_VNC], [test x${enable_bgp_vnc} != xno])
-AC_SUBST(DOC)
-AC_SUBST(RFPTEST)
-AC_SUBST(LIBRFP)
-AC_SUBST(RFPINC)
-AC_SUBST(BGPD)
AC_SUBST(SOLARIS)
-AC_SUBST(VTYSH)
-AC_SUBST(CURSES)
AC_CHECK_LIB(crypt, crypt, [],
[AC_CHECK_LIB(crypto, DES_crypt)])
AC_CHECK_LIB(resolv, res_init)
fi
SNMP_LIBS="`${NETSNMP_CONFIG} --agent-libs`"
SNMP_CFLAGS="`${NETSNMP_CONFIG} --base-cflags`"
+ # net-snmp lists all of its own dependencies. we absolutely do not want that
+ # among other things we avoid a GPL vs. OpenSSL license conflict here
+ for removelib in crypto ssl sensors pci wrap; do
+ SNMP_LIBS="`echo $SNMP_LIBS | sed -e 's/\(^\|\s\)-l'$removelib'\b/ /g' -e 's/\(^\|\s\)\([^\s]*\/\)\?lib'$removelib'\.[^\s]\+\b/ /g'`"
+ done
AC_MSG_CHECKING([whether we can link to Net-SNMP])
AC_LINK_IFELSE_FLAGS([$SNMP_CFLAGS], [$SNMP_LIBS], [AC_LANG_PROGRAM([
int main(void);
yes)
SNMP_METHOD=agentx
;;
- smux|agentx)
+ agentx)
SNMP_METHOD="${enable_snmp}"
;;
*)
- AC_MSG_ERROR([--enable-snmp given with an unknown method (${enable_snmp}). Use smux or agentx])
+ AC_MSG_ERROR([--enable-snmp given with an unknown method (${enable_snmp}). Use yes or agentx])
;;
esac
- AH_TEMPLATE([SNMP_SMUX], [Use SNMP SMUX to interface with snmpd])
AH_TEMPLATE([SNMP_AGENTX], [Use SNMP AgentX to interface with snmpd])
AC_DEFINE_UNQUOTED(AS_TR_CPP(SNMP_${SNMP_METHOD}),,SNMP method to interface with snmpd)
fi
AC_CHECK_HEADERS([link.h])
-AC_MSG_CHECKING([for dlinfo(RTLD_DI_ORIGIN)])
-AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+AC_CACHE_CHECK([for dlinfo(RTLD_DI_ORIGIN)], [frr_cv_rtld_di_origin], [
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
#include <stdlib.h>
#ifdef HAVE_LINK_H
#include <link.h>
char origin[1];
dlinfo (NULL, RTLD_DI_ORIGIN, &origin);
]])], [
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_DLINFO_ORIGIN, 1, [Have dlinfo RTLD_DI_ORIGIN])
-], [
- AC_MSG_RESULT(no)
+ frr_cv_rtld_di_origin=yes
+ ], [
+ frr_cv_rtld_di_origin=no
+ ])
])
+if test "$frr_cv_rtld_di_origin" = yes; then
+ AC_DEFINE(HAVE_DLINFO_ORIGIN, 1, [Have dlinfo RTLD_DI_ORIGIN])
+fi
-AC_MSG_CHECKING([for dlinfo(RTLD_DI_LINKMAP)])
-AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+AC_CACHE_CHECK([for dlinfo(RTLD_DI_LINKMAP)], [frr_cv_rtld_di_linkmap], [
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
#include <stdlib.h>
#ifdef HAVE_LINK_H
#include <link.h>
struct link_map *lm = NULL;
dlinfo (NULL, RTLD_DI_LINKMAP, &lm);
]])], [
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_DLINFO_LINKMAP, 1, [Have dlinfo RTLD_DI_LINKMAP])
-], [
- AC_MSG_RESULT(no)
+ frr_cv_rtld_di_linkmap=yes
+ ], [
+ frr_cv_rtld_di_linkmap=no
+ ])
])
-
+if test "$frr_cv_rtld_di_linkmap" = yes; then
+ AC_DEFINE(HAVE_DLINFO_LINKMAP, 1, [Have dlinfo RTLD_DI_LINKMAP])
+fi
AM_CONDITIONAL(SNMP, test "x$SNMP_METHOD" = "xagentx")
dnl -----------------------------------------
AC_CHECK_HEADERS([malloc.h malloc/malloc.h],,, [FRR_INCLUDES])
-AC_MSG_CHECKING(whether mallinfo is available)
-AC_LINK_IFELSE([AC_LANG_PROGRAM([FRR_INCLUDES [
+AC_CACHE_CHECK([whether mallinfo is available], [frr_cv_mallinfo], [
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([FRR_INCLUDES [
#ifdef HAVE_MALLOC_H
#include <malloc.h>
#endif
]], [[
struct mallinfo ac_x; ac_x = mallinfo ();
]])], [
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_MALLINFO,,mallinfo)
-], [
- AC_MSG_RESULT(no)
+ frr_cv_mallinfo=yes
+ ], [
+ frr_cv_mallinfo=no
+ ])
])
+if test "$frr_cv_mallinfo" = yes; then
+ AC_DEFINE(HAVE_MALLINFO,,mallinfo)
+fi
AC_MSG_CHECKING(whether malloc_usable_size is available)
AC_LINK_IFELSE([AC_LANG_PROGRAM([FRR_INCLUDES [
eval vtysh_bin="\"$vtysh_bin\""
done
AC_DEFINE_UNQUOTED(VTYSH_BIN_PATH, "$vtysh_bin",path to vtysh binary)
+AC_SUBST(vtysh_bin)
CFG_SYSCONF="$sysconfdir"
CFG_SBIN="$sbindir"
dnl ------------------------------------
if test "${enable_rpki}" = "yes"; then
PKG_CHECK_MODULES(RTRLIB,[rtrlib >= 0.5.0],
- [AC_DEFINE(HAVE_RPKI,1,Enable RPKI prefix validation for BGP)
- RPKI=true],
+ [RPKI=true],
[RPKI=false
AC_MSG_ERROR([rtrlib was not found on your system or is too old.])]
)
)
AC_MSG_RESULT($ac_cv_htonl_works)
-AC_CONFIG_FILES([Makefile
- bgpd/Makefile
- vtysh/Makefile
- doc/Makefile
- doc/user/Makefile
- doc/manpages/Makefile
- doc/developer/Makefile
- tests/Makefile
- bgpd/rfp-example/rfptest/Makefile
- bgpd/rfp-example/librfp/Makefile
+AC_CONFIG_FILES([Makefile],[sed -e 's/^#AUTODERP# //' -i Makefile])
+
+AC_CONFIG_FILES([
+ config.version
redhat/frr.spec
- debianpkg/Makefile
- debianpkg/changelog
+ solaris/Makefile
+ debian/changelog-auto
alpine/APKBUILD
snapcraft/snapcraft.yaml
lib/version.h
pkgsrc/ripd.sh pkgsrc/ripngd.sh pkgsrc/zebra.sh
pkgsrc/eigrpd.sh])
-if test "${enable_bgp_vnc}" != "no"; then
- if test "${with_rfp_path}" != "bgpd/rfp-example" ; then
- AC_CONFIG_FILES([${with_rfp_path}/rfptest/Makefile ${with_rfp_path}/librfp/Makefile])
- fi
-fi
-
-AC_CONFIG_FILES([solaris/Makefile])
-
AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl])
+AC_CONFIG_FILES([tools/frr],[chmod +x tools/frr])
+AC_CONFIG_FILES([tools/watchfrr.sh],[chmod +x tools/watchfrr.sh])
+AC_CONFIG_FILES([tools/frrinit.sh],[chmod +x tools/frrinit.sh])
+AC_CONFIG_FILES([tools/frrcommon.sh])
AC_CONFIG_COMMANDS([lib/route_types.h], [
dst="${ac_abs_top_builddir}/lib/route_types.h"
host operating system : ${host_os}
source code location : ${srcdir}
compiler : ${CC}
-compiler flags : ${CFLAGS}
+compiler flags : ${CFLAGS} ${SAN_FLAGS}
make : ${MAKE-make}
-linker flags : ${LDFLAGS} ${LIBS} ${LIBCAP} ${LIBREADLINE} ${LIBM}
+linker flags : ${LDFLAGS} ${SAN_FLAGS} ${LIBS} ${LIBCAP} ${LIBREADLINE} ${LIBM}
state file directory : ${frr_statedir}
config file directory : `eval echo \`echo ${sysconfdir}\``
example directory : `eval echo \`echo ${exampledir}\``
group for vty sockets : ${enable_vty_group}
config file mask : ${enable_configfile_mask}
log file mask : ${enable_logfile_mask}
-zebra protobuf enabled : ${have_protobuf:-no}
+zebra protobuf enabled : ${enable_protobuf:-no}
The above user and group must have read/write access to the state file
directory and to the config files in the config file directory."
if test "${enable_doc}" != "no";then
- AS_IF([test "x$SPHINXBUILD" = xno],
+ AS_IF([test "$SPHINXBUILD" = /bin/false],
AC_MSG_WARN(sphinx-build is missing but required to build documentation))
fi