aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--common.mk2
-rwxr-xr-xext/extmk.rb15
-rw-r--r--tool/colorize.rb41
-rw-r--r--tool/generic_erb.rb16
4 files changed, 57 insertions, 17 deletions
diff --git a/common.mk b/common.mk
index 42874b167f..f4545c2527 100644
--- a/common.mk
+++ b/common.mk
@@ -235,7 +235,7 @@ configure-ext: $(EXTS_MK)
build-ext: $(EXTS_MK)
$(Q)$(MAKE) -f $(EXTS_MK) $(mflags) libdir="$(libdir)" LIBRUBY_EXTS=$(LIBRUBY_EXTS) \
EXTENCS="$(ENCOBJS)" UPDATE_LIBRARIES=no $(EXTSTATIC)
- $(Q)$(MAKE) -f $(EXTS_MK) $(mflags) note
+ $(Q)$(MAKE) -f $(EXTS_MK) $(mflags) RUBY="$(MINIRUBY)" top_srcdir="$(srcdir)" note
ext/extinit.c: $(srcdir)/template/extinit.c.tmpl
$(Q)$(MINIRUBY) $(srcdir)/tool/generic_erb.rb -o $@ -c \
diff --git a/ext/extmk.rb b/ext/extmk.rb
index 55b0e7c83c..e83a0e5d8c 100755
--- a/ext/extmk.rb
+++ b/ext/extmk.rb
@@ -411,12 +411,15 @@ elsif sep = config_string('BUILD_FILE_SEPARATOR')
else
$ruby = '$(topdir)/miniruby' + EXEEXT
end
-$ruby << " -I'$(topdir)'"
+$ruby = [$ruby]
+$ruby << "-I'$(topdir)'"
unless CROSS_COMPILING
- $ruby << " -I'$(top_srcdir)/lib'"
- $ruby << " -I'$(extout)/$(arch)' -I'$(extout)/common'" if $extout
+ $ruby << "-I'$(top_srcdir)/lib'"
+ $ruby << "-I'$(extout)/$(arch)'" << "-I'$(extout)/common'" if $extout
ENV["RUBYLIB"] = "-"
end
+topruby = $ruby
+$ruby = topruby.join(' ')
$mflags << "ruby=#$ruby"
MTIMES = [__FILE__, 'rbconfig.rb', srcdir+'/lib/mkmf.rb'].collect {|f| File.mtime(f)}
@@ -658,6 +661,8 @@ begin
puts
end
+ mf.macro "ruby", topruby
+ mf.macro "RUBY", ["$(ruby)"]
mf.macro "extensions", exts
mf.macro "EXTOBJS", $extlist.empty? ? ["dmyext.#{$OBJEXT}"] : ["ext/extinit.#{$OBJEXT}", *$extobjs]
mf.macro "EXTLIBS", $extlibs
@@ -679,8 +684,8 @@ begin
submakeopts << 'UPDATE_LIBRARIES="$(UPDATE_LIBRARIES)"'
submakeopts << 'SHOWFLAGS='
mf.macro "SUBMAKEOPTS", submakeopts
- mf.macro "NOTE_MESG", %w[echo]
- mf.macro "NOTE_NAME", %w[echo]
+ mf.macro "NOTE_MESG", %w[$(RUBY) $(top_srcdir)/tool/colorize.rb skip]
+ mf.macro "NOTE_NAME", %w[$(RUBY) $(top_srcdir)/tool/colorize.rb fail]
mf.puts
targets = %w[all install static install-so install-rb clean distclean realclean]
targets.each do |tgt|
diff --git a/tool/colorize.rb b/tool/colorize.rb
new file mode 100644
index 0000000000..6b9f568020
--- /dev/null
+++ b/tool/colorize.rb
@@ -0,0 +1,41 @@
+class Colorize
+ def initialize(color = nil)
+ @colors = @reset = nil
+ if color or (color == nil && STDOUT.tty?)
+ if (/\A\e\[.*m\z/ =~ IO.popen("tput smso", "r", err: IO::NULL, &:read) rescue nil)
+ @beg = "\e["
+ @colors = (colors = ENV['TEST_COLORS']) ? Hash[colors.scan(/(\w+)=([^:\n]*)/)] : {}
+ @reset = "#{@beg}m"
+ end
+ end
+ self
+ end
+
+ DEFAULTS = {"pass"=>"32;1", "fail"=>"31;1", "skip"=>"33;1"}
+
+ def decorate(str, name)
+ if @colors and color = (@colors[name] || DEFAULTS[name])
+ "#{@beg}#{color}m#{str}#{@reset}"
+ else
+ str
+ end
+ end
+
+ def pass(str)
+ decorate(str, "pass")
+ end
+
+ def fail(str)
+ decorate(str, "fail")
+ end
+
+ def skip(str)
+ decorate(str, "skip")
+ end
+end
+
+if $0 == __FILE__
+ colorize = Colorize.new
+ col = ARGV.shift
+ ARGV.each {|str| puts colorize.decorate(str, col)}
+end
diff --git a/tool/generic_erb.rb b/tool/generic_erb.rb
index d08efe06c3..08077f2dbc 100644
--- a/tool/generic_erb.rb
+++ b/tool/generic_erb.rb
@@ -8,6 +8,7 @@ require 'optparse'
require 'fileutils'
$:.unshift(File.dirname(__FILE__))
require 'vpath'
+require 'colorize'
vpath = VPath.new
timestamp = nil
@@ -25,17 +26,10 @@ opt = OptionParser.new do |o|
vpath.def_options(o)
o.order!(ARGV)
end
-unchanged = "unchanged"
-updated = "updated"
-if color or (color == nil && STDOUT.tty?)
- if (/\A\e\[.*m\z/ =~ IO.popen("tput smso", "r", err: IO::NULL, &:read) rescue nil)
- beg = "\e["
- colors = (colors = ENV['TEST_COLORS']) ? Hash[colors.scan(/(\w+)=([^:\n]*)/)] : {}
- reset = "#{beg}m"
- unchanged = "#{beg}#{colors["pass"] || "32;1"}m#{unchanged}#{reset}"
- updated = "#{beg}#{colors["fail"] || "31;1"}m#{updated}#{reset}"
- end
-end
+color = Colorize.new(color)
+unchanged = color.pass("unchanged")
+updated = color.fail("updated")
+
template = ARGV.shift or abort opt.to_s
erb = ERB.new(File.read(template), nil, '%-')
erb.filename = template