aboutsummaryrefslogtreecommitdiffstats
path: root/lib/mkmf.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/mkmf.rb')
-rw-r--r--lib/mkmf.rb43
1 files changed, 20 insertions, 23 deletions
diff --git a/lib/mkmf.rb b/lib/mkmf.rb
index 080aa051b1..359a7418b1 100644
--- a/lib/mkmf.rb
+++ b/lib/mkmf.rb
@@ -797,30 +797,19 @@ def create_makefile(target, srcprefix = nil)
target = nil if $objs == ""
if target and EXPORT_PREFIX
- origdef = target + '.def'
- deffile = EXPORT_PREFIX + origdef
- unless File.exist? deffile
- if File.exist? File.join(srcdir, deffile)
- deffile = File.join(srcdir, deffile)
- elsif !EXPORT_PREFIX.empty? and File.exist?(origdef = File.join(srcdir, origdef))
- open(origdef) do |d|
- open(deffile, 'wb') do |f|
- d.each do |l|
- f.print l
- break if /^EXPORTS$/i =~ l
- end
- d.each do |l|
- f.print l.sub(/\S/, EXPORT_PREFIX+'\&')
- end
- end
- end
- else
- open(deffile, 'wb') do |f|
- f.print "EXPORTS\n", EXPORT_PREFIX, "Init_", target, "\n"
- end
+ if File.exist?(File.join(srcdir, target + '.def'))
+ deffile = "$(srcdir)/$(TARGET).def"
+ unless EXPORT_PREFIX.empty?
+ makedef = %{-pe "sub!(/^(?=\\w)/,'#{EXPORT_PREFIX}') unless 1../^EXPORTS$/i"}
end
+ else
+ makedef = %{-e "puts 'EXPORTS', '#{EXPORT_PREFIX}Init_$(TARGET)'"}
+ end
+ if makedef
+ $distcleanfiles << '$(DEFFILE)'
+ origdef = deffile
+ deffile = "$(TARGET)-$(arch).def"
end
- $distcleanfiles << deffile unless deffile == origdef
end
libpath = libpathflag(libpath)
@@ -914,7 +903,11 @@ static: $(STATIC_LIB)
end
end
- mfile.print "$(DLLIB): $(OBJS)\n\t"
+ if makedef
+ mfile.print "$(DLLIB): $(OBJS) $(DEFFILE)\n\t"
+ else
+ mfile.print "$(DLLIB): $(OBJS)\n\t"
+ end
mfile.print "@-$(RM) $@\n\t"
mfile.print "@-$(RM) $(TARGET).lib\n\t" if $mswin
mfile.print LINK_SO, "\n\n"
@@ -924,6 +917,10 @@ static: $(STATIC_LIB)
mfile.print "\n\t@-#{ranlib} $(DLLIB) 2> /dev/null || true"
end
mfile.print "\n\n"
+ if makedef
+ mfile.print "$(DEFFILE): #{origdef}\n"
+ mfile.print "\t$(RUBY) #{makedef} #{origdef} > $@\n\n"
+ end
depend = File.join(srcdir, "depend")
if File.exist?(depend)