ruby-changes:23683
From: nobu <ko1@a...>
Date: Mon, 21 May 2012 12:12:01 +0900 (JST)
Subject: [ruby-changes:23683] nobu:r35734 (trunk): enc: fix dependencies
nobu 2012-05-21 12:11:28 +0900 (Mon, 21 May 2012) New Revision: 35734 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=35734 Log: enc: fix dependencies * enc/depend (ENCOBJS): add dependencies. * enc/make_encmake.rb (target_encodings): extract dependencies. Modified files: trunk/ChangeLog trunk/enc/depend trunk/enc/make_encmake.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 35733) +++ ChangeLog (revision 35734) @@ -1,3 +1,9 @@ +Mon May 21 12:11:25 2012 Nobuyoshi Nakada <nobu@r...> + + * enc/depend (ENCOBJS): add dependencies. + + * enc/make_encmake.rb (target_encodings): extract dependencies. + Mon May 21 11:26:17 2012 NARUSE, Yui <naruse@r...> * lib/net/ftp.rb (Net::FTP#transfercmd): rescue shutdown. Index: enc/make_encmake.rb =================================================================== --- enc/make_encmake.rb (revision 35733) +++ enc/make_encmake.rb (revision 35734) @@ -48,8 +48,32 @@ encs.reject! {|e| !ENC_PATTERNS.any? {|p| File.fnmatch?(p, e)}} if !ENC_PATTERNS.empty? encs.reject! {|e| NOENC_PATTERNS.any? {|p| File.fnmatch?(p, e)}} encs = encs.sort_by(&ALPHANUMERIC_ORDER) - encs.unshift(encs.delete("encdb")) - return encs + deps = Hash.new {[]} + inc_srcs = Hash.new {[]} + default_deps = %w[regenc.h oniguruma.h config.h defines.h] + db = encs.delete("encdb") + encs.each do |e| + File.foreach("#$srcdir/#{e}.c") do |l| + if /^\s*#\s*include\s+(?:"([^\"]+)"|<(ruby\/\sw+.h)>)/ =~ l + n = $1 || $2 + if /\.c$/ =~ n + inc_srcs[e] <<= $` + n = "enc/#{n}" + end + deps[e] <<= n unless default_deps.include?(n) + end + end + end + class << inc_srcs; self; end.class_eval do + define_method(:expand) do |d| + d.map {|n| deps[n] | self.expand(self[n])}.flatten + end + end + inc_srcs.each do |e, d| + deps[e].concat(inc_srcs.expand(d)) + end + encs.unshift(db) + return encs, deps end def target_transcoders @@ -79,7 +103,7 @@ # Constants that "depend" needs. MODULE_TYPE = module_type -ENCS = target_encodings +ENCS, ENC_DEPS = target_encodings ATRANS, TRANS = target_transcoders if File.exist?(depend = File.join($srcdir, "depend")) Index: enc/depend =================================================================== --- enc/depend (revision 35733) +++ enc/depend (revision 35734) @@ -84,6 +84,9 @@ % unless ENCS.empty? $(ENCOBJS): regenc.h oniguruma.h config.h defines.h % end +% ENC_DEPS.each do |e, deps| +enc/<%=e%>.$(OBJEXT): <%=deps.map {|n| rule_subst % n}.join(' ')%> +% 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 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/