From 8a77feb9ca5a537775ba4e6a574fc87c2a6c6225 Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 4 Sep 2015 10:06:49 +0000 Subject: fake.rb: extmk mode * tool/fake.rb: add extmk mode. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51759 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- tool/fake.rb | 55 ++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 42 insertions(+), 13 deletions(-) (limited to 'tool/fake.rb') diff --git a/tool/fake.rb b/tool/fake.rb index f8c68173e6..d7460e2f85 100644 --- a/tool/fake.rb +++ b/tool/fake.rb @@ -6,27 +6,56 @@ class File end end +static = !!$static $:.unshift(builddir) posthook = proc do + config = RbConfig::CONFIG mkconfig = RbConfig::MAKEFILE_CONFIG extout = File.expand_path(mkconfig["EXTOUT"], builddir) - $arch_hdrdir = "#{extout}/include/$(arch)" - $ruby = baseruby + [ + ["top_srcdir", $top_srcdir], + ["topdir", $topdir], + ].each do |var, val| + next unless val + mkconfig[var] = config[var] = val + t = /\A#{Regexp.quote(val)}(?=\/)/ + $hdrdir.sub!(t) {"$(#{var})"} + mkconfig.keys.grep(/dir\z/) do |k| + mkconfig[k] = "$(#{var})#$'" if t =~ mkconfig[k] + end + end + if $extmk + $ruby = "$(topdir)/miniruby -I'$(topdir)' -I'$(top_srcdir)/lib' -I'$(extout)/$(arch)' -I'$(extout)/common'" + else + $ruby = baseruby + end + $static = static untrace_var(:$ruby, posthook) end prehook = proc do |extmk| - unless extmk - config = RbConfig::CONFIG - mkconfig = RbConfig::MAKEFILE_CONFIG - mkconfig["top_srcdir"] = $top_srcdir = top_srcdir - mkconfig["rubyhdrdir"] = "$(top_srcdir)/include" - mkconfig["rubyarchhdrdir"] = "$(builddir)/$(EXTOUT)/include/$(arch)" - mkconfig["builddir"] = config["builddir"] = builddir - config["rubyhdrdir"] = File.join(mkconfig["top_srcdir"], "include") - config["rubyarchhdrdir"] = File.join(builddir, config["EXTOUT"], "include", config["arch"]) - mkconfig["libdirname"] = "builddir" - trace_var(:$ruby, posthook) + pat = %r[(?:\A(?:\w:|//[^/]+)|\G)/[^/]*] + dir = builddir.scan(pat) + pwd = Dir.pwd.scan(pat) + if dir[0] == pwd[0] + while dir[0] and dir[0] == pwd[0] + dir.shift + pwd.shift + end + builddir = File.join([".."]*pwd.size + dir) end + $topdir ||= builddir + $top_srcdir ||= File.join($topdir, srcdir) + $extout = '$(topdir)/.ext' + $extout_prefix = '$(extout)$(target_prefix)/' + config = RbConfig::CONFIG + mkconfig = RbConfig::MAKEFILE_CONFIG + mkconfig["builddir"] = config["builddir"] = builddir + mkconfig["top_srcdir"] = $top_srcdir if $top_srcdir + config["top_srcdir"] = File.expand_path($top_srcdir ||= top_srcdir) + config["rubyhdrdir"] = File.join($top_srcdir, "include") + config["rubyarchhdrdir"] = File.join(builddir, config["EXTOUT"], "include", config["arch"]) + mkconfig["libdirname"] = "builddir" + trace_var(:$ruby, posthook) untrace_var(:$extmk, prehook) end trace_var(:$extmk, prehook) -- cgit v1.2.3