[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]