From 49775b88e9cc4381f6e43e4465c7003bdba2b228 Mon Sep 17 00:00:00 2001 From: nobu Date: Sat, 5 Nov 2005 04:43:46 +0000 Subject: * configure.in, cygwin/GNUmakefile.in (mingw): use def file to alias symbols. [ruby-dev:27532] * bcc32/mkexports.rb, win32/mkexports.rb: make aliases in DLL. * win32/win32.c, win32/win32.h: replace symbols only when RUBY_EXPORT is defined. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9502 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- bcc32/mkexports.rb | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-) (limited to 'bcc32/mkexports.rb') diff --git a/bcc32/mkexports.rb b/bcc32/mkexports.rb index e34b441e2f..1b498f8515 100644 --- a/bcc32/mkexports.rb +++ b/bcc32/mkexports.rb @@ -1,25 +1,24 @@ #!./miniruby -s -SYM = {} -STDIN.reopen(open("nul")) -ARGV.each do |obj| - IO.foreach("|tdump -q -oiPUBDEF -oiPUBD32 #{obj.tr('/', '\\')}") do |l| - next unless /(?:PUBDEF|PUBD32)/ =~ l - SYM[$1] = true if /'(.*?)'/ =~ l - end -end +$:.unshift(File.expand_path("../..", __FILE__)) +require 'win32/mkexports' -exports = [] -if $name - exports << "Name " + $name -elsif $library - exports << "Library " + $library -end -exports << "Description " + $description.dump if $description -exports << "EXPORTS" << SYM.keys.sort +class Exports::Bcc < Exports + Forwards = /^rb_w32_(\w+)/ -if $output - open($output, 'w') {|f| f.puts exports.join("\n")} -else - puts exports.join("\n") + def forwarding(internal, export) + internal[/\A_?/]+export + end + + def each_export(objs) + objs.each do |obj| + opt = /\.(?:so|dll)\z/i =~ obj ? "-ee" : "-oiPUBDEF -oiPUBD32" + IO.foreach("|tdump -q #{opt} #{obj.tr('/', '\\')} < nul") do |l| + next unless /(?:PUBDEF|PUBD32|EXPORT)/ =~ l + yield $1 if /'(.*?)'/ =~ l + end + end + yield "_strcasecmp", "_stricmp" + yield "_strncasecmp", "_strnicmp" + end end -- cgit v1.2.3