various distribution fixes:
[imager-screenshot.git] / Makefile.PL
index a19828e..415a082 100644 (file)
-use strict;\r
-use ExtUtils::MakeMaker;\r
-use Imager::ExtUtils;\r
-use Config;\r
-use File::Spec;\r
-\r
-my @objs = qw/Screenshot.o/;\r
-my @cflags;\r
-my @lflags;\r
-#if (find_header("X11.h") and find_lib("X11")) {\r
-#  push @objs, 'scx11.o';\r
-#  push @cflags, '-DSS_X11';\r
-#  push @lflags, '-lX11';\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
-  print "Found Win32\n";\r
-}\r
-\r
-unless (@objs) {\r
-  WriteEmptyMakefile();\r
-  die "Sorry, I can't find headers or libraries for a supported GUI\n"\r
-}\r
-\r
-my %opts = \r
-  (\r
-   NAME => 'Imager::Screenshot',\r
-   VERSION_FROM => 'Screenshot.pm',\r
-   OBJECT => "@objs",\r
-   PREREQ_PM => {\r
-                'Imager'    => 0.54,\r
-               },\r
-   INC => Imager::ExtUtils->includes,\r
-   TYPEMAPS => [ Imager::ExtUtils->typemap ],\r
-  );\r
-\r
-$opts{LIBS} = "@lflags" if @lflags;\r
-$opts{INC} .= " @cflags" if @cflags;\r
-\r
-if ($ExtUtils::MakeMaker::VERSION > 6.06) {\r
-  $opts{AUTHOR} = 'Tony Cook <tonyc@cpan.org>';\r
-  $opts{ABSTRACT} = 'Screen/Window capture to Imager images';\r
-}\r
-\r
-WriteMakefile(%opts);\r
-\r
-my @incs;\r
-sub header_search_path {\r
-  @incs and return @incs;\r
-\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
-\r
-  @incs = grep -d, @incs;\r
-\r
-  @incs;\r
-}\r
-\r
-my @libs;\r
-sub library_search_path {\r
-  @libs and return @libs;\r
-\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
-\r
-  @libs = grep -d, @libs;\r
-\r
-  @libs;\r
-}\r
-\r
-\r
-sub _find_file {\r
-  my ($name, @where) = @_;\r
-\r
-  grep -f File::Spec->catfile($_, $name), @where;\r
-}\r
-\r
-sub find_header {\r
-  _find_file($_[0], header_search_path());\r
-}\r
-\r
-sub find_lib {\r
-  my $name = shift;\r
-  if ($^O eq 'MSWin32') {\r
-    return _find_file($name . $Config{_a}, library_search_path());\r
-  }\r
-  else {\r
-    return _find_file("lib" . $name . $Config{_a}, library_search_path());\r
-  }\r
-}\r
+#!perl -w
+use strict;
+use ExtUtils::MakeMaker;
+use Imager::ExtUtils;
+use Config;
+use File::Spec;
+
+my @objs = qw/Screenshot.o/;
+my @cflags;
+my @lflags;
+my $X11_lib = $^O eq 'cygwin' ? 'X11.dll' : 'X11';
+if (find_header("X11/Xlib.h") and find_lib($X11_lib)) {
+  push @objs, 'scx11.o';
+  push @cflags, '-DSS_X11';
+  push @lflags, '-l'.$X11_lib;
+  print "Found X11\n";
+}
+if (find_header('windows.h') and find_lib('gdi32')) {
+  push @objs, 'scwin32.o';
+  push @cflags, '-DSS_WIN32';
+  if ($^O eq 'cygwin') {
+    push @lflags, '-L/usr/lib/w32api', '-lgdi32';
+  }
+  print "Found Win32\n";
+}
+
+unless (@objs > 1) {
+  die "Sorry, I can't find headers or libraries for a supported GUI\n"
+}
+
+my %opts = 
+  (
+   NAME => 'Imager::Screenshot',
+   VERSION_FROM => 'Screenshot.pm',
+   OBJECT => "@objs",
+   PREREQ_PM => {
+                'Imager'    => 0.54,
+               },
+   INC => Imager::ExtUtils->includes,
+   TYPEMAPS => [ Imager::ExtUtils->typemap ],
+  );
+
+$opts{LIBS} = "@lflags" if @lflags;
+$opts{INC} .= " @cflags" if @cflags;
+
+if ($ExtUtils::MakeMaker::VERSION > 6.06) {
+  $opts{AUTHOR} = 'Tony Cook <tonyc@cpan.org>';
+  $opts{ABSTRACT} = 'Screen/Window capture to Imager images';
+}
+
+if ($ExtUtils::MakeMaker::VERSION > 6.06) {
+  $opts{LICENSE} = 'perl';
+}
+
+WriteMakefile(%opts);
+
+my @incs;
+sub header_search_path {
+  @incs and return @incs;
+
+  push @incs, '/usr/include', '/usr/X11R6'
+    unless $^O eq 'MSWin32' && $Config{cc} =~ /\bcl\b/;
+  push @incs, split /\Q$Config{path_sep}/, $ENV{INCLUDE}
+    if $^O eq 'MSWin32' && $Config{cc} =~ /\bcl\b/ and $ENV{INCLUDE};
+  push @incs, split ' ', $Config{locincpth}
+    if $Config{locincpth};
+  push @incs, split /\Q$Config{path_sep}/, $Config{incpath}
+    if $Config{incpath};
+  push @incs, '/usr/include/w32api', '/usr/X11R6/include'
+    if $^O eq 'cygwin';
+
+  @incs = grep -d, @incs;
+
+  @incs;
+}
+
+my @libs;
+sub library_search_path {
+  @libs and return @libs;
+
+  push @libs, '/usr/lib', '/usr/X11R6/lib'
+    unless $^O eq 'MSWin32' && $Config{cc} =~ /\bcl\b/;
+  push @libs, split /\Q$Config{path_sep}/, $ENV{LIB}
+    if $^O eq 'MSWin32' && $Config{cc} =~ /\bcl\b/ and $ENV{LIB};
+  push @libs, split ' ', $Config{loclibpth}
+    if $Config{loclibpth};
+  push @libs, split /\Q$Config{path_sep}/, $Config{libpth}
+    if $Config{libpth};
+  push @libs, '/usr/lib/w32api', '/usr/X11R6/lib'
+    if $^O eq 'cygwin';
+
+  @libs = grep -d, @libs;
+
+  @libs;
+}
+
+
+sub _find_file {
+  my ($name, @where) = @_;
+
+  grep -f File::Spec->catfile($_, $name), @where;
+}
+
+sub find_header {
+  _find_file($_[0], header_search_path());
+}
+
+sub find_lib {
+  my $name = shift;
+  my @found;
+  if ($^O eq 'MSWin32' && $Config{_a} eq '.lib') {
+    @found = _find_file($name . $Config{_a}, library_search_path());
+  }
+  else {
+    @found = _find_file("lib" . $name . $Config{_a}, library_search_path());
+  }
+  if (@found) {
+    push @lflags, "-L$_" for @found;
+  }
+  @found;
+}