Blame Makefile.PL

Packit fc16e3
use 5.006;
Packit fc16e3
use strict;
Packit fc16e3
use warnings;
Packit fc16e3
use ExtUtils::MakeMaker;
Packit fc16e3
use Config;
Packit fc16e3
use Getopt::Long qw(GetOptions :config pass_through);
Packit fc16e3
use Pod::Usage qw(pod2usage);
Packit fc16e3
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
Packit fc16e3
# the contents of the Makefile that is written.
Packit fc16e3
Packit fc16e3
#added by Lincoln Baxter to fix cflags (for long long on HPUX)
Packit fc16e3
#guidence from DBD-Oracle module
Packit fc16e3
{
Packit fc16e3
    package MY; # SUPER needs package context, $self is not sufficient
Packit fc16e3
    use strict;
Packit fc16e3
    use Config;
Packit fc16e3
    my $os = $^O;
Packit fc16e3
Packit fc16e3
    sub const_cccmd {
Packit fc16e3
        my ($self) = shift;
Packit fc16e3
        local($_) = $self->SUPER::const_cccmd(@_);
Packit fc16e3
        # are we using the non-bundled hpux compiler?
Packit fc16e3
        if ($os eq "hpux" and $Config::Config{ccflags} =~ /-Aa\b/) {
Packit fc16e3
            print "Changing -Aa to -Ae for HP-UX in ccmd to allow for long long.\n"
Packit fc16e3
             if s/-Aa\b/-Ae/g;  # allow "long long" in UUID.h
Packit fc16e3
        }
Packit fc16e3
        $_;
Packit fc16e3
    }
Packit fc16e3
    sub cflags 
Packit fc16e3
    {
Packit fc16e3
        my ($self) = shift;
Packit fc16e3
        local($_) = $self->SUPER::cflags(@_);
Packit fc16e3
        # are we using the non-bundled hpux compiler?
Packit fc16e3
        if ($os eq "hpux" and $Config::Config{ccflags} =~ /-Aa\b/) {
Packit fc16e3
            print "Changing -Aa to -Ae for HP-UX in cflags.\n"
Packit fc16e3
             if s/-Aa\b/-Ae/g;  # allow "long long" in UUID.h
Packit fc16e3
        }
Packit fc16e3
        $_;
Packit fc16e3
    }
Packit fc16e3
};
Packit fc16e3
Packit fc16e3
WriteMakefile(
Packit fc16e3
  ($] >= 5.005 ## Add these new keywords supported since 5.005
Packit fc16e3
  ? (ABSTRACT_FROM => 'UUID.pm', # retrieve abstract from module
Packit fc16e3
     AUTHOR        => 'Ricardo Signes <rjbs[at]cpan.org>')
Packit fc16e3
  : ()),
Packit fc16e3
Packit fc16e3
  NAME                => 'Data::UUID',
Packit fc16e3
  VERSION_FROM        => 'UUID.pm', # finds $VERSION
Packit fc16e3
  PREREQ_PM           => { 'Digest::MD5' => '0' }, # e.g., Module::Name => 1.1
Packit fc16e3
  LICENSE             => 'bsd',
Packit fc16e3
  LIBS                => [], # e.g., '-lm'
Packit fc16e3
  #works without -lsocket
Packit fc16e3
  DEFINE              => '', # e.g., '-DHAVE_SOMETHING'
Packit fc16e3
  # Insert -I. if you add *.h files later:
Packit fc16e3
  INC                 => '', # e.g., '-I/usr/include/other'
Packit fc16e3
  # Un-comment this if you add C files to link with later:
Packit fc16e3
  OBJECT              => '$(O_FILES)', # link all the C files too
Packit fc16e3
  META_MERGE => {
Packit fc16e3
    resources => {
Packit fc16e3
      bugtracker  => 'https://github.com/rjbs/Data-UUID/issues',
Packit fc16e3
      repository  => 'https://github.com/rjbs/Data-UUID',
Packit fc16e3
    },
Packit fc16e3
},
Packit fc16e3
Packit fc16e3
  CONFIGURE           => sub {
Packit fc16e3
    my %opt;
Packit fc16e3
    GetOptions(\%opt, 's|state-storage-directory:s', 'd|default-umask:s',
Packit fc16e3
        'help|?', 'man') or pod2usage(2);
Packit fc16e3
    pod2usage(1) if $opt{help};
Packit fc16e3
    pod2usage(-verbose => 2) if $opt{man};
Packit fc16e3
Packit fc16e3
    print "Configured options (run perl Makefile.PL --help for how to change this):\n";
Packit fc16e3
Packit fc16e3
    my $d;
Packit fc16e3
    if ($^O eq 'MSWin32' and -d "c:/tmp/") {
Packit fc16e3
     $d="c:/tmp";
Packit fc16e3
    } else {
Packit fc16e3
     $d=eval { require File::Spec; File::Spec->tmpdir; } || '/var/tmp';
Packit fc16e3
    }
Packit fc16e3
    $d = $opt{s} || $d;
Packit fc16e3
    print "\tUUID state storage: $d\n";
Packit fc16e3
    $d =~ s/\\/\\\\/g if $^O eq 'MSWin32';
Packit fc16e3
Packit fc16e3
    my $m = '0007';
Packit fc16e3
    unless ($^O eq 'MSWin32') {
Packit fc16e3
        $m = $opt{d} || $m;
Packit fc16e3
        print "\tdefault umask: $m\n";
Packit fc16e3
    }
Packit fc16e3
Packit fc16e3
    chmod(0666, sprintf("%s/%s", $d, ".UUID_NODEID"));
Packit fc16e3
    chmod(0666, sprintf("%s/%s", $d, ".UUID_STATE"));
Packit fc16e3
    return {
Packit fc16e3
      DEFINE => qq(-D_STDIR=\\"$d\\")
Packit fc16e3
              . qq( -D__$Config{osname}__)
Packit fc16e3
              . qq( -D_DEFAULT_UMASK=$m)
Packit fc16e3
    };
Packit fc16e3
  }
Packit fc16e3
);
Packit fc16e3
Packit fc16e3
__END__
Packit fc16e3
Packit fc16e3
=head1 NAME
Packit fc16e3
Packit fc16e3
Makefile.PL - configure Makefile for Data::UUID
Packit fc16e3
Packit fc16e3
=head1 SYNOPSIS
Packit fc16e3
Packit fc16e3
perl Makefile.PL [options] [EU::MM options]
Packit fc16e3
Packit fc16e3
perl Makefile.PL -s=/var/local/lib/data-uuid -d=0007
Packit fc16e3
Packit fc16e3
    Options:
Packit fc16e3
    --state-storage-directory   directory for storing library state information
Packit fc16e3
    --default-umask             umask for files in the state storage directory
Packit fc16e3
    --help                      brief help message
Packit fc16e3
    --man                       full documentation
Packit fc16e3
Packit fc16e3
Options can be abbreviated, see L<Getopt::Long/"Case and abbreviations">.
Packit fc16e3
Packit fc16e3
=head1 OPTIONS
Packit fc16e3
Packit fc16e3
=over
Packit fc16e3
Packit fc16e3
=item --state-storage-directory
Packit fc16e3
Packit fc16e3
Optional. Takes a string that is interpreted as directory for storing library
Packit fc16e3
state information. Default is c:/tmp/ on Windows if it already exists, or the
Packit fc16e3
operating system's temporary directory (see tmpdir in L<File::Spec/"METHODS">),
Packit fc16e3
or /var/tmp as fallback.
Packit fc16e3
Packit fc16e3
=item --default-umask
Packit fc16e3
Packit fc16e3
Optional. Takes a string that is interpreted as umask for the files in the state
Packit fc16e3
storage directory. Default is 0007. This is ignored on Windows.
Packit fc16e3
Packit fc16e3
=item --help
Packit fc16e3
Packit fc16e3
Print a brief help message and exits.
Packit fc16e3
Packit fc16e3
=item --man
Packit fc16e3
Packit fc16e3
Prints the manual page and exits.
Packit fc16e3
Packit fc16e3
=back
Packit fc16e3
Packit fc16e3
=head1 DESCRIPTION
Packit fc16e3
Packit fc16e3
B<Makefile.PL> writes the Makefile for the Data::UUID library. It is configured
Packit fc16e3
with the options L</"--state-storage-directory"> and L</"--default-umask">.
Packit fc16e3
Unless given, default values are used. In any case the values are printed for
Packit fc16e3
confirmation.
Packit fc16e3
Packit fc16e3
Additionally, the usual EU::MM options are processed, see
Packit fc16e3
L<ExtUtils::MakeMaker/"Using Attributes and Parameters">.