* 2022-01-18 [ci skip]
[ruby-80x24.org.git] / template / configure-ext.mk.tmpl
blob6636a7759c544cb406bc57233f7586b51ac5f0aa
1 V = 0
2 V0 = $(V:0=)
3 Q1 = $(V:1=)
4 Q = $(Q1:0=@)
5 ECHO1 = $(V:1=@:)
6 ECHO = $(ECHO1:0=@echo)
8 <%
9 srcdir = miniruby = script_args = nil
10 opt = OptionParser.new do |o|
11   o.on('--srcdir=SRCDIR') {|v| srcdir = v}
12   o.on('--miniruby=MINIRUBY') {|v| miniruby = v}
13   o.on('--script-args=MINIRUBY') {|v| script_args = v}
14   o.order!(ARGV)
15 end
16 srcdir ||= File.dirname(File.dirname(__FILE__))
17 exts = {}
19   ["exts", "ext", "--extstatic $(EXTSTATIC)"],
20   ["gems", ".bundle/gems", "--no-extstatic"],
21 ].each do |t, d, o|
22   exts[t] = [o, Dir.glob("#{srcdir}/#{d}/*/").map {|n| n[(srcdir.size+1)..-2]}]
23 end
25 MINIRUBY = <%=miniruby%>
26 SCRIPT_ARGS = <%=script_args.gsub("#", "\\#")%>
27 EXTMK_ARGS = $(SCRIPT_ARGS) --gnumake=$(gnumake) --extflags="$(EXTLDFLAGS)" \
28            --make-flags="MINIRUBY='$(MINIRUBY)'"
30 all: exts # gems
31 exts:
32 gems:
34 % exts.each do |t, (o, dirs)|
35 %   dirs.each do |d|
36 %     next if Dir.glob("#{srcdir}/#{d}/**/extconf.rb").empty?
37 <%=t%>: <%=d%>/exts.mk
38 <%=d%>/exts.mk: FORCE
39         $(Q)$(MINIRUBY) $(srcdir)/ext/extmk.rb --make='$(MAKE)' \
40                 --command-output=$@ $(EXTMK_ARGS) <%=o%> \
41                 -- configure $(@D)
42 %   end
43 % end
45 .PHONY: FORCE all exts gems
46 FORCE: