tracers: Only build getrusage() tracer if RUSAGE_THREAD is available
authorSebastian Dröge <sebastian@centricular.com>
Wed, 7 Oct 2015 10:11:30 +0000 (11:11 +0100)
committerSebastian Dröge <sebastian@centricular.com>
Wed, 7 Oct 2015 10:13:28 +0000 (11:13 +0100)
configure.ac
plugins/tracers/Makefile.am
plugins/tracers/gstrusage.c
plugins/tracers/gsttracers.c

index 0ffc9f1..ec26d54 100644 (file)
@@ -605,8 +605,25 @@ AC_CHECK_FUNCS([gmtime_r])
 AC_CHECK_FUNCS([localtime_r])
 AC_CHECK_FUNCS([sigaction])
 AC_CHECK_FUNCS([getrusage])
-AM_CONDITIONAL(HAVE_GETRUSAGE, test "x$ac_cv_func_getrusage" = "xyes")
 AC_CHECK_HEADERS([sys/resource.h])
+AC_CACHE_CHECK(for RUSAGE_THREAD, gst_cv_rusage_thread,
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <unistd.h>
+#ifndef __USE_GNU
+# define __USE_GNU              /* RUSAGE_THREAD */
+#endif
+#include <sys/resource.h>
+    ]], [[
+struct rusage ru;
+getrusage (RUSAGE_THREAD, &ru);
+    ]])],[
+      gst_cv_rusage_thread=yes
+      AC_DEFINE(HAVE_RUSAGE_THREAD, 1, [RUSAGE_THREAD is available])
+    ],[
+      gst_cv_rusage_thread=no
+    ])
+)
+AM_CONDITIONAL(HAVE_RUSAGE_THREAD, test "x$gst_cv_rusage_thread" = "xyes")
 
 dnl check for fseeko()
 AC_FUNC_FSEEKO
index 0a30538..9f4f86d 100644 (file)
@@ -1,7 +1,7 @@
 
 plugin_LTLIBRARIES = libgstcoretracers.la
 
-if HAVE_GETRUSAGE
+if HAVE_RUSAGE_THREAD
 RUSAGE_SOURCES = gstrusage.c
 else
 RUSAGE_SOURCES =
index ee9f7e5..26ebeba 100644 (file)
 #include <unistd.h>
 #include "gstrusage.h"
 
-#ifdef HAVE_SYS_RESOURCE_H
 #ifndef __USE_GNU
 # define __USE_GNU              /* RUSAGE_THREAD */
 #endif
 #include <sys/resource.h>
-#endif
 
 GST_DEBUG_CATEGORY_STATIC (gst_rusage_debug);
 #define GST_CAT_DEFAULT gst_rusage_debug
index 010c185..2840f07 100644 (file)
@@ -38,7 +38,7 @@ plugin_init (GstPlugin * plugin)
   if (!gst_tracer_register (plugin, "log", gst_log_tracer_get_type ()))
     return FALSE;
 #endif
-#ifdef HAVE_GETRUSAGE
+#ifdef HAVE_RUSAGE_THREAD
   if (!gst_tracer_register (plugin, "rusage", gst_rusage_tracer_get_type ()))
     return FALSE;
 #endif