diff options
author | ngoto <ngoto@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-11-18 08:24:24 +0000 |
---|---|---|
committer | ngoto <ngoto@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-11-18 08:24:24 +0000 |
commit | 1f225be2e51f0ff7376846d5631fd6287eb03d14 (patch) | |
tree | e2f44294d784990242f2a3b988a14af1cdb13c8d /Makefile.in | |
parent | 42d38decda9249ba77b365f2b242a76e7e109945 (diff) |
* configure.in, Makefile.in, common.mk: support DTrace on Solaris 10,
based on r26235 by Yugui. On Solaris 10, low optimization level
may also be needed, e.g. optflags="-xO1" or "-xO0" with Oracle
SolarisStudio 12.3 cc.
* configure.in (--enable-dtrace): new option to enable/disable
DTrace support. By default, trying to enable if dtrace command
is found on the system. It is disabled when cross compiling.
* configure.in (RUBY_DTRACE_POSTPROCESS): new macro. checks whether
the dtrace on the system needs postprocessing with "dtrace -G".
The postprocessing is needed on Solaris 10 and other platforms.
* configure.in (RUBY_DTRACE_BSD_BROKEN): new macro. checks whether
the dtrace supports USDT.
* configure.in (DTRACE): move after RUBY_DTRACE_POSTPROCESS.
* configure.in (LD): On Solaris, /usr/ccs/bin/ld is preferred.
* configure.in, Makefile.in, common.mk (DTRACE_OBJ): new macro for
DTrace probe object generated by postprocessing with "dtrace -G".
* Makefile.in, common.mk (probes.$(OBJEXT)): DTrace probe object
generated by the postprocessing. New file probes.stamp is for
rebuilding related objects that may be modified by "dtrace -G".
* configure.in, Makefile.in, common.mk (DTRACE_GLOMMED_OBJ): new
macro for DTrace static library hacks.
* configure.in, Makefile.in (LIBRUBY_A_OBJS): ditto.
* Makefile.in, common.mk (ruby-glommed.$(OBJEXT)): new target with
rule for DTrace static library hacks.
* common.mk (DTRACE_DEPENDENT_OBJS): objects depended on probes.h.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37709 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'Makefile.in')
-rw-r--r-- | Makefile.in | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/Makefile.in b/Makefile.in index 9df9dcbb04..46033d0c07 100644 --- a/Makefile.in +++ b/Makefile.in @@ -119,6 +119,7 @@ LIBRUBYARG = @LIBRUBYARG@ LIBRUBYARG_STATIC = @LIBRUBYARG_STATIC@ LIBRUBYARG_SHARED = @LIBRUBYARG_SHARED@ LIBRUBY_RELATIVE = @LIBRUBY_RELATIVE@ +LIBRUBY_A_OBJS = @LIBRUBY_A_OBJS@ THREAD_MODEL = @THREAD_MODEL@ @@ -149,6 +150,8 @@ VCS = @VCS@ VCSUP = @VCSUP@ DTRACE = @DTRACE@ DTRACE_EXT = @DTRACE_EXT@ +DTRACE_OBJ = @DTRACE_OBJ@ +DTRACE_GLOMMED_OBJ = @DTRACE_GLOMMED_OBJ@ OBJEXT = @OBJEXT@ ASMEXT = S @@ -184,7 +187,7 @@ all: miniruby$(EXEEXT): @-if test -f $@; then $(MV) -f $@ $@.old; $(RM) $@.old; fi $(ECHO) linking $@ - $(Q) $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINLIBS) $(NORMALMAINOBJ) $(MINIOBJS) $(COMMONOBJS) $(DMYEXT) $(LIBS) $(OUTFLAG)$@ + $(Q) $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINLIBS) $(NORMALMAINOBJ) $(MINIOBJS) $(COMMONOBJS) $(DMYEXT) $(DTRACE_OBJ) $(LIBS) $(OUTFLAG)$@ $(PROGRAM): @$(RM) $@ @@ -198,7 +201,7 @@ $(PROGRAM): $(LIBRUBY_A): @$(RM) $@ $(ECHO) linking static-library $@ - $(Q) $(AR) $(ARFLAGS) $@ $(OBJS) $(DMYEXT) + $(Q) $(AR) $(ARFLAGS) $@ $(LIBRUBY_A_OBJS) $(DMYEXT) @-$(RANLIB) $@ 2> /dev/null || true $(ECHO) verifying static-library $@ @$(PURIFY) $(CC) $(XLDFLAGS) $(MAINOBJ) $(LIBRUBY_A) $(MAINLIBS) $(EXTLIBS) $(LIBS) $(OUTFLAG)conftest$(EXEEXT) $(LDFLAGS) @@ -207,7 +210,7 @@ $(LIBRUBY_A): $(LIBRUBY_SO): @-$(PRE_LIBRUBY_UPDATE) $(ECHO) linking shared-library $@ - $(Q) $(LDSHARED) $(DLDFLAGS) $(OBJS) $(DLDOBJS) $(SOLIBS) $(EXTSOLIBS) $(OUTFLAG)$@ + $(Q) $(LDSHARED) $(DLDFLAGS) $(OBJS) $(DLDOBJS) $(DTRACE_OBJ) $(SOLIBS) $(EXTSOLIBS) $(OUTFLAG)$@ -$(Q) $(OBJCOPY) -w -L '$(SYMBOL_PREFIX)Init_*' -L '$(SYMBOL_PREFIX)*_threadptr_*' $@ @-$(MINIRUBY) -e 'ARGV.each{|link| File.delete link if File.exist? link; \ File.symlink "$(LIBRUBY_SO)", link}' \ @@ -334,6 +337,25 @@ probes.h: probes.$(DTRACE_EXT) $(Q) sed -e 's/RUBY_/RUBY_DTRACE_/g' -e 's/PROBES_H_TMP/PROBES_H/g' $@.tmp > $@ $(Q) $(RM) $@.tmp +probes.@OBJEXT@: $(srcdir)/probes.d + @$(ECHO) processing probes in object files + $(Q) stamp="$*.stamp"; \ + if test -f "$$stamp" -o -f "$@"; then \ + $(RM) $(DTRACE_DEPENDENT_OBJS) "$$stamp"; \ + for o in $(DTRACE_DEPENDENT_OBJS); do \ + echo "rebuilding $$o which was modified by \"dtrace -G\""; \ + $(MAKE) "$$o"; \ + done; \ + fi; \ + touch "$$stamp" + $(Q) $(DTRACE) -G -s $(srcdir)/probes.d -o $@ $(DTRACE_DEPENDENT_OBJS) + +# DTrace static library hacks described here: +# http://mail.opensolaris.org/pipermail/dtrace-discuss/2005-August/000207.html +ruby-glommed.$(OBJEXT): + @$(ECHO) generating a glommed object with DTrace probes for static library + $(Q) $(LD) -r -o $@ $(OBJS) $(DTRACE_OBJ) + clean-local:: $(Q)$(RM) ext/extinit.c ext/extinit.$(OBJEXT) ext/ripper/y.output \ enc/encinit.c enc/encinit.$(OBJEXT) |