cygwin changes
authorTony Cook <tony@develop-help.com>
Sat, 30 Dec 2006 06:08:51 +0000 (06:08 +0000)
committerTony Cook <tony@develop-help.com>
Sat, 30 Dec 2006 06:08:51 +0000 (06:08 +0000)
Makefile.PL
t/40tkwin32.t

index d3062af..7e19d21 100644 (file)
@@ -1,3 +1,4 @@
+#!perl -w\r
 use strict;\r
 use ExtUtils::MakeMaker;\r
 use Imager::ExtUtils;\r
 use strict;\r
 use ExtUtils::MakeMaker;\r
 use Imager::ExtUtils;\r
@@ -7,16 +8,19 @@ use File::Spec;
 my @objs = qw/Screenshot.o/;\r
 my @cflags;\r
 my @lflags;\r
 my @objs = qw/Screenshot.o/;\r
 my @cflags;\r
 my @lflags;\r
-if (find_header("X11/X.h") and find_lib("X11")) {\r
+my $X11_lib = $^O eq 'cygwin' ? 'X11.dll' : 'X11';\r
+if (find_header("X11/Xlib.h") and find_lib($X11_lib)) {\r
   push @objs, 'scx11.o';\r
   push @cflags, '-DSS_X11';\r
   push @objs, 'scx11.o';\r
   push @cflags, '-DSS_X11';\r
-  push @lflags, '-lX11';\r
+  push @lflags, '-l'.$X11_lib;\r
   print "Found X11\n";\r
 }\r
 if (find_header('windows.h') and find_lib('gdi32')) {\r
   push @objs, 'scwin32.o';\r
   push @cflags, '-DSS_WIN32';\r
   print "Found X11\n";\r
 }\r
 if (find_header('windows.h') and find_lib('gdi32')) {\r
   push @objs, 'scwin32.o';\r
   push @cflags, '-DSS_WIN32';\r
-  push @lflags, '-lgdi32' if $^O eq 'cygwin';\r
+  if ($^O eq 'cygwin') {\r
+    push @lflags, '-L/usr/lib/w32api', '-lgdi32';\r
+  }\r
   print "Found Win32\n";\r
 }\r
 \r
   print "Found Win32\n";\r
 }\r
 \r
@@ -51,13 +55,15 @@ sub header_search_path {
   @incs and return @incs;\r
 \r
   push @incs, '/usr/include'\r
   @incs and return @incs;\r
 \r
   push @incs, '/usr/include'\r
-    unless $^O eq 'MSWin32';\r
+    unless $^O eq 'MSWin32' && $Config{cc} =~ /\bcl\b/;\r
   push @incs, split /\Q$Config{path_sep}/, $ENV{INCLUDE}\r
     if $^O eq 'MSWin32' && $Config{cc} =~ /\bcl\b/ and $ENV{INCLUDE};\r
   push @incs, split ' ', $Config{locincpth}\r
     if $Config{locincpth};\r
   push @incs, split /\Q$Config{path_sep}/, $Config{incpath}\r
     if $Config{incpath};\r
   push @incs, split /\Q$Config{path_sep}/, $ENV{INCLUDE}\r
     if $^O eq 'MSWin32' && $Config{cc} =~ /\bcl\b/ and $ENV{INCLUDE};\r
   push @incs, split ' ', $Config{locincpth}\r
     if $Config{locincpth};\r
   push @incs, split /\Q$Config{path_sep}/, $Config{incpath}\r
     if $Config{incpath};\r
+  push @incs, '/usr/include/w32api', '/usr/X11R6/include'\r
+    if $^O eq 'cygwin';\r
 \r
   @incs = grep -d, @incs;\r
 \r
 \r
   @incs = grep -d, @incs;\r
 \r
@@ -69,13 +75,15 @@ sub library_search_path {
   @libs and return @libs;\r
 \r
   push @libs, '/usr/lib'\r
   @libs and return @libs;\r
 \r
   push @libs, '/usr/lib'\r
-    unless $^O eq 'MSWin32';\r
+    unless $^O eq 'MSWin32' && $Config{cc} =~ /\bcl\b/;\r
   push @libs, split /\Q$Config{path_sep}/, $ENV{LIB}\r
     if $^O eq 'MSWin32' && $Config{cc} =~ /\bcl\b/ and $ENV{LIB};\r
   push @libs, split ' ', $Config{loclibpth}\r
     if $Config{loclibpth};\r
   push @libs, split /\Q$Config{path_sep}/, $Config{libpth}\r
     if $Config{libpth};\r
   push @libs, split /\Q$Config{path_sep}/, $ENV{LIB}\r
     if $^O eq 'MSWin32' && $Config{cc} =~ /\bcl\b/ and $ENV{LIB};\r
   push @libs, split ' ', $Config{loclibpth}\r
     if $Config{loclibpth};\r
   push @libs, split /\Q$Config{path_sep}/, $Config{libpth}\r
     if $Config{libpth};\r
+  push @libs, '/usr/lib/w32api', '/usr/X11R6/lib'\r
+    if $^O eq 'cygwin';\r
 \r
   @libs = grep -d, @libs;\r
 \r
 \r
   @libs = grep -d, @libs;\r
 \r
@@ -95,10 +103,15 @@ sub find_header {
 \r
 sub find_lib {\r
   my $name = shift;\r
 \r
 sub find_lib {\r
   my $name = shift;\r
+  my @found;\r
   if ($^O eq 'MSWin32') {\r
   if ($^O eq 'MSWin32') {\r
-    return _find_file($name . $Config{_a}, library_search_path());\r
+    @found = _find_file($name . $Config{_a}, library_search_path());\r
   }\r
   else {\r
   }\r
   else {\r
-    return _find_file("lib" . $name . $Config{_a}, library_search_path());\r
+    @found = _find_file("lib" . $name . $Config{_a}, library_search_path());\r
+  }\r
+  if (@found) {\r
+    push @lflags, "-L$_" for @found;\r
   }\r
   }\r
+  @found;\r
 }\r
 }\r
index 810e21c..f8f2ab8 100644 (file)
@@ -12,7 +12,11 @@ $@
   and plan skip_all => "Tk not available";
 
 my $im;
   and plan skip_all => "Tk not available";
 
 my $im;
-my $mw = Tk::MainWindow->new;
+my $mw;
+eval {
+  $mw = Tk::MainWindow->new;
+};
+$@ and plan skip_all => 'Cannot create a window in Tk';
 
 $mw->windowingsystem eq 'win32'
   or plan skip_all => 'Tk windowing system not Win32';
 
 $mw->windowingsystem eq 'win32'
   or plan skip_all => 'Tk windowing system not Win32';