From 7a855725f2ffde508da0c7ee01dc1bcd6e0a5d93 Mon Sep 17 00:00:00 2001 From: "Ondrej Zajicek (work)" Date: Tue, 14 Mar 2017 13:46:51 +0100 Subject: Some autoconf cleanups The patch allows to use autoreconf, replaces some long obsolete constructs and does some other minor cleanups. Also, the file configure.in is renamed to configure.ac, as the old name has been deprecated for a long time. Thanks to Ruben Kerkhof for the patchset. --- aclocal.m4 | 29 +++-- configure.ac | 335 ++++++++++++++++++++++++++++++++++++++++++++++++++ configure.in | 314 ---------------------------------------------- sysdep/autoconf.h.in | 70 ----------- tools/Makefile-top.in | 2 +- 5 files changed, 353 insertions(+), 397 deletions(-) create mode 100644 configure.ac delete mode 100644 configure.in delete mode 100644 sysdep/autoconf.h.in diff --git a/aclocal.m4 b/aclocal.m4 index 02c0f76b..f2775422 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,12 +1,17 @@ dnl ** Additional Autoconf tests for BIRD configure script dnl ** (c) 1999 Martin Mares -AC_DEFUN(BIRD_CHECK_INTEGERS, +AC_DEFUN([BIRD_CHECK_INTEGERS], [AC_CHECK_SIZEOF(char, 0) AC_CHECK_SIZEOF(short int, 0) AC_CHECK_SIZEOF(int, 0) AC_CHECK_SIZEOF(long int, 0) AC_CHECK_SIZEOF(long long int, 0) +AH_TEMPLATE([INTEGER_8], [8-bit integer type]) +AH_TEMPLATE([INTEGER_16], [16-bit integer type]) +AH_TEMPLATE([INTEGER_32], [32-bit integer type]) +AH_TEMPLATE([INTEGER_64], [64-bit integer type]) + for size in 1 2 4 8; do bits=`expr $size "*" 8` AC_MSG_CHECKING([for $bits-bit type]) @@ -30,7 +35,7 @@ for size in 1 2 4 8; do ]) dnl BIRD_CHECK_ENDIAN is unused and obsolete -AC_DEFUN(BIRD_CHECK_ENDIAN, +AC_DEFUN([BIRD_CHECK_ENDIAN], [AC_CACHE_CHECK([CPU endianity], bird_cv_c_endian,[ AC_TRY_RUN([ #include @@ -65,7 +70,7 @@ case $bird_cv_c_endian in esac ]) -AC_DEFUN(BIRD_CHECK_STRUCT_ALIGN, +AC_DEFUN([BIRD_CHECK_STRUCT_ALIGN], [AC_CACHE_CHECK([usual alignment of structures],bird_cv_c_struct_align,[ AC_TRY_RUN([ #include @@ -87,10 +92,10 @@ AC_MSG_RESULT([test program failed]) AC_MSG_ERROR([Cannot determine structure alignment]) ],[bird_cv_c_struct_align=16]) ]) -AC_DEFINE_UNQUOTED(CPU_STRUCT_ALIGN, $bird_cv_c_struct_align) +AC_DEFINE_UNQUOTED([CPU_STRUCT_ALIGN], [$bird_cv_c_struct_align], [Usual alignment of structures]) ]) -AC_DEFUN(BIRD_CHECK_TIME_T, +AC_DEFUN([BIRD_CHECK_TIME_T], [AC_CACHE_CHECK([characteristics of time_t], bird_cv_type_time_t, [ AC_TRY_RUN([ #include @@ -113,15 +118,15 @@ int main(void) ],[bird_cv_type_time_t="32-bit signed"]) ]) case "$bird_cv_type_time_t" in - *64-bit*) AC_DEFINE(TIME_T_IS_64BIT) ;; + *64-bit*) AC_DEFINE([TIME_T_IS_64BIT], [1], [Define to 1 if time_t is 64 bit]) ;; esac case "$bird_cv_type_time_t" in *unsigned*) ;; - *) AC_DEFINE(TIME_T_IS_SIGNED) ;; + *) AC_DEFINE([TIME_T_IS_SIGNED], [1], [Define to 1 if time_t is signed]) ;; esac ]) -AC_DEFUN(BIRD_CHECK_STRUCT_IP_MREQN, +AC_DEFUN([BIRD_CHECK_STRUCT_IP_MREQN], [AC_CACHE_CHECK([for struct ip_mreqn], bird_cv_struct_ip_mreqn,[ AC_TRY_COMPILE([#include ],[struct ip_mreqn x; @@ -129,11 +134,11 @@ AC_TRY_COMPILE([#include ],[bird_cv_struct_ip_mreqn=no ])]) if test "$bird_cv_struct_ip_mreqn" = yes ; then - AC_DEFINE(HAVE_STRUCT_IP_MREQN) + AC_DEFINE([HAVE_STRUCT_IP_MREQN], [1], [Define to 1 if you have struct ip_mreqn]) fi ]) -AC_DEFUN(BIRD_CHECK_PTHREADS, +AC_DEFUN([BIRD_CHECK_PTHREADS], [ bird_tmp_cflags="$CFLAGS" @@ -145,7 +150,7 @@ AC_DEFUN(BIRD_CHECK_PTHREADS, CFLAGS="$bird_tmp_cflags" ]) -AC_DEFUN(BIRD_CHECK_GCC_OPTION, +AC_DEFUN([BIRD_CHECK_GCC_OPTION], [ bird_tmp_cflags="$CFLAGS" @@ -156,7 +161,7 @@ AC_DEFUN(BIRD_CHECK_GCC_OPTION, CFLAGS="$bird_tmp_cflags" ]) -AC_DEFUN(BIRD_ADD_GCC_OPTION, +AC_DEFUN([BIRD_ADD_GCC_OPTION], [ if test "$$1" = yes ; then CFLAGS="$CFLAGS $2" diff --git a/configure.ac b/configure.ac new file mode 100644 index 00000000..c06677c5 --- /dev/null +++ b/configure.ac @@ -0,0 +1,335 @@ +dnl ** This is a configure script template for BIRD +dnl ** Process it with autoconf to get ./configure +dnl ** (c) 1999--2000 Martin Mares + +AC_INIT +AC_CONFIG_SRCDIR([conf/confbase.Y]) +AC_CONFIG_AUX_DIR(tools) + +AC_ARG_ENABLE(debug, [ --enable-debug enable internal debugging routines (default: disabled)],,enable_debug=no) +AC_ARG_ENABLE(memcheck, [ --enable-memcheck check memory allocations when debugging (default: enabled)],,enable_memcheck=yes) +AC_ARG_ENABLE(client, [ --enable-client enable building of BIRD client (default: enabled)],,enable_client=yes) +AC_ARG_ENABLE(ipv6, [ --enable-ipv6 enable building of IPv6 version (default: disabled)],,enable_ipv6=no) +AC_ARG_ENABLE(pthreads, [ --enable-pthreads enable POSIX threads support (default: detect)],,enable_pthreads=try) +AC_ARG_WITH(suffix, [ --with-suffix=STRING use specified suffix for BIRD files (default: 6 for IPv6 version)],[given_suffix="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: all)],,[with_protocols="all"]) +AC_ARG_WITH(sysinclude, [ --with-sysinclude=PATH search for system includes on specified place]) +AC_ARG_WITH(runtimedir, [ --with-runtimedir=PATH path for runtime files (default: $(localstatedir)/run)],[runtimedir="$with_runtimedir"],[runtimedir="\$(localstatedir)/run"]) +AC_ARG_WITH(iproutedir, [ --with-iproutedir=PATH path to iproute2 config files (default: /etc/iproute2)],[given_iproutedir="yes"]) +AC_ARG_VAR([FLEX], [location of the Flex program]) +AC_ARG_VAR([BISON], [location of the Bison program]) +AC_ARG_VAR([M4], [location of the M4 program]) + + +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_SUBST(runtimedir) + +if test "$enable_ipv6" = yes ; then + ip=ipv6 + SUFFIX=6 + proto_radv=radv +else + ip=ipv4 + SUFFIX="" +fi + +if test "$given_suffix" = yes ; then + SUFFIX="$with_suffix" +fi +AC_SUBST(SUFFIX) + +if test "$enable_debug" = yes ; then + CONFIG_FILE="bird$SUFFIX.conf" + CONTROL_SOCKET="bird$SUFFIX.ctl" +else + CONFIG_FILE="\$(sysconfdir)/bird$SUFFIX.conf" + CONTROL_SOCKET="$runtimedir/bird$SUFFIX.ctl" +fi +AC_SUBST(CONFIG_FILE) +AC_SUBST(CONTROL_SOCKET) + +AC_SEARCH_LIBS(clock_gettime, [c rt posix4], , + AC_MSG_ERROR([[Function clock_gettime not available.]])) + +AC_CANONICAL_HOST + +# Store this value because ac_test_CFLAGS is overwritten by AC_PROG_CC +if test "$ac_test_CFLAGS" != set ; then + bird_cflags_default=yes +fi + +AC_PROG_CC +if test -z "$GCC" ; then + AC_MSG_ERROR([This program requires the GNU C Compiler.]) +fi + +# Enable threads by default just in Linux and FreeBSD +#if test "$enable_pthreads" = try ; then +# case "$host_os" in +# (linux* | freebsd* | openbsd* | netbsd* ) enable_pthreads=try ;; +# (*) enable_pthreads=no ;; +# esac +#fi + +if test "$enable_pthreads" != no ; then + BIRD_CHECK_PTHREADS + + if test "$bird_cv_lib_pthreads" = yes ; then + AC_DEFINE([USE_PTHREADS], [1], [Define to 1 if pthreads are enabled]) + CFLAGS="$CFLAGS -pthread" + LDFLAGS="$LDFLAGS -pthread" + proto_bfd=bfd + elif test "$enable_pthreads" = yes ; then + AC_MSG_ERROR([POSIX threads not available.]) + fi + + if test "$enable_pthreads" = try ; then + enable_pthreads="$bird_cv_lib_pthreads" + fi +fi + +if test "$bird_cflags_default" = yes ; then + BIRD_CHECK_GCC_OPTION(bird_cv_c_option_wno_pointer_sign, -Wno-pointer-sign, -Wall) + BIRD_CHECK_GCC_OPTION(bird_cv_c_option_wno_missing_init, -Wno-missing-field-initializers, -Wall -Wextra) + BIRD_CHECK_GCC_OPTION(bird_cv_c_option_fno_strict_aliasing, -fno-strict-aliasing) + BIRD_CHECK_GCC_OPTION(bird_cv_c_option_fno_strict_overflow, -fno-strict-overflow) + + CFLAGS="$CFLAGS -Wall -Wextra -Wstrict-prototypes -Wno-parentheses" + BIRD_ADD_GCC_OPTION(bird_cv_c_option_wno_pointer_sign, -Wno-pointer-sign) + BIRD_ADD_GCC_OPTION(bird_cv_c_option_wno_missing_init, -Wno-missing-field-initializers) + BIRD_ADD_GCC_OPTION(bird_cv_c_option_fno_strict_aliasing, -fno-strict-aliasing) + BIRD_ADD_GCC_OPTION(bird_cv_c_option_fno_strict_overflow, -fno-strict-overflow) +fi +AC_MSG_CHECKING([CFLAGS]) +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) + +test -z "$FLEX" && AC_MSG_ERROR([Flex is missing.]) +test -z "$BISON" && AC_MSG_ERROR([Bison is missing.]) +test -z "$M4" && AC_MSG_ERROR([M4 is missing.]) +BIRD_CHECK_PROG_FLAVOR_GNU([$M4], , [AC_MSG_ERROR([Provided M4 is not GNU M4.])]) + +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 "$ip:$host_os" in + ipv6:linux*) sysdesc=linux-v6 + default_iproutedir="/etc/iproute2" + ;; + ipv4:linux*) sysdesc=linux + default_iproutedir="/etc/iproute2" + ;; + ipv6:netbsd*) sysdesc=bsd-v6 + CPPFLAGS="$CPPFLAGS -I/usr/pkg/include" + LDFLAGS="$LDFLAGS -L/usr/pkg/lib -R/usr/pkg/lib" + ;; + ipv4:netbsd*) sysdesc=bsd + CPPFLAGS="$CPPFLAGS -I/usr/pkg/include" + LDFLAGS="$LDFLAGS -L/usr/pkg/lib -R/usr/pkg/lib" + ;; + ipv6:freebsd*) sysdesc=bsd-v6 + ;; + ipv4:freebsd*) sysdesc=bsd + ;; + ipv6:dragonfly*) sysdesc=bsd-v6 + ;; + ipv4:dragonfly*) sysdesc=bsd + ;; + ipv6:kfreebsd*) sysdesc=bsd-v6 + ;; + ipv4:kfreebsd*) sysdesc=bsd + ;; + ipv6:openbsd*) sysdesc=bsd-v6 + ;; + ipv4:openbsd*) sysdesc=bsd + ;; + *) AC_MSG_ERROR([Cannot determine correct system configuration. Please use --with-sysconfig to set it manually.]) + ;; + esac + sysdesc=$srcdir/sysdep/cf/$sysdesc.h +fi +AC_MSG_CHECKING([which OS configuration should we use]) +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"], [Which sysdep header to include]) + +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) + +if test "$with_iproutedir" = no ; then with_iproutedir= ; fi + +if test -n "$given_iproutedir" +then iproutedir=$with_iproutedir +else iproutedir=$default_iproutedir +fi + +AC_SUBST(iproutedir) + +all_protocols="$proto_bfd bgp ospf pipe $proto_radv rip static" +if test "$ip" = ipv6 ; then + all_protocols="$all_protocols babel" +fi +all_protocols=`echo $all_protocols | sed 's/ /,/g'` + +if test "$with_protocols" = all ; then + with_protocols="$all_protocols" +fi + +AH_TEMPLATE([CONFIG_BABEL], [Babel protocol]) +AH_TEMPLATE([CONFIG_BFD], [BFD protocol]) +AH_TEMPLATE([CONFIG_BGP], [BGP protocol]) +AH_TEMPLATE([CONFIG_OSPF], [OSPF protocol]) +AH_TEMPLATE([CONFIG_PIPE], [Pipe protocol]) +AH_TEMPLATE([CONFIG_RADV], [RAdv protocol]) +AH_TEMPLATE([CONFIG_RIP], [RIP protocol]) +AH_TEMPLATE([CONFIG_STATIC], [Static protocol]) + +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) + +case $sysdesc in + */linux*|*/linux-v6*) + AC_CHECK_HEADER(linux/rtnetlink.h,,[AC_MSG_ERROR([Appropriate version of Linux kernel headers not found.])],[ +#include +#include +]) + ;; +esac + +AC_CHECK_HEADER(syslog.h, [AC_DEFINE([HAVE_SYSLOG], [1], [Define to 1 if you have the header file])]) +AC_CHECK_HEADER(alloca.h, [AC_DEFINE([HAVE_ALLOCA_H], [1], [Define to 1 if you have the header file])]) +AC_MSG_CHECKING(whether 'struct sockaddr' has sa_len) +AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM( + [[ + #include + #include + ]], + [[ + static struct sockaddr sa; + int i = sizeof(sa.sa_len); + ]] + )], + [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_SIN_LEN,,sin_len) + ], + [AC_MSG_RESULT(no)] +) + +AC_C_BIGENDIAN( + [AC_DEFINE([CPU_BIG_ENDIAN], [1], [Define to 1 if cpu is big endian])], + [AC_DEFINE([CPU_LITTLE_ENDIAN], [1], [Define to 1 if cpu is little endian])], + [AC_MSG_ERROR([Cannot determine CPU endianity.])] +) + +BIRD_CHECK_INTEGERS +BIRD_CHECK_STRUCT_ALIGN +BIRD_CHECK_TIME_T +BIRD_CHECK_STRUCT_IP_MREQN + +if test "$enable_debug" = yes ; then + AC_DEFINE([DEBUGGING], [1], [Define to 1 if debugging is enabled]) + if test "$enable_memcheck" = yes ; then + AC_CHECK_LIB(dmalloc, dmalloc_debug) + if test $ac_cv_lib_dmalloc_dmalloc_debug != yes ; then + AC_CHECK_LIB(efence, malloc) + fi + fi +fi + +CLIENT= +CLIENT_LIBS= +if test "$enable_client" = yes ; then + CLIENT=birdc + AC_CHECK_LIB(history, add_history, CLIENT_LIBS="-lhistory") + AC_CHECK_LIB(ncurses, tgetent, USE_TERMCAP_LIB=-lncurses, + AC_CHECK_LIB(curses, tgetent, USE_TERMCAP_LIB=-lcurses, + AC_CHECK_LIB(tinfow, tgetent, USE_TERMCAP_LIB=-ltinfow, + AC_CHECK_LIB(tinfo, tgetent, USE_TERMCAP_LIB=-ltinfo, + AC_CHECK_LIB(termcap, tgetent, USE_TERMCAP_LIB=-ltermcap, + AC_MSG_ERROR([[The client requires ncurses library. Either install the library or use --disable-client to compile without the client.]])))))) + AC_CHECK_LIB(readline, rl_callback_read_char, CLIENT_LIBS="-lreadline $CLIENT_LIBS $USE_TERMCAP_LIB", + AC_MSG_ERROR([[The client requires GNU readline library 2.1 or newer. Either install the library or use --disable-client to compile without the client.]]), $USE_TERMCAP_LIB) + AC_CHECK_LIB(readline, rl_crlf, AC_DEFINE([HAVE_RL_CRLF], [1], [Define to 1 if you have rl_crlf()]),,$USE_TERMCAP_LIB) + AC_CHECK_LIB(readline, rl_ding, AC_DEFINE([HAVE_RL_DING], [1], [Define to 1 if you have rl_ding()]),,$USE_TERMCAP_LIB) +fi +AC_SUBST(CLIENT) +AC_SUBST(CLIENT_LIBS) + +mkdir -p $objdir/sysdep +AC_CONFIG_HEADERS([$objdir/sysdep/autoconf.h:sysdep/autoconf.h.in]) +AC_CONFIG_COMMANDS([merge],[[export CPP="$CPP" +$srcdir/tools/mergedirs $srcdir $srcdir_rel $objdir $sysdep_dirs]], + [[srcdir=$srcdir] + [srcdir_rel=$srcdir_rel] + [objdir=$objdir] + [sysdep_dirs="$sysdep_dirs"]]) +AC_CONFIG_FILES($makefiles) +AC_OUTPUT + +rm -f $objdir/sysdep/paths.h + +AC_MSG_RESULT() +AC_MSG_RESULT([BIRD was configured with the following options:]) +AC_MSG_RESULT([ Source directory: $srcdir]) +AC_MSG_RESULT([ Object directory: $objdir]) +AC_MSG_RESULT([ Iproute2 directory: $iproutedir]) +AC_MSG_RESULT([ System configuration: $sysdesc]) +AC_MSG_RESULT([ Debugging: $enable_debug]) +AC_MSG_RESULT([ POSIX threads: $enable_pthreads]) +AC_MSG_RESULT([ Routing protocols: $protocols]) +AC_MSG_RESULT([ Client: $enable_client]) +rm -f $objdir/.*-stamp diff --git a/configure.in b/configure.in deleted file mode 100644 index 57fa0079..00000000 --- a/configure.in +++ /dev/null @@ -1,314 +0,0 @@ -dnl ** This is a configure script template for BIRD -dnl ** Process it with autoconf to get ./configure -dnl ** (c) 1999--2000 Martin Mares - -AC_REVISION($Id$) -AC_INIT(conf/confbase.Y) -AC_CONFIG_AUX_DIR(tools) - -AC_ARG_ENABLE(debug, [ --enable-debug enable internal debugging routines (default: disabled)],,enable_debug=no) -AC_ARG_ENABLE(memcheck, [ --enable-memcheck check memory allocations when debugging (default: enabled)],,enable_memcheck=yes) -AC_ARG_ENABLE(client, [ --enable-client enable building of BIRD client (default: enabled)],,enable_client=yes) -AC_ARG_ENABLE(ipv6, [ --enable-ipv6 enable building of IPv6 version (default: disabled)],,enable_ipv6=no) -AC_ARG_ENABLE(pthreads, [ --enable-pthreads enable POSIX threads support (default: detect)],,enable_pthreads=try) -AC_ARG_WITH(suffix, [ --with-suffix=STRING use specified suffix for BIRD files (default: 6 for IPv6 version)],[given_suffix="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: all)],,[with_protocols="all"]) -AC_ARG_WITH(sysinclude, [ --with-sysinclude=PATH search for system includes on specified place]) -AC_ARG_WITH(runtimedir, [ --with-runtimedir=PATH path for runtime files (default: $(localstatedir)/run)],[runtimedir="$with_runtimedir"],[runtimedir="\$(localstatedir)/run"]) -AC_ARG_WITH(iproutedir, [ --with-iproutedir=PATH path to iproute2 config files (default: /etc/iproute2)],[given_iproutedir="yes"]) -AC_ARG_VAR([FLEX], [location of the Flex program]) -AC_ARG_VAR([BISON], [location of the Bison program]) -AC_ARG_VAR([M4], [location of the M4 program]) - - -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_SUBST(runtimedir) - -if test "$enable_ipv6" = yes ; then - ip=ipv6 - SUFFIX=6 - proto_radv=radv -else - ip=ipv4 - SUFFIX="" -fi - -if test "$given_suffix" = yes ; then - SUFFIX="$with_suffix" -fi -AC_SUBST(SUFFIX) - -if test "$enable_debug" = yes ; then - CONFIG_FILE="bird$SUFFIX.conf" - CONTROL_SOCKET="bird$SUFFIX.ctl" -else - CONFIG_FILE="\$(sysconfdir)/bird$SUFFIX.conf" - CONTROL_SOCKET="$runtimedir/bird$SUFFIX.ctl" -fi -AC_SUBST(CONFIG_FILE) -AC_SUBST(CONTROL_SOCKET) - -AC_SEARCH_LIBS(clock_gettime, [c rt posix4], , - AC_MSG_ERROR([[Function clock_gettime not available.]])) - -AC_CANONICAL_HOST - -# Store this value because ac_test_CFLAGS is overwritten by AC_PROG_CC -if test "$ac_test_CFLAGS" != set ; then - bird_cflags_default=yes -fi - -AC_PROG_CC -if test -z "$GCC" ; then - AC_MSG_ERROR([This program requires the GNU C Compiler.]) -fi - -# Enable threads by default just in Linux and FreeBSD -#if test "$enable_pthreads" = try ; then -# case "$host_os" in -# (linux* | freebsd* | openbsd* | netbsd* ) enable_pthreads=try ;; -# (*) enable_pthreads=no ;; -# esac -#fi - -if test "$enable_pthreads" != no ; then - BIRD_CHECK_PTHREADS - - if test "$bird_cv_lib_pthreads" = yes ; then - AC_DEFINE(USE_PTHREADS) - CFLAGS="$CFLAGS -pthread" - LDFLAGS="$LDFLAGS -pthread" - proto_bfd=bfd - elif test "$enable_pthreads" = yes ; then - AC_MSG_ERROR([POSIX threads not available.]) - fi - - if test "$enable_pthreads" = try ; then - enable_pthreads="$bird_cv_lib_pthreads" - fi -fi - -if test "$bird_cflags_default" = yes ; then - BIRD_CHECK_GCC_OPTION(bird_cv_c_option_wno_pointer_sign, -Wno-pointer-sign, -Wall) - BIRD_CHECK_GCC_OPTION(bird_cv_c_option_wno_missing_init, -Wno-missing-field-initializers, -Wall -Wextra) - BIRD_CHECK_GCC_OPTION(bird_cv_c_option_fno_strict_aliasing, -fno-strict-aliasing) - BIRD_CHECK_GCC_OPTION(bird_cv_c_option_fno_strict_overflow, -fno-strict-overflow) - - CFLAGS="$CFLAGS -Wall -Wextra -Wstrict-prototypes -Wno-parentheses" - BIRD_ADD_GCC_OPTION(bird_cv_c_option_wno_pointer_sign, -Wno-pointer-sign) - BIRD_ADD_GCC_OPTION(bird_cv_c_option_wno_missing_init, -Wno-missing-field-initializers) - BIRD_ADD_GCC_OPTION(bird_cv_c_option_fno_strict_aliasing, -fno-strict-aliasing) - BIRD_ADD_GCC_OPTION(bird_cv_c_option_fno_strict_overflow, -fno-strict-overflow) -fi -AC_MSG_CHECKING([CFLAGS]) -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) - -test -z "$FLEX" && AC_MSG_ERROR([Flex is missing.]) -test -z "$BISON" && AC_MSG_ERROR([Bison is missing.]) -test -z "$M4" && AC_MSG_ERROR([M4 is missing.]) -BIRD_CHECK_PROG_FLAVOR_GNU([$M4], , [AC_MSG_ERROR([Provided M4 is not GNU M4.])]) - -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 "$ip:$host_os" in - ipv6:linux*) sysdesc=linux-v6 - default_iproutedir="/etc/iproute2" - ;; - ipv4:linux*) sysdesc=linux - default_iproutedir="/etc/iproute2" - ;; - ipv6:netbsd*) sysdesc=bsd-v6 - CPPFLAGS="$CPPFLAGS -I/usr/pkg/include" - LDFLAGS="$LDFLAGS -L/usr/pkg/lib -R/usr/pkg/lib" - ;; - ipv4:netbsd*) sysdesc=bsd - CPPFLAGS="$CPPFLAGS -I/usr/pkg/include" - LDFLAGS="$LDFLAGS -L/usr/pkg/lib -R/usr/pkg/lib" - ;; - ipv6:freebsd*) sysdesc=bsd-v6 - ;; - ipv4:freebsd*) sysdesc=bsd - ;; - ipv6:dragonfly*) sysdesc=bsd-v6 - ;; - ipv4:dragonfly*) sysdesc=bsd - ;; - ipv6:kfreebsd*) sysdesc=bsd-v6 - ;; - ipv4:kfreebsd*) sysdesc=bsd - ;; - ipv6:openbsd*) sysdesc=bsd-v6 - ;; - ipv4:openbsd*) sysdesc=bsd - ;; - *) AC_MSG_ERROR([Cannot determine correct system configuration. Please use --with-sysconfig to set it manually.]) - ;; - esac - sysdesc=$srcdir/sysdep/cf/$sysdesc.h -fi -AC_MSG_CHECKING([which OS configuration should we use]) -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) - -if test "$with_iproutedir" = no ; then with_iproutedir= ; fi - -if test -n "$given_iproutedir" -then iproutedir=$with_iproutedir -else iproutedir=$default_iproutedir -fi - -AC_SUBST(iproutedir) - -all_protocols="$proto_bfd bgp ospf pipe $proto_radv rip static" -if test "$ip" = ipv6 ; then - all_protocols="$all_protocols babel" -fi -all_protocols=`echo $all_protocols | sed 's/ /,/g'` - -if test "$with_protocols" = all ; then - with_protocols="$all_protocols" -fi - -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) - -case $sysdesc in - */linux*|*/linux-v6*) - AC_CHECK_HEADER(linux/rtnetlink.h,,[AC_MSG_ERROR([Appropriate version of Linux kernel headers not found.])],[ -#include -#include -]) - ;; -esac - -AC_CHECK_HEADER(syslog.h, [AC_DEFINE(HAVE_SYSLOG)]) -AC_CHECK_HEADER(alloca.h, [AC_DEFINE(HAVE_ALLOCA_H)]) -AC_MSG_CHECKING(whether 'struct sockaddr' has sa_len) -AC_TRY_COMPILE([#include - #include - ], [static struct sockaddr sa; int i = sizeof(sa.sa_len);], - [AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_SIN_LEN,,sin_len)], - AC_MSG_RESULT(no)) - -AC_C_BIGENDIAN([AC_DEFINE(CPU_BIG_ENDIAN)], [AC_DEFINE(CPU_LITTLE_ENDIAN)], - [AC_MSG_ERROR([Cannot determine CPU endianity.])]) - -BIRD_CHECK_INTEGERS -BIRD_CHECK_STRUCT_ALIGN -BIRD_CHECK_TIME_T -BIRD_CHECK_STRUCT_IP_MREQN - -if test "$enable_debug" = yes ; then - AC_DEFINE(DEBUGGING) - if test "$enable_memcheck" = yes ; then - AC_CHECK_LIB(dmalloc, dmalloc_debug) - if test $ac_cv_lib_dmalloc_dmalloc_debug != yes ; then - AC_CHECK_LIB(efence, malloc) - fi - fi -fi - -CLIENT= -CLIENT_LIBS= -if test "$enable_client" = yes ; then - CLIENT=birdc - AC_CHECK_LIB(history, add_history, CLIENT_LIBS="-lhistory") - AC_CHECK_LIB(ncurses, tgetent, USE_TERMCAP_LIB=-lncurses, - AC_CHECK_LIB(curses, tgetent, USE_TERMCAP_LIB=-lcurses, - AC_CHECK_LIB(tinfow, tgetent, USE_TERMCAP_LIB=-ltinfow, - AC_CHECK_LIB(tinfo, tgetent, USE_TERMCAP_LIB=-ltinfo, - AC_CHECK_LIB(termcap, tgetent, USE_TERMCAP_LIB=-ltermcap, - AC_MSG_ERROR([[The client requires ncurses library. Either install the library or use --disable-client to compile without the client.]])))))) - AC_CHECK_LIB(readline, rl_callback_read_char, CLIENT_LIBS="-lreadline $CLIENT_LIBS $USE_TERMCAP_LIB", - AC_MSG_ERROR([[The client requires GNU readline library 2.1 or newer. Either install the library or use --disable-client to compile without the client.]]), $USE_TERMCAP_LIB) - AC_CHECK_LIB(readline, rl_crlf, AC_DEFINE(HAVE_RL_CRLF),,$USE_TERMCAP_LIB) - AC_CHECK_LIB(readline, rl_ding, AC_DEFINE(HAVE_RL_DING),,$USE_TERMCAP_LIB) -fi -AC_SUBST(CLIENT) -AC_SUBST(CLIENT_LIBS) - -mkdir -p $objdir/sysdep -AC_CONFIG_HEADERS([$objdir/sysdep/autoconf.h:sysdep/autoconf.h.in]) -AC_CONFIG_COMMANDS([merge],[[export CPP="$CPP" -$srcdir/tools/mergedirs $srcdir $srcdir_rel $objdir $sysdep_dirs]], - [[srcdir=$srcdir] - [srcdir_rel=$srcdir_rel] - [objdir=$objdir] - [sysdep_dirs="$sysdep_dirs"]]) -AC_CONFIG_FILES($makefiles) -AC_OUTPUT - -rm -f $objdir/sysdep/paths.h - -cat >&AC_FD_MSG < */ -#undef HAVE_STRUCT_IP_MREQN - -/* Protocols compiled in */ -#undef CONFIG_STATIC -#undef CONFIG_RIP -#undef CONFIG_RADV -#undef CONFIG_BFD -#undef CONFIG_BGP -#undef CONFIG_OSPF -#undef CONFIG_PIPE -#undef CONFIG_BABEL - -/* We use multithreading */ -#undef USE_PTHREADS - -/* We have and syslog() */ -#undef HAVE_SYSLOG - -/* We have */ -#undef HAVE_ALLOCA_H - -/* Are we using dmalloc? */ -#undef HAVE_LIBDMALLOC - -/* Readline stuff */ -#undef HAVE_RL_CRLF -#undef HAVE_RL_DING - -/* struct sockaddr_in(6) */ -#undef HAVE_SIN_LEN - -/* We have stdint.h */ -#undef HAVE_STDINT_H - -#define CONFIG_PATH ? diff --git a/tools/Makefile-top.in b/tools/Makefile-top.in index cf59f7a1..fa02b5e6 100644 --- a/tools/Makefile-top.in +++ b/tools/Makefile-top.in @@ -16,5 +16,5 @@ clean: distclean: clean $(MAKE) -C doc distclean rm -rf $(objdir) autom4te.cache - rm -f config.* configure sysdep/autoconf.h sysdep/paths.h Makefile + rm -f config.* configure sysdep/autoconf.h.in sysdep/paths.h Makefile -- cgit v1.2.3 From 5d6dc93043a0bc77b1e0a71ea8dfe15325024b45 Mon Sep 17 00:00:00 2001 From: "Ondrej Zajicek (work)" Date: Tue, 9 May 2017 13:44:02 +0200 Subject: Some more autoconf cleanups Replace integer type width detection with C99 fixed-width types. Also remove some unused or obsolete code. Thanks to Ruben Kerkhof for the patchset. --- aclocal.m4 | 85 ++-------------------------------------------------- configure.ac | 16 ++-------- sysdep/config.h | 22 +++++++------- sysdep/linux/sysio.h | 10 ------- sysdep/unix/log.c | 8 ++--- 5 files changed, 21 insertions(+), 120 deletions(-) diff --git a/aclocal.m4 b/aclocal.m4 index f2775422..d48846af 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,75 +1,6 @@ dnl ** Additional Autoconf tests for BIRD configure script dnl ** (c) 1999 Martin Mares -AC_DEFUN([BIRD_CHECK_INTEGERS], -[AC_CHECK_SIZEOF(char, 0) -AC_CHECK_SIZEOF(short int, 0) -AC_CHECK_SIZEOF(int, 0) -AC_CHECK_SIZEOF(long int, 0) -AC_CHECK_SIZEOF(long long int, 0) -AH_TEMPLATE([INTEGER_8], [8-bit integer type]) -AH_TEMPLATE([INTEGER_16], [16-bit integer type]) -AH_TEMPLATE([INTEGER_32], [32-bit integer type]) -AH_TEMPLATE([INTEGER_64], [64-bit integer type]) - -for size in 1 2 4 8; do - bits=`expr $size "*" 8` - AC_MSG_CHECKING([for $bits-bit type]) - if test $ac_cv_sizeof_int = $size ; then - res=int - elif test $ac_cv_sizeof_char = $size ; then - res=char - elif test $ac_cv_sizeof_short_int = $size ; then - res="short int" - elif test $ac_cv_sizeof_long_int = $size ; then - res="long int" - elif test $ac_cv_sizeof_long_long_int = $size ; then - res="long long int" - else - AC_MSG_RESULT([not found]) - AC_MSG_ERROR([Cannot find $bits-bit integer type.]) - fi - AC_MSG_RESULT($res) - AC_DEFINE_UNQUOTED(INTEGER_$bits, $res) - done -]) - -dnl BIRD_CHECK_ENDIAN is unused and obsolete -AC_DEFUN([BIRD_CHECK_ENDIAN], -[AC_CACHE_CHECK([CPU endianity], bird_cv_c_endian,[ -AC_TRY_RUN([ -#include - -unsigned int x = 0x12345678; -unsigned char *z = (unsigned char *) &x; - -int main(void) -{ - FILE *f = fopen("conftestresult", "w"); - if (!f) return 10; - fprintf(f, "%02x %02x %02x %02x", *z, *(z+1), *(z+2), *(z+3)); - fclose(f); - exit(0); -} -],[ - endian=`cat conftestresult` - if test "$endian" = "12 34 56 78" ; then - bird_cv_c_endian=big-endian - elif test "$endian" = "78 56 34 12" ; then - bird_cv_c_endian=little-endian - fi -],[endian="test program failed"],[endian="not available, we're cross compiling"]) -if test -z "$bird_cv_c_endian" ; then - AC_MSG_RESULT($endian) - AC_MSG_ERROR([Cannot determine CPU endianity.]) - fi -]) -case $bird_cv_c_endian in - big-endian) AC_DEFINE(CPU_BIG_ENDIAN) ;; - little-endian) AC_DEFINE(CPU_LITTLE_ENDIAN) ;; - esac -]) - AC_DEFUN([BIRD_CHECK_STRUCT_ALIGN], [AC_CACHE_CHECK([usual alignment of structures],bird_cv_c_struct_align,[ AC_TRY_RUN([ @@ -126,18 +57,6 @@ case "$bird_cv_type_time_t" in esac ]) -AC_DEFUN([BIRD_CHECK_STRUCT_IP_MREQN], -[AC_CACHE_CHECK([for struct ip_mreqn], bird_cv_struct_ip_mreqn,[ -AC_TRY_COMPILE([#include -],[struct ip_mreqn x; -],[bird_cv_struct_ip_mreqn=yes -],[bird_cv_struct_ip_mreqn=no -])]) -if test "$bird_cv_struct_ip_mreqn" = yes ; then - AC_DEFINE([HAVE_STRUCT_IP_MREQN], [1], [Define to 1 if you have struct ip_mreqn]) -fi -]) - AC_DEFUN([BIRD_CHECK_PTHREADS], [ bird_tmp_cflags="$CFLAGS" @@ -170,7 +89,7 @@ AC_DEFUN([BIRD_ADD_GCC_OPTION], # BIRD_CHECK_PROG_FLAVOR_GNU(PROGRAM-PATH, IF-SUCCESS, [IF-FAILURE]) # copied autoconf internal _AC_PATH_PROG_FLAVOR_GNU -m4_define([BIRD_CHECK_PROG_FLAVOR_GNU], +AC_DEFUN([BIRD_CHECK_PROG_FLAVOR_GNU], [# Check for GNU $1 case `"$1" --version 2>&1` in *GNU*) @@ -179,4 +98,4 @@ m4_ifval([$3], [*) $3;; ])esac -])# +]) diff --git a/configure.ac b/configure.ac index c06677c5..2180bcdf 100644 --- a/configure.ac +++ b/configure.ac @@ -69,7 +69,7 @@ fi AC_SUBST(CONFIG_FILE) AC_SUBST(CONTROL_SOCKET) -AC_SEARCH_LIBS(clock_gettime, [c rt posix4], , +AC_SEARCH_LIBS(clock_gettime, [rt posix4], , AC_MSG_ERROR([[Function clock_gettime not available.]])) AC_CANONICAL_HOST @@ -84,14 +84,6 @@ if test -z "$GCC" ; then AC_MSG_ERROR([This program requires the GNU C Compiler.]) fi -# Enable threads by default just in Linux and FreeBSD -#if test "$enable_pthreads" = try ; then -# case "$host_os" in -# (linux* | freebsd* | openbsd* | netbsd* ) enable_pthreads=try ;; -# (*) enable_pthreads=no ;; -# esac -#fi - if test "$enable_pthreads" != no ; then BIRD_CHECK_PTHREADS @@ -248,8 +240,8 @@ case $sysdesc in ;; esac -AC_CHECK_HEADER(syslog.h, [AC_DEFINE([HAVE_SYSLOG], [1], [Define to 1 if you have the header file])]) -AC_CHECK_HEADER(alloca.h, [AC_DEFINE([HAVE_ALLOCA_H], [1], [Define to 1 if you have the header file])]) +AC_CHECK_HEADERS_ONCE([alloca.h syslog.h]) + AC_MSG_CHECKING(whether 'struct sockaddr' has sa_len) AC_COMPILE_IFELSE([ AC_LANG_PROGRAM( @@ -275,10 +267,8 @@ AC_C_BIGENDIAN( [AC_MSG_ERROR([Cannot determine CPU endianity.])] ) -BIRD_CHECK_INTEGERS BIRD_CHECK_STRUCT_ALIGN BIRD_CHECK_TIME_T -BIRD_CHECK_STRUCT_IP_MREQN if test "$enable_debug" = yes ; then AC_DEFINE([DEBUGGING], [1], [Define to 1 if debugging is enabled]) diff --git a/sysdep/config.h b/sysdep/config.h index 84085f9c..e529cd86 100644 --- a/sysdep/config.h +++ b/sysdep/config.h @@ -24,16 +24,18 @@ #include "sysdep/paths.h" /* Types */ -typedef signed INTEGER_8 s8; -typedef unsigned INTEGER_8 u8; -typedef INTEGER_16 s16; -typedef unsigned INTEGER_16 u16; -typedef INTEGER_32 s32; -typedef unsigned INTEGER_32 u32; -typedef INTEGER_64 s64; -typedef unsigned INTEGER_64 u64; -typedef u8 byte; -typedef u16 word; + +#include +typedef int8_t s8; +typedef uint8_t u8; +typedef int16_t s16; +typedef uint16_t u16; +typedef int32_t s32; +typedef uint32_t u32; +typedef int64_t s64; +typedef uint64_t u64; +typedef uint8_t byte; +typedef uint16_t word; typedef unsigned int uint; #endif diff --git a/sysdep/linux/sysio.h b/sysdep/linux/sysio.h index 58644417..b1cc25dc 100644 --- a/sysdep/linux/sysio.h +++ b/sysdep/linux/sysio.h @@ -7,16 +7,6 @@ */ -#ifndef HAVE_STRUCT_IP_MREQN -/* Several versions of glibc don't define this structure, so we have to do it ourselves */ -struct ip_mreqn -{ - struct in_addr imr_multiaddr; /* IP multicast address of group */ - struct in_addr imr_address; /* local IP address of interface */ - int imr_ifindex; /* Interface index */ -}; -#endif - #ifndef IP_MINTTL #define IP_MINTTL 21 #endif diff --git a/sysdep/unix/log.c b/sysdep/unix/log.c index b89e6b7a..88a7188c 100644 --- a/sysdep/unix/log.c +++ b/sysdep/unix/log.c @@ -56,7 +56,7 @@ static int main_thread_self(void) { return 1; } #endif -#ifdef HAVE_SYSLOG +#ifdef HAVE_SYSLOG_H #include static int syslog_priorities[] = { @@ -127,7 +127,7 @@ log_commit(int class, buffer *buf) fputc('\n', l->fh); fflush(l->fh); } -#ifdef HAVE_SYSLOG +#ifdef HAVE_SYSLOG_H else syslog(syslog_priorities[class], "%s", buf->start); #endif @@ -262,7 +262,7 @@ default_log_list(int debug, int init, char **syslog_name) init_list(&init_log_list); *syslog_name = NULL; -#ifdef HAVE_SYSLOG +#ifdef HAVE_SYSLOG_H if (!debug) { static struct log_config lc_syslog = { .mask = ~0 }; @@ -287,7 +287,7 @@ log_switch(int debug, list *l, char *new_syslog_name) current_log_list = l; -#ifdef HAVE_SYSLOG +#ifdef HAVE_SYSLOG_H if (current_syslog_name && new_syslog_name && !strcmp(current_syslog_name, new_syslog_name)) return; -- cgit v1.2.3