NetBSD 5.1, not 5.0.
[perl-fuse.git] / Makefile.PL
index 8148d61..f096413 100644 (file)
 use ExtUtils::MakeMaker;
+use POSIX;
+use Config;
 # See lib/ExtUtils/MakeMaker.pm for details of how to influence
 # the contents of the Makefile that is written.
 
-my $inc = `pkg-config --cflags` || '-I ../include -D_FILE_OFFSET_BITS=64';
-my $obj = `pkg-config --libs fuse` || '-lfuse';
+# Note: This is a hack. This hack is necessary because MacFUSE's libfuse
+# (and libfuse_ino64, by extension) don't link in libiconv. This wouldn't
+# be a problem, but it appears the Darwin/OS X dynamic linker won't
+# satisfy runtime link dependencies in those libraries from libraries
+# imported by our library, and it uses a symbol from libiconv without
+# actually linking the library to itself. Awesome.
+package MY;
+sub test_via_harness {
+  my($self, $perl, $tests) = @_;
+  local $_ = $self->SUPER::test_via_harness($perl, $tests);
+  s/PERL_DL_NONLAZY=1//g if $^O eq 'darwin';
+  return $_;
+}
+
+sub test_via_script {
+  my($self, $perl, $tests) = @_;
+  local $_ = $self->SUPER::test_via_script($perl, $tests);
+  s/PERL_DL_NONLAZY=1//g if $^O eq 'darwin';
+  return $_;
+}
+
+package main;
+
+my $ver = `fusermount -V`;
+my $ver2 = `mount_fusefs -V`;
+chomp(my $ver3 = `mount_fusefs -V 2>&1 | head -n1`);
+$ver =~ s/^.*?version:\s+//;
+$ver2 =~ s/^.*?version:\s+//;
+$ver3 =~ s/^.*?version\s+//;
+if (! $ver && ! $ver2 && ! $ver3) {
+       # make CPANPLUS happy and don't report errors if fuse isn't installed
+       die("No support for os: $^O\n",
+               "You need to have fuse-dev (or similar) package installed and have sufficient permissions in order to install this module\n",
+               $^O eq 'darwin' ? ("One option on Mac is http://code.google.com/p/macfuse/\n") : (),
+       );
+}
+if ($ver && $ver + 0 < 2.5) {
+       die "Fuse perl bindings need Linux fuse version 2.5 or newer\n";
+} elsif ($ver2 && $ver2 + 0 < 0.3) {
+       die "Fuse perl bindings need FreeBSD fuse version 0.3 or newer\n";
+} elsif ($^O eq 'darwin' && $ver3 && !(($ver3 ge "0.1.0b006") || ($ver3 eq "0.1.0"))) {
+       # the "ge" string-compare check will match all later revs and all later
+       # betas, but not the final release of the current rev (0.1.0).
+       die "Fuse perl bindings need MacFUSE version 0.1.0b006 or newer, your version is \"$ver3\"\n";
+} else {
+       warn "fuse version found: ", $ver || $ver2 || $ver3, "\n";
+}
+
+my $inc = '-DFUSE_USE_VERSION=26 ' . `pkg-config --cflags fuse` || '-I ../include -D_FILE_OFFSET_BITS=64';
+my $obj = `pkg-config --libs fuse` || (($^O eq 'netbsd') ? '-lrefuse' : '-lfuse');
+if ($^O eq 'darwin' && (uname())[2] =~ /^10\./) {
+       $obj =~ s/-lfuse/-lfuse_ino64/;
+}
+my $def = '-Wall -g -ggdb';
+$def .= ' -D__FreeBSD__=10 -D_FILE_OFFSET_BITS=64' if $^O eq 'darwin';
+$def .= ' -DPERL_HAS_64BITINT' if $Config{'use64bitint'};
+
 WriteMakefile(
-    'NAME'             => 'Fuse',
-    'VERSION_FROM'     => 'Fuse.pm', # finds $VERSION
-    'PREREQ_PM'                => {}, # e.g., Module::Name => 1.1
-    ($] >= 5.005 ?    ## Add these new keywords supported since 5.005
-      (ABSTRACT_FROM => 'Fuse.pm', # retrieve abstract from module
-       AUTHOR     => 'Mark Glines <mark@glines.org>') : ()),
-    'LIBS'             => [''], # e.g., '-lm'
-    'DEFINE'           => '-g -ggdb', # e.g., '-DHAVE_SOMETHING'
+       'NAME'                  => 'Fuse',
+       'VERSION_FROM'  => 'Fuse.pm', # finds $VERSION
+       'PREREQ_PM'             => {}, # e.g., Module::Name => 1.1
+       ($] >= 5.005 ?  ## Add these new keywords supported since 5.005
+               (ABSTRACT_FROM  => 'Fuse.pm', # retrieve abstract from module
+               AUTHOR                  => 'Mark Glines <mark@glines.org>') : ()),
+               ($ExtUtils::MakeMaker::VERSION < 6.46 ? () : (
+                       META_MERGE => {
+                               resources => {
+                               bugtracker => 'https://rt.cpan.org/Public/Dist/Display.html?Name=Fuse',
+                               repository => 'http://github.com/dpavlin/perl-fuse'
+                       }
+               })
+       ),
+       'LIBS'                  => [''], # e.g., '-lm'
+       'DEFINE'                => $def, # e.g., '-DHAVE_SOMETHING'
        # Insert -I. if you add *.h files later:
-    'INC'              => $inc, # e.g., '-I/usr/include/other'
+       'INC'                   => $inc, # e.g., '-I/usr/include/other'
        # Un-comment this if you add C files to link with later:
-    'OBJECT'           => "$obj Fuse.o -lpthread", # link all the C files too
+       'OBJECT'                => "$obj Fuse.o -lpthread", # link all the C files too
 );
 
 sub MY::postamble {
-    return <<'MAKE_MORE';
+       return <<'MAKE_MORE';
+
+cpan:
+       make clean
+       rm -f Fuse-*.tar.gz
+       perl Makefile.PL
+       make dist
+       make disttest
+       @echo
+       @echo -n "Upload" Fuse-*.tar.gz "to CPAN? [y/N]:"
+       @read upload && test "$$upload" == "y" && cpan-upload -verbose Fuse-*.tar.gz
+
+
 
 sf:
-       svn2cvs.pl file:///home/dpavlin/.svk/fuse/perl-llin :ext:dpavlin@cvs.sourceforge.net:/cvsroot/fuse perl
+       svn2cvs.pl file:///home/dpavlin/private/svn/fuse/perl-llin :ext:dpavlin@fuse.cvs.sourceforge.net:/cvsroot/fuse perl
 
 MAKE_MORE
 };