9fac310d1a
(the current version UNIX-specific) anyway, so it's useless to try splitting it to sysdep and generic part. Instead of this, configure script decides (based on system type and user's wish) what (if any) client should be built and what autoconfiguration it requires. Also, the client provides its own die/bug/... functions.
159 lines
4.6 KiB
Text
159 lines
4.6 KiB
Text
dnl ** This is a configure script template for BIRD
|
|
dnl ** Process it with autoconf to get ./configure
|
|
dnl ** (c) 1999--2000 Martin Mares <mj@ucw.cz>
|
|
|
|
AC_REVISION($Id$)
|
|
AC_INIT(conf/confbase.Y)
|
|
AC_CONFIG_AUX_DIR(tools)
|
|
|
|
AC_ARG_ENABLE(debug,[ --enable-debug enable internal debugging routines (default: enabled)],,enable_debug=yes)
|
|
AC_ARG_ENABLE(client,[ --enable-client enable building of BIRD client (default: enabled)],,enable_client=yes)
|
|
AC_ARG_WITH(sysconfig,[ --with-sysconfig=FILE use specified BIRD system configuration file])
|
|
AC_ARG_WITH(protocols,[ --with-protocols=LIST include specified routing protocols (default: rip,static,pipe)],,[with_protocols="rip,static,pipe"])
|
|
AC_ARG_WITH(sysinclude,[ --with-sysinclude=PATH search for system includes on specified place])
|
|
|
|
if test "$srcdir" = . ; then
|
|
# Building in current directory => create obj directory holding all objects
|
|
objdir=obj
|
|
mkdir -p obj
|
|
srcdir_rel=..
|
|
makefiles="Makefile:tools/Makefile-top.in obj/Makefile:tools/Makefile.in obj/Rules:tools/Rules.in"
|
|
exedir=..
|
|
else
|
|
# Building in separate directory
|
|
objdir=.
|
|
srcdir_rel=$srcdir
|
|
makefiles="Makefile:tools/Makefile.in Rules:tools/Rules.in"
|
|
exedir=.
|
|
fi
|
|
case $srcdir_rel in
|
|
/*) srcdir_rel_mf=$srcdir_rel ;;
|
|
*) srcdir_rel_mf="\$(root-rel)$srcdir_rel" ;;
|
|
esac
|
|
AC_SUBST(objdir)
|
|
AC_SUBST(exedir)
|
|
AC_SUBST(srcdir_rel_mf)
|
|
|
|
AC_CANONICAL_HOST
|
|
AC_MSG_CHECKING([which OS configuration should we use])
|
|
if test -n "$with_sysconfig" -a "$with_sysconfig" != no ; then
|
|
if test -f $with_sysconfig ; then
|
|
sysdesc=$with_sysconfig
|
|
else
|
|
sysdesc=$srcdir/sysdep/cf/$with_sysconfig
|
|
if ! test -f $sysdesc ; then
|
|
sysdesc=$sysdesc.h
|
|
fi
|
|
fi
|
|
elif test -f sysconfig.h ; then
|
|
sysdesc=sysconfig
|
|
else
|
|
case "$host_os" in
|
|
linux*) case `uname -r` in
|
|
1.*|2.0.*) sysdesc=linux-20 ;;
|
|
*) sysdesc=linux-22 ;;
|
|
esac
|
|
;;
|
|
*) AC_MSG_RESULT(unknown)
|
|
AC_MSG_ERROR([Cannot determine correct system configuration.])
|
|
;;
|
|
esac
|
|
sysdesc=$srcdir/sysdep/cf/$sysdesc.h
|
|
fi
|
|
AC_MSG_RESULT($sysdesc)
|
|
if ! test -f $sysdesc ; then
|
|
AC_MSG_ERROR([The system configuration file is missing.])
|
|
fi
|
|
sysname=`echo $sysdesc | sed 's/\.h$//'`
|
|
AC_DEFINE_UNQUOTED(SYSCONF_INCLUDE, "$sysdesc")
|
|
|
|
AC_MSG_CHECKING([system-dependent directories])
|
|
sysdep_dirs="`sed <$sysdesc '/^Link: /!d;s/^Link: \(.*\)$/\1/' | tr '\012' ' '` lib"
|
|
AC_MSG_RESULT($sysdep_dirs)
|
|
AC_SUBST(sysdep_dirs)
|
|
|
|
AC_MSG_CHECKING([protocols])
|
|
protocols=`echo "$with_protocols" | sed 's/,/ /g'`
|
|
if test "$protocols" = no ; then protocols= ; fi
|
|
for a in $protocols ; do
|
|
if ! test -f $srcdir/proto/$a/Makefile ; then
|
|
AC_MSG_RESULT(failed)
|
|
AC_MSG_ERROR([Requested protocol $a not found.])
|
|
fi
|
|
AC_DEFINE_UNQUOTED(CONFIG_`echo $a | tr 'a-z' 'A-Z'`)
|
|
done
|
|
AC_MSG_RESULT(ok)
|
|
AC_SUBST(protocols)
|
|
|
|
AC_PROG_CC
|
|
if test -z "$GCC" ; then
|
|
AC_MSG_ERROR([This program requires the GNU C Compiler.])
|
|
fi
|
|
AC_MSG_CHECKING([what CFLAGS should we use])
|
|
if test "$ac_test_CFLAGS" != set ; then
|
|
CFLAGS="$CFLAGS -Wall -W -Wstrict-prototypes -Wno-unused -Wno-parentheses"
|
|
fi
|
|
if test "$with_sysinclude" != no -a -n "$with_sysinclude"; then
|
|
CPPFLAGS="$CPPFLAGS -I$with_sysinclude"
|
|
fi
|
|
AC_MSG_RESULT($CFLAGS)
|
|
|
|
AC_PROG_CPP
|
|
AC_PROG_INSTALL
|
|
AC_PROG_RANLIB
|
|
AC_CHECK_PROG(FLEX, flex, flex)
|
|
AC_CHECK_PROG(BISON, bison, bison)
|
|
AC_CHECK_PROGS(M4, gm4 m4, m4)
|
|
if test -z "$FLEX" -o -z "$BISON" -o -z "$M4" ; then
|
|
AC_MSG_ERROR([Some tools required for building BIRD are missing.])
|
|
fi
|
|
|
|
case $sysdesc in
|
|
*/linux-22*) AC_CHECK_HEADER(linux/rtnetlink.h,,[AC_MSG_ERROR([Appropriate version of Linux kernel headers not found.])])
|
|
;;
|
|
esac
|
|
|
|
AC_CHECK_HEADER(syslog.h, [AC_DEFINE(HAVE_SYSLOG)])
|
|
|
|
BIRD_CHECK_INTEGERS
|
|
BIRD_CHECK_ENDIAN
|
|
BIRD_CHECK_STRUCT_ALIGN
|
|
BIRD_CHECK_TIME_T
|
|
BIRD_CHECK_STRUCT_IP_MREQN
|
|
|
|
if test "$enable_debug" = yes ; then
|
|
AC_DEFINE(PATH_CONFIG_DIR, ".")
|
|
AC_DEFINE(PATH_CONTROL_SOCKET_DIR, ".")
|
|
AC_DEFINE(DEBUGGING)
|
|
AC_CHECK_LIB(dmalloc, dmalloc_debug)
|
|
if test $ac_cv_lib_dmalloc_dmalloc_debug != yes ; then
|
|
AC_CHECK_LIB(efence, malloc)
|
|
fi
|
|
else
|
|
AC_DEFINE_UNQUOTED(PATH_CONFIG_DIR, "$sysconfdir")
|
|
AC_DEFINE_UNQUOTED(PATH_CONTROL_SOCKET_DIR, "$localstatedir")
|
|
fi
|
|
|
|
if test "$enable_client" = yes ; then
|
|
CLIENT=client
|
|
else
|
|
CLIENT=
|
|
fi
|
|
AC_SUBST(CLIENT)
|
|
|
|
mkdir -p $objdir/sysdep
|
|
AC_CONFIG_HEADER($objdir/sysdep/autoconf.h:sysdep/autoconf.h.in)
|
|
AC_OUTPUT_COMMANDS(,[CPP="$CPP" $srcdir/tools/mergedirs $srcdir $srcdir_rel $objdir $sysdep_dirs])
|
|
AC_OUTPUT($makefiles)
|
|
|
|
cat >&AC_FD_MSG <<EOF
|
|
|
|
BIRD was configured with the following options:
|
|
Source directory: $srcdir
|
|
Object directory: $objdir
|
|
System configuration: $sysdesc
|
|
Debugging: $enable_debug
|
|
Routing protocols: $protocols
|
|
Client: $enable_client
|
|
EOF
|
|
rm -f $objdir/.*-stamp
|