summaryrefslogtreecommitdiff
path: root/ext/tk
diff options
context:
space:
mode:
Diffstat (limited to 'ext/tk')
-rw-r--r--ext/tk/extconf.rb46
1 files changed, 34 insertions, 12 deletions
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 <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)
(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)
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)
(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