From 344526082ed8ea4855d4f87df713a4cc3917a502 Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 3 Aug 2007 02:05:57 +0000 Subject: * ext/extmk.rb (extmake): save all CONFIG values. * ext/extmk.rb (extmake): remove mkmf.log at clean, and extconf.h at distclean, respectively. * ext/extmk.rb: remove rdoc at clean, and installed list file at distclean, respectively. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@12869 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/extmk.rb | 75 ++++++++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 55 insertions(+), 20 deletions(-) (limited to 'ext/extmk.rb') diff --git a/ext/extmk.rb b/ext/extmk.rb index 2ca605215a..e20667c6d1 100644 --- a/ext/extmk.rb +++ b/ext/extmk.rb @@ -112,10 +112,10 @@ def extmake(target) Dir.chdir target top_srcdir = $top_srcdir topdir = $topdir - mk_srcdir = CONFIG["srcdir"] - mk_topdir = CONFIG["topdir"] + hdrdir = $hdrdir prefix = "../" * (target.count("/")+1) - $hdrdir = $top_srcdir = relative_from(top_srcdir, prefix) + $top_srcdir = relative_from(top_srcdir, prefix) + $hdrdir = relative_from(hdrdir, prefix) $topdir = prefix + $topdir $target = target $mdir = target @@ -127,12 +127,31 @@ def extmake(target) makefile = "./Makefile" ok = File.exist?(makefile) unless $ignore - Config::CONFIG["hdrdir"] = $hdrdir - Config::CONFIG["srcdir"] = $srcdir - Config::CONFIG["topdir"] = $topdir - CONFIG["hdrdir"] = ($hdrdir == top_srcdir) ? top_srcdir : "$(topdir)"+top_srcdir[2..-1] - CONFIG["srcdir"] = "$(hdrdir)/ext/#{$mdir}" - CONFIG["topdir"] = $topdir + rbconfig0 = Config::CONFIG + mkconfig0 = CONFIG + rbconfig = { + "hdrdir" => $hdrdir, + "srcdir" => $srcdir, + "topdir" => $topdir, + } + mkconfig = { + "top_srcdir" => ($hdrdir == top_srcdir) ? top_srcdir : "$(topdir)"+top_srcdir[2..-1], + "hdrdir" => "$(top_srcdir)", + "srcdir" => "$(top_srcdir)/ext/#{$mdir}", + "topdir" => $topdir, + } + rbconfig0.each_pair {|key, val| rbconfig[key] ||= val.dup} + mkconfig0.each_pair {|key, val| mkconfig[key] ||= val.dup} + Config.module_eval { + remove_const(:CONFIG) + const_set(:CONFIG, rbconfig) + remove_const(:MAKEFILE_CONFIG) + const_set(:MAKEFILE_CONFIG, mkconfig) + } + Object.class_eval { + remove_const(:CONFIG) + const_set(:CONFIG, mkconfig) + } begin $extconf_h = nil ok &&= extract_makefile(makefile) @@ -181,7 +200,11 @@ def extmake(target) $ignore or $continue or return false end $compiled[target] = true - if $clean and $clean != true + if $clean + FileUtils.rm_f("mkmf.log") + if $clean != true + FileUtils.rm_f([makefile, $extconf_h || "extconf.h"]) + end File.unlink(makefile) rescue nil end if $static @@ -195,13 +218,21 @@ def extmake(target) $extpath |= $LIBPATH end ensure - Config::CONFIG["srcdir"] = $top_srcdir - Config::CONFIG["topdir"] = topdir - CONFIG["srcdir"] = mk_srcdir - CONFIG["topdir"] = mk_topdir - CONFIG.delete("hdrdir") - $hdrdir = $top_srcdir = top_srcdir + unless $ignore + Config.module_eval { + remove_const(:CONFIG) + const_set(:CONFIG, rbconfig0) + remove_const(:MAKEFILE_CONFIG) + const_set(:MAKEFILE_CONFIG, mkconfig0) + } + Object.class_eval { + remove_const(:CONFIG) + const_set(:CONFIG, mkconfig0) + } + end + $top_srcdir = top_srcdir $topdir = topdir + $hdrdir = hdrdir Dir.chdir dir end begin @@ -285,6 +316,7 @@ def parse_args() $continue = $mflags.set?(?k) if $extout $extout = '$(topdir)/'+$extout + Config::CONFIG["extout"] = CONFIG["extout"] = $extout $extout_prefix = $extout ? "$(extout)$(target_prefix)/" : "" $mflags << "extout=#$extout" << "extout_prefix=#$extout_prefix" end @@ -323,9 +355,9 @@ elsif sep = config_string('BUILD_FILE_SEPARATOR') else $ruby = '$(topdir)/miniruby' + EXEEXT end -$ruby << " -I'$(topdir)' -I'$(hdrdir)/lib'" +$ruby << " -I'$(topdir)' -I'$(top_srcdir)/lib'" $ruby << " -I'$(extout)/$(arch)' -I'$(extout)/common'" if $extout -$ruby << " -I'$(hdrdir)/ext' -rpurelib.rb" +$ruby << " -I'$(top_srcdir)/ext' -rpurelib.rb" $config_h = '$(topdir)/config.h' ENV["RUBYLIB"] = "-" ENV["RUBYOPT"] = "-rpurelib.rb" @@ -404,12 +436,14 @@ dir = Dir.pwd FileUtils::makedirs('ext') Dir::chdir('ext') +hdrdir = $hdrdir $hdrdir = $top_srcdir = relative_from(srcdir, $topdir = "..") exts.each do |d| extmake(d) or abort end -$hdrdir = $top_srcdir = srcdir +$top_srcdir = srcdir $topdir = "." +$hdrdir = hdrdir extinit = Struct.new(:c, :o) { def initialize(src) @@ -422,10 +456,11 @@ if $ignore if $clean Dir.rmdir('ext') rescue nil if $extout - FileUtils.rm_rf([extout+"/common", extout+"/include/ruby"]) + FileUtils.rm_rf([extout+"/common", extout+"/include/ruby", extout+"/rdoc"]) FileUtils.rm_rf(extout+"/"+CONFIG["arch"]) if $clean != true FileUtils.rm_rf(extout+"/include/"+CONFIG["arch"]) + FileUtils.rm_f($mflags.defined?("INSTALLED_LIST")||ENV["INSTALLED_LIST"]||".installed.list") Dir.rmdir(extout+"/include") rescue nil Dir.rmdir(extout) rescue nil end -- cgit v1.2.3