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

ruby-changes:26709

From: nobu <ko1@a...>
Date: Thu, 10 Jan 2013 16:47:32 +0900 (JST)
Subject: [ruby-changes:26709] nobu:r38760 (trunk): extconf.rb: have_header

nobu	2013-01-10 16:47:20 +0900 (Thu, 10 Jan 2013)

  New Revision: 38760

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

  Log:
    extconf.rb: have_header
    
    * ext/tk/extconf.rb (find_tcltk_header): use have_header instead of
      try_cpp, which is incredibly slow with VC.

  Modified files:
    trunk/ChangeLog
    trunk/ext/tk/extconf.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 38759)
+++ ChangeLog	(revision 38760)
@@ -1,3 +1,8 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1
+Thu Jan 10 16:47:18 2013  Nobuyoshi Nakada  <nobu@r...>
+
+	* ext/tk/extconf.rb (find_tcltk_header): use have_header instead of
+	  try_cpp, which is incredibly slow with VC.
+
 Thu Jan 10 15:55:28 2013  Shugo Maeda  <shugo@r...>
 
 	* numeric.c (do_coerce): remove an unused variable.
Index: ext/tk/extconf.rb
===================================================================
--- ext/tk/extconf.rb	(revision 38759)
+++ ext/tk/extconf.rb	(revision 38760)
@@ -1358,10 +1358,15 @@ def find_tcltk_header(tclver, tkver) https://github.com/ruby/ruby/blob/trunk/ext/tk/extconf.rb#L1358
     print(".") # progress
     if major && minor
       # version check on tcl.h
-      have_tcl_h = try_cpp("#include <tcl.h>\n#if TCL_MAJOR_VERSION != #{major} || TCL_MINOR_VERSION != #{minor}\n#error VERSION does not match\n#endif")
+      version_check = proc {|code|
+        code << ("#if TCL_MAJOR_VERSION != #{major} || TCL_MINOR_VERSION != #{minor}\n" \
+                 "#error VERSION does not match\n" \
+                 "#endif")
+      }
     else
-      have_tcl_h = have_header('tcl.h')
+      version_check = nil
     end
+    have_tcl_h = have_header('tcl.h', &version_check)
     unless have_tcl_h
       if tclver && ! tclver.empty?
         versions = [tclver]
@@ -1383,13 +1388,19 @@ def find_tcltk_header(tclver, tkver) https://github.com/ruby/ruby/blob/trunk/ext/tk/extconf.rb#L1388
         (File.directory?(dir))? File.expand_path(dir): nil
       }.compact.uniq
 
-      code = "#include <tcl.h>\n"
-      code << "#if TCL_MAJOR_VERSION != #{major}\n#error MAJOR_VERSION does not match\n#endif\n" if major
-      code << "#if TCL_MINOR_VERSION != #{minor}\n#error MINOR_VERSION does not match\n#endif\n" if minor
+      if major || minor
+        version_check = proc {|code|
+          code << "#if TCL_MAJOR_VERSION != #{major}\n#error MAJOR_VERSION does not match\n#endif\n" if major
+          code << "#if TCL_MINOR_VERSION != #{minor}\n#error MINOR_VERSION does not match\n#endif\n" if minor
+          code
+        }
+      else
+        version_check = nil
+      end
       have_tcl_h = paths.find{|path|
         print(".") # progress
         inc_opt = " -I#{path.quote}"
-        if try_cpp(code, inc_opt)
+        if try_header("tcl", inc_opt, &version_check)
           ($INCFLAGS ||= "") << inc_opt
           true
         else
@@ -1414,10 +1425,15 @@ def find_tcltk_header(tclver, tkver) https://github.com/ruby/ruby/blob/trunk/ext/tk/extconf.rb#L1425
     print(".") # progress
     if major && minor
       # version check on tk.h
-      have_tk_h = try_cpp("#include <tk.h>\n#if TK_MAJOR_VERSION != #{major} || TK_MINOR_VERSION != #{minor}\n#error VERSION does not match\n#endif")
+      version_check = proc {|code|
+        code << ("#if TK_MAJOR_VERSION != #{major} || TK_MINOR_VERSION != #{minor}\n" \
+                 "#error VERSION does not match\n" \
+                 "#endif")
+      }
     else
-      have_tk_h = have_header('tk.h')
+      version_check = nil
     end
+    have_tk_h = have_header('tk.h')
     unless have_tk_h
       if tkver && ! tkver.empty?
         versions = [tkver]
@@ -1439,13 +1455,19 @@ def find_tcltk_header(tclver, tkver) https://github.com/ruby/ruby/blob/trunk/ext/tk/extconf.rb#L1455
         (File.directory?(dir))? File.expand_path(dir): nil
       }.compact.uniq
 
-      code = "#include <tcl.h>\n#include <tk.h>\n"
-      code << "#if TK_MAJOR_VERSION != #{major}\n#error MAJOR_VERSION does not match\n#endif\n" if major
-      code << "#if TK_MINOR_VERSION != #{minor}\n#error MINOR_VERSION does not match\n#endif\n" if minor
+      if major || minor
+        version_check = proc {|code|
+          code << "#if TK_MAJOR_VERSION != #{major}\n#error MAJOR_VERSION does not match\n#endif\n" if major
+          code << "#if TK_MINOR_VERSION != #{minor}\n#error MINOR_VERSION does not match\n#endif\n" if minor
+          code
+        }
+      else
+        version_check = nil
+      end
       have_tk_h = paths.find{|path|
         print(".") # progress
         inc_opt = " -I#{path.quote}"
-        if try_cpp(code, inc_opt)
+        if try_header(%w'tcl.h tk.h', inc_opt, &version_check)
           ($INCFLAGS ||= "") << inc_opt
           true
         else

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

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