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 <christian.bab...@efficios.com>
---
 configure.ac | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/configure.ac b/configure.ac
index 76851db..4841f46 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
 
-- 
1.9.3


_______________________________________________
lttng-dev mailing list
lttng-dev@lists.lttng.org
http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

Reply via email to