summaryrefslogtreecommitdiff
path: root/enc/depend
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-12-24 03:49:56 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-12-24 03:49:56 +0000
commit8d292a08dfb79ec9a55673eb570f1c5128cc47ec (patch)
tree5116fc0a662c3359a13e56336fed988a14ca9270 /enc/depend
parent7c45c615819e9d8bb8fb947ec972e48cd45d561d (diff)
* Makefile.in, configure.in, lib/mkmf.rb, */Makefile.sub: specify
compiled output file name explicitly. * enc/Makefile.in, enc/depend: now makes compiler to put generated files under directories corresnponding to the each source. enc/trans supported. * enc/make_encmake.rb: evaluates depend file before Makefile.in so that the former can influence to CONFIG. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14573 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'enc/depend')
-rw-r--r--enc/depend67
1 files changed, 38 insertions, 29 deletions
diff --git a/enc/depend b/enc/depend
index 5c81a7b1e2..099d827ed5 100644
--- a/enc/depend
+++ b/enc/depend
@@ -1,54 +1,63 @@
+% deffile = (true if /\$\(DEFFILE\)/ =~ CONFIG["LINK_SO"])
% encs = Dir.open($srcdir) {|d| d.grep(/.+\.c\z/)} - BUILTIN_ENCS
% encs.each {|e| e.chomp!(".c")}
-% encs = encs.sort_by {|e| e.split(/(\d+)/).map {|n| Integer(n) rescue n}}
-
-VPATH = <%=%w[$(arch_hdrdir)/ruby $(hdrdir)/ruby $(top_srcdir) $(srcdir)].join(CONFIG["PATH_SEPARATOR"])%>
+% alphanumeric_order = proc {|e| e.split(/(\d+)/).map {|n| Integer(n) rescue n}}
+% encs = encs.sort_by(&alphanumeric_order)
+% trans = Dir.open($srcdir+"/trans") {|d| d.select {|e| e.chomp!('.c')}}
+% 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|"#{e}.$(OBJEXT)"}.join(" \\\n\t ")%><%="\n" if encs.size>1%>
-ENCDEFS = <%=encs.map {|e|"#{e}.def"}.join(" \\\n\t ") if DEFFILE%><%="\n" if encs.size>1%>
+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 ")%>
-all: $(ENCSOS)
+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: $(ENCSOS) $(TRANSSOS)
% COMPILE_RULES.each do |rule|
<%= rule % %w[c $(OBJEXT)] %>
<%=COMPILE_C%>
% end
-% unless encs.empty?
+% unless encs.empty? or trans.empty?
+% unless encs.empty?
$(ENCOBJS): regenc.h oniguruma.h config.h defines.h
-
-% encs.each do |e|
-<%=e%>.so: $(ENCSODIR)/<%=e%>.$(DLEXT)
-% end
+% end
+% unless trans.empty?
+$(TRANSOBJS): ruby.h intern.h config.h defines.h transcode_data.h
+% end
% end
% link_so = LINK_SO.gsub(/\n/, "\n\t")
-% encs.each do |e|
-% deps = "#{e}.$(OBJEXT)"
-% deps << " #{e}-$(arch).def" if DEFFILE
-$(ENCSODIR)/<%=e%>.$(DLEXT): <%=deps%>
- <%=link_so.sub(/\$\(OBJS\)/, deps)%>
-
-% end
-% if DEFFILE
-% encs.each do |e|
-<%=e%>-$(arch).def: enc.mk
- echo EXPORTS > $@
- echo <%=EXPORT_PREFIX%>Init_<%=e%> >> $@
-
+% 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
-% encs.each do |e|
-<%=e%>.$(OBJEXT): <%=e%>.c
+% dependencies.each do |e|
+enc/<%=e%>.$(OBJEXT): $(srcdir)/enc/<%=e%>.c
+ <%=COMPILE_C.sub(/\$\(<(?:.*)\)/) {"$(srcdir)/enc/#{e}.c"}%>
% end
clean:
$(RM) $(ENCSOS)
$(RM) $(ENCDEFS)
$(RM) $(ENCOBJS)
-
-distclean: clean
- $(RM) enc.mk
+ $(RM) $(TRANSSOS)
+ $(RM) $(TRANSDEFS)
+ $(RM) $(TRANSOBJS)