summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-11-10 23:22:03 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-11-10 23:22:03 +0000
commitbf203228cfa6003b79f363161ccda944d01f89d9 (patch)
treed070717cd1e7b08a30947d8d5643f35a1cdf2bc9
parent0535fc9cac00ca44938713ebc0a849272baf9b8b (diff)
* Makefile.in (OUTFLAG): keep trailing spaces. [ruby-dev:27666]
* mkconfig.rb: substitution refereces added. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9525 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog6
-rw-r--r--Makefile.in3
-rw-r--r--mkconfig.rb37
3 files changed, 29 insertions, 17 deletions
diff --git a/ChangeLog b/ChangeLog
index f183534dc9..e267e6dc0e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Fri Nov 11 08:20:56 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (OUTFLAG): keep trailing spaces. [ruby-dev:27666]
+
+ * mkconfig.rb: substitution refereces added.
+
Fri Nov 11 07:39:49 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* configure.in: undef HAVE_LINK on BeOS. (link(2) always returns
diff --git a/Makefile.in b/Makefile.in
index ee0a1275e9..6dfeb1c38d 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -30,7 +30,8 @@ RDOCTARGET = @RDOCTARGET@
EXTOUT = @EXTOUT@
RIDATADIR = $(DESTDIR)$(datadir)/ri/$(MAJOR).$(MINOR)/system
-OUTFLAG = -o
+empty =
+OUTFLAG = @OUTFLAG@$(empty)
CFLAGS = @CFLAGS@ @XCFLAGS@ @ARCH_FLAG@
CPPFLAGS = -I. -I$(srcdir) @CPPFLAGS@
LDFLAGS = @STATIC@ $(CFLAGS) @LDFLAGS@
diff --git a/mkconfig.rb b/mkconfig.rb
index 4a8062e9fa..0060b608b3 100644
--- a/mkconfig.rb
+++ b/mkconfig.rb
@@ -16,10 +16,10 @@ unless File.directory?(dir = File.dirname(rbconfig_rb))
end
version = RUBY_VERSION
-rbconfig_rb_tmp = rbconfig_rb + '.tmp'
-config = open(rbconfig_rb_tmp, "w")
-$orgout = $stdout.dup
-$stdout.reopen(config)
+def (config = "").write(arg)
+ concat(arg.to_s)
+end
+$stdout = config
fast = {'prefix'=>TRUE, 'ruby_install_name'=>TRUE, 'INSTALL'=>TRUE, 'EXEEXT'=>TRUE}
print %[
@@ -120,10 +120,13 @@ print <<EOS
val.gsub!(/\\$\\$|\\$\\(([^()]+)\\)|\\$\\{([^{}]+)\\}/) do |var|
if !(v = $1 || $2)
'$'
- elsif key = config[v]
+ elsif key = config[v = v[/\\A[^:]+(?=(?::(.*?)=(.*))?\\z)/]]
+ pat, sub = $1, $2
config[v] = false
Config::expand(key, config)
config[v] = key
+ key = key.gsub(/\#{Regexp.quote(pat)}(?=\\s|\\z)/n) {sub} if pat
+ key
else
var
end
@@ -136,17 +139,19 @@ print <<EOS
end
CROSS_COMPILING = nil unless defined? CROSS_COMPILING
EOS
-$stdout.flush
-$stdout.reopen($orgout)
-config.close
-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)
+
+$stdout = STDOUT
+mode = IO::RDWR|IO::CREAT
+mode |= IO::BINARY if defined?(IO::BINARY)
+open(rbconfig_rb, mode) do |f|
+ if $timestamp and f.stat.size == config.size and f.read == config
+ puts "#{rbconfig_rb} unchanged"
+ else
+ puts "#{rbconfig_rb} updated"
+ f.rewind
+ f.truncate(0)
+ f.print(config)
+ end
end
if String === $timestamp
FileUtils.touch($timestamp)