summaryrefslogtreecommitdiff
path: root/configure.in
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-11-20 08:35:57 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-11-20 08:35:57 +0000
commitda56cb6bf2bc71cd1b8cbb272f8bc4acd2a4d6be (patch)
tree164f9057b6bf159a7766dfcb3286bafa7ff90815 /configure.in
parentb6161a3bad879003b85aca13b637fb1fda5070e3 (diff)
* configure.in: fix dtrace didn't work on darwin.
* configure.in (RUBY_DTRACE_AVAILABLE): unify RUBY_DTRACE_POSTPROCESS and RUBY_DTRACE_BSD_BROKEN. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37750 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'configure.in')
-rw-r--r--configure.in55
1 files changed, 23 insertions, 32 deletions
diff --git a/configure.in b/configure.in
index 80c1c34b37..51e22b9e95 100644
--- a/configure.in
+++ b/configure.in
@@ -464,25 +464,8 @@ fi
MAKEDIRS="$MKDIR_P"
AC_SUBST(MAKEDIRS)
-AC_DEFUN([RUBY_DTRACE_POSTPROCESS],
-[AC_CACHE_CHECK(whether $DTRACE needs post processing, rb_cv_prog_dtrace_g,
-[
- echo "int main(void){ return 0; }" > conftest.c
- echo "provider conftest{};" > conftest_provider.d
- $CC $CFLAGS -c -o conftest.o conftest.c
- if $DTRACE -G -s conftest_provider.d conftest.o 2>/dev/null; then
- rb_cv_prog_dtrace_g=yes
- $1
- else
- rb_cv_prog_dtrace_g=no
- $2
- fi
- rm -f conftest.o conftest.c conftest_provider.d conftest_provider.o
-])
-])
-
-AC_DEFUN([RUBY_DTRACE_BSD_BROKEN],
-[AC_CACHE_CHECK(whether dtrace USDT is broken, rb_cv_dtrace_bsd_broken,
+AC_DEFUN([RUBY_DTRACE_AVAILABLE],
+[AC_CACHE_CHECK(whether dtrace USDT is available, rb_cv_dtrace_available,
[
cat <<EOF > conftest.c
#define _DTRACE_VERSION 1
@@ -494,15 +477,23 @@ int main(void)
}
EOF
echo "provider conftest{ probe fire(); };" > conftest_provider.d
- $DTRACE -h -o conftest_provider.h -s conftest_provider.d
- $CC $CFLAGS -c -o conftest.o conftest.c
- if $DTRACE -G -o conftest_provider.o -s conftest_provider.d conftest.o >/dev/null 2>/dev/null; then
- rb_cv_dtrace_bsd_broken=no
- $2
+ rb_cv_prog_dtrace_g=no
+ if $DTRACE -h -o conftest_provider.h -s conftest_provider.d >/dev/null 2>/dev/null; then
+ # DTrace is available on the system
+ enable_dtrace=yes
+ $CC $CFLAGS -c -o conftest.o conftest.c
+ if $DTRACE -G -o conftest_provider.o -s conftest_provider.d conftest.o >/dev/null 2>/dev/null; then
+ # Solaris and FreeBSD need `dtrace -G`
+ rb_cv_prog_dtrace_g=yes
+ else
+ # darwin doesn't need `dtrace -G`
+ fi
else
- rb_cv_dtrace_bsd_broken=yes
- $1
+ # DTrace is not available while dtrace command exists
+ # for example FreeBSD 8 or FreeBSD 9 without DTrace build option
+ enable_dtrace=no
fi
+ rb_cv_dtrace_available=$enable_dtrace
rm -f conftest.[co] conftest_provider.[dho]
])
])
@@ -2731,14 +2722,12 @@ fi
AC_ARG_ENABLE(dtrace,
AS_HELP_STRING([--enable-dtrace],
- [enable DTrace for tracing ruby's internal. enabled by default on systems having dtrace]),
+ [enable DTrace for tracing inside ruby. enabled by default on systems having dtrace]),
[enable_dtrace=$enableval], [enable_dtrace=auto])
if test "${enable_dtrace}" = "auto"; then
if test x"$DTRACE" != x -a x"$cross_compiling" != xyes; then
- RUBY_DTRACE_POSTPROCESS()
- enable_dtrace=yes
- RUBY_DTRACE_BSD_BROKEN([enable_dtrace=no], [enable_dtrace=yes])
+ RUBY_DTRACE_AVAILABLE()
else
enable_dtrace=no
fi
@@ -2751,9 +2740,11 @@ if test "${enable_dtrace}" = "yes"; then
elif test "$cross_compiling" = yes; then
AC_MSG_ERROR([--enable-dtrace, however, cross compiling])
else
- RUBY_DTRACE_POSTPROCESS()
+ RUBY_DTRACE_AVAILABLE()
+ if test "${enable_dtrace}" = "no"; then
+ AC_MSG_ERROR([--enable-dtrace, however, USDT is not available])
+ fi
if test "$rb_cv_prog_dtrace_g" = 'yes'; then
- RUBY_DTRACE_BSD_BROKEN([AC_MSG_ERROR([--enable-dtrace, however, USDT is broken])], [])
DTRACE_OBJ='probes.$(OBJEXT)'
DTRACE_GLOMMED_OBJ='ruby-glommed.$(OBJEXT)'
LIBRUBY_A_OBJS='$(DTRACE_GLOMMED_OBJ)'