use strict; use Tk::MMutil; use Tk::Config (); use Tk::MMtry; use File::Copy; my $l = $Config::Config{'lib_ext'}; my $cc = $Config::Config{'cc'}; my $zlib = "libz$l"; foreach my $file (qw(zlib/Makefile.PL libpng/Makefile.PL)) { chmod(0666,$file) unless -w $file; unlink($file); } if ($Tk::MMtry::VERSION ge '4.007' && try_run("config/has_png.c",['-I/usr/local/include'],['-lpng -lz -lm'])) { Tk::MMutil::TkExtMakefile( NAME => 'Tk::PNG', VERSION_FROM => 'PNG.pm', XS_VERSION => $Tk::Config::VERSION, dist => { COMPRESS => 'gzip -f9', SUFFIX => '.gz' }, OBJECT => '$(O_FILES)', INC => '-I/usr/local/include', LIBS => ['-lpng -lz -lm'], ); } else { my $ok = 1; foreach my $file ("libpng/Makefile.PL","zlib/Makefile.PL") { next unless -f $file; chmod(0666,$file); unlink($file); } unless (copy("libpng/Makefile.maybe","libpng/Makefile.PL")) { warn "Cannot copy libpng/Makefile.maybe => libpng/Makefile.PL ($!)"; $ok = 0; } unless (copy("zlib/Makefile.maybe","zlib/Makefile.PL")) { warn "Cannot copy zlib/Makefile.maybe => zlib/Makefile.PL ($!)"; $ok = 0; } if ($ok) { warn "Building libpng$l\n"; my $extlib = "libpng/libpng$l"; if ($cc eq 'cl') { $extlib .= " zlib/zlib$l"; $zlib = "zlib$l"; } else { $extlib .= " zlib/libz$l"; } Tk::MMutil::TkExtMakefile( NAME => 'Tk::PNG', VERSION_FROM => 'PNG.pm', XS_VERSION => $Tk::Config::VERSION, dist => { COMPRESS => 'gzip -f9', SUFFIX => '.gz' }, OBJECT => '$(O_FILES)', INC => '-Ilibpng -Izlib', MYEXTLIB => $extlib, LIBS => ['-lm'], ); } else { warn "Cannot build libpng$l\n"; ExtUtils::MakeMaker::WriteEmptyMakefile(); } } package MY; sub pasthru { qq[PASTHRU="CC=$Config::Config{cc} $Config::Config{cccdlflags}" RANLIB=\"$Config::Config{ranlib}\"]; } sub postamble { my $s = ''; if (-f "libpng/Makefile.PL") { $s .= " libpng/libpng$l : zlib/$zlib cd libpng && \$(MAKE) libpng".$l.' $(PASTHRU) '; } if (-f "zlib/Makefile.PL") { $s .= " zlib/$zlib : FORCE cd zlib && \$(MAKE) $zlib".' $(PASTHRU) '; } return $s; }