diff --git a/ext/-test-/win32/dln/depend b/ext/-test-/win32/dln/depend new file mode 100644 index 0000000000..712fefa29a --- /dev/null +++ b/ext/-test-/win32/dln/depend @@ -0,0 +1,9 @@ +$(TARGET_SO): $(DLNTESTLIB) + +$(DLNTESTLIB): $(topdir)/dlntest.dll + +$(topdir)/dlntest.dll: libdlntest.o libdlntest.def + $(ECHO) linking shared-object $(@F) + -$(Q)$(RM) $@ + -$(Q)$(MAKEDIRS) $(@D) + $(Q) $(DLNTEST_LDSHARED) diff --git a/ext/-test-/win32/dln/extconf.rb b/ext/-test-/win32/dln/extconf.rb index 57cee23b40..edc02ac3f2 100644 --- a/ext/-test-/win32/dln/extconf.rb +++ b/ext/-test-/win32/dln/extconf.rb @@ -1,37 +1,32 @@ if $mingw or $mswin + dlntestlib = "dlntest.#{$LIBEXT}" + $LOCAL_LIBS << " #{dlntestlib}" + $srcs = ["dlntest.c"] $objs = ["dlntest.o"] testdll = "$(topdir)/dlntest.dll" $cleanfiles << testdll $cleanfiles << "dlntest.#{$LIBEXT}" config_string('cleanobjs') {|t| $cleanfiles.concat(t.gsub(/\$\*/, 'dlntest').split)} - create_makefile("-test-/win32/dln") - m = File.read("Makefile") - dlntestlib = "dlntest.#{$LIBEXT}" - m.sub!(/^OBJS =.*/) {"#{$&} #{dlntestlib}"} - FileUtils.rm_f(RbConfig.expand(testdll.dup)) - open("Makefile", "wb") do |mf| - mf.puts m, "\n" - sodir = $extout ? "$(RUBYARCHDIR)/" : '' - mf.print "#{sodir}$(DLLIB): #{dlntestlib}" - mf.puts - mf.puts "#{dlntestlib}: $(topdir)/dlntest.dll" - mf.puts + create_makefile("-test-/win32/dln") do |m| + m << "\n""DLNTESTLIB = #{dlntestlib}\n" if $mingw - mf.puts "$(topdir)/dlntest.dll: DEFFILE := $(srcdir)/libdlntest.def" - mf.puts "$(topdir)/dlntest.dll: DLDFLAGS += -Wl,--out-implib,#{dlntestlib}" + m << "\n" + m << "$(topdir)/dlntest.dll: DEFFILE := $(srcdir)/libdlntest.def\n" + m << "$(topdir)/dlntest.dll: DLDFLAGS += -Wl,--out-implib,$(DLNTESTLIB)\n" end - mf.puts depend_rules("$(topdir)/dlntest.dll: libdlntest.o libdlntest.def") - mf.puts "\t$(ECHO) linking shared-object $(@F)\n" - mf.print "\t-$(Q)$(RM) $@\n" - mf.print "\t-$(Q)$(MAKEDIRS) $(@D)\n" if $extout - link_so = LINK_SO.gsub(/^/, "\t$(Q) ") + m + end + m = File.read("Makefile") + m.sub!(/(.*)\$\(DLNTEST_LDSHARED\)$/) do + pre = $1 + link_so = LINK_SO.gsub(/^/) {pre} link_so.sub!(/\$\(LOCAL_LIBS\)/, '') link_so.gsub!(/-\$\(arch\)/, '') link_so.gsub!(/:.so=/, ':.dll=') link_so.sub!(/\$\(OBJS\)/, "libdlntest.#{$OBJEXT}") link_so.sub!(/\$\(DEFFILE\)/, "$(srcdir)/libdlntest.def") - mf.puts link_so - mf.puts - end + link_so + end and File.binwrite("Makefile", m) + FileUtils.rm_f(RbConfig.expand(testdll.dup)) end