Issue #4141 has been updated by Luis Lavena.


Hidetoshi Nagai, thank you, It is now possible to compile Tcl/Tk with MinGW without issues.

I've open a backport request so this get merged back into 1.9.2:

http://redmine.ruby-lang.org/issues/4802

On a sidenote I'm going to check if is possible build 1.8.7 out of the repository too, as we aim to provide the same binaries for it.

Thank you!

----------------------------------------
Bug #4141: Tk extension is not accepting any type of parameter combination
http://redmine.ruby-lang.org/issues/4141

Author: Luis Lavena
Status: Closed
Priority: Normal
Assignee: Hidetoshi Nagai
Category: ext
Target version: 1.9.x
ruby -v: ruby 1.9.3dev (2010-12-09 trunk 30151) [i386-mingw32]


=begin
 Hello,
 
 As part of RubyInstaller team, we want to include tk extension in the next release. For that purpose, we built both tcl and tk 8.5.9 and made bin, includes and lib directories available using the standard GCC variables (PATH, CPATH and LIBRARY_PATH)
 
 All the existing Ruby extensions (openssl, curses, etc) work with this and properly detect the available headers, except tk extension.
 
 Normally, this is the output:
 
 <pre>
 compiling tk
 check functions.........
 check struct members..
 Use ActiveTcl libraries (if available).
 Search tclConfig.sh and tkConfig.sh.........
 Fail to find [tclConfig.sh, tkConfig.sh]
 Search Tcl library
 Warning:: cannot find Tcl library. tcltklib will not be compiled (tcltklib is disabled on your Ruby
 == Ruby/Tk will not work). Please check configure options.
 Can't find proper Tcl/Tk libraries. So, can't make tcltklib.so which is required by Ruby/Tk.
 compiling tk/tkutil
 </pre>
 
 To workaround this, I've tried manually provide parameters to Ruby configure process (like --with-tcl-dir, --with-tk-dir, --with-tcllib and --with-tklib), all been marked as warning and no effect in the extension itself.
 
 Manually trying to build the extension and provide these parameters:
 
 mkdir build
 cd build
 ruby ..\extconf.rb --with-tcl-dir=../../tcl --with-tk-dir=../../tk --with-tcllib=tcl85s --with-tklib=tk85s
 
 Since tk extension checks for tcl85g, not the static version (as build for RubyInstaller)
 
 Generates the following output:
 
 <pre>
 Configure options for Ruby/Tk may be updated.
 So, delete files which depend on old configs.
 check functions.checking for ruby_native_thread_p() in ruby.h... yes
 .checking for rb_errinfo() in ruby.h... yes
 .checking for rb_safe_level() in ruby.h... yes
 .checking for rb_hash_lookup() in ruby.h... yes
 .checking for rb_proc_new() in ruby.h... yes
 .checking for rb_obj_untrust() in ruby.h... yes
 .checking for rb_obj_taint() in ruby.h... yes
 .checking for rb_set_safe_level_force() in ruby.h... yes
 .checking for rb_sourcefile() in ruby.h... yes
 
 check struct members.checking for struct RArray.ptr in ruby.h... no
 .checking for struct RArray.len in ruby.h... no
 
 Use ActiveTcl libraries (if available).
 Search tclConfig.sh (in ../../tcl/lib) and tkConfig.sh (in ../../tk/lib)..
 WARNING: found "../../tcl/lib/tclConfig.sh", but cannot find valid Tcl/Tk libraries on the same directory. So, ignore it.
 
 WARNING: found "../../tcl/lib/tclconfig.sh", but cannot find valid Tcl/Tk libraries on the same directory. So, ignore it.
 
 Fail to find [tclConfig.sh, tkConfig.sh]
 Search Tcl library.checking for Tcl_FindExecutable() in -ltcl85s... yes
 
 Search Tk library.checking for Tk_Init() in -ltk85s... no
 
 Warning:: cannot find Tk library. tcltklib will not be compiled (tcltklib is disabled on your Ruby == Ruby/Tk will not work). Please check configure options.
 Can't find proper Tcl/Tk libraries. So, can't make tcltklib.so which is required by Ruby/Tk.
 *** ../extconf.rb failed ***
 </pre>
 
 Checking libtk85s.a for symbols (using nm) the Tk_Init symbol is defined.
 
 I've tried this way and also using --with-old-extconf, both with similar results.
 
 If extconf can't be make compatible with the default build process, what tweak is required for a successful compilation?
 
 Thank you.
=end



-- 
http://redmine.ruby-lang.org