summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtool/expand-config.rb31
-rw-r--r--win32/Makefile.sub5
2 files changed, 31 insertions, 5 deletions
diff --git a/tool/expand-config.rb b/tool/expand-config.rb
index fb2edd0..c132d4a 100755
--- a/tool/expand-config.rb
+++ b/tool/expand-config.rb
@@ -1,7 +1,32 @@
-STDOUT.binmode
+#!./miniruby -s
+
+config = File.read(conffile = $config)
+config.sub!(/^(\s*)RUBY_VERSION\b.*(\sor\s*)$/, '\1true\2')
+rbconfig = Module.new {module_eval(config, conffile)}::RbConfig
+config = $expand ? rbconfig::CONFIG : rbconfig::MAKEFILE_CONFIG
+config["RUBY_RELEASE_DATE"] ||=
+ File.read(File.expand_path("../../version.h", __FILE__))[/^\s*#\s*define\s+RUBY_RELEASE_DATE\s+"(.*)"/, 1]
+
+while /\A(\w+)=(.*)/ =~ ARGV[0]
+ config[$1] = $2
+ ARGV.shift
+end
+
+re = /@(#{config.keys.map {|k| Regexp.quote(k)}.join('|')})@/
+
+if $output
+ output = open($output, "wb", $mode &&= $mode.oct)
+ output.chmod($mode) if $mode
+else
+ output = STDOUT
+ output.binmode
+end
+
ARGF.each do |line|
line.gsub!(/@([a-z_]\w*)@/i) {
- (RbConfig::MAKEFILE_CONFIG[$1] or "").gsub(/\$\((.+?)\)/, %Q[${\\1}])
+ s = config.fetch($1, $expand ? $& : "")
+ s = s.gsub(/\$\((.+?)\)/, %Q[${\\1}]) unless $expand
+ s
}
- puts line
+ output.puts line
end
diff --git a/win32/Makefile.sub b/win32/Makefile.sub
index ac41e7c..7d0fbf1 100644
--- a/win32/Makefile.sub
+++ b/win32/Makefile.sub
@@ -1075,8 +1075,9 @@ end
<<KEEP
$(ruby_pc): $(RBCONFIG)
- @$(MINIRUBY) -r./rbconfig $(srcdir)/tool/expand-config.rb \
- $(srcdir)/template/ruby.pc.in > $@
+ @$(BOOTSTRAPRUBY) $(srcdir)/tool/expand-config.rb \
+ -output=$@ -mode=$(INSTALL_DATA_MODE) -config=rbconfig.rb \
+ $(srcdir)/template/ruby.pc.in
{$(srcdir)/enc/trans}.c.obj:
$(ECHO) compiling $(<:\=/)