From a5ddc2e1966a6a3af5653b1af45ccb379e346414 Mon Sep 17 00:00:00 2001 From: nobu Date: Thu, 10 Jan 2013 07:47:20 +0000 Subject: extconf.rb: have_header * ext/tk/extconf.rb (find_tcltk_header): use have_header instead of try_cpp, which is incredibly slow with VC. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38760 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/tk/extconf.rb | 46 ++++++++++++++++++++++++++++++++++------------ 1 file changed, 34 insertions(+), 12 deletions(-) (limited to 'ext/tk/extconf.rb') diff --git a/ext/tk/extconf.rb b/ext/tk/extconf.rb index 72dd6cf21d..8f3bff8531 100644 --- a/ext/tk/extconf.rb +++ b/ext/tk/extconf.rb @@ -1358,10 +1358,15 @@ def find_tcltk_header(tclver, tkver) print(".") # progress if major && minor # version check on tcl.h - have_tcl_h = try_cpp("#include \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) (File.directory?(dir))? File.expand_path(dir): nil }.compact.uniq - code = "#include \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) print(".") # progress if major && minor # version check on tk.h - have_tk_h = try_cpp("#include \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) (File.directory?(dir))? File.expand_path(dir): nil }.compact.uniq - code = "#include \n#include \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 -- cgit v1.2.3