summaryrefslogtreecommitdiff
path: root/template
diff options
context:
space:
mode:
authorNobuyoshi Nakada <[email protected]>2024-09-11 14:13:30 +0900
committerNobuyoshi Nakada <[email protected]>2024-09-11 14:13:30 +0900
commitf7ffa76377ead1760dcb0a84db282facb461ecd7 ()
treea4a6cb937a7e4d960c42f3a4f4271e3558a7145d /template
parentcb576c13fb15a80fd77b81071cc3a68a340ecb33 (diff)
Clean up clean only extensions
The clean targets should clean up all extensions, including those have nothing to build for any reason, e.g., platform requirements etc.
Notes: Merged: https://.com/ruby/ruby/pull/11588
-rw-r--r--template/exts.mk.tmpl41
1 files changed, 26 insertions, 15 deletions
@@ -22,14 +22,19 @@ end
confexts &&= File.read(confexts).scan(/^(?:ext|gem)s: (.*\.mk)/).flatten rescue nil
confexts ||= []
macros["old_extensions"] = []
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|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)
v = v.split
m = macros[n] ||= []
@@ -69,6 +74,10 @@ 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
@@ -100,7 +109,6 @@ def self.column
@erbout[/^.*\z/].scan(/\t|([^\t]+)/) {|s,| w += (s ? s.size : 8 - w % 8)}
w
end
-targets = %w[all static install install-so install-rb clean distclean realclean]
objext = RbConfig::CONFIG["OBJEXT"]
if gnumake
submake = "$(MAKE) -C $(@D)"
@@ -145,23 +153,26 @@ ext/extinit.<%=objext%>:
% exts = (macros["extensions"] + macros["old_extensions"])
% exts.map! {|e|e.chomp("/.")}.sort
-% targets.each do |tgt|
% exts.each do |d|
-% t = "#{d}/#{tgt}"
-% if /^(dist|real)?clean$/ =~ tgt
-% deps = exts.select {|e|e.start_with?("#{d}/")}.map {|e|"#{e}/#{tgt}"}
-% pd = ' ' + deps.join(' ') unless deps.empty?
-% else
-% pext = File.dirname(d)
-% pd = " #{pext}/#{tgt}" if exts.include?(pext)
-% end
-<%=t%>:<%=pd%>
-% if /^(dist|real)clean$/ =~ tgt
$(ECHO) $(@F)ing $(@D)
% end
$(Q)<%= submake %><%=mflags%> V=$(V) $(@F)
-% if /^(dist|real)clean$/ =~ tgt
- $(Q)$(RM) <%=t[%r[\A(?:\.[^/]+/)?(?:[^/]+/){2}]]%>exts.mk
-$(Q)$(RMDIRS) $(@D)
% end
% end