mirror of
https://github.com/libuv/libuv
synced 2025-03-28 21:13:16 +00:00

Check if dtrace should instrument object files only if dtrace support is detected to work
67 lines
2.4 KiB
Plaintext
67 lines
2.4 KiB
Plaintext
dnl Copyright (C) 2009 Sun Microsystems
|
|
dnl This file is free software; Sun Microsystems
|
|
dnl gives unlimited permission to copy and/or distribute it,
|
|
dnl with or without modifications, as long as this notice is preserved.
|
|
|
|
dnl ---------------------------------------------------------------------------
|
|
dnl Macro: PANDORA_ENABLE_DTRACE
|
|
dnl ---------------------------------------------------------------------------
|
|
AC_DEFUN([PANDORA_ENABLE_DTRACE],[
|
|
AC_ARG_ENABLE([dtrace],
|
|
[AS_HELP_STRING([--disable-dtrace],
|
|
[enable DTrace USDT probes. @<:@default=yes@:>@])],
|
|
[ac_cv_enable_dtrace="$enableval"],
|
|
[ac_cv_enable_dtrace="yes"])
|
|
|
|
AS_IF([test "$ac_cv_enable_dtrace" = "yes"],[
|
|
AC_CHECK_PROGS([DTRACE], [dtrace])
|
|
AS_IF([test "x$ac_cv_prog_DTRACE" = "xdtrace"],[
|
|
|
|
AC_CACHE_CHECK([if dtrace works],[ac_cv_dtrace_works],[
|
|
cat >conftest.d <<_ACEOF
|
|
provider Example {
|
|
probe increment(int);
|
|
};
|
|
_ACEOF
|
|
$DTRACE -h -o conftest.h -s conftest.d 2>/dev/zero
|
|
AS_IF([test $? -eq 0],[ac_cv_dtrace_works=yes],
|
|
[ac_cv_dtrace_works=no])
|
|
rm -f conftest.h conftest.d
|
|
])
|
|
AS_IF([test "x$ac_cv_dtrace_works" = "xyes"],[
|
|
AC_DEFINE([HAVE_DTRACE], [1], [Enables DTRACE Support])
|
|
AC_CACHE_CHECK([if dtrace should instrument object files],
|
|
[ac_cv_dtrace_needs_objects],[
|
|
dnl DTrace on MacOSX does not use -G option
|
|
cat >conftest.d <<_ACEOF
|
|
provider Example {
|
|
probe increment(int);
|
|
};
|
|
_ACEOF
|
|
cat > conftest.c <<_ACEOF
|
|
#include "conftest.h"
|
|
void foo() {
|
|
EXAMPLE_INCREMENT(1);
|
|
}
|
|
_ACEOF
|
|
$DTRACE -h -o conftest.h -s conftest.d 2>/dev/zero
|
|
$CC -c -o conftest.o conftest.c
|
|
$DTRACE -G -o conftest.d.o -s conftest.d conftest.o 2>/dev/zero
|
|
AS_IF([test $? -eq 0],[ac_cv_dtrace_needs_objects=yes],
|
|
[ac_cv_dtrace_needs_objects=no])
|
|
rm -f conftest.d.o conftest.d conftest.h conftest.o conftest.c
|
|
])
|
|
])
|
|
AC_SUBST(DTRACEFLAGS) dnl TODO: test for -G on OSX
|
|
ac_cv_have_dtrace=yes
|
|
])])
|
|
|
|
AM_CONDITIONAL([HAVE_DTRACE], [test "x$ac_cv_dtrace_works" = "xyes"])
|
|
AM_CONDITIONAL([DTRACE_NEEDS_OBJECTS],
|
|
[test "x$ac_cv_dtrace_needs_objects" = "xyes"])
|
|
|
|
])
|
|
dnl ---------------------------------------------------------------------------
|
|
dnl End Macro: PANDORA_ENABLE_DTRACE
|
|
dnl ---------------------------------------------------------------------------
|