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/