mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-11-09 20:58:44 +00:00
328 lines
5.9 KiB
Plaintext
328 lines
5.9 KiB
Plaintext
dnl ** Additional Autoconf tests for BIRD configure script
|
|
dnl ** (c) 1999 Martin Mares <mj@ucw.cz>
|
|
dnl ** (c) 2021 Maria Matejka <mq@jmq.cz>
|
|
|
|
# simplified adapted macro AX_COMPILER_VENDOR from autotools
|
|
AC_DEFUN([BIRD_COMPILER_VENDOR],
|
|
[
|
|
AC_CACHE_CHECK(
|
|
[which compiler vendor we are dealing with],
|
|
[bird_cv_compiler_vendor],
|
|
AC_COMPILE_IFELSE([
|
|
AC_LANG_PROGRAM([ int x = __clang__; ], [])
|
|
],
|
|
[bird_cv_compiler_vendor=llvm],
|
|
AC_COMPILE_IFELSE([
|
|
AC_LANG_PROGRAM([ int x = __GNUC__; ], [])
|
|
],
|
|
[bird_cv_compiler_vendor=gnu],
|
|
[bird_cv_compiler_vendor=unknown]
|
|
))
|
|
)
|
|
])
|
|
|
|
AC_DEFUN([BIRD_CHECK_POINTER_ALIGNMENT],
|
|
[
|
|
AC_CACHE_CHECK(
|
|
[how pointers are aligned],
|
|
[bird_cv_pointer_alignment],
|
|
AC_COMPILE_IFELSE([
|
|
AC_LANG_PROGRAM(
|
|
[
|
|
_Static_assert(_Alignof(void *) == 8, "bad");
|
|
], []
|
|
)
|
|
],
|
|
[bird_cv_pointer_alignment=8],
|
|
AC_COMPILE_IFELSE([
|
|
AC_LANG_PROGRAM(
|
|
[
|
|
_Static_assert(_Alignof(void *) == 4, "bad");
|
|
], []
|
|
)
|
|
],
|
|
[bird_cv_pointer_alignment=4],
|
|
[bird_cv_pointer_alignment=unknown]
|
|
))
|
|
)
|
|
])
|
|
|
|
AC_DEFUN([BIRD_CHECK_THREAD_LOCAL],
|
|
[
|
|
AC_CACHE_CHECK(
|
|
[whether _Thread_local is known],
|
|
[bird_cv_thread_local],
|
|
AC_COMPILE_IFELSE([
|
|
AC_LANG_PROGRAM(
|
|
[
|
|
static _Thread_local int x = 42;
|
|
],
|
|
[]
|
|
)
|
|
],
|
|
[bird_cv_thread_local=yes],
|
|
[AC_COMPILE_IFELSE([
|
|
AC_LANG_PROGRAM(
|
|
[
|
|
static __thread int x = 42;
|
|
],
|
|
[]
|
|
)
|
|
],
|
|
[bird_cv_thread_local=__thread],
|
|
[bird_cv_thread_local=no]
|
|
)])
|
|
)
|
|
])
|
|
|
|
AC_DEFUN([BIRD_CHECK_PTHREADS],
|
|
[
|
|
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"
|
|
])
|
|
|
|
AC_DEFUN([BIRD_CHECK_MPLS_KERNEL],
|
|
[
|
|
AC_CACHE_CHECK(
|
|
[for Linux MPLS headers],
|
|
[bird_cv_mpls_kernel],
|
|
[
|
|
AC_COMPILE_IFELSE(
|
|
[
|
|
AC_LANG_PROGRAM(
|
|
[
|
|
#include <linux/lwtunnel.h>
|
|
#include <linux/netlink.h>
|
|
#include <linux/rtnetlink.h>
|
|
#include <sys/socket.h>
|
|
void t(int arg);
|
|
],
|
|
[
|
|
t(AF_MPLS);
|
|
t(RTA_VIA);
|
|
t(RTA_NEWDST);
|
|
t(RTA_ENCAP_TYPE);
|
|
t(RTA_ENCAP);
|
|
struct rtvia rtvia;
|
|
t(LWTUNNEL_ENCAP_MPLS);
|
|
]
|
|
)
|
|
],
|
|
[bird_cv_mpls_kernel=yes],
|
|
[bird_cv_mpls_kernel=no]
|
|
)
|
|
]
|
|
)
|
|
])
|
|
|
|
AC_DEFUN([BIRD_CHECK_CLOCK],
|
|
[
|
|
AC_CACHE_CHECK(
|
|
[for $1],
|
|
[bird_cv_clock_$1],
|
|
[
|
|
AC_COMPILE_IFELSE(
|
|
[
|
|
AC_LANG_PROGRAM(
|
|
[
|
|
#include <time.h>
|
|
],
|
|
[
|
|
struct timespec tv;
|
|
clock_gettime($1, &tv);
|
|
]
|
|
)
|
|
],
|
|
[bird_cv_clock_$1=yes],
|
|
[bird_cv_clock_$1=no]
|
|
)
|
|
]
|
|
)
|
|
])
|
|
|
|
AC_DEFUN([BIRD_CHECK_ANDROID_GLOB],
|
|
[
|
|
AC_CACHE_CHECK(
|
|
[for glob.h],
|
|
[bird_cv_lib_glob],
|
|
AC_LINK_IFELSE([
|
|
AC_LANG_PROGRAM(
|
|
[
|
|
#include <glob.h>
|
|
#include <stdlib.h>
|
|
],
|
|
[ glob(NULL, 0, NULL, NULL); ]
|
|
)
|
|
],
|
|
[bird_cv_lib_glob=yes],
|
|
[
|
|
bird_tmp_libs="$LIBS"
|
|
LIBS="$LIBS -landroid-glob"
|
|
AC_LINK_IFELSE([
|
|
AC_LANG_PROGRAM(
|
|
[
|
|
#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_DEFUN([BIRD_CHECK_ANDROID_LOG],
|
|
[
|
|
AC_CACHE_CHECK(
|
|
[for syslog lib flags],
|
|
[bird_cv_lib_log],
|
|
AC_LINK_IFELSE([
|
|
AC_LANG_PROGRAM(
|
|
[ #include <sys/syslog.h> ],
|
|
[ syslog(0, ""); ]
|
|
)
|
|
],
|
|
[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_LTO],
|
|
[
|
|
bird_tmp_cflags="$CFLAGS"
|
|
bird_tmp_ldflags="$LDFLAGS"
|
|
CFLAGS="$1"
|
|
LDFLAGS="$2"
|
|
|
|
AC_CACHE_CHECK(
|
|
[whether link time optimizer is available],
|
|
[bird_cv_c_lto],
|
|
[
|
|
AC_LINK_IFELSE(
|
|
[AC_LANG_PROGRAM()],
|
|
[bird_cv_c_lto=yes],
|
|
[bird_cv_c_lto=no]
|
|
)
|
|
]
|
|
)
|
|
|
|
CFLAGS="$bird_tmp_cflags"
|
|
LDFLAGS="$bird_tmp_ldflags"
|
|
])
|
|
|
|
|
|
AC_DEFUN([BIRD_CHECK_GCC_OPTION],
|
|
[
|
|
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"
|
|
])
|
|
|
|
AC_DEFUN([BIRD_ADD_GCC_OPTION],
|
|
[
|
|
if test "$$1" = yes ; then
|
|
CFLAGS="$CFLAGS $2"
|
|
fi
|
|
])
|
|
|
|
AC_DEFUN([BIRD_CHECK_AND_ADD_GCC_OPTION],
|
|
[
|
|
BIRD_CHECK_GCC_OPTION($@)
|
|
BIRD_ADD_GCC_OPTION($1,$2)
|
|
])
|
|
|
|
# BIRD_CHECK_PROG_FLAVOR_GNU(PROGRAM-PATH, IF-SUCCESS, [IF-FAILURE])
|
|
# copied from autoconf internal _AC_PATH_PROG_FLAVOR_GNU
|
|
AC_DEFUN([BIRD_CHECK_PROG_FLAVOR_GNU],
|
|
[
|
|
# Check for GNU $1
|
|
case `"$1" --version 2>&1` in
|
|
*GNU*)
|
|
$2
|
|
;;
|
|
m4_ifval([$3],
|
|
[*)
|
|
$3
|
|
;;
|
|
]
|
|
)
|
|
esac
|
|
])
|
|
|
|
AC_DEFUN([BIRD_CHECK_BISON_VERSION],
|
|
[
|
|
$1=`bison --version | ( read line; echo ${line##* } )`
|
|
case "$$1" in
|
|
1.* | 2.0* | 2.1* | 2.2* | 2.3*)
|
|
AC_MSG_ERROR([Provided Bison version $$1 is too old, need at least 2.4])
|
|
;;
|
|
2.*)
|
|
bird_bison_synclines=no
|
|
bird_bison_enhanced_error=no
|
|
;;
|
|
3.* | 4.* | 5.* | 6.* | 7.* | 8.* | 9.*)
|
|
bird_bison_synclines=yes
|
|
bird_bison_enhanced_error=yes
|
|
;;
|
|
*)
|
|
AC_MSG_ERROR([Couldn't parse Bison version $$1. Call the developers for help.])
|
|
;;
|
|
esac
|
|
])
|