summaryrefslogtreecommitdiff
path: root/mkconfig.rb
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-04-09 18:01:26 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-04-09 18:01:26 +0000
commit8191f129b5607d4b4a2ae71625eac1ebc8d98ef0 (patch)
tree2c52f83aa140b6b4b2983217eb1184d975d4f799 /mkconfig.rb
parent7bce5959703d814e62f0edc7408d157fca49d38b (diff)
* instruby.rb, mkconfig.rb: deal with --program-transform-name
better. now supports s, y commands and single addressing. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23165 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'mkconfig.rb')
-rwxr-xr-xmkconfig.rb33
1 files changed, 27 insertions, 6 deletions
diff --git a/mkconfig.rb b/mkconfig.rb
index d715cc40d9..2a1ec927f2 100755
--- a/mkconfig.rb
+++ b/mkconfig.rb
@@ -83,12 +83,33 @@ File.foreach "config.status" do |line|
when /^\$\{ac_\w+\}$/; next
when /^\$ac_\w+$/; next
end
- if /^program_transform_name$/ =~ name and /^s(\\?.)(.*)\1$/ =~ val
- next if $install_name
- sep = %r"#{Regexp.quote($1)}"
- ptn = $2.gsub(/\$\$/, '$').split(sep, 2)
- name = "ruby_install_name"
- val = "ruby".sub(/#{ptn[0]}/, ptn[1])
+ if /^program_transform_name$/ =~ name
+ val.sub!(/\As(\W)(?:\^|\$\$)\1\1(;|\z)/, '')
+ if val.empty?
+ $install_name ||= "ruby"
+ next
+ end
+ unless $install_name
+ $install_name = "ruby"
+ val.gsub!(/\$\$/, '$')
+ val.scan(%r[\G[\s;]*(/(?:\\.|[^/])*/)?([sy])(\W)((?:\\.|(?!\3).)*)\3((?:\\.|(?!\3).)*)\3([gi]*)]) do
+ |addr, cmd, sep, pat, rep, opt|
+ if addr
+ Regexp.new(addr[/\A\/(.*)\/\z/, 1]) =~ $install_name or next
+ end
+ case cmd
+ when 's'
+ pat = Regexp.new(pat, opt.include?('i'))
+ if opt.include?('g')
+ $install_name.gsub!(pat, rep)
+ else
+ $install_name.sub!(pat, rep)
+ end
+ when 'y'
+ $install_name.tr!(Regexp.quote(pat), rep)
+ end
+ end
+ end
end
val.gsub!(/ +(?!-)/, "=") if name == "configure_args" && /mswin32/ =~ RUBY_PLATFORM
val = val.gsub(/\$(?:\$|\{?(\w+)\}?)/) {$1 ? "$(#{$1})" : $&}.dump