Annotation of embedaddon/bird2/configure.ac, revision 1.1.1.1

1.1       misho       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>