aclocal.m4 2.51 KB
Newer Older
1 2 3
dnl ** Additional Autoconf tests for BIRD configure script
dnl ** (c) 1999 Martin Mares <mj@ucw.cz>

4
AC_DEFUN([BIRD_CHECK_STRUCT_ALIGN],
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
[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])
])
26
AC_DEFINE_UNQUOTED([CPU_STRUCT_ALIGN], [$bird_cv_c_struct_align], [Usual alignment of structures])
27 28
])

29
AC_DEFUN([BIRD_CHECK_TIME_T],
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
[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
52
	*64-bit*)	AC_DEFINE([TIME_T_IS_64BIT], [1], [Define to 1 if time_t is 64 bit]) ;;
53 54 55
	esac
case "$bird_cv_type_time_t" in
	*unsigned*)	;;
56
	*)		AC_DEFINE([TIME_T_IS_SIGNED], [1], [Define to 1 if time_t is signed]) ;;
57 58
	esac
])
59

60
AC_DEFUN([BIRD_CHECK_PTHREADS],
61 62 63 64 65 66 67 68 69 70 71
[
  bird_tmp_cflags="$CFLAGS"

  CFLAGS="$CFLAGS -pthread"
  AC_CACHE_CHECK([whether POSIX threads are available], bird_cv_lib_pthreads,
    [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]], [[pthread_t pt; pthread_create(&pt, NULL, NULL, NULL); pthread_spinlock_t lock; pthread_spin_lock(&lock); ]])],
		    [bird_cv_lib_pthreads=yes], [bird_cv_lib_pthreads=no])])

  CFLAGS="$bird_tmp_cflags"
])

72
AC_DEFUN([BIRD_CHECK_GCC_OPTION],
73 74 75 76 77 78 79 80 81 82
[
  bird_tmp_cflags="$CFLAGS"

  CFLAGS="$3 $2"
  AC_CACHE_CHECK([whether CC supports $2], $1,
    [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [$1=yes], [$1=no])])

  CFLAGS="$bird_tmp_cflags"
])

83
AC_DEFUN([BIRD_ADD_GCC_OPTION],
84 85 86 87 88
[
  if test "$$1" = yes ; then
    CFLAGS="$CFLAGS $2"
  fi
])
89

90 91
# BIRD_CHECK_PROG_FLAVOR_GNU(PROGRAM-PATH, IF-SUCCESS, [IF-FAILURE])
# copied autoconf internal _AC_PATH_PROG_FLAVOR_GNU
92
AC_DEFUN([BIRD_CHECK_PROG_FLAVOR_GNU],
93 94 95 96 97 98 99 100
[# Check for GNU $1
case `"$1" --version 2>&1` in
*GNU*)
  $2;;
m4_ifval([$3],
[*)
  $3;;
])esac
101
])