summaryrefslogtreecommitdiff
path: root/template/configure-ext.mk.tmpl
blob: 8ba6b963e3ec32911af1c98d688bb4c3dca7fd7a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
V = 0
V0 = $(V:0=)
Q1 = $(V:1=)
Q = $(Q1:0=@)
ECHO1 = $(V:1=@:)
ECHO = $(ECHO1:0=@echo)

<%
srcdir = miniruby = script_args = nil
opt = OptionParser.new do |o|
  o.on('--srcdir=SRCDIR') {|v| srcdir = v}
  o.on('--miniruby=MINIRUBY') {|v| miniruby = v}
  o.on('--script-args=MINIRUBY') {|v| script_args = v}
  o.order!(ARGV)
end
srcdir ||= File.dirname(File.dirname(__FILE__))
exts = {}
[
  ["exts", "ext", "--extstatic $(EXTSTATIC)"],
  ["gems", ".bundle/gems", "--no-extstatic"],
].each do |t, d, o|
  exts[t] = [o, Dir.glob("#{srcdir}/#{d}/*/").map {|n| n[(srcdir.size+1)..-2]}]
end
%>
MINIRUBY = <%=miniruby%>
SCRIPT_ARGS = <%=script_args.gsub("#", "\\#")%>
EXTMK_ARGS = $(SCRIPT_ARGS) --gnumake=$(gnumake) --extflags="$(EXTLDFLAGS)" \
	   --make-flags="MINIRUBY='$(MINIRUBY)'"

all: exts gems
exts:
gems:

% exts.each do |t, (o, dirs)|
%   dirs.each do |d|
%     next if Dir.glob("#{srcdir}/#{d}/**/extconf.rb").empty?
<%=t%>: <%=d%>/exts.mk
<%=d%>/exts.mk: FORCE
	$(Q)$(MINIRUBY) $(srcdir)/ext/extmk.rb --make='$(MAKE)' \
		--command-output=$@ $(EXTMK_ARGS) <%=o%> \
		-- configure $(@D)
%   end
% end

.PHONY: FORCE all exts gems
FORCE: