|
|
@ -20,6 +20,77 @@ AC_CONFIG_SRCDIR([lib/zebra.h])
|
|
|
|
AC_CONFIG_MACRO_DIR([m4])
|
|
|
|
AC_CONFIG_MACRO_DIR([m4])
|
|
|
|
AC_CONFIG_AUX_DIR([m4/ac])
|
|
|
|
AC_CONFIG_AUX_DIR([m4/ac])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
dnl ------------------------------
|
|
|
|
|
|
|
|
dnl system paths
|
|
|
|
|
|
|
|
dnl ------------------------------
|
|
|
|
|
|
|
|
dnl Versions of FRR (or Quagga, or Zebra) before ca. 9.2 used sysconfdir and
|
|
|
|
|
|
|
|
dnl localstatedir as-is, without appending /frr. The /frr was expected to be
|
|
|
|
|
|
|
|
dnl given on ./configure invocations.
|
|
|
|
|
|
|
|
dnl
|
|
|
|
|
|
|
|
dnl This does not match standard behavior by other packages and makes FRR
|
|
|
|
|
|
|
|
dnl specific packaging changes necessary to add these options. localstatedir
|
|
|
|
|
|
|
|
dnl was also misused to include the /run part (it normally is only /var),
|
|
|
|
|
|
|
|
dnl leaving no path configuration option that references /var itself. This
|
|
|
|
|
|
|
|
dnl is because runstatedir did not exist in ancient autoconf.
|
|
|
|
|
|
|
|
dnl
|
|
|
|
|
|
|
|
dnl The path options have been changed to expect plain / system prefix
|
|
|
|
|
|
|
|
dnl directories. As a temporary workaround to not break packaging, eventual
|
|
|
|
|
|
|
|
dnl /frr suffixes are stripped and a warning is printed.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
path_warn_banner=false
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AC_MSG_CHECKING([whether --sysconfdir option is FRR-specific])
|
|
|
|
|
|
|
|
case "$sysconfdir" in
|
|
|
|
|
|
|
|
*/frr)
|
|
|
|
|
|
|
|
AC_MSG_RESULT([yes, ends in /frr - removing suffix])
|
|
|
|
|
|
|
|
AC_MSG_WARN([Please remove /frr suffix from --sysconfdir="${sysconfdir}" (it should be /etc in 99% of cases)])
|
|
|
|
|
|
|
|
sysconfdir="${sysconfdir%/frr}"
|
|
|
|
|
|
|
|
path_warn_banner=true
|
|
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
*)
|
|
|
|
|
|
|
|
AC_MSG_RESULT([no, as expected])
|
|
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
esac
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
frr_sysconfdir="\${sysconfdir}/frr"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AC_MSG_CHECKING([whether --localstatedir option is FRR-specific])
|
|
|
|
|
|
|
|
case "$localstatedir" in
|
|
|
|
|
|
|
|
*/run/frr)
|
|
|
|
|
|
|
|
AC_MSG_RESULT([yes, ends in /run/frr - removing suffix])
|
|
|
|
|
|
|
|
AC_MSG_WARN([Please remove /run/frr suffix from --localstatedir=${localstatedir} (it should be /var in 99% of cases)])
|
|
|
|
|
|
|
|
localstatedir="${localstatedir%/run/frr}"
|
|
|
|
|
|
|
|
path_warn_banner=true
|
|
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
*/frr)
|
|
|
|
|
|
|
|
AC_MSG_RESULT([yes, ends in /frr - removing suffix])
|
|
|
|
|
|
|
|
AC_MSG_WARN([The --localstatedir=${localstatedir} option seems to include /frr but not /run, this is unexpected. Please check for consistency.)])
|
|
|
|
|
|
|
|
localstatedir="${localstatedir%/frr}"
|
|
|
|
|
|
|
|
path_warn_banner=true
|
|
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
*)
|
|
|
|
|
|
|
|
AC_MSG_RESULT([no, as expected])
|
|
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
esac
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
dnl runstatedir is either ${localstatedir}/run or plain /run
|
|
|
|
|
|
|
|
dnl the change of localstatedir above may impact this
|
|
|
|
|
|
|
|
dnl
|
|
|
|
|
|
|
|
dnl note runstatedir was never used with /frr as the other two above, so does
|
|
|
|
|
|
|
|
dnl not need the same cleanup hack
|
|
|
|
|
|
|
|
: "${runstatedir:=\${localstatedir\}/run}"
|
|
|
|
|
|
|
|
frr_runstatedir="\${runstatedir}/frr"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if $path_warn_banner; then
|
|
|
|
|
|
|
|
AC_MSG_WARN([^])
|
|
|
|
|
|
|
|
AC_MSG_WARN([^])
|
|
|
|
|
|
|
|
AC_MSG_WARN([^ warnings regarding system path configuration were printed above])
|
|
|
|
|
|
|
|
AC_MSG_WARN([^ paths have been adjusted by temporary workarounds])
|
|
|
|
|
|
|
|
AC_MSG_WARN([^ please fix your ./configure invocation (remove /frr) so it will work without the workarounds])
|
|
|
|
|
|
|
|
AC_MSG_WARN([^])
|
|
|
|
|
|
|
|
AC_MSG_WARN([^])
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
dnl -----------------------------------
|
|
|
|
dnl -----------------------------------
|
|
|
|
dnl Get hostname and other information.
|
|
|
|
dnl Get hostname and other information.
|
|
|
|
dnl -----------------------------------
|
|
|
|
dnl -----------------------------------
|
|
|
@ -130,10 +201,10 @@ AC_ARG_WITH([moduledir], [AS_HELP_STRING([--with-moduledir=DIR], [module directo
|
|
|
|
])
|
|
|
|
])
|
|
|
|
AC_SUBST([moduledir], [$moduledir])
|
|
|
|
AC_SUBST([moduledir], [$moduledir])
|
|
|
|
|
|
|
|
|
|
|
|
AC_ARG_WITH([scriptdir], [AS_HELP_STRING([--with-scriptdir=DIR], [script directory (${sysconfdir}/scripts)])], [
|
|
|
|
AC_ARG_WITH([scriptdir], [AS_HELP_STRING([--with-scriptdir=DIR], [script directory (${sysconfdir}/frr/scripts)])], [
|
|
|
|
scriptdir="$withval"
|
|
|
|
scriptdir="$withval"
|
|
|
|
], [
|
|
|
|
], [
|
|
|
|
scriptdir="\${sysconfdir}/scripts"
|
|
|
|
scriptdir="\${frr_sysconfdir}/scripts"
|
|
|
|
])
|
|
|
|
])
|
|
|
|
AC_SUBST([scriptdir], [$scriptdir])
|
|
|
|
AC_SUBST([scriptdir], [$scriptdir])
|
|
|
|
|
|
|
|
|
|
|
@ -2641,57 +2712,15 @@ else
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
AC_SUBST([CONFDATE])
|
|
|
|
AC_SUBST([CONFDATE])
|
|
|
|
|
|
|
|
|
|
|
|
dnl ------------------------------
|
|
|
|
|
|
|
|
dnl set paths for state directory
|
|
|
|
|
|
|
|
dnl ------------------------------
|
|
|
|
|
|
|
|
AC_MSG_CHECKING([directory to use for state file])
|
|
|
|
|
|
|
|
if test "$prefix" = "NONE"; then
|
|
|
|
|
|
|
|
frr_statedir_prefix="";
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
frr_statedir_prefix=${prefix}
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
if test "$localstatedir" = '${prefix}/var'; then
|
|
|
|
|
|
|
|
for FRR_STATE_DIR in ${frr_statedir_prefix}/var/run dnl
|
|
|
|
|
|
|
|
${frr_statedir_prefix}/var/adm dnl
|
|
|
|
|
|
|
|
${frr_statedir_prefix}/etc dnl
|
|
|
|
|
|
|
|
/var/run dnl
|
|
|
|
|
|
|
|
/var/adm dnl
|
|
|
|
|
|
|
|
/etc dnl
|
|
|
|
|
|
|
|
/dev/null;
|
|
|
|
|
|
|
|
do
|
|
|
|
|
|
|
|
test -d $FRR_STATE_DIR && break
|
|
|
|
|
|
|
|
done
|
|
|
|
|
|
|
|
frr_statedir=$FRR_STATE_DIR
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
frr_statedir=${localstatedir}
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
if test "$frr_statedir" = "/dev/null"; then
|
|
|
|
|
|
|
|
AC_MSG_ERROR([STATE DIRECTORY NOT FOUND! FIX OR SPECIFY --localstatedir!])
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
AC_MSG_RESULT([${frr_statedir}])
|
|
|
|
|
|
|
|
AC_SUBST([frr_statedir])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AC_DEFINE_UNQUOTED([LDPD_SOCKET], ["$frr_statedir%s%s/ldpd.sock"], [ldpd control socket])
|
|
|
|
|
|
|
|
AC_DEFINE_UNQUOTED([ZEBRA_SERV_PATH], ["$frr_statedir%s%s/zserv.api"], [zebra api socket])
|
|
|
|
|
|
|
|
AC_DEFINE_UNQUOTED([BFDD_CONTROL_SOCKET], ["$frr_statedir%s%s/bfdd.sock"], [bfdd control socket])
|
|
|
|
|
|
|
|
AC_DEFINE_UNQUOTED([OSPFD_GR_STATE], ["$frr_statedir%s/ospfd-gr.json"], [ospfd GR state information])
|
|
|
|
|
|
|
|
AC_DEFINE_UNQUOTED([MGMTD_FE_SERVER_PATH], ["$frr_statedir/mgmtd_fe.sock"], [mgmtd frontend server socket])
|
|
|
|
|
|
|
|
AC_DEFINE_UNQUOTED([MGMTD_BE_SERVER_PATH], ["$frr_statedir/mgmtd_be.sock"], [mgmtd backend server socket])
|
|
|
|
|
|
|
|
AC_DEFINE_UNQUOTED([OSPF6D_GR_STATE], ["$frr_statedir/ospf6d-gr.json"], [ospf6d GR state information])
|
|
|
|
|
|
|
|
AC_DEFINE_UNQUOTED([ISISD_RESTART], ["$frr_statedir%s/isid-restart.json"], [isisd restart information])
|
|
|
|
|
|
|
|
AC_DEFINE_UNQUOTED([OSPF6_AUTH_SEQ_NUM_FILE], ["$frr_statedir/ospf6d-at-seq-no.dat"], [ospf6d AT Sequence number information])
|
|
|
|
|
|
|
|
AC_DEFINE_UNQUOTED([DAEMON_VTY_DIR], ["$frr_statedir%s%s"], [daemon vty directory])
|
|
|
|
|
|
|
|
AC_DEFINE_UNQUOTED([DAEMON_DB_DIR], ["$frr_statedir"], [daemon database directory])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
dnl get the full path, recursing through variables...
|
|
|
|
dnl get the full path, recursing through variables...
|
|
|
|
AX_RECURSIVE_EVAL([$bindir/vtysh], [vtysh_bin])
|
|
|
|
AX_RECURSIVE_EVAL([$bindir/vtysh], [vtysh_bin])
|
|
|
|
AX_RECURSIVE_EVAL([$sysconfdir], [CFG_SYSCONF])
|
|
|
|
AX_RECURSIVE_EVAL([$frr_sysconfdir], [CFG_SYSCONF])
|
|
|
|
AX_RECURSIVE_EVAL([$sbindir], [CFG_SBIN])
|
|
|
|
AX_RECURSIVE_EVAL([$sbindir], [CFG_SBIN])
|
|
|
|
AX_RECURSIVE_EVAL([$bindir], [CFG_BIN])
|
|
|
|
AX_RECURSIVE_EVAL([$bindir], [CFG_BIN])
|
|
|
|
AX_RECURSIVE_EVAL([$frr_statedir], [CFG_STATE])
|
|
|
|
AX_RECURSIVE_EVAL([$frr_runstatedir], [CFG_STATE])
|
|
|
|
AX_RECURSIVE_EVAL([$moduledir], [CFG_MODULE])
|
|
|
|
AX_RECURSIVE_EVAL([$moduledir], [CFG_MODULE])
|
|
|
|
AX_RECURSIVE_EVAL([$yangmodelsdir], [CFG_YANGMODELS])
|
|
|
|
AX_RECURSIVE_EVAL([$yangmodelsdir], [CFG_YANGMODELS])
|
|
|
|
AX_RECURSIVE_EVAL([$scriptdir], [CFG_SCRIPT])
|
|
|
|
AX_RECURSIVE_EVAL([$scriptdir], [CFG_SCRIPT])
|
|
|
|
AC_SUBST([vtysh_bin])
|
|
|
|
AC_SUBST([vtysh_bin])
|
|
|
|
AC_SUBST([CFG_SYSCONF])
|
|
|
|
AC_SUBST([CFG_SYSCONF])
|
|
|
|
AC_SUBST([CFG_SBIN])
|
|
|
|
AC_SUBST([CFG_SBIN])
|
|
|
@ -2706,6 +2735,18 @@ AC_DEFINE_UNQUOTED([SCRIPT_PATH], ["$CFG_SCRIPT"], [path to scripts])
|
|
|
|
AC_DEFINE_UNQUOTED([YANG_MODELS_PATH], ["$CFG_YANGMODELS"], [path to YANG data models])
|
|
|
|
AC_DEFINE_UNQUOTED([YANG_MODELS_PATH], ["$CFG_YANGMODELS"], [path to YANG data models])
|
|
|
|
AC_DEFINE_UNQUOTED([WATCHFRR_SH_PATH], ["${CFG_SBIN%/}/watchfrr.sh"], [path to watchfrr.sh])
|
|
|
|
AC_DEFINE_UNQUOTED([WATCHFRR_SH_PATH], ["${CFG_SBIN%/}/watchfrr.sh"], [path to watchfrr.sh])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AC_DEFINE_UNQUOTED([LDPD_SOCKET], ["$CFG_STATE%s%s/ldpd.sock"], [ldpd control socket])
|
|
|
|
|
|
|
|
AC_DEFINE_UNQUOTED([ZEBRA_SERV_PATH], ["$CFG_STATE%s%s/zserv.api"], [zebra api socket])
|
|
|
|
|
|
|
|
AC_DEFINE_UNQUOTED([BFDD_CONTROL_SOCKET], ["$CFG_STATE%s%s/bfdd.sock"], [bfdd control socket])
|
|
|
|
|
|
|
|
AC_DEFINE_UNQUOTED([OSPFD_GR_STATE], ["$CFG_STATE%s/ospfd-gr.json"], [ospfd GR state information])
|
|
|
|
|
|
|
|
AC_DEFINE_UNQUOTED([MGMTD_FE_SERVER_PATH], ["$CFG_STATE/mgmtd_fe.sock"], [mgmtd frontend server socket])
|
|
|
|
|
|
|
|
AC_DEFINE_UNQUOTED([MGMTD_BE_SERVER_PATH], ["$CFG_STATE/mgmtd_be.sock"], [mgmtd backend server socket])
|
|
|
|
|
|
|
|
AC_DEFINE_UNQUOTED([OSPF6D_GR_STATE], ["$CFG_STATE/ospf6d-gr.json"], [ospf6d GR state information])
|
|
|
|
|
|
|
|
AC_DEFINE_UNQUOTED([ISISD_RESTART], ["$CFG_STATE%s/isid-restart.json"], [isisd restart information])
|
|
|
|
|
|
|
|
AC_DEFINE_UNQUOTED([OSPF6_AUTH_SEQ_NUM_FILE], ["$CFG_STATE/ospf6d-at-seq-no.dat"], [ospf6d AT Sequence number information])
|
|
|
|
|
|
|
|
AC_DEFINE_UNQUOTED([DAEMON_VTY_DIR], ["$CFG_STATE%s%s"], [daemon vty directory])
|
|
|
|
|
|
|
|
AC_DEFINE_UNQUOTED([DAEMON_DB_DIR], ["$CFG_STATE"], [daemon database directory])
|
|
|
|
|
|
|
|
|
|
|
|
dnl various features
|
|
|
|
dnl various features
|
|
|
|
AM_CONDITIONAL([SUPPORT_REALMS], [test "$enable_realms" = "yes"])
|
|
|
|
AM_CONDITIONAL([SUPPORT_REALMS], [test "$enable_realms" = "yes"])
|
|
|
|
AM_CONDITIONAL([ENABLE_BGP_VNC], [test "$enable_bgp_vnc" != "no"])
|
|
|
|
AM_CONDITIONAL([ENABLE_BGP_VNC], [test "$enable_bgp_vnc" != "no"])
|
|
|
@ -2820,7 +2861,7 @@ fi
|
|
|
|
FRR_ALL_CCLS_FLAGS="$(echo ${LIBYANG_CFLAGS} ${LUA_INCLUDE} ${SQLITE3_CFLAGS} | sed -e 's/ */ /g')"
|
|
|
|
FRR_ALL_CCLS_FLAGS="$(echo ${LIBYANG_CFLAGS} ${LUA_INCLUDE} ${SQLITE3_CFLAGS} | sed -e 's/ */ /g')"
|
|
|
|
FRR_ALL_CCLS_CFLAGS="$(echo ${CFLAGS} ${WERROR} ${AC_CFLAGS} ${SAN_FLAGS} | sed -e 's/ */ /g')"
|
|
|
|
FRR_ALL_CCLS_CFLAGS="$(echo ${CFLAGS} ${WERROR} ${AC_CFLAGS} ${SAN_FLAGS} | sed -e 's/ */ /g')"
|
|
|
|
ac_frr_confdate="${CONFDATE}"
|
|
|
|
ac_frr_confdate="${CONFDATE}"
|
|
|
|
ac_frr_sysconfdir="${sysconfdir}/"
|
|
|
|
ac_frr_sysconfdir="${frr_sysconfdir}/"
|
|
|
|
])
|
|
|
|
])
|
|
|
|
])
|
|
|
|
])
|
|
|
|
|
|
|
|
|
|
|
@ -2863,8 +2904,8 @@ compiler : ${CC}
|
|
|
|
compiler flags : ${CFLAGS} ${WERROR} ${AC_CFLAGS} ${SAN_FLAGS}
|
|
|
|
compiler flags : ${CFLAGS} ${WERROR} ${AC_CFLAGS} ${SAN_FLAGS}
|
|
|
|
make : ${MAKE-make}
|
|
|
|
make : ${MAKE-make}
|
|
|
|
linker flags : ${LDFLAGS} ${SAN_FLAGS} ${LIBS} ${LIBCAP} ${LIBREADLINE} ${LIBM}
|
|
|
|
linker flags : ${LDFLAGS} ${SAN_FLAGS} ${LIBS} ${LIBCAP} ${LIBREADLINE} ${LIBM}
|
|
|
|
state file directory : ${frr_statedir}
|
|
|
|
state file directory : ${CFG_STATE}
|
|
|
|
config file directory : `eval echo \`echo ${sysconfdir}\``
|
|
|
|
config file directory : ${CFG_SYSCONF}
|
|
|
|
module directory : ${CFG_MODULE}
|
|
|
|
module directory : ${CFG_MODULE}
|
|
|
|
script directory : ${CFG_SCRIPT}
|
|
|
|
script directory : ${CFG_SCRIPT}
|
|
|
|
user to run as : ${enable_user}
|
|
|
|
user to run as : ${enable_user}
|
|
|
@ -2888,3 +2929,11 @@ fi
|
|
|
|
if test "$frr_py_mod_pytest" = "false"; then
|
|
|
|
if test "$frr_py_mod_pytest" = "false"; then
|
|
|
|
AC_MSG_WARN([pytest is missing, unit tests cannot be performed])
|
|
|
|
AC_MSG_WARN([pytest is missing, unit tests cannot be performed])
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if $path_warn_banner; then
|
|
|
|
|
|
|
|
AC_MSG_WARN([^])
|
|
|
|
|
|
|
|
AC_MSG_WARN([^])
|
|
|
|
|
|
|
|
AC_MSG_WARN([^ warnings regarding system path configuration were printed at the very top of output])
|
|
|
|
|
|
|
|
AC_MSG_WARN([^ paths have been adjusted by temporary workarounds])
|
|
|
|
|
|
|
|
AC_MSG_WARN([^ please fix your ./configure invocation (remove /frr) so it will work without the workarounds])
|
|
|
|
|
|
|
|
fi
|
|
|
|