File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / quagga / configure.ac
Revision 1.1.1.5 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Nov 2 10:09:09 2016 UTC (7 years, 8 months ago) by misho
Branches: quagga, MAIN
CVS tags: v1_0_20160315, HEAD
quagga 1.0.20160315

    1: ##
    2: ## Configure template file for Quagga.
    3: ## autoconf will generate configure script.
    4: ##
    5: ##  Copyright (c) 1996, 97, 98, 99, 2000 Kunihiro Ishiguro <kunihiro@zebra.org>
    6: ##  Portions Copyright (c) 2003 Paul Jakma <paul@dishone.st>
    7: ##
    8: AC_PREREQ(2.60)
    9: 
   10: AC_INIT(Quagga, 1.0.20160315, [https://bugzilla.quagga.net])
   11: CONFIG_ARGS="$*"
   12: AC_SUBST(CONFIG_ARGS)
   13: AC_CONFIG_SRCDIR(lib/zebra.h)
   14: AC_CONFIG_MACRO_DIR([m4])
   15: 
   16: dnl -----------------------------------
   17: dnl Get hostname and other information.
   18: dnl -----------------------------------
   19: AC_CANONICAL_BUILD()
   20: AC_CANONICAL_HOST()
   21: AC_CANONICAL_TARGET()
   22: 
   23: AM_INIT_AUTOMAKE(1.6)
   24: AM_SILENT_RULES([yes])
   25: AC_CONFIG_HEADERS(config.h)
   26: 
   27: AC_PATH_PROG(PERL, perl)
   28: AC_CHECK_PROG([GAWK],[gawk],[gawk],[not-in-PATH])
   29: if test "x$GAWK" = "xnot-in-PATH" ; then
   30: 	AC_MSG_ERROR([GNU awk is required for lib/memtype.h made by memtypes.awk.
   31: BSD awk complains: awk: gensub doesn't support backreferences (subst "\1") ])
   32: fi
   33: AC_ARG_VAR([GAWK],[GNU AWK])
   34: 
   35: dnl default is to match previous behavior
   36: exampledir=${sysconfdir}
   37: AC_ARG_ENABLE([exampledir],
   38: 	  AS_HELP_STRING([--enable-exampledir],
   39: 			 [specify alternate directory for examples]),
   40: 			 exampledir="$enableval",)
   41: dnl XXX add --exampledir to autoconf standard directory list somehow
   42: AC_SUBST(exampledir)
   43: 
   44: dnl default is to match previous behavior
   45: pkgsrcrcdir=""
   46: pkgsrcdir=""
   47: AC_ARG_ENABLE([pkgsrcrcdir],
   48: 	  AS_HELP_STRING([--enable-pkgsrcrcdir],
   49: 			 [specify directory for rc.d scripts]),
   50: 			 pkgsrcrcdir="$enableval"; pkgsrcdir="pkgsrc",)
   51: dnl XXX add --pkgsrcrcdir to autoconf standard directory list somehow
   52: AC_SUBST(pkgsrcdir)
   53: AC_SUBST(pkgsrcrcdir)
   54: 
   55: dnl ------------
   56: dnl Check CFLAGS
   57: dnl ------------
   58: AC_ARG_WITH(cflags,
   59: [  --with-cflags           Set CFLAGS for use in compilation.])
   60: if test "x$with_cflags" != "x" ; then
   61:   CFLAGS="$with_cflags" ; cflags_specified=yes ;
   62: elif test -n "$CFLAGS" ; then
   63:   cflags_specified=yes ;
   64: fi
   65: 
   66: dnl --------------------
   67: dnl Check CC and friends
   68: dnl --------------------
   69: AC_LANG([C])
   70: AC_PROG_CC
   71: AC_PROG_CPP
   72: AM_PROG_CC_C_O
   73: AC_PROG_RANLIB
   74: AC_PROG_EGREP
   75: 
   76: dnl autoconf 2.59 appears not to support AC_PROG_SED
   77: dnl AC_PROG_SED
   78: AC_CHECK_PROG([SED],[sed],[sed],[/bin/false])
   79: 
   80: dnl pdflatex and latexmk are needed to build HACKING.pdf
   81: AC_CHECK_PROG([PDFLATEX],[pdflatex],[pdflatex],[/bin/false])
   82: AC_CHECK_PROG([LATEXMK],[latexmk],[latexmk],[/bin/false])
   83: if test "x$PDFLATEX" = "x/bin/false" -o "x$LATEXMK" = "x/bin/false"; then
   84: 	AC_MSG_WARN([Will not be able to make PDF versions of TeX documents])
   85: else
   86: 	HAVE_LATEX=true
   87: fi
   88: AM_CONDITIONAL([HAVE_LATEX], [test "x$HAVE_LATEX" = "xtrue"])
   89: 
   90: if test "x${GCC}" != "xyes" ; then
   91:   AC_MSG_CHECKING([whether we are using SunPro compiler])
   92:   AC_EGREP_CPP([^__SUNPRO_C.*0x5(7|8|9)], ["__SUNPRO_C" __SUNPRO_C],
   93:       [AC_MSG_RESULT([no])],
   94:       [COMPILER="SUNPRO"
   95:        AC_MSG_RESULT([yes])]
   96:   )
   97: fi
   98: 
   99: dnl ---------------------------------------------
  100: dnl If CLFAGS doesn\'t exist set default value
  101: dnl AC_PROG_CC will have set minimal default
  102: dnl already, eg "-O2 -g" for gcc, "-g" for others
  103: dnl (Wall is gcc specific... have to make sure
  104: dnl  gcc is being used before setting it)
  105: dnl
  106: dnl Sun Studio 10 / SunPro 5.7 is also supported,
  107: dnl so lets set some sane CFLAGS for it.
  108: dnl ---------------------------------------------
  109: 
  110: AC_USE_SYSTEM_EXTENSIONS()
  111: AC_DEFUN([AC_C_FLAG], [{
  112: 	AC_LANG_PUSH(C)
  113: 	ac_c_flag_save="$CFLAGS"
  114: 	CFLAGS="$CFLAGS $1"
  115: 	AC_MSG_CHECKING([[whether $CC supports $1]])
  116: 	AC_COMPILE_IFELSE(
  117: 		[AC_LANG_PROGRAM([[]])],
  118: 		[
  119: 			AC_MSG_RESULT([yes])
  120: 			m4_if([$3], [], [], [
  121: 				CFLAGS="$ac_c_flag_save"
  122: 				$3
  123: 			])
  124: 		], [
  125: 			CFLAGS="$ac_c_flag_save"
  126: 			AC_MSG_RESULT([no])
  127: 			$2
  128: 		])
  129: 	AC_LANG_POP(C)
  130: 	}])
  131: 
  132: AC_MSG_CHECKING([whether to set a default CFLAGS])
  133: if test "x${cflags_specified}" = "x" ; then
  134:   case ${COMPILER} in
  135:     "SUNPRO")
  136:         CFLAGS="-xO4 -v -g -xspace -xcode=pic32 -xstrconst -xc99"
  137:         AC_MSG_RESULT([SunPro default])
  138:         ;;
  139:     *)
  140:         AC_MSG_RESULT([autodetecting])
  141: 
  142:         AC_C_FLAG([-diag-error 10006])
  143:         AC_C_FLAG([-std=gnu99])
  144:         AC_C_FLAG([-g])
  145:         AC_C_FLAG([-Os], [
  146:           AC_C_FLAG([-O2])
  147:         ])
  148:         AC_C_FLAG([-fpie])
  149:         AC_C_FLAG([-fno-omit-frame-pointer])
  150:         AC_C_FLAG([-Wall])
  151:         AC_C_FLAG([-Wextra])
  152:         AC_C_FLAG([-Wmissing-prototypes])
  153:         AC_C_FLAG([-Wmissing-declarations])
  154:         AC_C_FLAG([-Wpointer-arith])
  155:         AC_C_FLAG([-Wbad-function-cast])
  156:         AC_C_FLAG([-Wwrite-strings])
  157:         if test x"${enable_gcc_ultra_verbose}" = x"yes" ; then
  158:           AC_C_FLAG([-Wcast-qual])
  159:           AC_C_FLAG([-Wstrict-prototypes])
  160:           AC_C_FLAG([-Wmissing-noreturn])
  161:           AC_C_FLAG([-Wmissing-format-attribute])
  162:           AC_C_FLAG([-Wunreachable-code])
  163:           AC_C_FLAG([-Wpacked])
  164:           AC_C_FLAG([-Wpadded])
  165:         else
  166:           AC_C_FLAG([-Wno-unused-result])
  167:         fi
  168:         AC_C_FLAG([-Wno-unused-parameter])
  169:         AC_C_FLAG([-Wno-missing-field-initializers])
  170:         # ICC emits a broken warning for const char *x = a ? "b" : "c";
  171:         # for some reason the string consts get 'promoted' to char *,
  172:         # triggering a const to non-const conversion warning.
  173:         AC_C_FLAG([-diag-disable 3179])
  174:         ;;
  175:   esac
  176: else
  177:   AC_MSG_RESULT([CFLAGS supplied by user])
  178: fi
  179: 
  180: if test x"${enable_werror}" = x"yes" ; then
  181:   WERROR="-Werror"
  182: fi
  183: AC_SUBST(WERROR)
  184: 
  185: dnl --------------
  186: dnl Check programs
  187: dnl --------------
  188: AC_PROG_INSTALL
  189: AC_PROG_LN_S
  190: AC_PROG_MAKE_SET
  191: AC_CHECK_TOOL(AR, ar)
  192: 
  193: dnl ---------------------------
  194: dnl We, perhaps unfortunately,
  195: dnl depend on GNU Make specific
  196: dnl constructs.
  197: dnl Give the user a warning if
  198: dnl not GNU Make.
  199: dnl ---------------------------
  200: AC_CACHE_CHECK([if ${MAKE-make} is GNU make], [quagga_cv_gnu_make],
  201: 	[quagga_cv_gnu_make=no
  202: 	 if ${MAKE-make} --version 2>/dev/null | \
  203: 	 	grep '^GNU Make ' >/dev/null ; then
  204: 	 	quagga_cv_gnu_make=yes;
  205: 	 fi
  206: 	]
  207: )
  208: 
  209: dnl -----------------
  210: dnl System extensions
  211: dnl -----------------
  212: AC_GNU_SOURCE
  213: 
  214: dnl -------
  215: dnl libtool
  216: dnl -------
  217: LT_INIT
  218: 
  219: dnl ----------------------
  220: dnl Packages configuration
  221: dnl ----------------------
  222: AC_ARG_WITH(pkg-extra-version,
  223: 	AS_HELP_STRING([--with-pkg-extra-version=VER], [add extra version field, for packagers/distributions]),
  224: 	[EXTRAVERSION=$withval],)
  225: AC_ARG_WITH(pkg-git-version,
  226: 	AS_HELP_STRING([--with-pkg-git-version], [add git information to MOTD and build version string]),
  227: 	[ test "x$withval" != "xno" && with_pkg_git_version="yes" ])
  228: AC_ARG_ENABLE(vtysh,
  229:   AS_HELP_STRING([--disable-vtysh], [do not build integrated vty shell for Quagga]))
  230: AC_ARG_ENABLE(doc,
  231:   AS_HELP_STRING([--disable-doc], [do not build docs]))
  232: AC_ARG_ENABLE(zebra,
  233:   AS_HELP_STRING([--disable-zebra], [do not build zebra daemon]))
  234: AC_ARG_ENABLE(bgpd,
  235:   AS_HELP_STRING([--disable-bgpd], [do not build bgpd]))
  236: AC_ARG_ENABLE(ripd,
  237:   AS_HELP_STRING([--disable-ripd], [do not build ripd]))
  238: AC_ARG_ENABLE(ripngd,
  239:   AS_HELP_STRING([--disable-ripngd], [do not build ripngd]))
  240: AC_ARG_ENABLE(ospfd,
  241:   AS_HELP_STRING([--disable-ospfd], [do not build ospfd]))
  242: AC_ARG_ENABLE(ospf6d,
  243:   AS_HELP_STRING([--disable-ospf6d], [do not build ospf6d]))
  244: AC_ARG_ENABLE(watchquagga,
  245:   AS_HELP_STRING([--disable-watchquagga], [do not build watchquagga]))
  246: AC_ARG_ENABLE(isisd,
  247:   AS_HELP_STRING([--disable-isisd], [do not build isisd]))
  248: AC_ARG_ENABLE(pimd,
  249:   AS_HELP_STRING([--disable-pimd], [do not build pimd]))
  250: AC_ARG_ENABLE(bgp-announce,
  251:   AS_HELP_STRING([--disable-bgp-announce,], [turn off BGP route announcement]))
  252: AC_ARG_ENABLE(snmp,
  253:   AS_HELP_STRING([--enable-snmp=ARG], [enable SNMP support (smux or agentx)]))
  254: AC_ARG_WITH(libpam,
  255:   AS_HELP_STRING([--with-libpam], [use libpam for PAM support in vtysh]))
  256: AC_ARG_ENABLE(tcp-zebra,
  257:   AS_HELP_STRING([--enable-tcp-zebra], [enable TCP/IP socket connection between zebra and protocol daemon]))
  258: AC_ARG_ENABLE(ospfapi,
  259:   AS_HELP_STRING([--disable-ospfapi], [do not build OSPFAPI to access the OSPF LSA Database]))
  260: AC_ARG_ENABLE(ospfclient,
  261:   AS_HELP_STRING([--disable-ospfclient], [do not build OSPFAPI client for OSPFAPI,
  262:                           (this is the default if --disable-ospfapi is set)]))
  263: AC_ARG_ENABLE(multipath,
  264:   AS_HELP_STRING([--enable-multipath=ARG], [enable multipath function, ARG must be digit]))
  265: AC_ARG_ENABLE(user,
  266:   AS_HELP_STRING([--enable-user=USER], [user to run Quagga suite as (default quagga)]))
  267: AC_ARG_ENABLE(group,
  268:   AS_HELP_STRING([--enable-group=GROUP], [group to run Quagga suite as (default quagga)]))
  269: AC_ARG_ENABLE(vty_group,
  270:   AS_HELP_STRING([--enable-vty-group=ARG], [set vty sockets to have specified group as owner]))
  271: AC_ARG_ENABLE(configfile_mask,
  272:   AS_HELP_STRING([--enable-configfile-mask=ARG], [set mask for config files]))
  273: AC_ARG_ENABLE(logfile_mask,
  274:   AS_HELP_STRING([--enable-logfile-mask=ARG], [set mask for log files]))
  275: 
  276: AC_ARG_ENABLE(rtadv,
  277:   AS_HELP_STRING([--disable-rtadv], [disable IPV6 router advertisement feature]))
  278: AC_ARG_ENABLE(irdp,
  279:   AS_HELP_STRING([--enable-irdp], [enable IRDP server support in zebra]))
  280: AC_ARG_ENABLE(isis_topology,
  281:   AS_HELP_STRING([--enable-isis-topology], [enable IS-IS topology generator]))
  282: AC_ARG_ENABLE(capabilities,
  283:   AS_HELP_STRING([--disable-capabilities], [disable using POSIX capabilities]))
  284: AC_ARG_ENABLE(rusage,
  285:   AS_HELP_STRING([--disable-rusage], [disable using getrusage]))
  286: AC_ARG_ENABLE(gcc_ultra_verbose,
  287:   AS_HELP_STRING([--enable-gcc-ultra-verbose], [enable ultra verbose GCC warnings]))
  288: AC_ARG_ENABLE(linux24_tcp_md5,
  289:   AS_HELP_STRING([--enable-linux24-tcp-md5], [enable support for old, Linux-2.4 RFC2385 patch]))
  290: AC_ARG_ENABLE(gcc-rdynamic,
  291:   AS_HELP_STRING([--enable-gcc-rdynamic], [enable linking with -rdynamic for better backtraces (default if gcc)]))
  292: AC_ARG_ENABLE(backtrace,
  293:   AS_HELP_STRING([--disable-backtrace,], [disable crash backtraces (default autodetect)]))
  294: AC_ARG_ENABLE(time-check,
  295:   AS_HELP_STRING([--disable-time-check], [disable slow thread warning messages]))
  296: AC_ARG_ENABLE(pcreposix,
  297:   AS_HELP_STRING([--enable-pcreposix], [enable using PCRE Posix libs for regex functions]))
  298: AC_ARG_ENABLE(fpm,
  299:   AS_HELP_STRING([--enable-fpm], [enable Forwarding Plane Manager support]))
  300: AC_ARG_ENABLE(werror,
  301:   AS_HELP_STRING([--enable-werror], [enable -Werror (recommended for developers only)]))
  302: 
  303: if test x"${enable_gcc_rdynamic}" != x"no" ; then
  304:   if test x"${enable_gcc_rdynamic}" = x"yes" -o x"$COMPILER" = x"GCC"; then
  305:     LDFLAGS="${LDFLAGS} -rdynamic"
  306:   fi
  307: fi
  308: 
  309: if test x"${enable_time_check}" != x"no" ; then
  310:   if test x"${enable_time_check}" = x"yes" -o x"${enable_time_check}" = x ; then
  311:     AC_DEFINE(CONSUMED_TIME_CHECK,5000000,Consumed Time Check)
  312:   else
  313:     AC_DEFINE_UNQUOTED(CONSUMED_TIME_CHECK,$enable_time_check,Consumed Time Check)
  314:   fi
  315: fi
  316: 
  317: if test "${enable_fpm}" = "yes"; then
  318:    AC_DEFINE(HAVE_FPM,,Forwarding Plane Manager support)
  319: fi
  320: 
  321: if test "${enable_tcp_zebra}" = "yes"; then
  322:   AC_DEFINE(HAVE_TCP_ZEBRA,,Use TCP for zebra communication)
  323: fi
  324: 
  325: if test "${enable_linux24_tcp_md5}" = "yes"; then
  326:   AC_DEFINE(HAVE_TCP_MD5_LINUX24,,Old Linux 2.4 TCP MD5 Signature Patch)
  327: fi
  328: 
  329: AC_MSG_CHECKING(if zebra should be configurable to send Route Advertisements)
  330: if test "${enable_rtadv}" != "no"; then
  331:   AC_MSG_RESULT(yes)
  332:   AC_DEFINE(HAVE_RTADV,,Enable IPv6 Routing Advertisement support)
  333: else
  334:   AC_MSG_RESULT(no)
  335: fi
  336: 
  337: if test "${enable_irdp}" = "yes"; then
  338:   AC_DEFINE(HAVE_IRDP,, IRDP )
  339: fi
  340: 
  341: if test "${enable_isisd}" != "no" && test "${enable_isis_topology}" = yes; then
  342:   AC_DEFINE(TOPOLOGY_GENERATE,,Enable IS-IS topology generator code)
  343:   ISIS_TOPOLOGY_INCLUDES="-I\$(srcdir)/topology"
  344:   ISIS_TOPOLOGY_DIR="topology"
  345:   ISIS_TOPOLOGY_LIB="./topology/libtopology.a"
  346: fi
  347: 
  348: AC_SUBST(ISIS_TOPOLOGY_INCLUDES)
  349: AC_SUBST(ISIS_TOPOLOGY_DIR)
  350: AC_SUBST(ISIS_TOPOLOGY_LIB)
  351: 
  352: if test "${enable_user}" = "yes" || test x"${enable_user}" = x""; then
  353:   enable_user="quagga"
  354: elif test "${enable_user}" = "no"; then
  355:   enable_user="root"
  356: fi
  357: 
  358: if test "${enable_group}" = "yes" || test x"${enable_group}" = x""; then
  359:   enable_group="quagga"
  360: elif test "${enable_group}" = "no"; then
  361:   enable_group="root"
  362: fi
  363: 
  364: if test x"${enable_vty_group}" = x"yes" ; then
  365:   AC_MSG_ERROR([--enable-vty-group requires a group as argument, not yes])
  366: elif test x"${enable_vty_group}" != x""; then
  367:   if test x"${enable_vty_group}" != x"no"; then
  368:     AC_DEFINE_UNQUOTED(VTY_GROUP, "${enable_vty_group}", VTY Sockets Group)
  369:   fi
  370: fi
  371: AC_SUBST([enable_user])
  372: AC_SUBST([enable_group])
  373: AC_SUBST([enable_vty_group])
  374: AC_DEFINE_UNQUOTED(QUAGGA_USER, "${enable_user}", Quagga User)
  375: AC_DEFINE_UNQUOTED(QUAGGA_GROUP, "${enable_group}", Quagga Group)
  376: 
  377: enable_configfile_mask=${enable_configfile_mask:-0600}
  378: AC_DEFINE_UNQUOTED(CONFIGFILE_MASK, ${enable_configfile_mask}, Mask for config files)
  379: 
  380: enable_logfile_mask=${enable_logfile_mask:-0600}
  381: AC_DEFINE_UNQUOTED(LOGFILE_MASK, ${enable_logfile_mask}, Mask for log files)
  382: 
  383: MPATH_NUM=1
  384: 
  385: case "${enable_multipath}" in
  386:   0)
  387:     MPATH_NUM=64
  388:     ;;
  389:   [[1-9]|[1-9][0-9]|[1-9][0-9][0-9]])
  390:     MPATH_NUM="${enable_multipath}"
  391:     ;;
  392:   "")
  393:     ;;
  394:   *)           
  395:     AC_MSG_FAILURE([Please specify digit to enable multipath ARG])
  396:     ;;
  397: esac
  398: 
  399: AC_DEFINE_UNQUOTED(MULTIPATH_NUM, $MPATH_NUM, Maximum number of paths for a route)
  400: 
  401: dnl -----------------------------------
  402: dnl Add extra version string to package
  403: dnl name, string and version fields.
  404: dnl -----------------------------------
  405: if test "x${EXTRAVERSION}" != "x" ; then
  406:   VERSION="${VERSION}${EXTRAVERSION}"
  407:   PACKAGE_VERSION="${PACKAGE_VERSION}${EXTRAVERSION}"
  408:   PACKAGE_STRING="${PACKAGE_STRING}${EXTRAVERSION}"
  409: fi
  410: 
  411: if test "x$with_pkg_git_version" = "xyes"; then
  412: 	if test -d "${srcdir}/.git"; then
  413: 		AC_DEFINE(GIT_VERSION, [1], [include git version info])
  414: 	else	with_pkg_git_version="no"
  415: 		AC_MSG_WARN([--with-pkg-git-version given, but this is not a git checkout])
  416: 	fi
  417: fi
  418: AM_CONDITIONAL([GIT_VERSION], [test "x$with_pkg_git_version" = "xyes"])
  419: 
  420: dnl ------------------------------------
  421: dnl Check C keywords and standard  types
  422: dnl ------------------------------------
  423: AC_C_CONST
  424: AC_C_INLINE
  425: AC_C_RESTRICT
  426: AC_C_VOLATILE
  427: AC_HEADER_STDC
  428: AC_HEADER_TIME
  429: AC_HEADER_SYS_WAIT
  430: AC_HEADER_STDBOOL
  431: dnl AC_TYPE_PID_T
  432: AC_TYPE_UID_T
  433: AC_TYPE_MODE_T
  434: AC_TYPE_SIZE_T
  435: AC_STRUCT_TM
  436: 
  437: dnl -------------------------
  438: dnl Check other header files.
  439: dnl -------------------------
  440: AC_CHECK_HEADERS([stropts.h sys/ksym.h sys/times.h sys/select.h \
  441: 	sys/types.h linux/version.h netdb.h asm/types.h \
  442: 	sys/cdefs.h sys/param.h limits.h signal.h \
  443: 	sys/socket.h netinet/in.h time.h sys/time.h])
  444: 
  445: dnl Utility macro to avoid retyping includes all the time
  446: m4_define([QUAGGA_INCLUDES],
  447: [#ifdef SUNOS_5
  448: #define _XPG4_2
  449: #define __EXTENSIONS__
  450: #endif
  451: #include <stdio.h>
  452: #if STDC_HEADERS
  453: # include <stdlib.h>
  454: # include <stddef.h>
  455: #else
  456: # if HAVE_STDLIB_H
  457: #  include <stdlib.h>
  458: # endif
  459: #endif
  460: #if HAVE_SYS_TYPES_H
  461: # include <sys/types.h>
  462: #endif
  463: /* sys/conf.h depends on param.h on FBSD at least */
  464: #if HAVE_SYS_PARAM_H
  465: # include <sys/param.h>
  466: #endif
  467: /* Required for MAXSIG */
  468: #if HAVE_SIGNAL_H
  469: # include <signal.h>
  470: #endif
  471: #if HAVE_SYS_SOCKET_H
  472: # include <sys/socket.h>
  473: #endif
  474: #ifdef __APPLE__
  475: # define __APPLE_USE_RFC_3542
  476: #endif
  477: #if HAVE_NETINET_IN_H
  478: # include <netinet/in.h>
  479: #endif
  480: #ifdef TIME_WITH_SYS_TIME
  481: # include <sys/time.h>
  482: # include <time.h>
  483: #else
  484: # ifdef HAVE_SYS_TIME_H
  485: #  include <sys/time.h>
  486: # else
  487: #  include <time.h>
  488: # endif
  489: #endif /* TIME_WITH_SYS_TIME */
  490: ])dnl
  491: 
  492: dnl HAVE_NET_IF_H must be discovered by the time the longer AC_CHECK_HEADERS
  493: dnl round below execution begins, otherwise it doesn't properly detect
  494: dnl HAVE_NETINET6_IN6_VAR_H, HAVE_NET_IF_VAR_H and HAVE_STRUCT_IN6_ALIASREQ
  495: dnl on FreeBSD (BZ#408).
  496: 
  497: AC_CHECK_HEADERS([net/if.h], [], [], QUAGGA_INCLUDES)
  498: 
  499: m4_define([QUAGGA_INCLUDES],
  500: QUAGGA_INCLUDES
  501: [#if HAVE_NET_IF_H
  502: # include <net/if.h>
  503: #endif
  504: ])dnl
  505: 
  506: dnl Same applies for HAVE_NET_IF_VAR_H, which HAVE_NETINET6_ND6_H and
  507: dnl HAVE_NETINET_IN_VAR_H depend upon. But if_var.h depends on if.h, hence
  508: dnl an additional round for it.
  509: 
  510: AC_CHECK_HEADERS([net/if_var.h], [], [], QUAGGA_INCLUDES)
  511: 
  512: m4_define([QUAGGA_INCLUDES],
  513: QUAGGA_INCLUDES
  514: [#if HAVE_NET_IF_VAR_H
  515: # include <net/if_var.h>
  516: #endif
  517: ])dnl
  518: 
  519: AC_CHECK_HEADERS([sys/un.h netinet/in_systm.h netinet/in_var.h \
  520: 	net/if_dl.h net/netopt.h net/route.h \
  521: 	inet/nd.h arpa/inet.h netinet/ip_icmp.h \
  522: 	fcntl.h stddef.h sys/ioctl.h syslog.h wchar.h wctype.h \
  523: 	sys/sysctl.h sys/sockio.h kvm.h sys/conf.h],
  524: 	[], [], QUAGGA_INCLUDES)
  525: 
  526: AC_CHECK_HEADERS([ucontext.h], [], [],
  527: [#ifndef __USE_GNU
  528: #define __USE_GNU
  529: #endif /* __USE_GNU */
  530: QUAGGA_INCLUDES
  531: ])
  532: 
  533: m4_define([UCONTEXT_INCLUDES],
  534: [#include <ucontext.h>])dnl
  535: 
  536: AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.uc_regs],
  537:   [], [], [UCONTEXT_INCLUDES])
  538: AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.regs],
  539:   [AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.regs.nip],
  540:    [], [], [UCONTEXT_INCLUDES])],
  541:   [], [UCONTEXT_INCLUDES])
  542: AC_CHECK_MEMBERS([ucontext_t.uc_mcontext.gregs],
  543:   [], [], [UCONTEXT_INCLUDES])
  544: 
  545: m4_define([QUAGGA_INCLUDES],
  546: QUAGGA_INCLUDES
  547: [#if HAVE_SYS_UN_H
  548: # include <sys/un.h>
  549: #endif
  550: #if HAVE_NETINET_IN_SYSTM_H
  551: # include <netinet/in_systm.h>
  552: #endif
  553: #if HAVE_NETINET_IN_VAR_H
  554: # include <netinet/in_var.h>
  555: #endif
  556: #if HAVE_NET_IF_DL_H
  557: # include <net/if_dl.h>
  558: #endif
  559: #if HAVE_NET_NETOPT_H
  560: # include <net/netopt.h>
  561: #endif
  562: #if HAVE_NET_ROUTE_H
  563: # include <net/route.h>
  564: #endif
  565: #if HAVE_INET_ND_H
  566: # include <inet/nd.h>
  567: #endif
  568: #if HAVE_ARPA_INET_H
  569: # include <arpa/inet.h>
  570: #endif
  571: /* Required for IDRP */
  572: #if HAVE_NETINET_IP_ICMP_H
  573: # include <netinet/ip_icmp.h>
  574: #endif
  575: ])dnl
  576: 
  577: dnl V6 headers are checked below, after we check for v6
  578: 
  579: dnl Some systems (Solaris 2.x) require libnsl (Network Services Library)
  580: case "$host" in
  581:   [*-sunos5.[6-7]*] | [*-solaris2.[6-7]*])
  582:       opsys=sol2-6
  583:       AC_DEFINE(SUNOS_56, 1, SunOS 5.6 to 5.7)
  584:       AC_DEFINE(SUNOS_5, 1, SunOS 5)
  585:       AC_CHECK_LIB(xnet, main)
  586:       CURSES=-lcurses
  587:       SOLARIS="solaris"
  588:   ;;
  589:   [*-sunos5.[8-9]] \
  590:   | [*-sunos5.1[0-9]] \
  591:   | [*-sunos5.1[0-9].[0-9]] \
  592:   | [*-solaris2.[8-9]] \
  593:   | [*-solaris2.1[0-9]] \
  594:   | [*-solaris2.1[0-9].[0-9]])
  595:       opsys=sol8
  596:       AC_DEFINE(SUNOS_59, 1, [SunOS 5.8 up])
  597:       AC_DEFINE(SUNOS_5, 1, [SunOS 5])
  598:       AC_CHECK_LIB(socket, main)
  599:       AC_CHECK_LIB(nsl, main)
  600:       AC_CHECK_LIB(umem, main)
  601:       AC_CHECK_FUNCS([printstack],
  602:       	[AC_DEFINE([HAVE_PRINTSTACK],1,[Solaris printstack])
  603:       	 AC_DEFINE([HAVE_STACK_TRACE],1,[Stack symbols decode functionality])
  604:       	])
  605:       CURSES=-lcurses
  606:       SOLARIS="solaris"
  607:   ;;
  608:   *-sunos5* | *-solaris2*)
  609:       AC_DEFINE(SUNOS_5,,SunOS 5, Unknown SunOS)
  610:       AC_CHECK_LIB(socket, main)
  611:       AC_CHECK_LIB(nsl, main)
  612:       CURSES=-lcurses
  613:       SOLARIS="solaris"
  614:   ;;
  615:   *-linux*)
  616:       opsys=gnu-linux
  617:       AC_DEFINE(GNU_LINUX,,GNU Linux)
  618:   ;;
  619:   *-openbsd*)
  620:       opsys=openbsd
  621:       AC_DEFINE(OPEN_BSD,,OpenBSD)
  622:   ;;
  623: esac
  624: 
  625: AC_SYS_LARGEFILE
  626: 
  627: dnl ---------------------
  628: dnl Integrated VTY option
  629: dnl ---------------------
  630: case "${enable_vtysh}" in
  631:   "no") VTYSH="";;
  632:   *)    VTYSH="vtysh";
  633:          AC_DEFINE(VTYSH,,VTY shell)
  634: dnl	 Vtysh uses libreadline, which looks for termcap functions at
  635: dnl	 configure time.  We follow readlines search order.
  636: dnl	 The required procedures are in libtermcap on NetBSD, in
  637: dnl	 [TODO] on Linux, and in [TODO] on Solaris.
  638: 	 AC_CHECK_LIB(termcap, tputs, LIBREADLINE="$LIBREADLINE -ltermcap",
  639: 	   [AC_CHECK_LIB(tinfo, tputs, LIBREADLINE="$LIBREADLINE -ltinfo",
  640: 	     [AC_CHECK_LIB(curses, tputs, LIBREADLINE="$LIBREADLINE -lcurses",
  641: 	       [AC_CHECK_LIB(ncurses, tputs, 
  642: 	                     LIBREADLINE="$LIBREADLINE -lncurses")]
  643: 	      )]
  644: 	    )]
  645: 	  )
  646:          AC_CHECK_LIB(readline, main, LIBREADLINE="$LIBREADLINE -lreadline",,
  647:                       "$LIBREADLINE")
  648:          if test $ac_cv_lib_readline_main = no; then
  649:            AC_MSG_ERROR([vtysh needs libreadline but was not found and usable on your system.])
  650:          fi
  651: 	 AC_CHECK_HEADER(readline/history.h)
  652: 	 if test $ac_cv_header_readline_history_h = no;then
  653:            AC_MSG_ERROR([readline is too old to have readline/history.h, please update to the latest readline library.])
  654: 	 fi
  655: 	 AC_CHECK_LIB(readline, rl_completion_matches, 
  656: 	              LIBREADLINE="$LIBREADLINE",, "$LIBREADLINE")
  657:          if test $ac_cv_lib_readline_rl_completion_matches = no; then
  658:            AC_DEFINE(rl_completion_matches,completion_matches,Old readline)
  659: 	 fi
  660: 	 ;;
  661:   "no" ) VTYSH="";;
  662: esac
  663: AC_SUBST(LIBREADLINE)
  664: AM_CONDITIONAL(VTYSH, test "x$VTYSH" = "xvtysh")
  665: 
  666: dnl ----------
  667: dnl PAM module
  668: dnl
  669: dnl Quagga detects the PAM library it is built against by checking for a
  670: dnl functional pam_misc.h (Linux-PAM) or openpam.h (OpenPAM) header. pam_misc.h
  671: dnl is known to #include pam_appl.h, the standard header of a PAM library, and
  672: dnl openpam.h doesn't do that, although depends on the header too. Hence a
  673: dnl little assistance to AC_CHECK_HEADER is necessary for the proper detection
  674: dnl of OpenPAM.
  675: dnl ----------
  676: if test "$with_libpam" = "yes"; then
  677:   AC_CHECK_HEADER([security/pam_misc.h],
  678:     [AC_DEFINE(HAVE_PAM_MISC_H,,Have pam_misc.h)
  679:      AC_DEFINE(PAM_CONV_FUNC,misc_conv,Have misc_conv)
  680:      pam_conv_func="misc_conv"
  681:     ],
  682:     [], QUAGGA_INCLUDES)
  683:   AC_CHECK_HEADER([security/openpam.h],
  684:     [AC_DEFINE(HAVE_OPENPAM_H,,Have openpam.h)
  685:      AC_DEFINE(PAM_CONV_FUNC,openpam_ttyconv,Have openpam_ttyconv)
  686:      pam_conv_func="openpam_ttyconv"
  687:     ],
  688:     [], QUAGGA_INCLUDES[#include <security/pam_appl.h>])
  689:   if test -z "$ac_cv_header_security_pam_misc_h$ac_cv_header_security_openpam_h" ; then
  690:     AC_MSG_WARN([*** pam support will not be built ***])
  691:     with_libpam="no"
  692:   fi
  693: fi
  694: 
  695: if test "$with_libpam" = "yes"; then
  696: dnl took this test from proftpds configure.in and suited to our needs
  697: dnl -------------------------------------------------------------------------
  698: dnl
  699: dnl This next check looks funky due to a linker problem with some versions
  700: dnl of the PAM library.  Prior to 0.72 release, the Linux PAM shared library
  701: dnl omitted requiring libdl linking information. PAM-0.72 or better ships
  702: dnl with RedHat 6.2 and Debian 2.2 or better.
  703: AC_CHECK_LIB(pam, pam_start,
  704:   [AC_CHECK_LIB(pam, $pam_conv_func,
  705:     [AC_DEFINE(USE_PAM,,Use PAM for authentication)
  706:      LIBPAM="-lpam"],
  707:     [AC_DEFINE(USE_PAM,,Use PAM for authentication)
  708:      LIBPAM="-lpam -lpam_misc"]
  709:     )
  710:   ],
  711: 
  712:   [AC_CHECK_LIB(pam, pam_end,
  713:     [AC_CHECK_LIB(pam, $pam_conv_func,
  714:       [AC_DEFINE(USE_PAM,,Use PAM for authentication)
  715:        LIBPAM="-lpam -ldl"],
  716:       [AC_DEFINE(USE_PAM,,Use PAM for authentication)
  717:        LIBPAM="-lpam -ldl -lpam_misc"]
  718:      )
  719:   ],AC_MSG_WARN([*** pam support will not be built ***]),
  720:   [-ldl])
  721:   ]
  722: )
  723: fi
  724: AC_SUBST(LIBPAM)
  725: 
  726: dnl -------------------------------
  727: dnl Endian-ness check
  728: dnl -------------------------------
  729: AC_WORDS_BIGENDIAN
  730: 
  731: dnl -------------------------------
  732: dnl check the size in byte of the C
  733: dnl -------------------------------
  734: dnl AC_CHECK_SIZEOF(char)
  735: dnl AC_CHECK_SIZEOF(int)
  736: dnl AC_CHECK_SIZEOF(short)
  737: dnl AC_CHECK_SIZEOF(long)
  738: 
  739: dnl ----------------------------
  740: dnl check existance of functions
  741: dnl ----------------------------
  742: AC_FUNC_CHOWN
  743: AC_FUNC_FNMATCH
  744: AC_FUNC_FORK
  745: AC_FUNC_MEMCMP
  746: AC_FUNC_MKTIME
  747: AC_FUNC_STRFTIME
  748: AC_FUNC_STAT
  749: AC_FUNC_SELECT_ARGTYPES
  750: AC_FUNC_STRFTIME
  751: dnl Avoid AC_FUNC_STRNLEN because it pulls in AC_SYSTEM_EXTENSIONS which
  752: dnl can lead to strange side effects.  So we just check for strnlen
  753: dnl directly, see below.
  754: dnl AC_FUNC_STRNLENdnl
  755: AC_FUNC_VPRINTF
  756: 
  757: dnl -------------------------------
  758: dnl bgpd needs pow() and hence libm
  759: dnl -------------------------------
  760: TMPLIBS="$LIBS"
  761: AC_CHECK_HEADER([math.h],
  762:   [AC_CHECK_LIB([m], [pow],
  763:     [LIBM="-lm"
  764:      LIBS="$LIBS $LIBM"
  765:      AC_DEFINE(HAVE_LIBM,, Have libm)
  766:      AC_CHECK_FUNCS(pow,[],[LIBM=""])
  767:     ])
  768: ])
  769: if test x"$LIBM" = x ; then
  770:   AC_MSG_WARN([Unable to find working pow function - bgpd may not link])
  771: fi
  772: LIBS="$TMPLIBS"
  773: AC_SUBST(LIBM)
  774: 
  775: dnl ---------------
  776: dnl other functions
  777: dnl ---------------
  778: AC_CHECK_FUNCS([dup2 ftruncate getcwd gethostbyname getpagesize gettimeofday \
  779: 	inet_ntoa inet_aton strnlen \
  780: 	memchr memmove memset select socket \
  781: 	strcasecmp strchr strcspn strdup strerror \
  782: 	strncasecmp strndup strrchr strspn strstr \
  783: 	strtol strtoul strlcat strlcpy \
  784: 	daemon snprintf vsnprintf \
  785: 	if_nametoindex if_indextoname getifaddrs \
  786: 	uname fcntl getgrouplist])
  787: 
  788: AC_CHECK_FUNCS(setproctitle, ,
  789:   [AC_CHECK_LIB(util, setproctitle, 
  790:      [LIBS="$LIBS -lutil"
  791:       AC_DEFINE(HAVE_SETPROCTITLE,, Have setproctitle)
  792:      ]
  793:    )
  794:   ]
  795: )
  796: 
  797: AC_CHECK_HEADER([asm-generic/unistd.h],
  798:                 [AC_CHECK_DECL(__NR_setns,
  799:                                AC_DEFINE(HAVE_NETNS,, Have netns),,
  800:                                QUAGGA_INCLUDES [#include <asm-generic/unistd.h>
  801:                                ])
  802:                  AC_CHECK_FUNCS(setns, AC_DEFINE(HAVE_SETNS,, Have setns))]
  803:                )
  804: 
  805: dnl ------------------------------------
  806: dnl Determine routing get and set method
  807: dnl ------------------------------------
  808: AC_MSG_CHECKING(zebra between kernel interface method)
  809: if test x"$opsys" = x"gnu-linux"; then
  810:   AC_MSG_RESULT(netlink)
  811:   RT_METHOD=rt_netlink.o
  812:   AC_DEFINE(HAVE_NETLINK,,netlink)
  813:   netlink=yes
  814: else
  815:   AC_MSG_RESULT(Route socket)
  816:   KERNEL_METHOD="kernel_socket.o"
  817:   RT_METHOD="rt_socket.o"
  818: fi
  819: AC_SUBST(RT_METHOD)
  820: AC_SUBST(KERNEL_METHOD)
  821: AM_CONDITIONAL([HAVE_NETLINK], [test "x$netlink" = "xyes"])
  822: 
  823: dnl --------------------------
  824: dnl Determine IS-IS I/O method
  825: dnl --------------------------
  826: AC_DEFINE(ISIS_METHOD_PFPACKET,	1, [ constant value for isis method pfpacket ])
  827: AC_DEFINE(ISIS_METHOD_DLPI,	2, [ constant value for isis method dlpi ])
  828: AC_DEFINE(ISIS_METHOD_BPF,	3, [ constant value for isis method bpf ])
  829: AC_CHECK_HEADER(net/bpf.h)
  830: AC_CHECK_HEADER(sys/dlpi.h)
  831: AC_MSG_CHECKING(zebra IS-IS I/O method)
  832: if test x"$opsys" = x"gnu-linux"; then
  833:   AC_MSG_RESULT(pfpacket)
  834:   ISIS_METHOD_MACRO="ISIS_METHOD_PFPACKET"
  835: elif test x"$opsys" = x"sol2-6" -o x"$opsys" = x"sol8"; then
  836:   AC_MSG_RESULT(DLPI)
  837:   ISIS_METHOD_MACRO="ISIS_METHOD_DLPI"
  838: else
  839:   if test $ac_cv_header_net_bpf_h = no; then
  840:     if test $ac_cv_header_sys_dlpi_h = no; then
  841:       AC_MSG_RESULT(none)
  842:       AC_MSG_WARN([*** IS-IS support will not be built ***])
  843:       ISISD=""
  844:     else
  845:       AC_MSG_RESULT(DLPI)
  846:     fi
  847:     ISIS_METHOD_MACRO="ISIS_METHOD_DLPI"
  848:   else
  849:     AC_MSG_RESULT(BPF)
  850:     ISIS_METHOD_MACRO="ISIS_METHOD_BPF"
  851:   fi
  852: fi
  853: AC_DEFINE_UNQUOTED(ISIS_METHOD, $ISIS_METHOD_MACRO, [ selected method for isis, == one of the constants ])
  854: 
  855: dnl ------------------------------------
  856: dnl check for broken CMSG_FIRSTHDR macro
  857: dnl ------------------------------------
  858: AC_MSG_CHECKING(for broken CMSG_FIRSTHDR)
  859: AC_RUN_IFELSE([AC_LANG_SOURCE([[
  860: #ifdef SUNOS_5
  861: #define _XPG4_2
  862: #define __EXTENSIONS__
  863: #endif
  864: #ifdef HAVE_STDLIB_H
  865: # include <stdlib.h>
  866: #endif
  867: #ifdef HAVE_SYS_TYPES_H
  868: #include <sys/types.h>
  869: #endif
  870: #ifdef HAVE_SYS_SOCKET_H
  871: #include <sys/socket.h>
  872: #endif
  873: 
  874: main()
  875: {
  876:   struct msghdr msg;
  877:   char buf[4];
  878: 
  879:   msg.msg_control = buf;
  880:   msg.msg_controllen = 0;
  881: 
  882:   if (CMSG_FIRSTHDR(&msg) != NULL)
  883:     exit(0);
  884:   exit (1);
  885: }]])],[AC_MSG_RESULT(yes - using workaround) AC_DEFINE(HAVE_BROKEN_CMSG_FIRSTHDR,,Broken CMSG_FIRSTHDR)],
  886: [AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
  887: 
  888: dnl ------------------------------
  889: dnl check kernel route read method
  890: dnl ------------------------------
  891: AC_CACHE_CHECK([route read method], [quagga_cv_rtread_method],
  892: [if test "x$netlink" = xyes; then
  893:   quagga_cv_rtread_method="netlink"
  894: else
  895: for quagga_cv_rtread_method in /dev/ip /dev/null;
  896: do
  897:   test x`ls $quagga_cv_rtread_method 2>/dev/null` = x"$quagga_cv_rtread_method" && break
  898: done
  899: case $quagga_cv_rtread_method in
  900:   "/dev/ip")
  901:                      case "$host" in
  902:                        *-freebsd*)    quagga_cv_rtread_method="sysctl";;
  903:                        *)             quagga_cv_rtread_method="getmsg";;
  904:                      esac;;
  905: 	*)
  906:                      quagga_cv_rtread_method="sysctl";;
  907: esac
  908: fi])
  909: RTREAD_METHOD=rtread_${quagga_cv_rtread_method}.o
  910: AC_SUBST(RTREAD_METHOD)
  911: 
  912: dnl -----------------------------
  913: dnl check interface lookup method
  914: dnl -----------------------------
  915: IOCTL_METHOD=ioctl.o
  916: AC_MSG_CHECKING(interface looking up method)
  917: if test "$netlink" = yes; then
  918:   AC_MSG_RESULT(netlink)
  919:   IF_METHOD=if_netlink.o
  920: elif test "$opsys" = "sol2-6";then
  921:   AC_MSG_RESULT(Solaris GIF)
  922:   IF_METHOD=if_ioctl.o
  923: elif test "$opsys" = "sol8";then
  924:   AC_MSG_RESULT(Solaris GLIF)
  925:   IF_METHOD=if_ioctl_solaris.o
  926:   IOCTL_METHOD=ioctl_solaris.o
  927: elif test "$opsys" = "openbsd";then
  928:   AC_MSG_RESULT(openbsd)
  929:   IF_METHOD=if_ioctl.o
  930: elif grep NET_RT_IFLIST /usr/include/sys/socket.h >/dev/null 2>&1; then
  931:   AC_MSG_RESULT(sysctl)
  932:     IF_METHOD=if_sysctl.o
  933:     AC_DEFINE(HAVE_NET_RT_IFLIST,,NET_RT_IFLIST)
  934: else
  935:     AC_MSG_RESULT(ioctl)
  936:     IF_METHOD=if_ioctl.o
  937: fi
  938: AC_SUBST(IF_METHOD)
  939: AC_SUBST(IOCTL_METHOD)
  940: 
  941: dnl ---------------------------------------------------------------
  942: dnl figure out how to specify an interface in multicast sockets API
  943: dnl ---------------------------------------------------------------
  944: AC_CHECK_MEMBERS([struct ip_mreqn.imr_ifindex], [], [], QUAGGA_INCLUDES)
  945: 
  946: AC_CHECK_HEADERS([linux/mroute.h], [], [],
  947: [
  948: #if HAVE_NETINET_IN_H
  949: #include<netinet/in.h>
  950: #endif])
  951: AC_MSG_CHECKING([for BSD struct ip_mreq hack])
  952: AC_TRY_COMPILE([#ifdef HAVE_SYS_PARAM_H
  953: #include <sys/param.h>
  954: #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)
  955:   return (0);
  956: #else
  957:   #error No support for BSD struct ip_mreq hack detected
  958: #endif],[AC_MSG_RESULT(yes)
  959: AC_DEFINE(HAVE_BSD_STRUCT_IP_MREQ_HACK,,[Can pass ifindex in struct ip_mreq])],
  960: AC_MSG_RESULT(no))
  961: 
  962: AC_MSG_CHECKING([for RFC3678 protocol-independed API])
  963: AC_TRY_COMPILE([
  964: #include <sys/types.h>
  965: #include <netinet/in.h>
  966: ], [struct group_req gr; int sock; setsockopt(sock, IPPROTO_IP, MCAST_JOIN_GROUP, (void*)&gr, sizeof(gr));
  967: ], [AC_MSG_RESULT(yes)
  968: AC_DEFINE(HAVE_RFC3678,1,[Have RFC3678 protocol-independed API])],
  969: AC_MSG_RESULT(no))
  970: 
  971: dnl ---------------------------------------------------------------
  972: dnl figure out how to check link-state
  973: dnl ---------------------------------------------------------------
  974: AC_CHECK_HEADER([net/if.h],
  975:   [AC_CHECK_HEADER( [net/if_media.h],
  976:     [m4_define([LINK_DETECT_INCLUDES],
  977:       QUAGGA_INCLUDES
  978:       [#include <net/if_media.h>
  979:     ])
  980:     AC_CHECK_MEMBERS( [struct ifmediareq.ifm_status],
  981:       AC_DEFINE(HAVE_BSD_LINK_DETECT,,[BSD link-detect]),
  982:       [], LINK_DETECT_INCLUDES)], 
  983:     [],
  984:     QUAGGA_INCLUDES)], 
  985:   [], QUAGGA_INCLUDES )
  986: 
  987: dnl ---------------------------------------------------------------
  988: dnl Additional, newer way to check link-state using ifi_link_state.
  989: dnl Not available in all BSD's when ifmediareq available
  990: dnl ---------------------------------------------------------------
  991: AC_CHECK_HEADER([net/if.h],
  992:     AC_CHECK_MEMBERS([struct if_data.ifi_link_state],
  993:       AC_DEFINE(HAVE_BSD_IFI_LINK_STATE,,[BSD ifi_link_state available]),
  994:       [], QUAGGA_INCLUDES),
  995:     ,)
  996: 
  997: dnl ------------------------
  998: dnl TCP_MD5SIG socket option
  999: dnl ------------------------
 1000: 
 1001: AC_CHECK_HEADER([netinet/tcp.h], 
 1002:    [m4_define([MD5_INCLUDES],
 1003:       QUAGGA_INCLUDES
 1004:       [#include <netinet/tcp.h>
 1005:     ])
 1006:     AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)],
 1007:    [],
 1008:    QUAGGA_INCLUDES)
 1009: if test $ac_cv_have_decl_TCP_MD5SIG = no; then
 1010:   AC_CHECK_HEADER([linux/tcp.h],
 1011:        [m4_define([MD5_INCLUDES],
 1012:           QUAGGA_INCLUDES
 1013:           [#include <linux/tcp.h>
 1014:         ])
 1015:        AC_CHECK_DECLS([TCP_MD5SIG], [], [], MD5_INCLUDES)])
 1016: fi
 1017: 
 1018: dnl -----------------------------
 1019: dnl check ipforward detect method
 1020: dnl -----------------------------
 1021: AC_CACHE_CHECK([ipforward method], [quagga_cv_ipforward_method],
 1022: [if test x$cross_compiling = xyes; then
 1023:   if test x"$opsys" = x"gnu-linux"; then
 1024:     quagga_cv_ipforward_method=/proc/net/snmp
 1025:   else
 1026:     quagga_cv_ipforward_method=/dev/ip
 1027:   fi
 1028: else
 1029:   for quagga_cv_ipforward_method in /proc/net/snmp /dev/ip /dev/null;
 1030:   do
 1031:     test x`ls $quagga_cv_ipforward_method 2>/dev/null` = x"$quagga_cv_ipforward_method" && break
 1032:   done
 1033: fi
 1034: case $quagga_cv_ipforward_method in
 1035:   "/proc/net/snmp")  quagga_cv_ipforward_method="proc";;
 1036:   "/dev/ip")         
 1037:                      case "$host" in
 1038:                        *-freebsd*)    quagga_cv_ipforward_method="sysctl";;
 1039:                        *)             quagga_cv_ipforward_method="solaris";;
 1040:                      esac;;
 1041:   *)                 quagga_cv_ipforward_method="sysctl";;
 1042: esac])
 1043: IPFORWARD=ipforward_${quagga_cv_ipforward_method}.o
 1044: AC_SUBST(IPFORWARD)
 1045: 
 1046: AC_CHECK_FUNCS(getaddrinfo, [have_getaddrinfo=yes], [have_getaddrinfo=no])
 1047: 
 1048: dnl ----------
 1049: dnl IPv6 check
 1050: dnl ----------
 1051: AC_MSG_CHECKING(whether does this OS have IPv6 stack)
 1052: dnl ---------
 1053: dnl KAME IPv6
 1054: dnl ---------
 1055:   if grep WIDE /usr/include/netinet6/in6.h >/dev/null 2>&1; then
 1056:     AC_DEFINE(KAME,1,KAME IPv6)
 1057:     AC_MSG_RESULT(KAME)
 1058: dnl ------------------------------------
 1059: dnl Solaris 9, 10 and potentially higher
 1060: dnl ------------------------------------
 1061:   elif test x"$opsys" = x"sol8"; then
 1062:     AC_DEFINE(SOLARIS_IPV6, 1, Solaris IPv6)
 1063:     AC_MSG_RESULT(Solaris IPv6)
 1064: dnl ----------
 1065: dnl Linux IPv6
 1066: dnl ----------
 1067:   elif test x"$opsys" = x"gnu-linux"; then
 1068:     AC_DEFINE(LINUX_IPV6,1,Linux IPv6 stack)
 1069:     AC_MSG_RESULT(Linux IPv6)
 1070:   else
 1071:     AC_MSG_ERROR([Failed to detect IPv6 stack])
 1072:   fi
 1073: 
 1074: dnl this is unconditial, for compatibility
 1075: AC_DEFINE(HAVE_IPV6,1,IPv6)
 1076: 
 1077: dnl ------------------
 1078: dnl IPv6 header checks
 1079: dnl ------------------
 1080: AC_CHECK_HEADERS([netinet6/in6.h netinet/in6_var.h netinet/icmp6.h \
 1081: 	netinet6/in6_var.h netinet6/nd6.h], [], [],
 1082: 	QUAGGA_INCLUDES)
 1083: 
 1084: m4_define([QUAGGA_INCLUDES],dnl
 1085: QUAGGA_INCLUDES
 1086: [#if HAVE_NETINET6_IN6_H
 1087: #include <netinet6/in6.h>
 1088: #endif
 1089: #if HAVE_NETINET_IN6_VAR_H
 1090: #include <netinet/in6_var.h>
 1091: #endif
 1092: #if HAVE_NETINET_ICMP6_H
 1093: # include <netinet/icmp6.h>
 1094: #endif
 1095: #if HAVE_NETINET6_IN6_VAR_H
 1096: # include <netinet6/in6_var.h>
 1097: #endif
 1098: #if HAVE_NETINET6_ND6_H
 1099: # include <netinet6/nd6.h>
 1100: #endif
 1101: ])dnl
 1102: 
 1103: dnl disable doc check
 1104: if test "${enable_doc}" = "no";then
 1105:   DOC=""
 1106: else
 1107:   DOC="doc"
 1108: fi
 1109: 
 1110: dnl --------------------
 1111: dnl Daemon disable check
 1112: dnl --------------------
 1113: if test "${enable_zebra}" = "no";then
 1114:   ZEBRA=""
 1115: else
 1116:   ZEBRA="zebra"
 1117: fi
 1118: AM_CONDITIONAL(ZEBRA, test "x$ZEBRA" = "xzebra")
 1119: 
 1120: if test "${enable_bgpd}" = "no";then
 1121:   BGPD=""
 1122: else
 1123:   BGPD="bgpd"
 1124: fi
 1125: AM_CONDITIONAL(BGPD, test "x$BGPD" = "xbgpd")
 1126: 
 1127: if test "${enable_ripd}" = "no";then
 1128:   RIPD=""
 1129: else
 1130:   RIPD="ripd"
 1131: fi
 1132: AM_CONDITIONAL(RIPD, test "x$RIPD" = "xripd")
 1133: 
 1134: if test "${enable_ospfd}" = "no";then
 1135:   OSPFD=""
 1136: else
 1137:   OSPFD="ospfd"
 1138: fi
 1139: AM_CONDITIONAL(OSPFD, test "x$OSPFD" = "xospfd")
 1140: 
 1141: if test "${enable_watchquagga}" = "no";then
 1142:   WATCHQUAGGA=""
 1143: else
 1144:   WATCHQUAGGA="watchquagga"
 1145: fi
 1146: AM_CONDITIONAL(WATCHQUAGGA, test "x$WATCHQUAGGA" = "xwatchquagga")
 1147: 
 1148: OSPFCLIENT=""
 1149: if test "${enable_ospfapi}" != "no";then
 1150:     AC_DEFINE(SUPPORT_OSPF_API,,OSPFAPI)
 1151: 
 1152:   if test "${enable_ospfclient}" != "no";then
 1153:       OSPFCLIENT="ospfclient"
 1154:   fi
 1155: fi
 1156: 
 1157: AM_CONDITIONAL(OSPFCLIENT, test "x$OSPFCLIENT" = "xospfclient")
 1158: 
 1159: case "${enable_ripngd}" in
 1160:   "no" ) RIPNGD="";;
 1161:   *    ) RIPNGD="ripngd";;
 1162: esac
 1163: AM_CONDITIONAL(RIPNGD, test "x$RIPNGD" = "xripngd")
 1164: 
 1165: case "${enable_ospf6d}" in
 1166:   "no" ) OSPF6D="";;
 1167:   *    ) OSPF6D="ospf6d";;
 1168: esac
 1169: AM_CONDITIONAL(OSPF6D, test "x$OSPF6D" = "xospf6d")
 1170: 
 1171: case "${enable_isisd}" in
 1172:   "no" ) ISISD="";;
 1173:   *    ) ISISD="isisd";;
 1174: esac
 1175: AM_CONDITIONAL(ISISD, test "x$ISISD" = "xisisd")
 1176: 
 1177: case "${enable_pimd}" in
 1178:   "no" ) PIMD="";;
 1179:   *    ) PIMD="pimd";;
 1180: esac
 1181: AM_CONDITIONAL(PIMD, test "x$PIMD" = "xpimd")
 1182: 
 1183: if test "${enable_bgp_announce}" = "no";then
 1184:   AC_DEFINE(DISABLE_BGP_ANNOUNCE,1,Disable BGP installation to zebra)
 1185: else
 1186:   AC_DEFINE(DISABLE_BGP_ANNOUNCE,0,Disable BGP installation to zebra)
 1187: fi
 1188: 
 1189: AC_SUBST(DOC)
 1190: AC_SUBST(ZEBRA)
 1191: AC_SUBST(BGPD)
 1192: AC_SUBST(RIPD)
 1193: AC_SUBST(RIPNGD)
 1194: AC_SUBST(OSPFD)
 1195: AC_SUBST(OSPF6D)
 1196: AC_SUBST(WATCHQUAGGA)
 1197: AC_SUBST(ISISD)
 1198: AC_SUBST(PIMD)
 1199: AC_SUBST(SOLARIS)
 1200: AC_SUBST(VTYSH)
 1201: AC_SUBST(CURSES)
 1202: AC_SUBST(OSPFCLIENT)
 1203: AC_SUBST(OSPFAPI)
 1204: AC_CHECK_LIB(c, inet_ntop, [AC_DEFINE(HAVE_INET_NTOP,,inet_ntop)])
 1205: AC_CHECK_LIB(c, inet_pton, [AC_DEFINE(HAVE_INET_PTON,,inet_pton)])
 1206: AC_CHECK_LIB(crypt, crypt)
 1207: AC_CHECK_LIB(resolv, res_init)
 1208: 
 1209: dnl ---------------------------
 1210: dnl check system has PCRE regexp
 1211: dnl ---------------------------
 1212: if test "x$enable_pcreposix" = "xyes"; then
 1213:   AC_CHECK_LIB(pcreposix, pcreposix_regexec, ,[enable_pcreposix=no
 1214:   AC_MSG_WARN([*** falling back to other regex library ***]) ])
 1215: fi
 1216: 
 1217: if test "x$enable_pcreposix" != "xyes"; then
 1218: dnl ---------------------------
 1219: dnl check system has GNU regexp
 1220: dnl ---------------------------
 1221: AC_MSG_CHECKING(whether system has GNU regex)
 1222: AC_CHECK_LIB(c, regexec,
 1223: [AC_DEFINE(HAVE_GNU_REGEX,,GNU regexp library)
 1224:  LIB_REGEX=""],
 1225: [LIB_REGEX="regex.o"])
 1226: fi
 1227: AC_SUBST(HAVE_LIBPCREPOSIX)
 1228: AC_SUBST(LIB_REGEX)
 1229: 
 1230: dnl ------------------
 1231: dnl check Net-SNMP library
 1232: dnl ------------------
 1233: if test "x${enable_snmp}" != "xno"; then
 1234:    AC_PATH_TOOL([NETSNMP_CONFIG], [net-snmp-config], [no])
 1235:    if test x"$NETSNMP_CONFIG" = x"no"; then
 1236:       AC_MSG_ERROR([--enable-snmp given but unable to find net-snmp-config])
 1237:    fi
 1238:    LIBS="$LIBS `${NETSNMP_CONFIG} --agent-libs`"
 1239:    CFLAGS="`${NETSNMP_CONFIG} --base-cflags` $CFLAGS"
 1240:    AC_MSG_CHECKING([whether we can link to Net-SNMP])
 1241:    AC_LINK_IFELSE([AC_LANG_PROGRAM([
 1242: int main(void);
 1243: ],
 1244: [
 1245: {
 1246:   return 0;
 1247: }
 1248: ])],[AC_MSG_RESULT(yes)],[
 1249:      AC_MSG_RESULT(no)
 1250:      AC_MSG_ERROR([--enable-snmp given but not usable])])
 1251:    AC_DEFINE(HAVE_SNMP,,SNMP)
 1252:    case "${enable_snmp}" in
 1253:      yes)
 1254:       SNMP_METHOD=agentx
 1255:       ;;
 1256:      smux|agentx)
 1257:       SNMP_METHOD="${enable_snmp}"
 1258:       ;;
 1259:      *)
 1260:       AC_MSG_ERROR([--enable-snmp given with an unknown method (${enable_snmp}). Use smux or agentx])
 1261:       ;;
 1262:    esac
 1263:    AH_TEMPLATE([SNMP_SMUX], [Use SNMP SMUX to interface with snmpd])
 1264:    AH_TEMPLATE([SNMP_AGENTX], [Use SNMP AgentX to interface with snmpd])
 1265:    AC_DEFINE_UNQUOTED(AS_TR_CPP(SNMP_${SNMP_METHOD}),,SNMP method to interface with snmpd)
 1266: fi
 1267: 
 1268: dnl ---------------------------
 1269: dnl sockaddr and netinet checks
 1270: dnl ---------------------------
 1271: AC_CHECK_TYPES([struct sockaddr, struct sockaddr_in,
 1272: 	struct sockaddr_in6, struct sockaddr_un, struct sockaddr_dl,
 1273: 	socklen_t, struct vifctl, struct mfcctl, struct sioc_sg_req,
 1274: 	vifi_t, struct sioc_vif_req, struct igmpmsg,
 1275: 	struct ifaliasreq, struct if6_aliasreq, struct in6_aliasreq,
 1276: 	struct nd_opt_adv_interval, struct rt_addrinfo,
 1277: 	struct nd_opt_homeagent_info, struct nd_opt_adv_interval],
 1278: 	[], [], QUAGGA_INCLUDES)
 1279: 
 1280: AC_CHECK_MEMBERS([struct sockaddr.sa_len,
 1281: 	struct sockaddr_in.sin_len, struct sockaddr_un.sun_len,
 1282: 	struct sockaddr_in6.sin6_scope_id,
 1283: 	struct sockaddr_dl.sdl_len,
 1284: 	struct if6_aliasreq.ifra_lifetime,
 1285: 	struct nd_opt_adv_interval.nd_opt_ai_type],
 1286: 	[], [], QUAGGA_INCLUDES)
 1287: 
 1288: dnl ---------------------------
 1289: dnl IRDP/pktinfo/icmphdr checks
 1290: dnl ---------------------------
 1291: AC_CHECK_TYPES([struct in_pktinfo], 
 1292:  [AC_CHECK_TYPES([struct icmphdr],
 1293:    [if test "${enable_irdp}" != "no"; then
 1294:       AC_DEFINE(HAVE_IRDP,, IRDP)
 1295:     fi],
 1296:    [if test "${enable_irdp}" = "yes"; then
 1297:       AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
 1298:     fi], [QUAGGA_INCLUDES])],
 1299:  [if test "${enable_irdp}" = "yes"; then
 1300:     AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
 1301:   fi], [QUAGGA_INCLUDES])
 1302: 
 1303: dnl -----------------------
 1304: dnl checking for IP_PKTINFO
 1305: dnl -----------------------
 1306: AC_MSG_CHECKING(for IP_PKTINFO)
 1307: AC_TRY_COMPILE([#include <netdb.h>], [
 1308:   int opt = IP_PKTINFO;
 1309: ], [
 1310:   AC_MSG_RESULT(yes)
 1311:   AC_DEFINE(HAVE_IP_PKTINFO, 1, [Have IP_PKTINFO])
 1312: ], [
 1313:   AC_MSG_RESULT(no)
 1314: ])
 1315: 
 1316: dnl ---------------------------
 1317: dnl checking for IP_RECVDSTADDR
 1318: dnl ---------------------------
 1319: AC_MSG_CHECKING(for IP_RECVDSTADDR)
 1320: AC_TRY_COMPILE([#include <netinet/in.h>], [
 1321:   int opt = IP_RECVDSTADDR;
 1322: ], [
 1323:   AC_MSG_RESULT(yes)
 1324:   AC_DEFINE(HAVE_IP_RECVDSTADDR, 1, [Have IP_RECVDSTADDR])
 1325: ], [
 1326:   AC_MSG_RESULT(no)
 1327: ])
 1328: 
 1329: dnl ----------------------
 1330: dnl checking for IP_RECVIF
 1331: dnl ----------------------
 1332: AC_MSG_CHECKING(for IP_RECVIF)
 1333: AC_TRY_COMPILE([#include <netinet/in.h>], [
 1334:   int opt = IP_RECVIF;
 1335: ], [
 1336:   AC_MSG_RESULT(yes)
 1337:   AC_DEFINE(HAVE_IP_RECVIF, 1, [Have IP_RECVIF])
 1338: ], [
 1339:   AC_MSG_RESULT(no)
 1340: ])
 1341: 
 1342: dnl --------------------------------------
 1343: dnl checking for getrusage struct and call
 1344: dnl --------------------------------------
 1345: if test "${enable_rusage}" != "no"; then
 1346:   AC_MSG_CHECKING(whether getrusage is available)
 1347:   AC_TRY_COMPILE([#include <sys/resource.h>],[struct rusage ac_x; getrusage (RUSAGE_SELF, &ac_x);],
 1348:     [AC_MSG_RESULT(yes)
 1349:      AC_DEFINE(HAVE_RUSAGE,,rusage)],
 1350:       AC_MSG_RESULT(no))
 1351: fi
 1352: 
 1353: dnl --------------------------------------
 1354: dnl checking for clock_time monotonic struct and call
 1355: dnl --------------------------------------
 1356: AC_CHECK_DECL(CLOCK_MONOTONIC,
 1357: 	[AC_CHECK_LIB(rt, clock_gettime, [LIBS="$LIBS -lrt"])
 1358: 	 AC_DEFINE(HAVE_CLOCK_MONOTONIC,, Have monotonic clock)
 1359: ], [AC_MSG_RESULT(no)], [QUAGGA_INCLUDES])
 1360: 
 1361: dnl -------------------
 1362: dnl capabilities checks
 1363: dnl -------------------
 1364: if test "${enable_capabilities}" != "no"; then
 1365:   AC_MSG_CHECKING(whether prctl PR_SET_KEEPCAPS is available)
 1366:   AC_TRY_COMPILE([#include <sys/prctl.h>],[prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);],
 1367:     [AC_MSG_RESULT(yes)
 1368:      AC_DEFINE(HAVE_PR_SET_KEEPCAPS,,prctl)
 1369:      quagga_ac_keepcaps="yes"],
 1370:      AC_MSG_RESULT(no)
 1371:   )
 1372:   if test x"${quagga_ac_keepcaps}" = x"yes"; then
 1373:     AC_CHECK_HEADERS(sys/capability.h)
 1374:   fi
 1375:   if test x"${ac_cv_header_sys_capability_h}" = x"yes"; then
 1376:     AC_CHECK_LIB(cap, cap_init, 
 1377:       [AC_DEFINE(HAVE_LCAPS,1,Capabilities)
 1378:        LIBCAP="-lcap"
 1379:        quagga_ac_lcaps="yes"]
 1380:     )
 1381:   else
 1382:     AC_CHECK_HEADERS(priv.h,
 1383:      [AC_MSG_CHECKING(Solaris style privileges are available)
 1384:       AC_TRY_COMPILE([#include <priv.h>],[getpflags(PRIV_AWARE);],
 1385:     	  [AC_MSG_RESULT(yes)
 1386:     	   AC_DEFINE(HAVE_SOLARIS_CAPABILITIES,1,getpflags)
 1387:     	   quagga_ac_scaps="yes"],
 1388:     	   AC_MSG_RESULT(no)
 1389:       )
 1390:      ]
 1391:    )
 1392:   fi
 1393:   if test x"${quagga_ac_scaps}" = x"yes" \
 1394:        -o x"${quagga_ac_lcaps}" = x"yes"; then
 1395:     AC_DEFINE(HAVE_CAPABILITIES,1,capabilities)
 1396:   fi
 1397: fi
 1398: AC_SUBST(LIBCAP)
 1399: 
 1400: dnl ---------------------------------------------------------------------------
 1401: dnl http://www.gnu.org/software/autoconf-archive/ax_sys_weak_alias.html
 1402: dnl Check for and set one of the following = 1
 1403: dnl   HAVE_SYS_WEAK_ALIAS_ATTRIBUTE
 1404: dnl   HAVE_SYS_WEAK_ALIAS_PRAGMA
 1405: dnl   HAVE_SYS_WEAK_ALIAS_HPSECONDARY
 1406: dnl   HAVE_SYS_WEAK_ALIAS_CRIDUPLICATE
 1407: dnl If any scheme is found, set
 1408: dnl   HAVE_SYS_WEAK_ALIAS=1
 1409: dnl The following variable is set to text value
 1410: dnl   WEAK_ALIAS = "attribute" || "pragma" || "hpsecondary" || "criduplicate" || "no"
 1411: dnl If weak alias can cross object file boundaries
 1412: dnl   WEAK_ALIAS_CROSSFILE = "yes" || "no"
 1413: dnl ---------------------------------------------------------------------------
 1414: AX_SYS_WEAK_ALIAS
 1415: 
 1416: dnl ---------------------------
 1417: dnl check for glibc 'backtrace'
 1418: dnl --------------------------- 
 1419: if test x"${enable_backtrace}" != x"no" ; then
 1420:   backtrace_ok=no
 1421:   AC_CHECK_HEADER([execinfo.h], [
 1422:     AC_SEARCH_LIBS([backtrace], [execinfo], [
 1423:       AC_DEFINE(HAVE_GLIBC_BACKTRACE,,[Glibc backtrace])
 1424:       AC_DEFINE(HAVE_STACK_TRACE,,[Stack symbol decoding])
 1425:       backtrace_ok=yes
 1426:     ],, [-lm])
 1427:   ])
 1428: 
 1429:   if test x"${enable_backtrace}" = x"yes" -a x"${backtrace_ok}" = x"no"; then
 1430:     dnl user explicitly requested backtrace but we failed to find support
 1431:     AC_MSG_FAILURE([failed to find backtrace support])
 1432:   fi
 1433: fi
 1434: 
 1435: dnl -----------------------------------------
 1436: dnl check for malloc mallinfo struct and call
 1437: dnl this must try and link using LIBS, in
 1438: dnl order to check no alternative allocator
 1439: dnl has been specified, which might not provide
 1440: dnl mallinfo, e.g. such as Umem on Solaris.
 1441: dnl -----------------------------------------
 1442: AC_CHECK_HEADER([malloc.h],
 1443:  [AC_MSG_CHECKING(whether mallinfo is available)
 1444:   AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <malloc.h>]],
 1445:                         [[struct mallinfo ac_x; ac_x = mallinfo ();]])],
 1446:       [AC_MSG_RESULT(yes)
 1447:        AC_DEFINE(HAVE_MALLINFO,,mallinfo)],
 1448:        AC_MSG_RESULT(no)
 1449:   )
 1450:  ], [], QUAGGA_INCLUDES)
 1451: 
 1452: dnl ----------
 1453: dnl configure date
 1454: dnl ----------
 1455: CONFDATE=`date '+%Y%m%d'`
 1456: AC_SUBST(CONFDATE)
 1457: 
 1458: dnl -------
 1459: dnl DejaGNU
 1460: dnl -------
 1461: if test x"$DEJAGNU" = x
 1462: then
 1463:   DEJAGNU="\$(top_srcdir)/tests/global-conf.exp"
 1464: fi
 1465: RUNTESTDEFAULTFLAGS="-x --tool \$\$tool"
 1466: 
 1467: AC_SUBST(DEJAGNU)
 1468: AC_SUBST(RUNTESTDEFAULTFLAGS)
 1469: 
 1470: dnl ------------------------------
 1471: dnl set paths for state directory
 1472: dnl ------------------------------
 1473: AC_MSG_CHECKING(directory to use for state file)
 1474: if test "${prefix}" = "NONE"; then
 1475:   quagga_statedir_prefix="";
 1476: else
 1477:   quagga_statedir_prefix=${prefix}
 1478: fi
 1479: if test "${localstatedir}" = '${prefix}/var'; then
 1480:   for QUAGGA_STATE_DIR in ${quagga_statedir_prefix}/var/run dnl
 1481: 			${quagga_statedir_prefix}/var/adm dnl
 1482: 			${quagga_statedir_prefix}/etc dnl
 1483: 			/var/run	dnl
 1484:                         /var/adm	dnl
 1485:                         /etc		dnl
 1486:                         /dev/null;
 1487:   do
 1488:     test -d $QUAGGA_STATE_DIR && break
 1489:   done
 1490:   quagga_statedir=$QUAGGA_STATE_DIR
 1491: else
 1492:   quagga_statedir=${localstatedir}
 1493: fi
 1494: if test $quagga_statedir = "/dev/null"; then
 1495:     AC_MSG_ERROR('STATE DIRECTORY NOT FOUND! FIX OR SPECIFY --localstatedir!')
 1496: fi
 1497: AC_MSG_RESULT(${quagga_statedir})
 1498: AC_SUBST(quagga_statedir)
 1499: 
 1500: AC_DEFINE_UNQUOTED(PATH_ZEBRA_PID, "$quagga_statedir/zebra.pid",zebra PID)
 1501: AC_DEFINE_UNQUOTED(PATH_RIPD_PID, "$quagga_statedir/ripd.pid",ripd PID)
 1502: AC_DEFINE_UNQUOTED(PATH_RIPNGD_PID, "$quagga_statedir/ripngd.pid",ripngd PID)
 1503: AC_DEFINE_UNQUOTED(PATH_BGPD_PID, "$quagga_statedir/bgpd.pid",bgpd PID)
 1504: AC_DEFINE_UNQUOTED(PATH_OSPFD_PID, "$quagga_statedir/ospfd.pid",ospfd PID)
 1505: AC_DEFINE_UNQUOTED(PATH_OSPF6D_PID, "$quagga_statedir/ospf6d.pid",ospf6d PID)
 1506: AC_DEFINE_UNQUOTED(PATH_ISISD_PID, "$quagga_statedir/isisd.pid",isisd PID)
 1507: AC_DEFINE_UNQUOTED(PATH_PIMD_PID, "$quagga_statedir/pimd.pid",pimd PID)
 1508: AC_DEFINE_UNQUOTED(PATH_WATCHQUAGGA_PID, "$quagga_statedir/watchquagga.pid",watchquagga PID)
 1509: AC_DEFINE_UNQUOTED(ZEBRA_SERV_PATH, "$quagga_statedir/zserv.api",zebra api socket)
 1510: AC_DEFINE_UNQUOTED(ZEBRA_VTYSH_PATH, "$quagga_statedir/zebra.vty",zebra vty socket)
 1511: AC_DEFINE_UNQUOTED(RIP_VTYSH_PATH, "$quagga_statedir/ripd.vty",rip vty socket)
 1512: AC_DEFINE_UNQUOTED(RIPNG_VTYSH_PATH, "$quagga_statedir/ripngd.vty",ripng vty socket)
 1513: AC_DEFINE_UNQUOTED(BGP_VTYSH_PATH, "$quagga_statedir/bgpd.vty",bgpd vty socket)
 1514: AC_DEFINE_UNQUOTED(OSPF_VTYSH_PATH, "$quagga_statedir/ospfd.vty",ospfd vty socket)
 1515: AC_DEFINE_UNQUOTED(OSPF6_VTYSH_PATH, "$quagga_statedir/ospf6d.vty",ospf6d vty socket)
 1516: AC_DEFINE_UNQUOTED(ISIS_VTYSH_PATH, "$quagga_statedir/isisd.vty",isisd vty socket)
 1517: AC_DEFINE_UNQUOTED(PIM_VTYSH_PATH, "$quagga_statedir/pimd.vty",pimd vty socket)
 1518: AC_DEFINE_UNQUOTED(DAEMON_VTY_DIR, "$quagga_statedir",daemon vty directory)
 1519: 
 1520: dnl -------------------------------
 1521: dnl Quagga sources should always be 
 1522: dnl current wrt interfaces. Dont
 1523: dnl allow deprecated interfaces to
 1524: dnl be exposed.
 1525: dnl -------------------------------
 1526: AC_DEFINE(QUAGGA_NO_DEPRECATED_INTERFACES, 1, Hide deprecated interfaces)
 1527: 
 1528: dnl ---------------------------
 1529: dnl Check htonl works correctly
 1530: dnl ---------------------------
 1531: AC_MSG_CHECKING(for working htonl)
 1532: AC_CACHE_VAL(ac_cv_htonl_works,
 1533:  [AC_LINK_IFELSE([AC_LANG_PROGRAM([QUAGGA_INCLUDES],[htonl (0);])],
 1534:  		[ac_cv_htonl_works=yes], [ac_cv_htonl_works=no])
 1535:  ]
 1536: )
 1537: AC_MSG_RESULT($ac_cv_htonl_works)
 1538: 
 1539: AC_CONFIG_FILES([Makefile lib/Makefile zebra/Makefile ripd/Makefile 
 1540: 	  ripngd/Makefile bgpd/Makefile ospfd/Makefile watchquagga/Makefile
 1541: 	  ospf6d/Makefile isisd/Makefile vtysh/Makefile
 1542: 	  doc/Makefile ospfclient/Makefile tests/Makefile m4/Makefile
 1543: 	  pimd/Makefile
 1544: 	  tests/bgpd.tests/Makefile
 1545: 	  tests/libzebra.tests/Makefile
 1546: 	  redhat/Makefile
 1547: 	  pkgsrc/Makefile
 1548: 	  redhat/quagga.spec 
 1549: 	  lib/version.h
 1550: 	  doc/defines.texi
 1551: 	  isisd/topology/Makefile
 1552: 	  pkgsrc/bgpd.sh pkgsrc/ospf6d.sh pkgsrc/ospfd.sh
 1553: 	  pkgsrc/ripd.sh pkgsrc/ripngd.sh pkgsrc/zebra.sh])
 1554: AC_CONFIG_FILES([solaris/Makefile])
 1555: 
 1556: AC_CONFIG_FILES([vtysh/extract.pl],[chmod +x vtysh/extract.pl])
 1557: ## Hack, but working solution to avoid rebuilding of quagga.info.
 1558: ## It's already in CVS until texinfo 4.7 is more common.
 1559: AC_OUTPUT
 1560: 
 1561: echo "
 1562: Quagga configuration
 1563: --------------------
 1564: quagga version          : ${PACKAGE_VERSION}
 1565: host operating system   : ${host_os}
 1566: source code location    : ${srcdir}
 1567: compiler                : ${CC}
 1568: compiler flags          : ${CFLAGS}
 1569: make                    : ${MAKE-make}
 1570: linker flags            : ${LDFLAGS} ${LIBS} ${LIBCAP} ${LIBREADLINE} ${LIBM}
 1571: state file directory    : ${quagga_statedir}
 1572: config file directory   : `eval echo \`echo ${sysconfdir}\``
 1573: example directory       : `eval echo \`echo ${exampledir}\``
 1574: user to run as		: ${enable_user}
 1575: group to run as		: ${enable_group}
 1576: group for vty sockets	: ${enable_vty_group}
 1577: config file mask        : ${enable_configfile_mask}
 1578: log file mask           : ${enable_logfile_mask}
 1579: 
 1580: The above user and group must have read/write access to the state file
 1581: directory and to the config files in the config file directory."
 1582: 
 1583: if test x"$quagga_cv_gnu_make" = x"no"; then echo "
 1584: Warning: The ${MAKE-make} programme detected, either in your path or
 1585: via the MAKE variable, is not GNU Make. GNU make may be installed as
 1586: gmake on some systems. and is required to complete a build of Quagga
 1587: " > /dev/stderr 
 1588: fi

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>