summaryrefslogtreecommitdiff
path: root/template/exts.mk.tmpl
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2020-06-19 15:35:14 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2020-06-19 15:35:14 +0900
commitf3e081c6b6f877c498ce9203429ee4fd7e812837 (patch)
treec1d52d5798d9f65680267e65ffc8bcb99bf0098c /template/exts.mk.tmpl
parentaa21a775a652098d7c27ab86e365d205314685fd (diff)
Build configured extension libraries only
Consider the libraries, which remain exts.mk but not listed in ext/configure-ext.mk, removed.
Diffstat (limited to 'template/exts.mk.tmpl')
-rw-r--r--template/exts.mk.tmpl12
1 files changed, 11 insertions, 1 deletions
diff --git a/template/exts.mk.tmpl b/template/exts.mk.tmpl
index 521b9b2708..5a72912839 100644
--- a/template/exts.mk.tmpl
+++ b/template/exts.mk.tmpl
@@ -12,10 +12,16 @@ notes = {}
rubies = []
exeext = RbConfig::CONFIG['EXEEXT']
gnumake = false
+confexts = nil
opt = OptionParser.new do |o|
o.on('--gnumake=BOOL') {|v| gnumake = v == 'yes'}
+ o.on('--configure-exts=FILE') {|v| confexts = v}
o.order!(ARGV)
end
+confexts &&= File.read(confexts).scan(/^exts: (.*\.mk)/).flatten rescue nil
+confexts ||= []
+macros["old_extensions"] = []
+
contpat = /(?>(?>[^\\\n]|\\.)*\\\n)*(?>[^\\\n]|\\.)*/
Dir.glob("{ext,.bundle/gems}/*/exts.mk") do |e|
gem = /\Agems(?=\/)/ =~ e
@@ -24,6 +30,7 @@ Dir.glob("{ext,.bundle/gems}/*/exts.mk") do |e|
v.gsub!(/\\\n[ \t]*/, ' ')
next if v.empty?
next if gem and n != "extensions"
+ n = "old_extensions" if n == "extensions" and !confexts.include?(e)
v = v.split
m = macros[n] ||= []
case n
@@ -128,7 +135,8 @@ libencs:
ext/extinit.<%=objext%>:
$(Q)$(MAKE)<%=mflags%> V=$(V) EXTINITS="$(EXTINITS)" $@
-% exts = macros["extensions"].map {|e|e.chomp("/.")}.sort
+% exts = (macros["extensions"] + macros["old_extensions"])
+% exts.map! {|e|e.chomp("/.")}.sort
% targets.each do |tgt|
% exts.each do |d|
% t = "#{d}/#{tgt}"
@@ -158,3 +166,5 @@ extso:
<%= k %>:<%= d.join(' ') %>
<%= n.join("") %>
% end
+
+remove-old-extensions: $(old_extensions:/.=/distclean)