Currently building Perl/Tk under cygwin is broken using the native Win32 GUI libraries. Therefore the default is to build using X11 libraries (but note that this may change, so it's best to specify the window architecture, see below). Using the X11 libraries, "make test" will very probably fail due to "rebase" problems, but Perl/Tk should be mostly usable after an installation and maybe a manual "rebaseall" after. ---------------------------------------------------------------------- This is a brief description of how to get the Tk module working with Perl and Cygwin. CONFIGURE/BUILD Use native Win32 GUI calls: perl Makefile.PL or perl Makefile.PL MSWin32 Use X11 client libraries (and requires a X server): Precompiled X11 client libraries can be downloaded from ftp://sourceware.cygnus.com/pub/cygwin/xfree/xc-4-binaries/ xfree86-4.0-DLLs.tar.bz2 xfree86-4.0-devel.tar.bz2 NOTE: Your DISPLAY must be 127.0.0.1:0.0 Your PATH must include the DLL directory, /usr/X11R6/bin perl Makefile.PL x make TEST make test perl -Mblib demos/widget INSTALL make install SIDE-BY-SIDE PORT COMPARISONS (demos/widget) X11 (Hummingbird/Exceed X Server, V6.1) + Motif look and feel + Scroll wheel does not work with X11 (config?) + Global grabs only affect X11 windows (config?) + Menus, normal style - Alt+x does not post menus (config?) + $Tk::platform => unix Win32 + Windows look and feel + Uses Win32 clipboard + Help on menu bar not all the way to the right + Tear-off menus placed at upper-left instead of near pointer + Tile and Transparent, no tiled camels, third window not transparent + Menus, normal style - File - "Error: unknown option "-label" at Tk.pm line 217 + Menus, Perl/Tk style - Menus do not drop as traverse with button press - Alt+x does not post menus + Native Win32 FileSelect dialog, FileSelect/FBox the same + Native Win32 ChooseColor dialog + Balls bouncing, when start restacked below widget demo window (if bounce window not moved) + Global grabs only affect current application + IntelliMouse with IntelliEye (but ok with a trackball, setting?) - Button-2 dragging/scanning does not work well - Button-2 for copy/paste does not work well (seems to flip into a scroll mode) + $Tk::TkwinVtab, $Tk::TkwinintVtab variables + $Tk::platform => MSWin32 Both + Tear-off menus restack parent below widget demo window + Meta-backspace, Meta-d not working (Meta config?) + Menus, normal and Perl/Tk style - Meta+x accelerators (Control+x okay) not working (config?) X11 (Cygwin) v X11 (Solaris) No differences that I could find! Win32 (Cygwin) v Win32 (MSWin32/ActiveState) + Menus, normal style - Accelerators Win32 bound to Control, Cygwin bound to Meta (see demos/demos/widget_lib/menus.pl, $^O eq 'MSWin32') - Win32 ^A does not work (Meta+A with X11), ^H does PORTING NOTES + $Tk::platform is really the win_arch, where unix is x (sometimes $^O eq 'MSWin32' is used instead of $Tk::platform eq 'MSWin32' assuming they are equivalent and vice versa) + #define distinctions _WIN32 defined by gcc, if X11 need to undef __WIN32__ win_arch MSWin32, also defined in pTk/Lang.h WIN32 from #include when precedes #include "perl.h" then need a #undef WIN32 (otherwise tries to include Win32 Perl things like win32.h, defined by native Win32 port) + With native Win32 GUI use Cygwin select() with /dev/windows pseudo-device rather than using Win32 GetMessage() directly + pTk/mTk/win/tkWinX.c, pTk/mTk/generic/tkPort.h part of core Tk, which is ordinarily not touched by Tk Perl module? pTk/Tcl-pTk? FILES (with Cygwin references) README.cygwin MANIFEST * documentation Makefile.PL Tk/MMutil.pm pTk/Makefile.PL * make stuff pTk/mTk/win/tkWinX.c * GetMessage() via select() on /dev/windows and callback Scrollbar/Scrollbar.xs tkWin32Dll.c * defined(__WIN32__) && defined(__CYGWIN__) tkGlue.c * refdef XS because __declspec(dllexport) incompatible with static * defined(__WIN32__) && defined(__CYGWIN__) and pTk/tkWin.h includes which defines WIN32 Tk.pm * set $Tk::platform with help from $Tk::Config::win_arch DragDrop/site_test Tk/X11Font.pm t/create.t t/mwm.t * $^O eq 'cygwin' and $Tk::platform eq 'MSWin32' DragDrop/Win32Site/Win32Site.xs * #undef WIN32 from pTk/mTk/generic/tkPort.h * resolve strcasecmp/stricmp #define mess pTk/Lang.h * some defs ordinarily from tkUnixPort.h chnGlue.c * Cygwin has O_BINARY IO/IO.xs * Cygwin has O_NONBLOCK TODO + Any way to have X11 and native Win32 versions available at the same time? Build with Xlib/Win32 emulator (see rxvt)? + Fix gcc warnings, mostly in pTk win32 flavor? + Test with cygwin-xfree X Server? Thu Aug 31 12:54:09 BST 2000 Eric Fifer efifer@dircon.co.uk