0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-12-22 17:51:53 +00:00
bird/aclocal.m4
Maria Matejka 1d309c4ce6 Enforcing certain data structure explicit paddings.
Implicit paddings have undefined values in C. We want the eattr blocks
to be comparable by memcmp and eattrs settable directly by structrure
literals. This check ensures that all paddings in eattr and bval are
explicit and therefore zeroed in all literals.
2022-05-04 15:37:41 +02:00

268 lines
4.8 KiB
Plaintext

dnl ** Additional Autoconf tests for BIRD configure script
dnl ** (c) 1999 Martin Mares <mj@ucw.cz>
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(
[
_Thread_local static int x = 42;
],
[]
)
],
[bird_cv_thread_local=yes],
[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_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="-flto"
LDFLAGS="-flto=4"
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
])
# 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
])