Commit b845ea09 by Ondřej Zajíček

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.
parent b81a73d1
dnl ** Additional Autoconf tests for BIRD configure script
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],
[
bird_tmp_cflags="$CFLAGS"
......
......@@ -320,9 +320,6 @@ AC_C_BIGENDIAN(
[AC_MSG_ERROR([Cannot determine CPU endianity.])]
)
BIRD_CHECK_STRUCT_ALIGN
BIRD_CHECK_TIME_T
if test "$enable_debug" = yes ; then
AC_DEFINE([DEBUGGING], [1], [Define to 1 if debugging is enabled])
if test "$enable_memcheck" = yes ; then
......
......@@ -14,9 +14,12 @@
/* Ugly structure offset handling macros */
struct align_probe { char x; long int y; };
#define OFFSETOF(s, i) ((size_t) &((s *)0)->i)
#define SKIP_BACK(s, i, p) ((s *)((char *)p - OFFSETOF(s, i)))
#define BIRD_ALIGN(s, a) (((s)+a-1)&~(a-1))
#define CPU_STRUCT_ALIGN (sizeof(struct align_probe))
/* Utility macros */
......
......@@ -77,14 +77,12 @@ bird_clock_t tm_parse_datetime(char *); /* Convert date to bird_clock_t */
void
tm_format_datetime(char *x, struct timeformat *fmt_spec, bird_clock_t t);
#ifdef TIME_T_IS_64BIT
#define TIME_INFINITY 0x7fffffffffffffff
#else
#ifdef TIME_T_IS_SIGNED
#define TIME_INFINITY 0x7fffffff
#else
#define TIME_INFINITY 0xffffffff
#endif
#endif
#define TIME_T_IS_64BIT (sizeof(time_t) == 8)
#define TIME_T_IS_SIGNED ((time_t) -1 < 0)
#define TIME_INFINITY \
((time_t) (TIME_T_IS_SIGNED ? \
(TIME_T_IS_64BIT ? 0x7fffffffffffffff : 0x7fffffff): \
(TIME_T_IS_64BIT ? 0xffffffffffffffff : 0xffffffff)))
#endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment