summaryrefslogtreecommitdiff
path: root/enc/depend
blob: 3ab7e48ef1486d9d2cbc7698b30ab74df23e3f8b (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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
% deffile = (true if /\$\(DEFFILE\)/ =~ CONFIG["LINK_SO"])
% encs = Dir.open($srcdir) {|d| d.grep(/.+\.c\z/)} - BUILTIN_ENCS
% encs.each {|e| e.chomp!(".c")}
% alphanumeric_order = proc {|e| e.scan(/(\d+)|(\D+)/).map {|n,a| a||[n.size,n.to_i]}.flatten}
% encs = encs.sort_by(&alphanumeric_order)
% atrans = []
% trans = Dir.open($srcdir+"/trans") {|d|
%   d.select {|e|
%     if e != 'transdb.c' && e.chomp!('.c')
%       atrans << e if e.chomp!(".erb")
%       true
%     end
%   }
% }
% trans.uniq!
% atrans = atrans.sort_by(&alphanumeric_order)
% trans = trans.sort_by(&alphanumeric_order)
% trans.map! {|e| "trans/#{e}"}
% dependencies = encs + trans

VPATH = <%=%w[$(arch_hdrdir)/ruby $(hdrdir)/ruby $(srcdir) $(encsrcdir)].join(CONFIG["PATH_SEPARATOR"])%>
LIBPATH = <%=libpathflag($DEFLIBPATH)%>

ENCOBJS = <%=encs.map {|e|"enc/#{e}.$(OBJEXT)"}.join(" \\\n\t  ")%><%="\n" if encs.size>1%>
ENCDEFS = <%=encs.map {|e|"enc/#{e}.def"}.join(" \\\n\t  ") if deffile%><%="\n" if encs.size>1%>
ENCSOS = <%=encs.map {|e|"$(ENCSODIR)/#{e}.$(DLEXT)"}.join(" \\\n\t ")%>

TRANSCSRCS = <%=atrans.map {|e|"enc/trans/#{e}.c"}.join(" \\\n\t    ")%><%="\n" if trans.size>1%>
TRANSOBJS = <%=trans.map {|e|"enc/#{e}.$(OBJEXT)"}.join(" \\\n\t    ")%><%="\n" if trans.size>1%>
TRANSDEFS = <%=trans.map {|e|"enc/#{e}.def"}.join(" \\\n\t    ") if deffile%><%="\n" if trans.size>1%>
TRANSSOS = <%=trans.map {|e|"$(ENCSODIR)/#{e}.$(DLEXT)"}.join(" \\\n\t   ")%>

all: srcs $(ENCSOS) $(TRANSSOS)

srcs: $(TRANSCSRCS)

% COMPILE_RULES.each do |rule|
<%=  rule % %w[c $(OBJEXT)] %>
	<%=COMPILE_C%>

% end
% unless encs.empty? or trans.empty?

%   unless encs.empty?
$(ENCOBJS): regenc.h oniguruma.h config.h defines.h
%   end
%   unless trans.empty?
$(TRANSOBJS): ruby.h intern.h config.h defines.h missing.h encoding.h oniguruma.h st.h transcode_data.h
%   end
%   atrans.each do |e|
%     src = "#{e}.erb.c"
%     src = [src, *IO.read(File.join($srcdir, "trans", src)).scan(/^\s*require\s+[\'\"]([^\'\"]*)/).flatten.map{|c|c+".rb"}]

enc/trans/<%=e%>.c: <%= src.map {|e| "$(srcdir)/enc/trans/#{e}"}.join(" ")%> $(srcdir)/tool/transcode-tblgen.rb
	$(BASERUBY) "$(srcdir)/tool/transcode-tblgen.rb" -vo "$@" <%= src.map {|e| %'"$(srcdir)/enc/trans/#{e}"'}.join(" ")%>
%   end

% end
% link_so = LINK_SO.gsub(/\n/, "\n\t")
% link_so.gsub!(/(-(?:implib|pdb):\S+)-\$\(arch\)\./, '\1.')
% dependencies.each do |e|
%   obj = "enc/#{e}.$(OBJEXT)"
%   df = ("enc/#{e}.def" if deffile)
$(ENCSODIR)/<%=e%>.$(DLEXT): <%=obj%>
%   if df
	echo EXPORTS > <%=df%>
	echo <%=EXPORT_PREFIX%>Init_<%=File.basename(e)%> >> <%=df%>
%   end
	<%=link_so.sub(/\$\(OBJS\)/) {obj}.sub(/\$\(DEFFILE\)/) {df}.gsub(/-(?:implib|pdb):/) {|s|"#{s}enc/#{e.sub(/[^\/]+\z/, '')}"}%>

% end
% dependencies.each do |e|
enc/<%=e%>.$(OBJEXT): enc/<%=e%>.c
	<%=COMPILE_C.sub(/\$(?:<|\(<(?:.*)\))/) {"enc/#{e}.c"}%>
% end

enc/encdb.$(OBJEXT): encdb.h
enc/trans/transdb.$(OBJEXT): transdb.h

clean:
	@$(RM) $(ENCSOS) $(ENCDEFS) $(ENCOBJS) $(TRANSSOS) $(TRANSDEFS) $(TRANSOBJS) $(TRANSCSRCS)
% %w[$(ENCSODIR)/trans $(ENCSODIR) enc/trans enc].each do|dir|
%   dir = dir.gsub('/', File::ALT_SEPARATOR) if File::ALT_SEPARATOR
	@-rmdir <%=dir%>
% end