diff options
Diffstat (limited to 'template/exts.mk.tmpl')
-rw-r--r-- | template/exts.mk.tmpl | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/template/exts.mk.tmpl b/template/exts.mk.tmpl index c5f8478d76..ac6b280188 100644 --- a/template/exts.mk.tmpl +++ b/template/exts.mk.tmpl @@ -27,7 +27,7 @@ contpat = /(?>(?>[^\\\n]|\\.)*\\\n)*(?>[^\\\n]|\\.)*/ Dir.glob("{ext,.bundle/gems}/*/exts.mk") do |e| gem = e.start_with?(".bundle/gems/") s = File.read(e) - s.scan(/^(extensions|SUBMAKEOPTS|EXT[A-Z]+|MFLAGS|NOTE_[A-Z]+)[ \t]*=[ \t]*(#{contpat})$/o) do |n, v| + s.scan(/^(extensions|SUBMAKEOPTS|EXT[A-Z]+|MFLAGS|MESSAGE_(?:BEGIN|END)|NOTE_[A-Z]+)[ \t]*=[ \t]*(#{contpat})$/o) do |n, v| v.gsub!(/\\\n[ \t]*/, ' ') next if v.empty? n = "old_extensions" if n == "extensions" and !confexts.include?(e) @@ -69,6 +69,13 @@ Dir.glob("{ext,.bundle/gems}/*/exts.mk") do |e| end end deps.uniq! + +# NOTE: Only if extensions are configured as static and dynamic heterogeneously +# (e.g. --with-static-linked-ext=foo or ext/Setup can mix static and dynamic +# extensions), EXTOBJS may contain both extinit.o and dmyext.o. In such case, +# prefer extinit.o, which does actual Init_${ext} function calls for statically +# linked extensions, and drop dmyext.o, which does nothing but just to make the +# linker happy. if objs = macros["EXTOBJS"] and objs.any? {|e|e.start_with?("ext/extinit.")} objs.delete_if {|e|e.start_with?("dmyext.")} end @@ -154,8 +161,8 @@ ext/extinit.<%=objext%>: % end $(Q)<%= submake %><%=mflags%> V=$(V) $(@F) % if /^(dist|real)clean$/ =~ tgt - $(Q)$(RM) $(@D)/exts.mk - $(Q)$(RMDIRS) $(@D) + $(Q)$(RM) <%=t[%r[\A(?:\.[^/]+/)?(?:[^/]+/){2}]]%>exts.mk + -$(Q)$(RMDIRS) $(@D) % end % end % end |