version 1.1.1.1, 2017/08/22 12:33:54
|
version 1.1.1.2, 2021/03/17 19:50:23
|
Line 1
|
Line 1
|
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_INTEGERS, | AC_DEFUN([BIRD_CHECK_PTHREADS], |
[AC_CHECK_SIZEOF(char, 0) | [ |
AC_CHECK_SIZEOF(short int, 0) | bird_tmp_cflags="$CFLAGS" |
AC_CHECK_SIZEOF(int, 0) | CFLAGS="$CFLAGS -pthread" |
AC_CHECK_SIZEOF(long int, 0) | |
AC_CHECK_SIZEOF(long long int, 0) | |
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_CACHE_CHECK( |
AC_DEFUN(BIRD_CHECK_ENDIAN, | [whether POSIX threads are available], |
[AC_CACHE_CHECK([CPU endianity], bird_cv_c_endian,[ | [bird_cv_lib_pthreads], |
AC_TRY_RUN([ | [ |
#include <stdio.h> | 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] |
| ) |
| ] |
| ) |
|
|
unsigned int x = 0x12345678; | CFLAGS="$bird_tmp_cflags" |
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_DEFUN([BIRD_CHECK_ANDROID_GLOB], |
[AC_CACHE_CHECK([usual alignment of structures],bird_cv_c_struct_align,[ | [ |
AC_TRY_RUN([ | AC_CACHE_CHECK( |
#include <stdio.h> | [for glob.h], |
| [bird_cv_lib_glob], |
struct { char x; long int y; } ary[2]; | AC_LINK_IFELSE([ |
| AC_LANG_PROGRAM( |
int main(void) | [ |
{ | #include <glob.h> |
FILE *f = fopen("conftestresult", "w"); | #include <stdlib.h> |
if (!f) return 10; | ], |
fprintf(f, "%d", sizeof(ary)/2); | [ glob(NULL, 0, NULL, NULL); ] |
fclose(f); | ) |
exit(0); | ], |
} | [bird_cv_lib_glob=yes], |
],[ | [ |
bird_cv_c_struct_align=`cat conftestresult` | bird_tmp_libs="$LIBS" |
],[ | LIBS="$LIBS -landroid-glob" |
AC_MSG_RESULT([test program failed]) | AC_LINK_IFELSE([ |
AC_MSG_ERROR([Cannot determine structure alignment]) | AC_LANG_PROGRAM( |
],[bird_cv_c_struct_align=16]) | [ |
| #include <glob.h> |
| #include <stdlib.h> |
| ], |
| [ glob(NULL, 0, NULL, NULL); ] |
| ) |
| ], |
| [bird_cv_lib_glob=-landroid-glob], |
| [bird_cv_lib_glob=no] |
| ) |
| LIBS="$bird_tmp_libs" |
| ] |
| ) |
| ) |
]) |
]) |
AC_DEFINE_UNQUOTED(CPU_STRUCT_ALIGN, $bird_cv_c_struct_align) |
|
]) |
|
|
|
AC_DEFUN(BIRD_CHECK_TIME_T, | AC_DEFUN([BIRD_CHECK_ANDROID_LOG], |
[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) ;; | |
esac | |
case "$bird_cv_type_time_t" in | |
*unsigned*) ;; | |
*) AC_DEFINE(TIME_T_IS_SIGNED) ;; | |
esac | |
]) | |
| |
AC_DEFUN(BIRD_CHECK_STRUCT_IP_MREQN, | |
[AC_CACHE_CHECK([for struct ip_mreqn], bird_cv_struct_ip_mreqn,[ | |
AC_TRY_COMPILE([#include <netinet/in.h> | |
],[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) | |
fi | |
]) | |
| |
AC_DEFUN(BIRD_CHECK_PTHREADS, | |
[ |
[ |
bird_tmp_cflags="$CFLAGS" | AC_CACHE_CHECK( |
| [for syslog lib flags], |
CFLAGS="$CFLAGS -pthread" | [bird_cv_lib_log], |
AC_CACHE_CHECK([whether POSIX threads are available], bird_cv_lib_pthreads, | AC_LINK_IFELSE([ |
[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); ]])], | AC_LANG_PROGRAM( |
[bird_cv_lib_pthreads=yes], [bird_cv_lib_pthreads=no])]) | [ #include <sys/syslog.h> ], |
| [ syslog(0, ""); ] |
CFLAGS="$bird_tmp_cflags" | ) |
| ], |
| [bird_cv_lib_log=yes], |
| [ |
| bird_tmp_libs="$LIBS" |
| LIBS="$LIBS -llog" |
| AC_LINK_IFELSE([ |
| AC_LANG_PROGRAM( |
| [ #include <sys/syslog.h> ], |
| [ syslog(0, ""); ] |
| ) |
| ], |
| [bird_cv_lib_log=-llog], |
| [bird_cv_lib_log=no] |
| ) |
| LIBS="$bird_tmp_libs" |
| ] |
| ) |
| ) |
]) |
]) |
|
|
AC_DEFUN(BIRD_CHECK_GCC_OPTION, | AC_DEFUN([BIRD_CHECK_GCC_OPTION], |
[ |
[ |
bird_tmp_cflags="$CFLAGS" |
bird_tmp_cflags="$CFLAGS" |
|
|
CFLAGS="$3 $2" |
CFLAGS="$3 $2" |
AC_CACHE_CHECK([whether CC supports $2], $1, |
|
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [$1=yes], [$1=no])]) |
|
|
|
|
AC_CACHE_CHECK( |
|
[whether CC supports $2], |
|
[$1], |
|
[ |
|
AC_COMPILE_IFELSE( |
|
[AC_LANG_PROGRAM()], |
|
[$1=yes], |
|
[$1=no] |
|
) |
|
] |
|
) |
|
|
CFLAGS="$bird_tmp_cflags" |
CFLAGS="$bird_tmp_cflags" |
]) |
]) |
|
|
AC_DEFUN(BIRD_ADD_GCC_OPTION, | AC_DEFUN([BIRD_ADD_GCC_OPTION], |
[ |
[ |
if test "$$1" = yes ; then |
if test "$$1" = yes ; then |
CFLAGS="$CFLAGS $2" |
CFLAGS="$CFLAGS $2" |
Line 164 AC_DEFUN(BIRD_ADD_GCC_OPTION,
|
Line 125 AC_DEFUN(BIRD_ADD_GCC_OPTION,
|
]) |
]) |
|
|
# BIRD_CHECK_PROG_FLAVOR_GNU(PROGRAM-PATH, IF-SUCCESS, [IF-FAILURE]) |
# BIRD_CHECK_PROG_FLAVOR_GNU(PROGRAM-PATH, IF-SUCCESS, [IF-FAILURE]) |
# copied autoconf internal _AC_PATH_PROG_FLAVOR_GNU | # copied from 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 | # Check for GNU $1 |
*GNU*) | case `"$1" --version 2>&1` in |
$2;; | *GNU*) |
m4_ifval([$3], | $2 |
[*) | ;; |
$3;; | m4_ifval([$3], |
])esac | [*) |
])# | $3 |
| ;; |
| ] |
| ) |
| esac |
| ]) |