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

ruby-changes:28188

From: akr <ko1@a...>
Date: Thu, 11 Apr 2013 21:03:36 +0900 (JST)
Subject: [ruby-changes:28188] akr:r40240 (trunk): * common.mk: Dependency updated.

akr	2013-04-11 21:03:23 +0900 (Thu, 11 Apr 2013)

  New Revision: 40240

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=40240

  Log:
    * common.mk: Dependency updated.
    
    * tool/update-deps: Rewritten.

  Modified files:
    trunk/ChangeLog
    trunk/common.mk
    trunk/tool/update-deps

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 40239)
+++ ChangeLog	(revision 40240)
@@ -1,3 +1,9 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1
+Thu Apr 11 21:02:19 2013  Tanaka Akira  <akr@f...>
+
+	* common.mk: Dependency updated.
+
+	* tool/update-deps: Rewritten.
+
 Thu Apr 11 19:59:48 2013  NARUSE, Yui  <naruse@r...>
 
 	* common.mk: partially revert r40183, which breaks building on
Index: common.mk
===================================================================
--- common.mk	(revision 40239)
+++ common.mk	(revision 40240)
@@ -589,6 +589,23 @@ PHONY: https://github.com/ruby/ruby/blob/trunk/common.mk#L589
 	$(Q)sed -e "/^#line.*y\.tab\.h/d;/^#line.*parse.*\.y/d" y.tab.h > $(@:.c=.h)
 	$(Q)$(RM) y.tab.c y.tab.h
 
+$(PLATFORM_D):
+	$(Q) $(MAKEDIRS) $(PLATFORM_DIR)
+	@exit > $@
+
+###
+
+RUBY_H_INCLUDES    = {$(VPATH)}ruby.h {$(VPATH)}config.h {$(VPATH)}defines.h \
+		     {$(VPATH)}intern.h {$(VPATH)}missing.h {$(VPATH)}st.h \
+		     {$(VPATH)}subst.h
+ENCODING_H_INCLUDES= {$(VPATH)}encoding.h {$(VPATH)}oniguruma.h
+PROBES_H_INCLUDES  = {$(VPATH)}probes.h
+VM_CORE_H_INCLUDES = {$(VPATH)}vm_core.h {$(VPATH)}thread_$(THREAD_MODEL).h \
+		     {$(VPATH)}node.h {$(VPATH)}method.h {$(VPATH)}ruby_atomic.h \
+	             {$(VPATH)}vm_debug.h {$(VPATH)}id.h
+
+###
+
 acosh.$(OBJEXT): {$(VPATH)}acosh.c
 alloca.$(OBJEXT): {$(VPATH)}alloca.c {$(VPATH)}config.h
 crypt.$(OBJEXT): {$(VPATH)}crypt.c
@@ -614,28 +631,15 @@ dl_os2.$(OBJEXT): {$(VPATH)}dl_os2.c https://github.com/ruby/ruby/blob/trunk/common.mk#L631
 ia64.$(OBJEXT): {$(VPATH)}ia64.s
 	$(CC) $(CFLAGS) -c $<
 
-$(PLATFORM_D):
-	$(Q) $(MAKEDIRS) $(PLATFORM_DIR)
-	@exit > $@
-
 ###
 
-RUBY_H_INCLUDES    = {$(VPATH)}ruby.h {$(VPATH)}config.h {$(VPATH)}defines.h \
-		     {$(VPATH)}intern.h {$(VPATH)}missing.h {$(VPATH)}st.h \
-		     {$(VPATH)}subst.h
-ENCODING_H_INCLUDES= {$(VPATH)}encoding.h {$(VPATH)}oniguruma.h
-PROBES_H_INCLUDES  = {$(VPATH)}probes.h
-VM_CORE_H_INCLUDES = {$(VPATH)}vm_core.h {$(VPATH)}thread_$(THREAD_MODEL).h \
-		     {$(VPATH)}node.h {$(VPATH)}method.h {$(VPATH)}ruby_atomic.h \
-	             {$(VPATH)}vm_debug.h {$(VPATH)}id.h
-
 addr2line.$(OBJEXT): {$(VPATH)}addr2line.c {$(VPATH)}addr2line.h {$(VPATH)}config.h
 array.$(OBJEXT): {$(VPATH)}array.c $(RUBY_H_INCLUDES) {$(VPATH)}util.h \
-  $(ENCODING_H_INCLUDES) {$(VPATH)}internal.h $(PROBES_H_INCLUDES) {$(VPATH)}id.h
+  $(ENCODING_H_INCLUDES) {$(VPATH)}internal.h $(PROBES_H_INCLUDES) {$(VPATH)}id.h {$(VPATH)}vm_opts.h
 bignum.$(OBJEXT): {$(VPATH)}bignum.c $(RUBY_H_INCLUDES) {$(VPATH)}util.h \
   {$(VPATH)}thread.h {$(VPATH)}internal.h
 class.$(OBJEXT): {$(VPATH)}class.c $(RUBY_H_INCLUDES) \
-  $(VM_CORE_H_INCLUDES) {$(VPATH)}internal.h {$(VPATH)}constant.h
+  $(VM_CORE_H_INCLUDES) {$(VPATH)}internal.h {$(VPATH)}constant.h {$(VPATH)}vm_opts.h
 compar.$(OBJEXT): {$(VPATH)}compar.c $(RUBY_H_INCLUDES)
 complex.$(OBJEXT): {$(VPATH)}complex.c $(RUBY_H_INCLUDES) \
   {$(VPATH)}internal.h
@@ -653,19 +657,19 @@ encoding.$(OBJEXT): {$(VPATH)}encoding.c https://github.com/ruby/ruby/blob/trunk/common.mk#L657
   $(ENCODING_H_INCLUDES) {$(VPATH)}regenc.h {$(VPATH)}util.h \
   {$(VPATH)}internal.h
 enum.$(OBJEXT): {$(VPATH)}enum.c $(RUBY_H_INCLUDES) {$(VPATH)}node.h \
-  {$(VPATH)}util.h {$(VPATH)}id.h
+  {$(VPATH)}util.h {$(VPATH)}id.h {$(VPATH)}internal.h
 enumerator.$(OBJEXT): {$(VPATH)}enumerator.c $(RUBY_H_INCLUDES) \
-  {$(VPATH)}internal.h
+  {$(VPATH)}internal.h {$(VPATH)}node.h
 error.$(OBJEXT): {$(VPATH)}error.c {$(VPATH)}known_errors.inc \
   $(RUBY_H_INCLUDES) $(VM_CORE_H_INCLUDES) $(ENCODING_H_INCLUDES) \
-  {$(VPATH)}internal.h
+  {$(VPATH)}internal.h {$(VPATH)}vm_opts.h
 eval.$(OBJEXT): {$(VPATH)}eval.c {$(VPATH)}eval_intern.h {$(VPATH)}vm.h \
   $(RUBY_H_INCLUDES) $(VM_CORE_H_INCLUDES) {$(VPATH)}eval_error.c \
   {$(VPATH)}eval_jump.c {$(VPATH)}gc.h {$(VPATH)}iseq.h \
-  $(ENCODING_H_INCLUDES) {$(VPATH)}internal.h $(PROBES_H_INCLUDES)
+  $(ENCODING_H_INCLUDES) {$(VPATH)}internal.h $(PROBES_H_INCLUDES) {$(VPATH)}vm_opts.h {$(VPATH)}probes_helper.h
 load.$(OBJEXT): {$(VPATH)}load.c {$(VPATH)}eval_intern.h \
   {$(VPATH)}util.h $(RUBY_H_INCLUDES) $(VM_CORE_H_INCLUDES) \
-  {$(VPATH)}dln.h {$(VPATH)}internal.h $(PROBES_H_INCLUDES)
+  {$(VPATH)}dln.h {$(VPATH)}internal.h $(PROBES_H_INCLUDES) {$(VPATH)}vm_opts.h
 file.$(OBJEXT): {$(VPATH)}file.c $(RUBY_H_INCLUDES) {$(VPATH)}io.h \
   $(ENCODING_H_INCLUDES) {$(VPATH)}util.h {$(VPATH)}dln.h \
   {$(VPATH)}internal.h
@@ -673,39 +677,39 @@ gc.$(OBJEXT): {$(VPATH)}gc.c $(RUBY_H_IN https://github.com/ruby/ruby/blob/trunk/common.mk#L677
   {$(VPATH)}regex.h $(ENCODING_H_INCLUDES) $(VM_CORE_H_INCLUDES) \
   {$(VPATH)}gc.h {$(VPATH)}io.h {$(VPATH)}eval_intern.h {$(VPATH)}util.h \
   {$(VPATH)}internal.h {$(VPATH)}constant.h \
-  {$(VPATH)}thread.h $(PROBES_H_INCLUDES)
+  {$(VPATH)}thread.h $(PROBES_H_INCLUDES) {$(VPATH)}vm_opts.h
 hash.$(OBJEXT): {$(VPATH)}hash.c $(RUBY_H_INCLUDES) {$(VPATH)}util.h \
-  $(ENCODING_H_INCLUDES) {$(VPATH)}internal.h $(PROBES_H_INCLUDES)
+  $(ENCODING_H_INCLUDES) {$(VPATH)}internal.h $(PROBES_H_INCLUDES) {$(VPATH)}vm_opts.h
 inits.$(OBJEXT): {$(VPATH)}inits.c $(RUBY_H_INCLUDES) \
   {$(VPATH)}internal.h
 io.$(OBJEXT): {$(VPATH)}io.c $(RUBY_H_INCLUDES) {$(VPATH)}io.h \
   {$(VPATH)}util.h $(ENCODING_H_INCLUDES) {$(VPATH)}dln.h \
-  {$(VPATH)}internal.h {$(VPATH)}thread.h {$(VPATH)}id.h
-main.$(OBJEXT): {$(VPATH)}main.c $(RUBY_H_INCLUDES) {$(VPATH)}node.h {$(VPATH)}vm_debug.h
+  {$(VPATH)}internal.h {$(VPATH)}thread.h {$(VPATH)}id.h {$(VPATH)}ruby_atomic.h
+main.$(OBJEXT): {$(VPATH)}main.c $(RUBY_H_INCLUDES) {$(VPATH)}node.h {$(VPATH)}vm_debug.h {$(VPATH)}vm_opts.h
 marshal.$(OBJEXT): {$(VPATH)}marshal.c $(RUBY_H_INCLUDES) {$(VPATH)}io.h \
   $(ENCODING_H_INCLUDES) {$(VPATH)}util.h {$(VPATH)}internal.h
 math.$(OBJEXT): {$(VPATH)}math.c $(RUBY_H_INCLUDES) \
   {$(VPATH)}internal.h
 node.$(OBJEXT): {$(VPATH)}node.c $(RUBY_H_INCLUDES) \
-  $(VM_CORE_H_INCLUDES)
+  $(VM_CORE_H_INCLUDES) {$(VPATH)}vm_opts.h
 numeric.$(OBJEXT): {$(VPATH)}numeric.c $(RUBY_H_INCLUDES) \
   {$(VPATH)}util.h $(ENCODING_H_INCLUDES) {$(VPATH)}internal.h {$(VPATH)}id.h
 object.$(OBJEXT): {$(VPATH)}object.c $(RUBY_H_INCLUDES) {$(VPATH)}util.h \
-  {$(VPATH)}internal.h {$(VPATH)}constant.h $(ENCODING_H_INCLUDES) $(PROBES_H_INCLUDES)
+  {$(VPATH)}internal.h {$(VPATH)}constant.h $(ENCODING_H_INCLUDES) $(PROBES_H_INCLUDES) {$(VPATH)}vm_opts.h
 pack.$(OBJEXT): {$(VPATH)}pack.c $(RUBY_H_INCLUDES) {$(VPATH)}encoding.h \
   {$(VPATH)}oniguruma.h
 parse.$(OBJEXT): {$(VPATH)}parse.c $(RUBY_H_INCLUDES) {$(VPATH)}node.h \
   $(ENCODING_H_INCLUDES) {$(VPATH)}id.h {$(VPATH)}regenc.h \
   {$(VPATH)}regex.h {$(VPATH)}util.h {$(VPATH)}lex.c \
   {$(VPATH)}defs/keywords {$(VPATH)}id.c {$(VPATH)}parse.y \
-  {$(VPATH)}parse.h {$(VPATH)}internal.h $(PROBES_H_INCLUDES)
+  {$(VPATH)}parse.h {$(VPATH)}internal.h $(PROBES_H_INCLUDES) {$(VPATH)}vm_opts.h
 proc.$(OBJEXT): {$(VPATH)}proc.c {$(VPATH)}eval_intern.h \
   $(RUBY_H_INCLUDES) {$(VPATH)}gc.h $(VM_CORE_H_INCLUDES) \
-  {$(VPATH)}internal.h {$(VPATH)}iseq.h
+  {$(VPATH)}internal.h {$(VPATH)}iseq.h {$(VPATH)}vm_opts.h
 process.$(OBJEXT): {$(VPATH)}process.c $(RUBY_H_INCLUDES) \
   {$(VPATH)}util.h {$(VPATH)}io.h $(ENCODING_H_INCLUDES) {$(VPATH)}dln.h \
   $(VM_CORE_H_INCLUDES) {$(VPATH)}internal.h \
-  {$(VPATH)}thread.h
+  {$(VPATH)}thread.h {$(VPATH)}vm_opts.h
 random.$(OBJEXT): {$(VPATH)}random.c $(RUBY_H_INCLUDES) \
   {$(VPATH)}siphash.c {$(VPATH)}siphash.h
 range.$(OBJEXT): {$(VPATH)}range.c $(RUBY_H_INCLUDES) \
@@ -730,27 +734,27 @@ regsyntax.$(OBJEXT): {$(VPATH)}regsyntax https://github.com/ruby/ruby/blob/trunk/common.mk#L734
   {$(VPATH)}regenc.h {$(VPATH)}oniguruma.h $(RUBY_H_INCLUDES)
 ruby.$(OBJEXT): {$(VPATH)}ruby.c $(RUBY_H_INCLUDES) {$(VPATH)}util.h \
   $(ENCODING_H_INCLUDES) {$(VPATH)}eval_intern.h $(VM_CORE_H_INCLUDES) \
-  {$(VPATH)}dln.h {$(VPATH)}internal.h
-safe.$(OBJEXT): {$(VPATH)}safe.c $(RUBY_H_INCLUDES) $(VM_CORE_H_INCLUDES)
+  {$(VPATH)}dln.h {$(VPATH)}internal.h {$(VPATH)}vm_opts.h
+safe.$(OBJEXT): {$(VPATH)}safe.c $(RUBY_H_INCLUDES) $(VM_CORE_H_INCLUDES) {$(VPATH)}vm_opts.h
 signal.$(OBJEXT): {$(VPATH)}signal.c $(RUBY_H_INCLUDES) \
-  $(VM_CORE_H_INCLUDES)
+  $(VM_CORE_H_INCLUDES) {$(VPATH)}vm_opts.h {$(VPATH)}internal.h {$(VPATH)}ruby_atomic.h {$(VPATH)}eval_intern.h
 sprintf.$(OBJEXT): {$(VPATH)}sprintf.c $(RUBY_H_INCLUDES) {$(VPATH)}re.h \
-  {$(VPATH)}regex.h {$(VPATH)}vsnprintf.c $(ENCODING_H_INCLUDES)
+  {$(VPATH)}regex.h {$(VPATH)}vsnprintf.c $(ENCODING_H_INCLUDES) {$(VPATH)}internal.h
 st.$(OBJEXT): {$(VPATH)}st.c $(RUBY_H_INCLUDES)
 strftime.$(OBJEXT): {$(VPATH)}strftime.c $(RUBY_H_INCLUDES) \
   {$(VPATH)}timev.h $(ENCODING_H_INCLUDES)
 string.$(OBJEXT): {$(VPATH)}string.c $(RUBY_H_INCLUDES) {$(VPATH)}re.h \
-  {$(VPATH)}regex.h $(ENCODING_H_INCLUDES) {$(VPATH)}internal.h $(PROBES_H_INCLUDES)
+  {$(VPATH)}regex.h $(ENCODING_H_INCLUDES) {$(VPATH)}internal.h $(PROBES_H_INCLUDES) {$(VPATH)}vm_opts.h {$(VPATH)}node.h {$(VPATH)}ruby_atomic.h {$(VPATH)}vm_core.h {$(VPATH)}vm_debug.h {$(VPATH)}id.h {$(VPATH)}method.h {$(VPATH)}thread_$(THREAD_MODEL).h
 struct.$(OBJEXT): {$(VPATH)}struct.c $(RUBY_H_INCLUDES) {$(VPATH)}internal.h
 thread.$(OBJEXT): {$(VPATH)}thread.c {$(VPATH)}eval_intern.h \
   $(RUBY_H_INCLUDES) {$(VPATH)}gc.h $(VM_CORE_H_INCLUDES) \
   {$(VPATH)}thread_$(THREAD_MODEL).c $(ENCODING_H_INCLUDES) \
-  {$(VPATH)}internal.h {$(VPATH)}io.h {$(VPATH)}thread.h {$(VPATH)}timev.h
+  {$(VPATH)}internal.h {$(VPATH)}io.h {$(VPATH)}thread.h {$(VPATH)}timev.h {$(VPATH)}vm_opts.h
 transcode.$(OBJEXT): {$(VPATH)}transcode.c $(RUBY_H_INCLUDES) \
   $(ENCODING_H_INCLUDES) {$(VPATH)}transcode_data.h {$(VPATH)}internal.h
 cont.$(OBJEXT): {$(VPATH)}cont.c $(RUBY_H_INCLUDES) \
   $(VM_CORE_H_INCLUDES) {$(VPATH)}gc.h {$(VPATH)}eval_intern.h \
-  {$(VPATH)}internal.h
+  {$(VPATH)}internal.h {$(VPATH)}vm_opts.h
 time.$(OBJEXT): {$(VPATH)}time.c $(RUBY_H_INCLUDES) \
   $(ENCODING_H_INCLUDES) {$(VPATH)}timev.h {$(VPATH)}internal.h
 util.$(OBJEXT): {$(VPATH)}util.c $(RUBY_H_INCLUDES) {$(VPATH)}util.h \
@@ -767,10 +771,10 @@ compile.$(OBJEXT): {$(VPATH)}compile.c { https://github.com/ruby/ruby/blob/trunk/common.mk#L771
   $(RUBY_H_INCLUDES) $(VM_CORE_H_INCLUDES) {$(VPATH)}insns.inc \
   {$(VPATH)}insns_info.inc {$(VPATH)}optinsn.inc \
   {$(VPATH)}optunifs.inc {$(VPATH)}opt_sc.inc {$(VPATH)}insns.inc \
-  {$(VPATH)}internal.h
+  {$(VPATH)}internal.h {$(VPATH)}vm_opts.h
 iseq.$(OBJEXT): {$(VPATH)}iseq.c {$(VPATH)}gc.h {$(VPATH)}iseq.h \
   $(RUBY_H_INCLUDES) $(VM_CORE_H_INCLUDES) {$(VPATH)}insns.inc \
-  {$(VPATH)}insns_info.inc {$(VPATH)}node_name.inc {$(VPATH)}internal.h
+  {$(VPATH)}insns_info.inc {$(VPATH)}node_name.inc {$(VPATH)}internal.h {$(VPATH)}vm_opts.h {$(VPATH)}ruby_atomic.h {$(VPATH)}eval_intern.h
 vm.$(OBJEXT): {$(VPATH)}vm.c {$(VPATH)}gc.h {$(VPATH)}iseq.h \
   {$(VPATH)}eval_intern.h $(RUBY_H_INCLUDES) $(ENCODING_H_INCLUDES) \
   $(VM_CORE_H_INCLUDES) {$(VPATH)}vm_method.c {$(VPATH)}vm_eval.c \
@@ -778,26 +782,26 @@ vm.$(OBJEXT): {$(VPATH)}vm.c {$(VPATH)}g https://github.com/ruby/ruby/blob/trunk/common.mk#L782
   {$(VPATH)}vm_exec.h {$(VPATH)}insns.def {$(VPATH)}vmtc.inc \
   {$(VPATH)}vm.inc {$(VPATH)}insns.inc \
   {$(VPATH)}internal.h {$(VPATH)}vm.h {$(VPATH)}constant.h \
-  $(PROBES_H_INCLUDES) {$(VPATH)}probes_helper.h
+  $(PROBES_H_INCLUDES) {$(VPATH)}probes_helper.h {$(VPATH)}vm_opts.h
 vm_dump.$(OBJEXT): {$(VPATH)}vm_dump.c $(RUBY_H_INCLUDES) \
   $(VM_CORE_H_INCLUDES) {$(VPATH)}addr2line.h \
-  {$(VPATH)}internal.h
+  {$(VPATH)}internal.h {$(VPATH)}vm_opts.h
 debug.$(OBJEXT): {$(VPATH)}debug.c $(RUBY_H_INCLUDES) \
   $(ENCODING_H_INCLUDES) $(VM_CORE_H_INCLUDES) {$(VPATH)}eval_intern.h \
-  {$(VPATH)}util.h
+  {$(VPATH)}util.h {$(VPATH)}vm_opts.h
 id.$(OBJEXT): {$(VPATH)}id.c $(RUBY_H_INCLUDES) {$(VPATH)}id.h {$(VPATH)}vm_opts.h
 vm_backtrace.$(OBJEXT): {$(VPATH)}vm_backtrace.c \
   $(VM_CORE_H_INCLUDES) $(RUBY_H_INCLUDES) $(ENCODING_H_INCLUDES) \
-  {$(VPATH)}internal.h {$(VPATH)}iseq.h {$(VPATH)}debug.h
+  {$(VPATH)}internal.h {$(VPATH)}iseq.h {$(VPATH)}debug.h {$(VPATH)}vm_opts.h {$(VPATH)}ruby_atomic.h {$(VPATH)}eval_intern.h
 vm_trace.$(OBJEXT): {$(VPATH)}vm_trace.c $(ENCODING_H_INCLUDES) \
   $(VM_CORE_H_INCLUDES) $(RUBY_H_INCLUDES) {$(VPATH)}debug.h \
-  {$(VPATH)}internal.h
+  {$(VPATH)}internal.h {$(VPATH)}vm_opts.h {$(VPATH)}ruby_atomic.h {$(VPATH)}eval_intern.h
 miniprelude.$(OBJEXT): {$(VPATH)}miniprelude.c $(RUBY_H_INCLUDES) \
-  $(VM_CORE_H_INCLUDES) {$(VPATH)}internal.h
+  $(VM_CORE_H_INCLUDES) {$(VPATH)}internal.h {$(VPATH)}vm_opts.h
 prelude.$(OBJEXT): {$(VPATH)}prelude.c $(RUBY_H_INCLUDES) \
-  $(VM_CORE_H_INCLUDES) {$(VPATH)}internal.h
+  $(VM_CORE_H_INCLUDES) {$(VPATH)}internal.h {$(VPATH)}vm_opts.h
 golf_prelude.$(OBJEXT): {$(VPATH)}golf_prelude.c $(RUBY_H_INCLUDES) \
-  $(VM_CORE_H_INCLUDES) {$(VPATH)}internal.h
+  $(VM_CORE_H_INCLUDES) {$(VPATH)}internal.h {$(VPATH)}vm_opts.h
 goruby.$(OBJEXT): {$(VPATH)}goruby.c {$(VPATH)}main.c $(RUBY_H_INCLUDES) \
   {$(VPATH)}vm_debug.h {$(VPATH)}node.h
 
Index: tool/update-deps
===================================================================
--- tool/update-deps	(revision 40239)
+++ tool/update-deps	(revision 40240)
@@ -1,139 +1,157 @@ https://github.com/ruby/ruby/blob/trunk/tool/update-deps#L1
 #!/usr/bin/ruby
 
-# tool/update-deps assists you to update dependencies in common.mk.
+# tool/update-deps verify makefile dependencies.
 
-# This script uses preprocessed source files (*.i) to extract
-# dependencies.
-# It is possible to generate *.i using gcc with -save-temps option as:
+# Requirements:
+#   gcc 4.5 (for -save-temps=obj option)
+#   GNU make (for -p option)
 #
-#   ./configure CFLAGS='-save-temps'
-#   make all golf
-#
-# After that, tool/update-deps generate common.mk with up-to-date dependencies.
-# Currently, the result is not perfect around version.o, compile.o, etc.
-# So you must see each changes and incorporate right changes.
-#
-#   ./tool/update-deps > z
-#   wdiff =(sed -e 's/\\$//' common.mk ) =(sed -e 's/\\$//' z) |less -j 5 -p '\{\+|\+\}|\[-|-\]'
-#   vi common.mk
-
-src = File.read("common.mk")
-
-includes_macro = {}
-src.scan(/^([A-Z_]+_H_INCLUDES)[ \t]*=(([^\\\n]|\\(.|\n))*)\n/) {
-  name = $1
-  vals = $2
-  #STDERR.puts vals.inspect
-  vals.gsub!(/\\\n/, ' ')
-  vals.gsub!(/\{\$\(VPATH\)\}/, '')
-  vals.gsub!(/thread_\$\(THREAD_MODEL\)/, 'thread_pthread')
-  vals = vals.strip.split(/\s+/)
-  includes_macro[name] = vals
-  #STDERR.puts  [name, vals].inspect
-}
-
-begin
-  again = false
-  includes_macro.each  {|name, vals|
-    vals.map! {|val|
-      if /\A\$\((.*_H_INCLUDES)\)\z/ =~ val
-        again = true
-        includes_macro.fetch($1)
-      else
-        val
+# Usage:
+#   1. Compile ruby with -save-temps=obj option.
+#      Ex.  ./configure debugflags='-save-temps=obj -g' && make all golf
+#   2. Run tool/update-deps to show dependency problems.
+#      Ex.  ruby tool/update-deps
+
+require 'pathname'
+require 'pp'
+
+ENV['LC_ALL'] = 'C'
+
+def read_make_deps(cwd)
+  dependencies = {}
+  make_p = `make -p 2> /dev/null`
+  dirstack = [cwd]
+  make_p.scan(%r{Entering directory `(.*)'|Leaving directory `(.*)'|^([/0-9a-zA-Z._-]+):(.*)}) {
+    if $1
+      enter_dir = Pathname($1)
+      #p [:enter, enter_dir]
+      dirstack.push enter_dir
+    elsif $2
+      leave_dir = Pathname($2)
+      #p [:leave, leave_dir]
+      if leave_dir != dirstack.last
+        warn "unexpected leave_dir : #{dirstack.last.inspect} != #{leave_dir.inspect}"
       end
-    }
-    vals.flatten!
+      dirstack.pop
+    else
+      target = $3
+      deps = $4
+      deps = deps.scan(%r{[/0-9a-zA-Z._-]+})
+      next if /\.o\z/ !~ target.to_s
+      next if /\A\./ =~ target.to_s # skip rules such as ".c.o"
+      dependencies[dirstack.last + target] ||= []
+      dependencies[dirstack.last + target] |= deps.map {|dep| dirstack.last + dep }
+    end
   }
-end while again
+  dependencies
+end
 
-src.gsub!(/^([0-9a-z._]+)\.\$\(OBJEXT\):(.*\n(?:[ 	].*\n)*)/) {
-  #STDERR.puts  $&.inspect
-  matched = $&
-  basename = $1
-  deps = $2
-  dd = deps.dup
-  dd.gsub!(/\{\$\(VPATH\)\}/, '')
-  dd.gsub!(/\\\n/, ' ')
-  dd.gsub!(/thread_\$\(THREAD_MODEL\)/, 'thread_pthread')
-  used_imacro = {}
-  includes_macro.each {|k, v|
-    if dd.sub!(/\$\(#{Regexp.escape k}\)/) { v.join(' ') }
-      used_imacro[k] = true
-    end
+#def guess_compiler_wd(filename, hint0)
+#  hint = hint0
+#  begin
+#    guess = hint + filename
+#    if guess.file?
+#      return hint
+#    end
+#    hint = hint.parent
+#  end while hint.to_s != '.'
+#  raise ArgumentError, "can not find #{filename} (hint: #{hint0})"
+#end
+
+def read_single_actual_deps(path_i, cwd)
+  files = {}
+  path_i.each_line.with_index {|line, lineindex|
+    next if /\A\# \d+ "(.*)"/ !~ line
+    files[$1] = lineindex
   }
-  dd = dd.strip.split(/\s+/)
-  if !File.file?("#{basename}.o")
-    warn "#{basename}.o not found."
+  # gcc emits {# 1 "/absolute/directory/of/the/source/file//"} at 2nd line.
+  compiler_wd = files.keys.find {|f| %r{\A/.*//\z} =~ f }
+  if compiler_wd
+    files.delete compiler_wd
+    compiler_wd = Pathname(compiler_wd.sub(%r{//\z}, ''))
   else
-    unless File.file? "#{basename}.i"
-      puts "#{basename}.i not found."
+    raise "compiler working directory not found"
+  end
+  deps = []
+  files.each_key {|dep|
+    next if %r{\A<.*>\z} =~ dep # omit <command-line>, etc.
+    dep = Pathname(dep)
+    if dep.relative?
+      dep = compiler_wd + dep
+    end
+    if !dep.file?
+      warn "file not found: #{dep}"
       next
     end
-    incs = []
-    File.foreach("#{basename}.i") {|line|
-      next unless /^# \d+ "([^"]*)"/ =~ line
-      inc = $1
-      next if %r{\A[/<]} =~ inc
-      inc.sub!(%r{\A\./}, '')
-      inc.sub!(%r{\Ainclude/ruby/}, '') or
-      inc.sub!(%r{\Ainclude/}, '') or
-      inc.sub!(%r{\A\.ext/include/[^/]+/ruby/}, '') or
-      inc.sub!(%r{\Aenc/}, '') or
-      inc.sub!(%r{\Amissing/}, '')
-      #p inc
-      incs << inc
-    }
-    incs.uniq!
-    incs = incs.sort_by {|inc| [(dd.index(inc) || dd.length), incs.index(inc)] }
-    add = incs - dd
-    if !add.empty? || true
-      if incs[0] != dd[0]
-        raise "first file not matched: #{incs[0].inspect} v.s. #{dd[0].inspect}"
-      end
-      depline = "#{basename}.$(OBJEXT):"
-      used_imacro.each_key {|k|
-        if includes_macro[k].all? {|v| incs.include? v }
-          im = "$(#{k})"
-          incs.map! {|inc|
-            if includes_macro[k].include? inc
-              im0 = im
-              im = nil
-              im0
-            else
-              inc
-            end
-          }
-          incs.compact!
-        else
-          needless = includes_macro[k].reject {|v| incs.include? v }
-          STDERR.puts "#{basename}.$(OBJEXT) can't use #{k}. #{needless.join(' ')} is not used."
-        end
-      }
-
-      incs.each {|inc|
-        inc = inc.sub(/\Athread_pthread/, 'thread_$(THREAD_MODEL)')
-        if /_INCLUDES\)\z/ =~ inc
-          # use $(RUBY_H_INCLUDES) as is.
-        elsif inc == 'revision.h'
-          inc = '$(srcdir)/revision.h'
-        else
-          inc = "{$(VPATH)}#{inc}"
-        end
-        depline << " #{inc}"
-      }
-      lines = []
-      while 72 < depline.length && depline.sub!(/\A(.{0,72}|.{72}.*?) /, '')
-        lines << $&
+    next if !dep.to_s.start_with?(cwd.to_s) # omit system headers.
+    deps << dep
+  }
+  deps
+end
+
+def read_actual_deps(cwd)
+  deps = {}
+  Pathname.glob('**/*.o').sort.each {|fn_o|
+    fn_i = fn_o.sub_ext('.i')
+    next if !fn_i.exist?
+    path_o = cwd + fn_o
+    path_i = cwd + fn_i
+    deps[path_o] = read_single_actual_deps(path_i, cwd)
+  }
+  deps
+end
+
+def concentrate(dependencies, cwd)
+  deps = {}
+  dependencies.keys.sort.each {|target|
+    sources = dependencies[target]
+    t (... truncated)

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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