summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--ext/extmk.rb19
-rw-r--r--mkconfig.rb31
3 files changed, 35 insertions, 20 deletions
diff --git a/ChangeLog b/ChangeLog
index ba1676b35f..1e56054594 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,4 @@
-Sun Feb 6 23:50:36 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Feb 7 00:13:38 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/socket/extconf.rb: check if getaddrinfo() works fine only when
wide-getaddrinfo option is not given. fixed: [ruby-dev:25422]
@@ -19,6 +19,9 @@ Sun Feb 6 23:50:36 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/mkmf.rb (dir_config): accept arrays of directory names as
default values.
+ * mkconfig.rb: no longer embed srcdir and compile_dir into
+ rbconfig.rb.
+
Sun Feb 6 19:23:01 2005 NAKAMURA Usaku <usa@ruby-lang.org>
* eval.c (stack_extend): add prototype because VC++8 doesn't
diff --git a/ext/extmk.rb b/ext/extmk.rb
index 62d1cf75af..88f5028a39 100644
--- a/ext/extmk.rb
+++ b/ext/extmk.rb
@@ -36,6 +36,14 @@ def sysquote(x)
@quote ? x.quote : x
end
+def relative_from(path, base)
+ if File.expand_path(path) == File.expand_path(path, base)
+ path
+ else
+ File.join(base, path)
+ end
+end
+
def extmake(target)
print "#{$message} #{target}\n"
$stdout.flush
@@ -58,9 +66,7 @@ def extmake(target)
top_srcdir = $top_srcdir
topdir = $topdir
prefix = "../" * (target.count("/")+1)
- if File.expand_path(top_srcdir) != File.expand_path(top_srcdir, dir)
- $hdrdir = $top_srcdir = prefix + top_srcdir
- end
+ $hdrdir = $top_srcdir = relative_from(top_srcdir, prefix)
$topdir = prefix + $topdir
$target = target
$mdir = target
@@ -228,10 +234,7 @@ dir = Dir.pwd
FileUtils::makedirs('ext')
Dir::chdir('ext')
-if File.expand_path(srcdir) != File.expand_path(srcdir, dir)
- $hdrdir = $top_srcdir = "../" + srcdir
-end
-$topdir = ".."
+$hdrdir = $top_srcdir = relative_from(srcdir, $topdir = "..")
ext_prefix = "#{$top_srcdir}/ext"
Dir.glob("#{ext_prefix}/*/**/extconf.rb") do |d|
d = File.dirname(d)
@@ -295,7 +298,7 @@ SRC
end
rubies = []
%w[RUBY RUBYW].each {|r|
- config_string(r+"_INSTALL_NAME") {|r| rubies << r+EXEEXT}
+ config_string(r+"_INSTALL_NAME", Config::CONFIG) {|r| rubies << r+EXEEXT}
}
Dir.chdir ".."
diff --git a/mkconfig.rb b/mkconfig.rb
index b0abee35ad..e743aa803d 100644
--- a/mkconfig.rb
+++ b/mkconfig.rb
@@ -1,16 +1,19 @@
#!./miniruby -s
# avoid warnings with -d.
-$srcdir ||= nil
$install_name ||= nil
$so_name ||= nil
-require File.dirname($0)+"/lib/ftools"
+srcdir = File.dirname(__FILE__)
+$:.replace [srcdir+"/lib", "."]
+
+require "fileutils"
mkconfig = File.basename($0)
rbconfig_rb = ARGV[0] || 'rbconfig.rb'
-srcdir = $srcdir || '.'
-File.makedirs(File.dirname(rbconfig_rb), true)
+unless File.directory?(dir = File.dirname(rbconfig_rb))
+ FileUtils.makedirs(dir, :verbose => true)
+end
version = RUBY_VERSION
rbconfig_rb_tmp = rbconfig_rb + '.tmp'
@@ -52,17 +55,12 @@ File.foreach "config.status" do |line|
v_others << v
end
has_version = true if name == "MAJOR"
- elsif /^(?:ac_given_)?srcdir=(.*)/ =~ line
- srcdir = $1.strip
elsif /^ac_given_INSTALL=(.*)/ =~ line
v_fast << " CONFIG[\"INSTALL\"] = " + $1 + "\n"
end
# break if /^CEOF/
end
-srcdir = File.expand_path(srcdir)
-v_fast.unshift(" CONFIG[\"srcdir\"] = \"" + srcdir + "\"\n")
-
v_fast.collect! do |x|
if /"prefix"/ === x
x.sub(/= (.*)/, '= (TOPDIR || DESTDIR + \1)')
@@ -111,7 +109,7 @@ print <<EOS
CONFIG["archdir"] = "$(rubylibdir)/$(arch)"
CONFIG["sitelibdir"] = "$(sitedir)/$(ruby_version)"
CONFIG["sitearchdir"] = "$(sitelibdir)/$(sitearch)"
- CONFIG["compile_dir"] = "#{Dir.pwd}"
+ CONFIG["topdir"] = File.dirname(__FILE__)
MAKEFILE_CONFIG = {}
CONFIG.each{|k,v| MAKEFILE_CONFIG[k] = v.dup}
def Config::expand(val, config = CONFIG)
@@ -137,6 +135,17 @@ EOS
$stdout.flush
$stdout.reopen($orgout)
config.close
-File.rename(rbconfig_rb_tmp, rbconfig_rb)
+if $timestamp and
+ File.exist?(rbconfig_rb) and
+ FileUtils.compare_file(rbconfig_rb, rbconfig_rb_tmp)
+ puts "#{rbconfig_rb} unchanged"
+ File.unlink(rbconfig_rb_tmp)
+else
+ puts "#{rbconfig_rb} updated"
+ File.rename(rbconfig_rb_tmp, rbconfig_rb)
+end
+if String === $timestamp
+ FileUtils.touch($timestamp)
+end
# vi:set sw=2: