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: [ "--extstatic $(EXTSTATIC)", Dir.glob("ext/**/extconf.rb", base: srcdir).map do |d| d[%r[\Aext/[^/]+]] end.uniq ], gems: [ "--no-extstatic", Dir.glob(".bundle/gems/**/extconf.rb", base: srcdir).grep_v(/test/) do |d| d[%r[\A\.bundle/gems/[^/]+]] end.uniq ], } %> MINIRUBY = <%=miniruby%> SCRIPT_ARGS = <%=script_args.gsub("#", "\\#").gsub(/\A|[\s"']\K--jobserver-auth=[^\s'"]*/, "")%> 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| <%=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: