+AC_CHECK_FUNCS([gettimeofday munmap socket strerror strtol sched_getcpu sysconf])
+
+CFLAGS="-Wall $CFLAGS"
+
+# Check for texinfo, required for building the documentation
+# TODO: make this (and building the documentation) optional
+AC_CHECK_PROG([TEXINFO], [makeinfo], [yes])
+AS_IF([test "x$TEXINFO" != "xyes"],[
+ AC_MSG_ERROR([Please install the 'texinfo' program and make sure 'makeinfo' is in the PATH.])
+])
+
+# URCU
+
+# urcu - check if we just find the headers it out of the box.
+AC_CHECK_HEADERS([urcu-bp.h], [], [AC_MSG_ERROR([Cannot find [URCU] headers (urcu-bp.h). Use [CPPFLAGS]=-Idir to specify their location.
+This error can also occur when the liburcu package's configure script has not been run.])])
+
+AC_MSG_CHECKING([caa_likely()])
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#include <urcu/compiler.h>
+void fct(void)
+{
+ if (caa_likely(1)) {
+ }
+}
+]])],[
+ AC_MSG_RESULT([yes])
+],[
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([Please upgrade your version of liburcu to 0.6.6 or better])
+
+])
+
+# urcu - check that URCU lib is available to compilation
+AC_CHECK_LIB([urcu-bp], [synchronize_rcu_bp], [], [AC_MSG_ERROR([Cannot find liburcu-bp lib. Use [LDFLAGS]=-Ldir to specify its location.])])
+
+# urcu - check that URCU lib is at least version 0.6
+AC_CHECK_LIB([urcu-bp], [call_rcu_bp], [], [AC_MSG_ERROR([liburcu 0.6 or newer is needed, please update your version or use [LDFLAGS]=-Ldir to specify the right location.])])
+
+
+# Check for various supplementary host information (beyond the
+# triplet) which might affect the library format choices. E.g., we
+# can be building with `i686-unknown-linux-gnu-gcc -m64'
+
+case "${host}" in
+changequote(,)dnl
+ i[34567]86-*-linux*)
+changequote([,])dnl
+ AC_CACHE_CHECK([if building for x86-64], [ust_cv_i386_is_x86_64],
+ [save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $CFLAGS"
+ AC_EGREP_CPP([got it], [
+#if __x86_64__
+got it
+#endif
+ ], [ust_cv_i386_is_x86_64=yes],
+ [ust_cv_i386_is_x86_64=no])
+ CPPFLAGS="$save_CPPFLAGS"])
+ ;;
+esac
+
+AC_MSG_CHECKING([library format for the host system])
+case $host_cpu in
+changequote(,)dnl
+ i[3456]86)
+changequote([,])dnl
+ if test "$ust_cv_i386_is_x86_64" = yes ; then
+ LIBFORMAT="elf64-x86-64"
+ else
+ LIBFORMAT="elf32-i386"
+ fi
+ ;;
+ x86_64) LIBFORMAT="elf64-x86-64" ;;
+ powerpc) LIBFORMAT="elf32-powerpc" ;;
+ ppc64) LIBFORMAT="elf64-powerpc" ;;
+ powerpc64) LIBFORMAT="elf64-powerpc" ;;
+ s390) LIBFORMAT="elf32-s390"; NO_UNALIGNED_ACCESS=1 ;;
+ s390x) LIBFORMAT="elf64-s390"; NO_UNALIGNED_ACCESS=1 ;;
+ armv5) LIBFORMAT="elf32-littlearm"; NO_UNALIGNED_ACCESS=1 ;;
+ arm) LIBFORMAT="elf32-littlearm"; NO_UNALIGNED_ACCESS=1 ;;
+ mips*) LIBFORMAT=""; NO_UNALIGNED_ACCESS=1;;
+ *) AC_MSG_ERROR([unable to detect library format (unsupported architecture ($host_cpu)?)]) ;;
+esac
+AC_SUBST(LIBFORMAT)
+AC_MSG_RESULT($LIBFORMAT)
+
+if test "x$host_cpu" = "xarm" ; then
+AC_MSG_CHECKING([checking for armv5])
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#ifndef __ARM_ARCH_5TEJ__
+#error "no arm5 here"
+#endif
+]])],[
+ AC_MSG_RESULT([yes])
+ NO_UNALIGNED_ACCESS=1
+
+],[
+ AC_MSG_RESULT([no])