File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / bird2 / configure.ac
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Mon Oct 21 16:03:56 2019 UTC (5 years, 2 months ago) by misho
Branches: bird2, MAIN
CVS tags: v2_0_7p0, HEAD
bird2 ver 2.0.7

    1: dnl ** This is a configure script template for BIRD
    2: dnl ** Process it with autoconf to get ./configure
    3: dnl ** (c) 1999--2000 Martin Mares <mj@ucw.cz>
    4: 
    5: AC_INIT
    6: AC_CONFIG_SRCDIR([conf/confbase.Y])
    7: AC_CONFIG_AUX_DIR([tools])
    8: 
    9: AC_ARG_ENABLE([client],
   10:   [AS_HELP_STRING([--enable-client], [enable building of BIRD client @<:@yes@:>@])],
   11:   [],
   12:   [enable_client=yes]
   13: )
   14: 
   15: AC_ARG_ENABLE([debug],
   16:   [AS_HELP_STRING([--enable-debug], [enable internal debugging routines @<:@no@:>@])],
   17:   [],
   18:   [enable_debug=no]
   19: )
   20: 
   21: AC_ARG_ENABLE([debug-generated],
   22:   [AS_HELP_STRING([--enable-debug-generated], [enable this to abstain from generating #line @<:@no@:>@])],
   23:   [],
   24:   [enable_debug_generated=no]
   25: )
   26: 
   27: AC_ARG_ENABLE([memcheck],
   28:   [AS_HELP_STRING([--enable-memcheck], [check memory allocations when debugging @<:@yes@:>@])],
   29:   [],
   30:   [enable_memcheck=yes]
   31: )
   32: 
   33: AC_ARG_ENABLE([pthreads],
   34:   [AS_HELP_STRING([--enable-pthreads], [enable POSIX threads support @<:@try@:>@])],
   35:   [],
   36:   [enable_pthreads=try]
   37: )
   38: 
   39: AC_ARG_ENABLE([libssh],
   40:   [AS_HELP_STRING([--enable-libssh], [enable LibSSH support together with RPKI @<:@try@:>@])],
   41:   [],
   42:   [enable_libssh=try]
   43: )
   44: 
   45: AC_ARG_ENABLE([mpls-kernel],
   46:   [AS_HELP_STRING([--enable-mpls-kernel], [enable MPLS support in kernel protocol @<:@try@:>@])],
   47:   [],
   48:   [enable_mpls_kernel=try]
   49: )
   50: 
   51: AC_ARG_WITH([protocols],
   52:   [AS_HELP_STRING([--with-protocols=LIST], [include specified routing protocols @<:@all@:>@])],
   53:   [],
   54:   [with_protocols="all"]
   55: )
   56: 
   57: AC_ARG_WITH([sysconfig],
   58:   [AS_HELP_STRING([--with-sysconfig=FILE], [use specified BIRD system configuration file])]
   59: )
   60: 
   61: AC_ARG_WITH([runtimedir],
   62:   [AS_HELP_STRING([--with-runtimedir=PATH], [run-state data, obsolete variant of --runstatedir])],
   63:   [runstatedir="$with_runtimedir"]
   64: )
   65: 
   66: AC_ARG_WITH([iproutedir],
   67:   [AS_HELP_STRING([--with-iproutedir=PATH], [path to iproute2 config files @<:@/etc/iproute2@:>@])],
   68:   [given_iproutedir="yes"]
   69: )
   70: 
   71: AC_ARG_VAR([FLEX], [location of the Flex program])
   72: AC_ARG_VAR([BISON], [location of the Bison program])
   73: AC_ARG_VAR([M4], [location of the M4 program])
   74: 
   75: 
   76: if test "$srcdir" = . ; then
   77:   # Building in current directory => create obj directory holding all objects
   78:   objdir=obj
   79: else
   80:   # Building in separate directory
   81:   objdir=.
   82: fi
   83: 
   84: exedir=.
   85: 
   86: AC_SUBST([objdir])
   87: AC_SUBST([exedir])
   88: AC_SUBST([srcdir])
   89: 
   90: # Workaround for older Autoconfs that do not define runstatedir
   91: AS_IF([test -z "${runstatedir}"], [runstatedir='${localstatedir}/run'])
   92: AC_SUBST([runstatedir])
   93: 
   94: CONFIG_FILE="\$(sysconfdir)/bird.conf"
   95: AC_SUBST([CONFIG_FILE])
   96: 
   97: CONTROL_SOCKET="\$(runstatedir)/bird.ctl"
   98: AC_SUBST([CONTROL_SOCKET])
   99: 
  100: AC_SEARCH_LIBS([clock_gettime], [rt posix4],
  101:   [],
  102:   [AC_MSG_ERROR([Function clock_gettime not available.])]
  103: )
  104: 
  105: AC_CANONICAL_HOST
  106: 
  107: # Store this value because ac_test_CFLAGS is overwritten by AC_PROG_CC
  108: if test "$ac_test_CFLAGS" != set ; then
  109:   bird_cflags_default=yes
  110: fi
  111: 
  112: AC_PROG_CC
  113: AC_PROG_CC_C99
  114: if test -z "$GCC" ; then
  115:   AC_MSG_ERROR([This program requires the GNU C Compiler.])
  116: fi
  117: 
  118: BIRD_CHECK_THREAD_LOCAL
  119: if test "$bird_cv_thread_local" = yes ; then
  120:   AC_DEFINE([HAVE_THREAD_LOCAL], [1], [Define to 1 if _Thread_local is available])
  121: fi
  122: 
  123: if test "$enable_pthreads" != no ; then
  124:   BIRD_CHECK_PTHREADS
  125: 
  126:   if test "$bird_cv_lib_pthreads" = yes ; then
  127:     AC_DEFINE([USE_PTHREADS], [1], [Define to 1 if pthreads are enabled])
  128:     CFLAGS="$CFLAGS -pthread"
  129:     LDFLAGS="$LDFLAGS -pthread"
  130:     proto_bfd=bfd
  131:   elif test "$enable_pthreads" = yes ; then
  132:     AC_MSG_ERROR([POSIX threads not available.])
  133:   fi
  134: 
  135:   if test "$enable_pthreads" = try ; then
  136:     enable_pthreads="$bird_cv_lib_pthreads"
  137:   fi
  138: fi
  139: 
  140: # This is assumed to be necessary for proper BIRD build
  141: CFLAGS="$CFLAGS -fno-strict-aliasing -fno-strict-overflow"
  142: 
  143: if test "$bird_cflags_default" = yes ; then
  144:   BIRD_CHECK_GCC_OPTION([bird_cv_c_option_wno_pointer_sign], [-Wno-pointer-sign], [-Wall])
  145:   BIRD_CHECK_GCC_OPTION([bird_cv_c_option_wno_missing_init], [-Wno-missing-field-initializers], [-Wall -Wextra])
  146: 
  147:   if test "$enable_debug" = no; then
  148:     BIRD_CHECK_LTO
  149:   fi
  150: 
  151:   if test "$bird_cv_c_lto" = yes; then
  152:     CFLAGS="$CFLAGS -flto"
  153:     LDFLAGS="$LDFLAGS -flto=4 -g"
  154:   else
  155:     LDFLAGS="$LDFLAGS -g"
  156:   fi
  157: 
  158:   CFLAGS="$CFLAGS -Wall -Wextra -Wstrict-prototypes -Wno-parentheses"
  159:   BIRD_ADD_GCC_OPTION([bird_cv_c_option_wno_pointer_sign], [-Wno-pointer-sign])
  160:   BIRD_ADD_GCC_OPTION([bird_cv_c_option_wno_missing_init], [-Wno-missing-field-initializers])
  161: fi
  162: 
  163: 
  164: AC_MSG_CHECKING([CFLAGS])
  165: AC_MSG_RESULT([$CFLAGS])
  166: 
  167: AC_MSG_CHECKING([LDFLAGS])
  168: AC_MSG_RESULT([$LDFLAGS])
  169: 
  170: AC_PROG_CPP
  171: AC_PROG_INSTALL
  172: AC_PROG_RANLIB
  173: AC_CHECK_PROG([FLEX], [flex], [flex])
  174: AC_CHECK_PROG([BISON], [bison], [bison])
  175: AC_CHECK_PROGS([M4], [gm4 m4])
  176: 
  177: test -z "$FLEX"	 && AC_MSG_ERROR([Flex is missing.])
  178: test -z "$BISON" && AC_MSG_ERROR([Bison is missing.])
  179: test -z "$M4"	 && AC_MSG_ERROR([M4 is missing.])
  180: 
  181: AC_MSG_CHECKING([bison version])
  182: BIRD_CHECK_BISON_VERSION(BISON_VERSION)
  183: AC_MSG_RESULT([$BISON_VERSION])
  184: if test "$bird_bison_synclines" = yes && test "$enable_debug_generated" = no; then
  185:   M4FLAGS="$M4FLAGS -s"
  186: fi
  187: 
  188: if test "$bird_bison_enhanced_error" = yes; then
  189:   BISONFLAGS="$BISONFLAGS -Dparse.lac=full -Dparse.error=verbose"
  190: fi
  191: 
  192: AC_SUBST([M4FLAGS])
  193: AC_SUBST([BISONFLAGS])
  194: 
  195: BIRD_CHECK_PROG_FLAVOR_GNU([$M4],
  196:   [],
  197:   [AC_MSG_ERROR([Provided M4 is not GNU M4.])]
  198: )
  199: 
  200: if test -n "$with_sysconfig" -a "$with_sysconfig" != no ; then
  201:   if test -f $with_sysconfig ; then
  202:     sysdesc=$with_sysconfig
  203:   else
  204:     sysdesc=$srcdir/sysdep/cf/$with_sysconfig
  205:     if ! test -f $sysdesc ; then
  206:       sysdesc=$sysdesc.h
  207:     fi
  208:   fi
  209: elif test -f sysconfig.h ; then
  210:   sysdesc=sysconfig
  211: else
  212:   case "$host_os" in
  213:     linux*)
  214:       sysdesc=linux
  215:       default_iproutedir="/etc/iproute2"
  216:       ;;
  217:     freebsd*)
  218:       sysdesc=bsd
  219:       CPPFLAGS="$CPPFLAGS -I/usr/local/include"
  220:       LDFLAGS="$LDFLAGS -L/usr/local/lib"
  221:       ;;
  222:     kfreebsd*)
  223:       sysdesc=bsd
  224:       ;;
  225:     netbsd*)
  226:       sysdesc=bsd
  227:       CPPFLAGS="$CPPFLAGS -I/usr/pkg/include"
  228:       LDFLAGS="$LDFLAGS -L/usr/pkg/lib -R/usr/pkg/lib"
  229:       ;;
  230:     openbsd*)
  231:       sysdesc=bsd
  232:       ;;
  233:     dragonfly*)
  234:       sysdesc=bsd
  235:       ;;
  236:     *)
  237:       AC_MSG_ERROR([Cannot determine correct system configuration. Please use --with-sysconfig to set it manually.])
  238:       ;;
  239:     esac
  240:     sysdesc=$srcdir/sysdep/cf/$sysdesc.h
  241: fi
  242: AC_MSG_CHECKING([which OS configuration should we use])
  243: AC_MSG_RESULT([$sysdesc])
  244: if ! test -f $sysdesc ; then
  245:   AC_MSG_ERROR([The system configuration file is missing.])
  246: fi
  247: sysname=`echo $sysdesc | sed 's/\.h$//'`
  248: AC_DEFINE_UNQUOTED([SYSCONF_INCLUDE], ["$sysdesc"], [Which sysdep header to include])
  249: 
  250: AC_MSG_CHECKING([system-dependent directories])
  251: sysdep_dirs="`sed <$sysdesc '/^Link: /!d;s/^Link: \(.*\)$/\1/' | tr '\012' ' '`"
  252: AC_MSG_RESULT([$sysdep_dirs])
  253: AC_SUBST([sysdep_dirs])
  254: 
  255: if test "$with_iproutedir" = no ; then with_iproutedir= ; fi
  256: 
  257: if test -n "$given_iproutedir"
  258: then iproutedir=$with_iproutedir
  259: else iproutedir=$default_iproutedir
  260: fi
  261: 
  262: AC_SUBST([iproutedir])
  263: 
  264: DAEMON_LIBS=
  265: AC_SUBST(DAEMON_LIBS)
  266: 
  267: if test "$enable_libssh" != no ; then
  268:   AC_CHECK_HEADER([libssh/libssh.h], [true], [fail=yes], [ ])
  269:   AC_CHECK_LIB([ssh], [ssh_connect], [true], [fail=yes])
  270: 
  271:   if test "$fail" != yes ; then
  272:     AC_DEFINE([HAVE_LIBSSH], [1], [Define to 1 if you have the `ssh' library (-lssh).])
  273:     DAEMON_LIBS="-lssh $DAEMON_LIBS"
  274:     proto_rpki=rpki
  275:     enable_libssh=yes
  276:   else
  277:     if test "$enable_libssh" = yes ; then
  278:       AC_MSG_ERROR([LibSSH not available.])
  279:     else
  280:       enable_libssh=no
  281:     fi
  282:   fi
  283: fi
  284: 
  285: if test "$enable_mpls_kernel" != no ; then
  286:   BIRD_CHECK_MPLS_KERNEL
  287: 
  288:   if test "$bird_cv_mpls_kernel" = yes ; then
  289:     AC_DEFINE([HAVE_MPLS_KERNEL], [1], [Define to 1 if kernel is MPLS capable])
  290:   elif test "$enable_mpls_kernel" = yes ; then
  291:     AC_MSG_ERROR([Kernel MPLS support not found.])
  292:   fi
  293: 
  294:   if test "$enable_mpls_kernel" = try ; then
  295:     enable_mpls_kernel="$bird_cv_mpls_kernel"
  296:   fi
  297: fi
  298: 
  299: all_protocols="$proto_bfd babel bgp mrt ospf perf pipe radv rip $proto_rpki static"
  300: 
  301: all_protocols=`echo $all_protocols | sed 's/ /,/g'`
  302: 
  303: if test "$with_protocols" = all ; then
  304:   with_protocols="$all_protocols"
  305: fi
  306: 
  307: AH_TEMPLATE([CONFIG_BABEL], 	[Babel protocol])
  308: AH_TEMPLATE([CONFIG_BFD],	[BFD protocol])
  309: AH_TEMPLATE([CONFIG_BGP],	[BGP protocol])
  310: AH_TEMPLATE([CONFIG_MRT],	[MRT protocol])
  311: AH_TEMPLATE([CONFIG_OSPF],	[OSPF protocol])
  312: AH_TEMPLATE([CONFIG_PIPE],	[Pipe protocol])
  313: AH_TEMPLATE([CONFIG_RADV],	[RAdv protocol])
  314: AH_TEMPLATE([CONFIG_RIP],	[RIP protocol])
  315: AH_TEMPLATE([CONFIG_RPKI],	[RPKI protocol])
  316: AH_TEMPLATE([CONFIG_STATIC],	[Static protocol])
  317: 
  318: AC_MSG_CHECKING([protocols])
  319: protocols=`echo "$with_protocols" | sed 's/,/ /g'`
  320: if test "$protocols" = no ; then protocols= ; fi
  321: for a in $protocols ; do
  322:   if ! test -f $srcdir/proto/$a/Makefile ; then
  323:     AC_MSG_RESULT([failed])
  324:     AC_MSG_ERROR([Requested protocol $a not found])
  325:   fi
  326:   AC_DEFINE_UNQUOTED([CONFIG_`echo $a | tr 'a-z' 'A-Z'`])
  327: done
  328: AC_MSG_RESULT([ok])
  329: AC_SUBST([protocols])
  330: 
  331: case $sysdesc in
  332:   */linux*)
  333:     AC_CHECK_HEADER([linux/rtnetlink.h],
  334:       [],
  335:       [AC_MSG_ERROR([Appropriate version of Linux kernel headers not found.])],
  336:       [
  337: 	dnl Some older versions of Linux kernel headers require these includes
  338: 	#include <asm/types.h>
  339: 	#include <sys/socket.h>
  340:       ]
  341:     )
  342:     ;;
  343: esac
  344: 
  345: AC_CHECK_HEADERS_ONCE([alloca.h syslog.h])
  346: AC_CHECK_MEMBERS([struct sockaddr.sa_len], [], [], [#include <sys/socket.h>])
  347: 
  348: AC_C_BIGENDIAN(
  349:   [AC_DEFINE([CPU_BIG_ENDIAN], [1], [Define to 1 if cpu is big endian])],
  350:   [AC_DEFINE([CPU_LITTLE_ENDIAN], [1], [Define to 1 if cpu is little endian])],
  351:   [AC_MSG_ERROR([Cannot determine CPU endianity.])]
  352: )
  353: 
  354: BIRD_CHECK_ANDROID_GLOB
  355: if test "$bird_cv_lib_glob" = no ; then
  356:   AC_MSG_ERROR([glob.h not found.])
  357: elif test "$bird_cv_lib_glob" != yes ; then
  358:   LIBS="$LIBS $bird_cv_lib_glob"
  359: fi
  360: 
  361: BIRD_CHECK_ANDROID_LOG
  362: if test "$bird_cv_lib_log" = no ; then
  363:   AC_MSG_ERROR([don't know how to link syslog.])
  364: elif test "$bird_cv_lib_log" != yes ; then
  365:   LIBS="$LIBS $bird_cv_lib_log"
  366: fi
  367: 
  368: if test "$enable_debug" = yes ; then
  369:   AC_DEFINE([DEBUGGING], [1], [Define to 1 if debugging is enabled])
  370:   LDFLAGS="$LDFLAGS -rdynamic"
  371:   CFLAGS="$CFLAGS -O0 -ggdb -g3"
  372: 
  373:   BIRD_CHECK_GCC_OPTION([bird_cv_c_option_dwarf4], [-gdwarf-4], [])
  374:   BIRD_ADD_GCC_OPTION([bird_cv_c_option_dwarf4], [-gdwarf-4])
  375: 
  376:   AC_CHECK_HEADER([execinfo.h],
  377:     [
  378:       AC_DEFINE([HAVE_EXECINFO_H], [1], [Define to 1 if you have the <execinfo.h> header file.])
  379:       AC_SEARCH_LIBS([backtrace], [execinfo],
  380: 	[],
  381: 	[AC_MSG_ERROR([Function backtrace not available.])]
  382:       )
  383:     ]
  384:   )
  385: 
  386:   if test "$enable_memcheck" = yes ; then
  387:     AC_CHECK_LIB([dmalloc], [dmalloc_debug])
  388:     if test $ac_cv_lib_dmalloc_dmalloc_debug != yes ; then
  389:       AC_CHECK_LIB([efence], [malloc])
  390:     fi
  391:   fi
  392: fi
  393: 
  394: CLIENT=birdcl
  395: CLIENT_LIBS=
  396: if test "$enable_client" = yes ; then
  397:   CLIENT="$CLIENT birdc"
  398:   BASE_LIBS="$LIBS"
  399:   LIBS=""
  400: 
  401:   AC_CHECK_HEADERS([curses.h],
  402:     [],
  403:     [AC_MSG_ERROR([The client requires ncurses library. Either install the library or use --disable-client to compile without the client.])],
  404:     [AC_INCLUDES_DEFAULT]
  405:   )
  406: 
  407:   AC_SEARCH_LIBS([tgetent], [tinfo tinfow ncurses curses termcap],
  408:     [TINFO_LIBS="$LIBS"; LIBS=""],
  409:     [AC_MSG_ERROR([The client requires ncurses library. Either install the library or use --disable-client to compile without the client.])],
  410:   )
  411: 
  412:   AC_CHECK_HEADERS([readline/readline.h readline/history.h],
  413:     [],
  414:     [AC_MSG_ERROR([The client requires GNU Readline library. Either install the library or use --disable-client to compile without the client.])],
  415:     [AC_INCLUDES_DEFAULT]
  416:   )
  417: 
  418:   AC_SEARCH_LIBS([rl_callback_read_char], [readline],
  419:     [READLINE_LIBS="$LIBS"; LIBS=""],
  420:     [AC_MSG_ERROR([The client requires GNU Readline library. Either install the library or use --disable-client to compile without the client.])],
  421:     [$TINFO_LIBS]
  422:   )
  423: 
  424:   AC_CHECK_LIB([readline], [rl_crlf],
  425:     [AC_DEFINE([HAVE_RL_CRLF], [1], [Define to 1 if you have rl_crlf()])],
  426:     [],
  427:     [$TINFO_LIBS]
  428:   )
  429: 
  430:   AC_CHECK_LIB([readline], [rl_ding],
  431:     [AC_DEFINE([HAVE_RL_DING], [1], [Define to 1 if you have rl_ding()])],
  432:     [],
  433:     [$TINFO_LIBS]
  434:   )
  435: 
  436:   LIBS="$BASE_LIBS"
  437:   CLIENT_LIBS="$READLINE_LIBS $TINFO_LIBS"
  438: fi
  439: AC_SUBST([CLIENT])
  440: AC_SUBST([CLIENT_LIBS])
  441: 
  442: mkdir -p $objdir/sysdep
  443: AC_CONFIG_HEADERS([$objdir/sysdep/autoconf.h:sysdep/autoconf.h.in])
  444: AC_CONFIG_FILES([Makefile:Makefile.in])
  445: AC_OUTPUT
  446: 
  447: AC_MSG_RESULT()
  448: AC_MSG_RESULT([BIRD was configured with the following options:])
  449: AC_MSG_RESULT([        Source directory:	$srcdir])
  450: AC_MSG_RESULT([        Object directory:	$objdir])
  451: AC_MSG_RESULT([        Iproute2 directory:	$iproutedir])
  452: AC_MSG_RESULT([        System configuration:	$sysdesc])
  453: AC_MSG_RESULT([        Debugging:		$enable_debug])
  454: AC_MSG_RESULT([        POSIX threads:		$enable_pthreads])
  455: AC_MSG_RESULT([        Routing protocols:	$protocols])
  456: AC_MSG_RESULT([        Kernel MPLS support:	$enable_mpls_kernel])
  457: AC_MSG_RESULT([        Client:			$enable_client])
  458: 
  459: rm -f $objdir/.*-stamp

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