Commit b845ea09 authored by Ondrej Zajicek (work)'s avatar Ondrej Zajicek (work)
Browse files

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
Loading
Loading
Loading
Loading
+0 −88
Original line number Diff line number Diff line
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"
+0 −3
Original line number Diff line number Diff line
@@ -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
+3 −0
Original line number Diff line number Diff line
@@ -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 */

+7 −9
Original line number Diff line number Diff line
@@ -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