From c253ec3a9c45cfce3661f38bc2f5156d4bdd7969 Mon Sep 17 00:00:00 2001 From: "Ondrej Zajicek (work)" Date: Tue, 9 May 2017 13:44:02 +0200 Subject: [PATCH] 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;