From 1113f8424f8e73271b0a44299a980d14e149a229 Mon Sep 17 00:00:00 2001 From: Christian Babeux Date: Thu, 26 Jun 2014 11:42:28 -0400 Subject: [PATCH] Fix: Wrong configure check for UST perf event counters context support When building on non-x86 platforms, the build errors out with the following: CC lttng-context-perf-counters.lo lttng-context-perf-counters.c:95:2: error: #error "Perf event counters are only supported on x86 so far." lttng-context-perf-counters.c: In function 'read_perf_counter': lttng-context-perf-counters.c:114:4: warning: implicit declaration of function 'rdpmc' [-Wimplicit-function-declaration] make[2]: *** [lttng-context-perf-counters.lo] Error 1 The configure script checks for the presence of the "perf_event.h" header to enable support for perf events counters. However, the current implementation is only available on x86, hence the build fails on platform where the perf header is available. Fix this issue by detecting the architecture we are currently building and wether to enable or not the support for perf event counters context. Signed-off-by: Christian Babeux Signed-off-by: Mathieu Desnoyers --- configure.ac | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 76851dba..4841f46f 100644 --- a/configure.ac +++ b/configure.ac @@ -194,9 +194,23 @@ AC_CHECK_LIB([urcu-bp], [call_rcu_bp], [], [AC_MSG_ERROR([liburcu 0.6 or newer i # optional linux/perf_event.h AC_CHECK_HEADERS([linux/perf_event.h], [have_perf_event=yes], []) -AM_CONDITIONAL([HAVE_PERF_EVENT], [test "x$have_perf_event" = "xyes"]) -if test "x$have_perf_event" = "xyes"; then +# Perf event counters are only supported on x86 so far. +AC_MSG_CHECKING([UST support for architecture perf event counters]) +case $host_cpu in +changequote(,)dnl + i[3456]86) +changequote([,])dnl + 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;; +esac +AC_MSG_RESULT([$UST_SUPPORT_FOR_ARCH_PERF_EVENT_COUNTERS]) + +AM_CONDITIONAL([HAVE_PERF_EVENT], [test "x$have_perf_event" = "xyes" -a "x$UST_SUPPORT_FOR_ARCH_PERF_EVENT_COUNTERS" = "xyes"]) + +if test "x$have_perf_event" = "xyes" -a "x$UST_SUPPORT_FOR_ARCH_PERF_EVENT_COUNTERS" = "xyes"; then AC_DEFINE([LTTNG_UST_HAVE_PERF_EVENT], [1]) fi -- 2.34.1