Remove autoconf macros for time_t and alignment

Replaced by constant compile-time expressions. CPU_STRUCT_ALIGN is not
really correct, but is consistent with the old behavior.
This commit is contained in:
Ondrej Zajicek (work) 2017-05-11 01:29:39 +02:00
parent b81a73d1fb
commit b845ea097c
4 changed files with 10 additions and 100 deletions

88
aclocal.m4 vendored
View file

@ -1,94 +1,6 @@
dnl ** Additional Autoconf tests for BIRD configure script dnl ** Additional Autoconf tests for BIRD configure script
dnl ** (c) 1999 Martin Mares <mj@ucw.cz> dnl ** (c) 1999 Martin Mares <mj@ucw.cz>
AC_DEFUN([BIRD_CHECK_STRUCT_ALIGN],
[
AC_CACHE_CHECK(
[usual alignment of structures],
[bird_cv_c_struct_align],
[
AC_TRY_RUN(
[
#include <stdio.h>
struct { char x; long int y; } ary[2];
int main(void)
{
FILE *f = fopen("conftestresult", "w");
if (!f)
return 10;
fprintf(f, "%d", sizeof(ary)/2);
fclose(f);
exit(0);
}
],
[bird_cv_c_struct_align=$(cat conftestresult)],
[
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],
[Usual alignment of structures]
)
])
AC_DEFUN([BIRD_CHECK_TIME_T],
[
AC_CACHE_CHECK(
[characteristics of time_t],
[bird_cv_type_time_t],
[
AC_TRY_RUN(
[
#include <stdio.h>
#include <sys/time.h>
#include <limits.h>
int main(void)
{
FILE *f = fopen("conftestresult", "w");
if (!f)
return 10;
fprintf(f, "%d-bit ", sizeof(time_t)*CHAR_BIT);
if ((time_t) -1 > 0)
fprintf(f, "un");
fprintf(f, "signed");
fclose(f);
exit(0);
}
],
[bird_cv_type_time_t=$(cat conftestresult)],
[
AC_MSG_RESULT([test program failed])
AC_MSG_ERROR([Cannot determine time_t size and signedness.])
],
[bird_cv_type_time_t="32-bit signed"]
)
]
)
case "$bird_cv_type_time_t" in
*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], [1], [Define to 1 if time_t is signed])
;;
esac
])
AC_DEFUN([BIRD_CHECK_PTHREADS], AC_DEFUN([BIRD_CHECK_PTHREADS],
[ [
bird_tmp_cflags="$CFLAGS" bird_tmp_cflags="$CFLAGS"

View file

@ -320,9 +320,6 @@ AC_C_BIGENDIAN(
[AC_MSG_ERROR([Cannot determine CPU endianity.])] [AC_MSG_ERROR([Cannot determine CPU endianity.])]
) )
BIRD_CHECK_STRUCT_ALIGN
BIRD_CHECK_TIME_T
if test "$enable_debug" = yes ; then if test "$enable_debug" = yes ; then
AC_DEFINE([DEBUGGING], [1], [Define to 1 if debugging is enabled]) AC_DEFINE([DEBUGGING], [1], [Define to 1 if debugging is enabled])
if test "$enable_memcheck" = yes ; then if test "$enable_memcheck" = yes ; then

View file

@ -14,9 +14,12 @@
/* Ugly structure offset handling macros */ /* Ugly structure offset handling macros */
struct align_probe { char x; long int y; };
#define OFFSETOF(s, i) ((size_t) &((s *)0)->i) #define OFFSETOF(s, i) ((size_t) &((s *)0)->i)
#define SKIP_BACK(s, i, p) ((s *)((char *)p - OFFSETOF(s, i))) #define SKIP_BACK(s, i, p) ((s *)((char *)p - OFFSETOF(s, i)))
#define BIRD_ALIGN(s, a) (((s)+a-1)&~(a-1)) #define BIRD_ALIGN(s, a) (((s)+a-1)&~(a-1))
#define CPU_STRUCT_ALIGN (sizeof(struct align_probe))
/* Utility macros */ /* Utility macros */

View file

@ -77,14 +77,12 @@ bird_clock_t tm_parse_datetime(char *); /* Convert date to bird_clock_t */
void void
tm_format_datetime(char *x, struct timeformat *fmt_spec, bird_clock_t t); tm_format_datetime(char *x, struct timeformat *fmt_spec, bird_clock_t t);
#ifdef TIME_T_IS_64BIT #define TIME_T_IS_64BIT (sizeof(time_t) == 8)
#define TIME_INFINITY 0x7fffffffffffffff #define TIME_T_IS_SIGNED ((time_t) -1 < 0)
#else
#ifdef TIME_T_IS_SIGNED #define TIME_INFINITY \
#define TIME_INFINITY 0x7fffffff ((time_t) (TIME_T_IS_SIGNED ? \
#else (TIME_T_IS_64BIT ? 0x7fffffffffffffff : 0x7fffffff): \
#define TIME_INFINITY 0xffffffff (TIME_T_IS_64BIT ? 0xffffffffffffffff : 0xffffffff)))
#endif
#endif
#endif #endif