+AC_CHECK_FUNCS([gettimeofday munmap socket strerror strtol sched_getcpu sysconf])
+
+CFLAGS="-Wall $CFLAGS"
+
+# 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.])])
+
+# urcu-cds - check that URCU Concurrent Data Structure lib is available to compilation
+# Part of Userspace RCU library 0.7.2 or better.
+AC_CHECK_LIB([urcu-cds], [_cds_lfht_new], [], [AC_MSG_ERROR([Cannot find
+liburcu-cds lib, part of Userspace RCU 0.7 or better. Use [LDFLAGS]=-Ldir to specify its location.])])
+
+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.])])
+
+# optional linux/perf_event.h
+AC_CHECK_HEADERS([linux/perf_event.h], [have_perf_event=yes], [])
+
+# Perf event counters are only supported on x86 so far.
+AC_MSG_CHECKING([UST support for architecture perf event counters])
+AS_CASE([$host_cpu],
+ [i[[3456]]86], [UST_SUPPORT_FOR_ARCH_PERF_EVENT_COUNTERS=yes],
+ [x86_64], [UST_SUPPORT_FOR_ARCH_PERF_EVENT_COUNTERS=yes],
+ [amd64], [UST_SUPPORT_FOR_ARCH_PERF_EVENT_COUNTERS=yes],
+ [UST_SUPPORT_FOR_ARCH_PERF_EVENT_COUNTERS=no])
+AC_MSG_RESULT([$UST_SUPPORT_FOR_ARCH_PERF_EVENT_COUNTERS])
+
+AM_CONDITIONAL([HAVE_PERF_EVENT], [test "x$have_perf_event" = "xyes" && test "x$UST_SUPPORT_FOR_ARCH_PERF_EVENT_COUNTERS" = "xyes"])
+
+AS_IF([test "x$have_perf_event" = "xyes" && test "x$UST_SUPPORT_FOR_ARCH_PERF_EVENT_COUNTERS" = "xyes"], [
+ AC_DEFINE([LTTNG_UST_HAVE_PERF_EVENT], [1])
+])
+
+AC_MSG_CHECKING([host system alignment requirements])
+AS_CASE([$host_cpu],
+ [i[[3456]]86], [],
+ [x86_64], [],
+ [amd64], [],
+ [powerpc], [],
+ [ppc64], [],
+ [ppc64le], [],
+ [powerpc64], [],
+ [powerpc64le], [],
+ [s390], [NO_UNALIGNED_ACCESS=1],
+ [s390x], [NO_UNALIGNED_ACCESS=1],
+ [arm*], [NO_UNALIGNED_ACCESS=1],
+ [aarch64*], [NO_UNALIGNED_ACCESS=1],
+ [mips*], [NO_UNALIGNED_ACCESS=1],
+ [tile*], [NO_UNALIGNED_ACCESS=1],
+ [
+ UNSUPPORTED_ARCH=1
+ NO_UNALIGNED_ACCESS=1
+ ])
+AC_MSG_RESULT([$host_cpu])
+
+AS_IF([test "x$NO_UNALIGNED_ACCESS" = "x"], [
+ AC_DEFINE([LTTNG_UST_HAVE_EFFICIENT_UNALIGNED_ACCESS], [1])
+])
+
+# Check for JNI header files if requested
+AC_ARG_ENABLE([jni-interface], [
+ AS_HELP_STRING([--enable-jni-interface], [build JNI interface between C and Java. Needs Java include files [default=no]])
+], [
+ jni_interface=$enableval
+], [
+ jni_interface=no
+])
+
+AM_CONDITIONAL([BUILD_JNI_INTERFACE], [test "x$jni_interface" = "xyes"])
+
+
+AC_ARG_ENABLE([java-agent-jul], [
+ AS_HELP_STRING([--enable-java-agent-jul], [build the LTTng UST Java agent with JUL support [default=no]])
+], [
+ java_agent_jul=$enableval
+], [
+ java_agent_jul=no
+])