[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-unattended/var/se3/unattended/install/linuxaux/opt/perl/lib/5.10.0/ExtUtils/ -> MakeMaker.pm (source)

   1  # $Id: /mirror/svn.schwern.org/CPAN/ExtUtils-MakeMaker/trunk/lib/ExtUtils/MakeMaker.pm 41145 2007-12-08T01:01:11.051959Z schwern  $
   2  package ExtUtils::MakeMaker;
   3  
   4  BEGIN {require 5.005_03;}
   5  
   6  require Exporter;
   7  use ExtUtils::MakeMaker::Config;
   8  use Carp ();
   9  use File::Path;
  10  
  11  use vars qw(
  12              @ISA @EXPORT @EXPORT_OK
  13              $VERSION $Verbose %Config
  14              @Prepend_parent @Parent
  15              %Recognized_Att_Keys @Get_from_Config @MM_Sections @Overridable
  16              $Filename
  17             );
  18  
  19  # Has to be on its own line with no $ after it to avoid being noticed by
  20  # the version control system
  21  use vars qw($Revision);
  22  use strict;
  23  
  24  $VERSION = '6.42';
  25  ($Revision) = q$Revision: 41145 $ =~ /Revision:\s+(\S+)/;
  26  
  27  @ISA = qw(Exporter);
  28  @EXPORT = qw(&WriteMakefile &writeMakefile $Verbose &prompt);
  29  @EXPORT_OK = qw($VERSION &neatvalue &mkbootstrap &mksymlists
  30                  &WriteEmptyMakefile);
  31  
  32  # These will go away once the last of the Win32 & VMS specific code is 
  33  # purged.
  34  my $Is_VMS     = $^O eq 'VMS';
  35  my $Is_Win32   = $^O eq 'MSWin32';
  36  
  37  # Our filename for diagnostic and debugging purposes.  More reliable
  38  # than %INC (think caseless filesystems)
  39  $Filename = __FILE__;
  40  
  41  full_setup();
  42  
  43  require ExtUtils::MM;  # Things like CPAN assume loading ExtUtils::MakeMaker
  44                         # will give them MM.
  45  
  46  require ExtUtils::MY;  # XXX pre-5.8 versions of ExtUtils::Embed expect
  47                         # loading ExtUtils::MakeMaker will give them MY.
  48                         # This will go when Embed is it's own CPAN module.
  49  
  50  
  51  sub WriteMakefile {
  52      Carp::croak "WriteMakefile: Need even number of args" if @_ % 2;
  53  
  54      require ExtUtils::MY;
  55      my %att = @_;
  56  
  57      _verify_att(\%att);
  58  
  59      my $mm = MM->new(\%att);
  60      $mm->flush;
  61  
  62      return $mm;
  63  }
  64  
  65  
  66  # Basic signatures of the attributes WriteMakefile takes.  Each is the
  67  # reference type.  Empty value indicate it takes a non-reference
  68  # scalar.
  69  my %Att_Sigs;
  70  my %Special_Sigs = (
  71   C                  => 'ARRAY',
  72   CONFIG             => 'ARRAY',
  73   CONFIGURE          => 'CODE',
  74   DIR                => 'ARRAY',
  75   DL_FUNCS           => 'HASH',
  76   DL_VARS            => 'ARRAY',
  77   EXCLUDE_EXT        => 'ARRAY',
  78   EXE_FILES          => 'ARRAY',
  79   FUNCLIST           => 'ARRAY',
  80   H                  => 'ARRAY',
  81   IMPORTS            => 'HASH',
  82   INCLUDE_EXT        => 'ARRAY',
  83   LIBS               => ['ARRAY',''],
  84   MAN1PODS           => 'HASH',
  85   MAN3PODS           => 'HASH',
  86   PL_FILES           => 'HASH',
  87   PM                 => 'HASH',
  88   PMLIBDIRS          => 'ARRAY',
  89   PMLIBPARENTDIRS    => 'ARRAY',
  90   PREREQ_PM          => 'HASH',
  91   SKIP               => 'ARRAY',
  92   TYPEMAPS           => 'ARRAY',
  93   XS                 => 'HASH',
  94   VERSION            => ['version',''],
  95   _KEEP_AFTER_FLUSH  => '',
  96  
  97   clean      => 'HASH',
  98   depend     => 'HASH',
  99   dist       => 'HASH',
 100   dynamic_lib=> 'HASH',
 101   linkext    => 'HASH',
 102   macro      => 'HASH',
 103   postamble  => 'HASH',
 104   realclean  => 'HASH',
 105   test       => 'HASH',
 106   tool_autosplit => 'HASH',
 107  );
 108  
 109  @Att_Sigs{keys %Recognized_Att_Keys} = ('') x keys %Recognized_Att_Keys;
 110  @Att_Sigs{keys %Special_Sigs} = values %Special_Sigs;
 111  
 112  
 113  sub _verify_att {
 114      my($att) = @_;
 115  
 116      while( my($key, $val) = each %$att ) {
 117          my $sig = $Att_Sigs{$key};
 118          unless( defined $sig ) {
 119              warn "WARNING: $key is not a known parameter.\n";
 120              next;
 121          }
 122  
 123          my @sigs   = ref $sig ? @$sig : $sig;
 124          my $given  = ref $val;
 125          unless( grep { $given eq $_ || ($_ && eval{$val->isa($_)}) } @sigs ) {
 126              my $takes = join " or ", map { _format_att($_) } @sigs;
 127  
 128              my $has = _format_att($given);
 129              warn "WARNING: $key takes a $takes not a $has.\n".
 130                   "         Please inform the author.\n";
 131          }
 132      }
 133  }
 134  
 135  
 136  sub _format_att {
 137      my $given = shift;
 138      
 139      return $given eq ''        ? "string/number"
 140           : uc $given eq $given ? "$given reference"
 141           :                       "$given object"
 142           ;
 143  }
 144  
 145  
 146  sub prompt ($;$) {
 147      my($mess, $def) = @_;
 148      Carp::confess("prompt function called without an argument") 
 149          unless defined $mess;
 150  
 151      my $isa_tty = -t STDIN && (-t STDOUT || !(-f STDOUT || -c STDOUT)) ;
 152  
 153      my $dispdef = defined $def ? "[$def] " : " ";
 154      $def = defined $def ? $def : "";
 155  
 156      local $|=1;
 157      local $\;
 158      print "$mess $dispdef";
 159  
 160      my $ans;
 161      if ($ENV{PERL_MM_USE_DEFAULT} || (!$isa_tty && eof STDIN)) {
 162          print "$def\n";
 163      }
 164      else {
 165          $ans = <STDIN>;
 166          if( defined $ans ) {
 167              chomp $ans;
 168          }
 169          else { # user hit ctrl-D
 170              print "\n";
 171          }
 172      }
 173  
 174      return (!defined $ans || $ans eq '') ? $def : $ans;
 175  }
 176  
 177  sub eval_in_subdirs {
 178      my($self) = @_;
 179      use Cwd qw(cwd abs_path);
 180      my $pwd = cwd() || die "Can't figure out your cwd!";
 181  
 182      local @INC = map eval {abs_path($_) if -e} || $_, @INC;
 183      push @INC, '.';     # '.' has to always be at the end of @INC
 184  
 185      foreach my $dir (@{$self->{DIR}}){
 186          my($abs) = $self->catdir($pwd,$dir);
 187          eval { $self->eval_in_x($abs); };
 188          last if $@;
 189      }
 190      chdir $pwd;
 191      die $@ if $@;
 192  }
 193  
 194  sub eval_in_x {
 195      my($self,$dir) = @_;
 196      chdir $dir or Carp::carp("Couldn't change to directory $dir: $!");
 197  
 198      {
 199          package main;
 200          do './Makefile.PL';
 201      };
 202      if ($@) {
 203  #         if ($@ =~ /prerequisites/) {
 204  #             die "MakeMaker WARNING: $@";
 205  #         } else {
 206  #             warn "WARNING from evaluation of $dir/Makefile.PL: $@";
 207  #         }
 208          die "ERROR from evaluation of $dir/Makefile.PL: $@";
 209      }
 210  }
 211  
 212  
 213  # package name for the classes into which the first object will be blessed
 214  my $PACKNAME = 'PACK000';
 215  
 216  sub full_setup {
 217      $Verbose ||= 0;
 218  
 219      my @attrib_help = qw/
 220  
 221      AUTHOR ABSTRACT ABSTRACT_FROM BINARY_LOCATION
 222      C CAPI CCFLAGS CONFIG CONFIGURE DEFINE DIR DISTNAME DL_FUNCS DL_VARS
 223      EXCLUDE_EXT EXE_FILES EXTRA_META FIRST_MAKEFILE
 224      FULLPERL FULLPERLRUN FULLPERLRUNINST
 225      FUNCLIST H IMPORTS
 226  
 227      INST_ARCHLIB INST_SCRIPT INST_BIN INST_LIB INST_MAN1DIR INST_MAN3DIR
 228      INSTALLDIRS
 229      DESTDIR PREFIX INSTALL_BASE
 230      PERLPREFIX      SITEPREFIX      VENDORPREFIX
 231      INSTALLPRIVLIB  INSTALLSITELIB  INSTALLVENDORLIB
 232      INSTALLARCHLIB  INSTALLSITEARCH INSTALLVENDORARCH
 233      INSTALLBIN      INSTALLSITEBIN  INSTALLVENDORBIN
 234      INSTALLMAN1DIR          INSTALLMAN3DIR
 235      INSTALLSITEMAN1DIR      INSTALLSITEMAN3DIR
 236      INSTALLVENDORMAN1DIR    INSTALLVENDORMAN3DIR
 237      INSTALLSCRIPT   INSTALLSITESCRIPT  INSTALLVENDORSCRIPT
 238      PERL_LIB        PERL_ARCHLIB 
 239      SITELIBEXP      SITEARCHEXP 
 240  
 241      INC INCLUDE_EXT LDFROM LIB LIBPERL_A LIBS LICENSE
 242      LINKTYPE MAKE MAKEAPERL MAKEFILE MAKEFILE_OLD MAN1PODS MAN3PODS MAP_TARGET 
 243      MYEXTLIB NAME NEEDS_LINKING NOECHO NO_META NORECURS NO_VC OBJECT OPTIMIZE 
 244      PERL_MALLOC_OK PERL PERLMAINCC PERLRUN PERLRUNINST PERL_CORE
 245      PERL_SRC PERM_RW PERM_RWX
 246      PL_FILES PM PM_FILTER PMLIBDIRS PMLIBPARENTDIRS POLLUTE PPM_INSTALL_EXEC
 247      PPM_INSTALL_SCRIPT PREREQ_FATAL PREREQ_PM PREREQ_PRINT PRINT_PREREQ
 248      SIGN SKIP TYPEMAPS VERSION VERSION_FROM XS XSOPT XSPROTOARG
 249      XS_VERSION clean depend dist dynamic_lib linkext macro realclean
 250      tool_autosplit
 251  
 252      MACPERL_SRC MACPERL_LIB MACLIBS_68K MACLIBS_PPC MACLIBS_SC MACLIBS_MRC
 253      MACLIBS_ALL_68K MACLIBS_ALL_PPC MACLIBS_SHARED
 254          /;
 255  
 256      # IMPORTS is used under OS/2 and Win32
 257  
 258      # @Overridable is close to @MM_Sections but not identical.  The
 259      # order is important. Many subroutines declare macros. These
 260      # depend on each other. Let's try to collect the macros up front,
 261      # then pasthru, then the rules.
 262  
 263      # MM_Sections are the sections we have to call explicitly
 264      # in Overridable we have subroutines that are used indirectly
 265  
 266  
 267      @MM_Sections = 
 268          qw(
 269  
 270   post_initialize const_config constants platform_constants 
 271   tool_autosplit tool_xsubpp tools_other 
 272  
 273   makemakerdflt
 274  
 275   dist macro depend cflags const_loadlibs const_cccmd
 276   post_constants
 277  
 278   pasthru
 279  
 280   special_targets
 281   c_o xs_c xs_o
 282   top_targets blibdirs linkext dlsyms dynamic dynamic_bs
 283   dynamic_lib static static_lib manifypods processPL
 284   installbin subdirs
 285   clean_subdirs clean realclean_subdirs realclean 
 286   metafile signature
 287   dist_basics dist_core distdir dist_test dist_ci distmeta distsignature
 288   install force perldepend makefile staticmake test ppd
 289  
 290            ); # loses section ordering
 291  
 292      @Overridable = @MM_Sections;
 293      push @Overridable, qw[
 294  
 295   libscan makeaperl needs_linking perm_rw perm_rwx
 296   subdir_x test_via_harness test_via_script 
 297  
 298   init_VERSION init_dist init_INST init_INSTALL init_DEST init_dirscan
 299   init_PM init_MANPODS init_xs init_PERL init_DIRFILESEP init_linker
 300                           ];
 301  
 302      push @MM_Sections, qw[
 303  
 304   pm_to_blib selfdocument
 305  
 306                           ];
 307  
 308      # Postamble needs to be the last that was always the case
 309      push @MM_Sections, "postamble";
 310      push @Overridable, "postamble";
 311  
 312      # All sections are valid keys.
 313      @Recognized_Att_Keys{@MM_Sections} = (1) x @MM_Sections;
 314  
 315      # we will use all these variables in the Makefile
 316      @Get_from_Config = 
 317          qw(
 318             ar cc cccdlflags ccdlflags dlext dlsrc exe_ext full_ar ld 
 319             lddlflags ldflags libc lib_ext obj_ext osname osvers ranlib 
 320             sitelibexp sitearchexp so
 321            );
 322  
 323      # 5.5.3 doesn't have any concept of vendor libs
 324      push @Get_from_Config, qw( vendorarchexp vendorlibexp ) if $] >= 5.006;
 325  
 326      foreach my $item (@attrib_help){
 327          $Recognized_Att_Keys{$item} = 1;
 328      }
 329      foreach my $item (@Get_from_Config) {
 330          $Recognized_Att_Keys{uc $item} = $Config{$item};
 331          print "Attribute '\U$item\E' => '$Config{$item}'\n"
 332              if ($Verbose >= 2);
 333      }
 334  
 335      #
 336      # When we eval a Makefile.PL in a subdirectory, that one will ask
 337      # us (the parent) for the values and will prepend "..", so that
 338      # all files to be installed end up below OUR ./blib
 339      #
 340      @Prepend_parent = qw(
 341             INST_BIN INST_LIB INST_ARCHLIB INST_SCRIPT
 342             MAP_TARGET INST_MAN1DIR INST_MAN3DIR PERL_SRC
 343             PERL FULLPERL
 344      );
 345  }
 346  
 347  sub writeMakefile {
 348      die <<END;
 349  
 350  The extension you are trying to build apparently is rather old and
 351  most probably outdated. We detect that from the fact, that a
 352  subroutine "writeMakefile" is called, and this subroutine is not
 353  supported anymore since about October 1994.
 354  
 355  Please contact the author or look into CPAN (details about CPAN can be
 356  found in the FAQ and at http:/www.perl.com) for a more recent version
 357  of the extension. If you're really desperate, you can try to change
 358  the subroutine name from writeMakefile to WriteMakefile and rerun
 359  'perl Makefile.PL', but you're most probably left alone, when you do
 360  so.
 361  
 362  The MakeMaker team
 363  
 364  END
 365  }
 366  
 367  sub new {
 368      my($class,$self) = @_;
 369      my($key);
 370  
 371      # Store the original args passed to WriteMakefile()
 372      foreach my $k (keys %$self) {
 373          $self->{ARGS}{$k} = $self->{$k};
 374      }
 375  
 376      if ("@ARGV" =~ /\bPREREQ_PRINT\b/) {
 377          require Data::Dumper;
 378          print Data::Dumper->Dump([$self->{PREREQ_PM}], [qw(PREREQ_PM)]);
 379          exit 0;
 380      }
 381  
 382      # PRINT_PREREQ is RedHatism.
 383      if ("@ARGV" =~ /\bPRINT_PREREQ\b/) {
 384          print join(" ", map { "perl($_)>=$self->{PREREQ_PM}->{$_} " } 
 385                          sort keys %{$self->{PREREQ_PM}}), "\n";
 386          exit 0;
 387     }
 388  
 389      print STDOUT "MakeMaker (v$VERSION)\n" if $Verbose;
 390      if (-f "MANIFEST" && ! -f "Makefile"){
 391          check_manifest();
 392      }
 393  
 394      $self = {} unless (defined $self);
 395  
 396      check_hints($self);
 397  
 398      my %configure_att;         # record &{$self->{CONFIGURE}} attributes
 399      my(%initial_att) = %$self; # record initial attributes
 400  
 401      my(%unsatisfied) = ();
 402      foreach my $prereq (sort keys %{$self->{PREREQ_PM}}) {
 403          # 5.8.0 has a bug with require Foo::Bar alone in an eval, so an
 404          # extra statement is a workaround.
 405          my $file = "$prereq.pm";
 406          $file =~ s{::}{/}g;
 407          eval { require $file };
 408  
 409          my $pr_version = $prereq->VERSION || 0;
 410  
 411          # convert X.Y_Z alpha version #s to X.YZ for easier comparisons
 412          $pr_version =~ s/(\d+)\.(\d+)_(\d+)/$1.$2$3/;
 413  
 414          if ($@) {
 415              warn sprintf "Warning: prerequisite %s %s not found.\n", 
 416                $prereq, $self->{PREREQ_PM}{$prereq} 
 417                     unless $self->{PREREQ_FATAL};
 418              $unsatisfied{$prereq} = 'not installed';
 419          } elsif ($pr_version < $self->{PREREQ_PM}->{$prereq} ){
 420              warn sprintf "Warning: prerequisite %s %s not found. We have %s.\n",
 421                $prereq, $self->{PREREQ_PM}{$prereq}, 
 422                  ($pr_version || 'unknown version') 
 423                    unless $self->{PREREQ_FATAL};
 424              $unsatisfied{$prereq} = $self->{PREREQ_PM}->{$prereq} ? 
 425                $self->{PREREQ_PM}->{$prereq} : 'unknown version' ;
 426          }
 427      }
 428      
 429       if (%unsatisfied && $self->{PREREQ_FATAL}){
 430          my $failedprereqs = join "\n", map {"    $_ $unsatisfied{$_}"} 
 431                              sort { $a cmp $b } keys %unsatisfied;
 432          die <<"END";
 433  MakeMaker FATAL: prerequisites not found.
 434  $failedprereqs
 435  
 436  Please install these modules first and rerun 'perl Makefile.PL'.
 437  END
 438      }
 439      
 440      if (defined $self->{CONFIGURE}) {
 441          if (ref $self->{CONFIGURE} eq 'CODE') {
 442              %configure_att = %{&{$self->{CONFIGURE}}};
 443              $self = { %$self, %configure_att };
 444          } else {
 445              Carp::croak "Attribute 'CONFIGURE' to WriteMakefile() not a code reference\n";
 446          }
 447      }
 448  
 449      # This is for old Makefiles written pre 5.00, will go away
 450      if ( Carp::longmess("") =~ /runsubdirpl/s ){
 451          Carp::carp("WARNING: Please rerun 'perl Makefile.PL' to regenerate your Makefiles\n");
 452      }
 453  
 454      my $newclass = ++$PACKNAME;
 455      local @Parent = @Parent;    # Protect against non-local exits
 456      {
 457          no strict 'refs';
 458          print "Blessing Object into class [$newclass]\n" if $Verbose>=2;
 459          mv_all_methods("MY",$newclass);
 460          bless $self, $newclass;
 461          push @Parent, $self;
 462          require ExtUtils::MY;
 463          @{"$newclass\:\:ISA"} = 'MM';
 464      }
 465  
 466      if (defined $Parent[-2]){
 467          $self->{PARENT} = $Parent[-2];
 468          my $key;
 469          for $key (@Prepend_parent) {
 470              next unless defined $self->{PARENT}{$key};
 471  
 472              # Don't stomp on WriteMakefile() args.
 473              next if defined $self->{ARGS}{$key} and
 474                      $self->{ARGS}{$key} eq $self->{$key};
 475  
 476              $self->{$key} = $self->{PARENT}{$key};
 477  
 478              unless ($Is_VMS && $key =~ /PERL$/) {
 479                  $self->{$key} = $self->catdir("..",$self->{$key})
 480                    unless $self->file_name_is_absolute($self->{$key});
 481              } else {
 482                  # PERL or FULLPERL will be a command verb or even a
 483                  # command with an argument instead of a full file
 484                  # specification under VMS.  So, don't turn the command
 485                  # into a filespec, but do add a level to the path of
 486                  # the argument if not already absolute.
 487                  my @cmd = split /\s+/, $self->{$key};
 488                  $cmd[1] = $self->catfile('[-]',$cmd[1])
 489                    unless (@cmd < 2) || $self->file_name_is_absolute($cmd[1]);
 490                  $self->{$key} = join(' ', @cmd);
 491              }
 492          }
 493          if ($self->{PARENT}) {
 494              $self->{PARENT}->{CHILDREN}->{$newclass} = $self;
 495              foreach my $opt (qw(POLLUTE PERL_CORE LINKTYPE)) {
 496                  if (exists $self->{PARENT}->{$opt}
 497                      and not exists $self->{$opt})
 498                      {
 499                          # inherit, but only if already unspecified
 500                          $self->{$opt} = $self->{PARENT}->{$opt};
 501                      }
 502              }
 503          }
 504          my @fm = grep /^FIRST_MAKEFILE=/, @ARGV;
 505          parse_args($self,@fm) if @fm;
 506      } else {
 507          parse_args($self,split(' ', $ENV{PERL_MM_OPT} || ''),@ARGV);
 508      }
 509  
 510  
 511      $self->{NAME} ||= $self->guess_name;
 512  
 513      ($self->{NAME_SYM} = $self->{NAME}) =~ s/\W+/_/g;
 514  
 515      $self->init_MAKE;
 516      $self->init_main;
 517      $self->init_VERSION;
 518      $self->init_dist;
 519      $self->init_INST;
 520      $self->init_INSTALL;
 521      $self->init_DEST;
 522      $self->init_dirscan;
 523      $self->init_PM;
 524      $self->init_MANPODS;
 525      $self->init_xs;
 526      $self->init_PERL;
 527      $self->init_DIRFILESEP;
 528      $self->init_linker;
 529      $self->init_ABSTRACT;
 530  
 531      if (! $self->{PERL_SRC} ) {
 532          require VMS::Filespec if $Is_VMS;
 533          my($pthinks) = $self->canonpath($INC{'Config.pm'});
 534          my($cthinks) = $self->catfile($Config{'archlibexp'},'Config.pm');
 535          $pthinks = VMS::Filespec::vmsify($pthinks) if $Is_VMS;
 536          if ($pthinks ne $cthinks &&
 537              !($Is_Win32 and lc($pthinks) eq lc($cthinks))) {
 538              print "Have $pthinks expected $cthinks\n";
 539              if ($Is_Win32) {
 540                  $pthinks =~ s![/\\]Config\.pm$!!i; $pthinks =~ s!.*[/\\]!!;
 541              }
 542              else {
 543                  $pthinks =~ s!/Config\.pm$!!; $pthinks =~ s!.*/!!;
 544              }
 545              print STDOUT <<END unless $self->{UNINSTALLED_PERL};
 546  Your perl and your Config.pm seem to have different ideas about the 
 547  architecture they are running on.
 548  Perl thinks: [$pthinks]
 549  Config says: [$Config{archname}]
 550  This may or may not cause problems. Please check your installation of perl 
 551  if you have problems building this extension.
 552  END
 553          }
 554      }
 555  
 556      $self->init_others();
 557      $self->init_platform();
 558      $self->init_PERM();
 559      my($argv) = neatvalue(\@ARGV);
 560      $argv =~ s/^\[/(/;
 561      $argv =~ s/\]$/)/;
 562  
 563      push @{$self->{RESULT}}, <<END;
 564  # This Makefile is for the $self->{NAME} extension to perl.
 565  #
 566  # It was generated automatically by MakeMaker version
 567  # $VERSION (Revision: $Revision) from the contents of
 568  # Makefile.PL. Don't edit this file, edit Makefile.PL instead.
 569  #
 570  #       ANY CHANGES MADE HERE WILL BE LOST!
 571  #
 572  #   MakeMaker ARGV: $argv
 573  #
 574  #   MakeMaker Parameters:
 575  END
 576  
 577      foreach my $key (sort keys %initial_att){
 578          next if $key eq 'ARGS';
 579  
 580          my($v) = neatvalue($initial_att{$key});
 581          $v =~ s/(CODE|HASH|ARRAY|SCALAR)\([\dxa-f]+\)/$1\(...\)/;
 582          $v =~ tr/\n/ /s;
 583          push @{$self->{RESULT}}, "#     $key => $v";
 584      }
 585      undef %initial_att;        # free memory
 586  
 587      if (defined $self->{CONFIGURE}) {
 588         push @{$self->{RESULT}}, <<END;
 589  
 590  #   MakeMaker 'CONFIGURE' Parameters:
 591  END
 592          if (scalar(keys %configure_att) > 0) {
 593              foreach my $key (sort keys %configure_att){
 594                 next if $key eq 'ARGS';
 595                 my($v) = neatvalue($configure_att{$key});
 596                 $v =~ s/(CODE|HASH|ARRAY|SCALAR)\([\dxa-f]+\)/$1\(...\)/;
 597                 $v =~ tr/\n/ /s;
 598                 push @{$self->{RESULT}}, "#     $key => $v";
 599              }
 600          }
 601          else
 602          {
 603             push @{$self->{RESULT}}, "# no values returned";
 604          }
 605          undef %configure_att;  # free memory
 606      }
 607  
 608      # turn the SKIP array into a SKIPHASH hash
 609      my (%skip,$skip);
 610      for $skip (@{$self->{SKIP} || []}) {
 611          $self->{SKIPHASH}{$skip} = 1;
 612      }
 613      delete $self->{SKIP}; # free memory
 614  
 615      if ($self->{PARENT}) {
 616          for (qw/install dist dist_basics dist_core distdir dist_test dist_ci/) {
 617              $self->{SKIPHASH}{$_} = 1;
 618          }
 619      }
 620  
 621      # We run all the subdirectories now. They don't have much to query
 622      # from the parent, but the parent has to query them: if they need linking!
 623      unless ($self->{NORECURS}) {
 624          $self->eval_in_subdirs if @{$self->{DIR}};
 625      }
 626  
 627      foreach my $section ( @MM_Sections ){
 628          # Support for new foo_target() methods.
 629          my $method = $section;
 630          $method .= '_target' unless $self->can($method);
 631  
 632          print "Processing Makefile '$section' section\n" if ($Verbose >= 2);
 633          my($skipit) = $self->skipcheck($section);
 634          if ($skipit){
 635              push @{$self->{RESULT}}, "\n# --- MakeMaker $section section $skipit.";
 636          } else {
 637              my(%a) = %{$self->{$section} || {}};
 638              push @{$self->{RESULT}}, "\n# --- MakeMaker $section section:";
 639              push @{$self->{RESULT}}, "# " . join ", ", %a if $Verbose && %a;
 640              push @{$self->{RESULT}}, $self->maketext_filter(
 641                  $self->$method( %a )
 642              );
 643          }
 644      }
 645  
 646      push @{$self->{RESULT}}, "\n# End.";
 647  
 648      $self;
 649  }
 650  
 651  sub WriteEmptyMakefile {
 652      Carp::croak "WriteEmptyMakefile: Need an even number of args" if @_ % 2;
 653  
 654      my %att = @_;
 655      my $self = MM->new(\%att);
 656      
 657      my $new = $self->{MAKEFILE};
 658      my $old = $self->{MAKEFILE_OLD};
 659      if (-f $old) {
 660          _unlink($old) or warn "unlink $old: $!";
 661      }
 662      if ( -f $new ) {
 663          _rename($new, $old) or warn "rename $new => $old: $!"
 664      }
 665      open MF, '>'.$new or die "open $new for write: $!";
 666      print MF <<'EOP';
 667  all :
 668  
 669  clean :
 670  
 671  install :
 672  
 673  makemakerdflt :
 674  
 675  test :
 676  
 677  EOP
 678      close MF or die "close $new for write: $!";
 679  }
 680  
 681  sub check_manifest {
 682      print STDOUT "Checking if your kit is complete...\n";
 683      require ExtUtils::Manifest;
 684      # avoid warning
 685      $ExtUtils::Manifest::Quiet = $ExtUtils::Manifest::Quiet = 1;
 686      my(@missed) = ExtUtils::Manifest::manicheck();
 687      if (@missed) {
 688          print STDOUT "Warning: the following files are missing in your kit:\n";
 689          print "\t", join "\n\t", @missed;
 690          print STDOUT "\n";
 691          print STDOUT "Please inform the author.\n";
 692      } else {
 693          print STDOUT "Looks good\n";
 694      }
 695  }
 696  
 697  sub parse_args{
 698      my($self, @args) = @_;
 699      foreach (@args) {
 700          unless (m/(.*?)=(.*)/) {
 701              ++$Verbose if m/^verb/;
 702              next;
 703          }
 704          my($name, $value) = ($1, $2);
 705          if ($value =~ m/^~(\w+)?/) { # tilde with optional username
 706              $value =~ s [^~(\w*)]
 707                  [$1 ?
 708                   ((getpwnam($1))[7] || "~$1") :
 709                   (getpwuid($>))[7]
 710                   ]ex;
 711          }
 712  
 713          # Remember the original args passed it.  It will be useful later.
 714          $self->{ARGS}{uc $name} = $self->{uc $name} = $value;
 715      }
 716  
 717      # catch old-style 'potential_libs' and inform user how to 'upgrade'
 718      if (defined $self->{potential_libs}){
 719          my($msg)="'potential_libs' => '$self->{potential_libs}' should be";
 720          if ($self->{potential_libs}){
 721              print STDOUT "$msg changed to:\n\t'LIBS' => ['$self->{potential_libs}']\n";
 722          } else {
 723              print STDOUT "$msg deleted.\n";
 724          }
 725          $self->{LIBS} = [$self->{potential_libs}];
 726          delete $self->{potential_libs};
 727      }
 728      # catch old-style 'ARMAYBE' and inform user how to 'upgrade'
 729      if (defined $self->{ARMAYBE}){
 730          my($armaybe) = $self->{ARMAYBE};
 731          print STDOUT "ARMAYBE => '$armaybe' should be changed to:\n",
 732                          "\t'dynamic_lib' => {ARMAYBE => '$armaybe'}\n";
 733          my(%dl) = %{$self->{dynamic_lib} || {}};
 734          $self->{dynamic_lib} = { %dl, ARMAYBE => $armaybe};
 735          delete $self->{ARMAYBE};
 736      }
 737      if (defined $self->{LDTARGET}){
 738          print STDOUT "LDTARGET should be changed to LDFROM\n";
 739          $self->{LDFROM} = $self->{LDTARGET};
 740          delete $self->{LDTARGET};
 741      }
 742      # Turn a DIR argument on the command line into an array
 743      if (defined $self->{DIR} && ref \$self->{DIR} eq 'SCALAR') {
 744          # So they can choose from the command line, which extensions they want
 745          # the grep enables them to have some colons too much in case they
 746          # have to build a list with the shell
 747          $self->{DIR} = [grep $_, split ":", $self->{DIR}];
 748      }
 749      # Turn a INCLUDE_EXT argument on the command line into an array
 750      if (defined $self->{INCLUDE_EXT} && ref \$self->{INCLUDE_EXT} eq 'SCALAR') {
 751          $self->{INCLUDE_EXT} = [grep $_, split '\s+', $self->{INCLUDE_EXT}];
 752      }
 753      # Turn a EXCLUDE_EXT argument on the command line into an array
 754      if (defined $self->{EXCLUDE_EXT} && ref \$self->{EXCLUDE_EXT} eq 'SCALAR') {
 755          $self->{EXCLUDE_EXT} = [grep $_, split '\s+', $self->{EXCLUDE_EXT}];
 756      }
 757  
 758      foreach my $mmkey (sort keys %$self){
 759          next if $mmkey eq 'ARGS';
 760          print STDOUT "  $mmkey => ", neatvalue($self->{$mmkey}), "\n" if $Verbose;
 761          print STDOUT "'$mmkey' is not a known MakeMaker parameter name.\n"
 762              unless exists $Recognized_Att_Keys{$mmkey};
 763      }
 764      $| = 1 if $Verbose;
 765  }
 766  
 767  sub check_hints {
 768      my($self) = @_;
 769      # We allow extension-specific hints files.
 770  
 771      require File::Spec;
 772      my $curdir = File::Spec->curdir;
 773  
 774      my $hint_dir = File::Spec->catdir($curdir, "hints");
 775      return unless -d $hint_dir;
 776  
 777      # First we look for the best hintsfile we have
 778      my($hint)="${^O}_$Config{osvers}";
 779      $hint =~ s/\./_/g;
 780      $hint =~ s/_$//;
 781      return unless $hint;
 782  
 783      # Also try without trailing minor version numbers.
 784      while (1) {
 785          last if -f File::Spec->catfile($hint_dir, "$hint.pl");  # found
 786      } continue {
 787          last unless $hint =~ s/_[^_]*$//; # nothing to cut off
 788      }
 789      my $hint_file = File::Spec->catfile($hint_dir, "$hint.pl");
 790  
 791      return unless -f $hint_file;    # really there
 792  
 793      _run_hintfile($self, $hint_file);
 794  }
 795  
 796  sub _run_hintfile {
 797      no strict 'vars';
 798      local($self) = shift;       # make $self available to the hint file.
 799      my($hint_file) = shift;
 800  
 801      local($@, $!);
 802      print STDERR "Processing hints file $hint_file\n";
 803  
 804      # Just in case the ./ isn't on the hint file, which File::Spec can
 805      # often strip off, we bung the curdir into @INC
 806      local @INC = (File::Spec->curdir, @INC);
 807      my $ret = do $hint_file;
 808      if( !defined $ret ) {
 809          my $error = $@ || $!;
 810          print STDERR $error;
 811      }
 812  }
 813  
 814  sub mv_all_methods {
 815      my($from,$to) = @_;
 816      no strict 'refs';
 817      my($symtab) = \%{"$from}::"};
 818  
 819      # Here you see the *current* list of methods that are overridable
 820      # from Makefile.PL via MY:: subroutines. As of VERSION 5.07 I'm
 821      # still trying to reduce the list to some reasonable minimum --
 822      # because I want to make it easier for the user. A.K.
 823  
 824      local $SIG{__WARN__} = sub { 
 825          # can't use 'no warnings redefined', 5.6 only
 826          warn @_ unless $_[0] =~ /^Subroutine .* redefined/ 
 827      };
 828      foreach my $method (@Overridable) {
 829  
 830          # We cannot say "next" here. Nick might call MY->makeaperl
 831          # which isn't defined right now
 832  
 833          # Above statement was written at 4.23 time when Tk-b8 was
 834          # around. As Tk-b9 only builds with 5.002something and MM 5 is
 835          # standard, we try to enable the next line again. It was
 836          # commented out until MM 5.23
 837  
 838          next unless defined &{"$from}::$method"};
 839  
 840          *{"$to}::$method"} = \&{"$from}::$method"};
 841  
 842          # delete would do, if we were sure, nobody ever called
 843          # MY->makeaperl directly
 844  
 845          # delete $symtab->{$method};
 846  
 847          # If we delete a method, then it will be undefined and cannot
 848          # be called.  But as long as we have Makefile.PLs that rely on
 849          # %MY:: being intact, we have to fill the hole with an
 850          # inheriting method:
 851  
 852          eval "package MY; sub $method { shift->SUPER::$method(\@_); }";
 853      }
 854  
 855      # We have to clean out %INC also, because the current directory is
 856      # changed frequently and Graham Barr prefers to get his version
 857      # out of a History.pl file which is "required" so woudn't get
 858      # loaded again in another extension requiring a History.pl
 859  
 860      # With perl5.002_01 the deletion of entries in %INC caused Tk-b11
 861      # to core dump in the middle of a require statement. The required
 862      # file was Tk/MMutil.pm.  The consequence is, we have to be
 863      # extremely careful when we try to give perl a reason to reload a
 864      # library with same name.  The workaround prefers to drop nothing
 865      # from %INC and teach the writers not to use such libraries.
 866  
 867  #    my $inc;
 868  #    foreach $inc (keys %INC) {
 869  #       #warn "***$inc*** deleted";
 870  #       delete $INC{$inc};
 871  #    }
 872  }
 873  
 874  sub skipcheck {
 875      my($self) = shift;
 876      my($section) = @_;
 877      if ($section eq 'dynamic') {
 878          print STDOUT "Warning (non-fatal): Target 'dynamic' depends on targets ",
 879          "in skipped section 'dynamic_bs'\n"
 880              if $self->{SKIPHASH}{dynamic_bs} && $Verbose;
 881          print STDOUT "Warning (non-fatal): Target 'dynamic' depends on targets ",
 882          "in skipped section 'dynamic_lib'\n"
 883              if $self->{SKIPHASH}{dynamic_lib} && $Verbose;
 884      }
 885      if ($section eq 'dynamic_lib') {
 886          print STDOUT "Warning (non-fatal): Target '\$(INST_DYNAMIC)' depends on ",
 887          "targets in skipped section 'dynamic_bs'\n"
 888              if $self->{SKIPHASH}{dynamic_bs} && $Verbose;
 889      }
 890      if ($section eq 'static') {
 891          print STDOUT "Warning (non-fatal): Target 'static' depends on targets ",
 892          "in skipped section 'static_lib'\n"
 893              if $self->{SKIPHASH}{static_lib} && $Verbose;
 894      }
 895      return 'skipped' if $self->{SKIPHASH}{$section};
 896      return '';
 897  }
 898  
 899  sub flush {
 900      my $self = shift;
 901      my($chunk);
 902      local *FH;
 903  
 904      my $finalname = $self->{MAKEFILE};
 905      print STDOUT "Writing $finalname for $self->{NAME}\n";
 906  
 907      unlink($finalname, "MakeMaker.tmp", $Is_VMS ? 'Descrip.MMS' : ());
 908      open(FH,">MakeMaker.tmp") or die "Unable to open MakeMaker.tmp: $!";
 909  
 910      for $chunk (@{$self->{RESULT}}) {
 911          print FH "$chunk\n";
 912      }
 913  
 914      close FH;
 915      _rename("MakeMaker.tmp", $finalname) or
 916        warn "rename MakeMaker.tmp => $finalname: $!";
 917      chmod 0644, $finalname unless $Is_VMS;
 918  
 919      my %keep = map { ($_ => 1) } qw(NEEDS_LINKING HAS_LINK_CODE);
 920  
 921      if ($self->{PARENT} && !$self->{_KEEP_AFTER_FLUSH}) {
 922          foreach (keys %$self) { # safe memory
 923              delete $self->{$_} unless $keep{$_};
 924          }
 925      }
 926  
 927      system("$Config::Config{eunicefix} $finalname") unless $Config::Config{eunicefix} eq ":";
 928  }
 929  
 930  
 931  # This is a rename for OS's where the target must be unlinked first.
 932  sub _rename {
 933      my($src, $dest) = @_;
 934      chmod 0666, $dest;
 935      unlink $dest;
 936      return rename $src, $dest;
 937  }
 938  
 939  # This is an unlink for OS's where the target must be writable first.
 940  sub _unlink {
 941      my @files = @_;
 942      chmod 0666, @files;
 943      return unlink @files;
 944  }
 945  
 946  
 947  # The following mkbootstrap() is only for installations that are calling
 948  # the pre-4.1 mkbootstrap() from their old Makefiles. This MakeMaker
 949  # writes Makefiles, that use ExtUtils::Mkbootstrap directly.
 950  sub mkbootstrap {
 951      die <<END;
 952  !!! Your Makefile has been built such a long time ago, !!!
 953  !!! that is unlikely to work with current MakeMaker.   !!!
 954  !!! Please rebuild your Makefile                       !!!
 955  END
 956  }
 957  
 958  # Ditto for mksymlists() as of MakeMaker 5.17
 959  sub mksymlists {
 960      die <<END;
 961  !!! Your Makefile has been built such a long time ago, !!!
 962  !!! that is unlikely to work with current MakeMaker.   !!!
 963  !!! Please rebuild your Makefile                       !!!
 964  END
 965  }
 966  
 967  sub neatvalue {
 968      my($v) = @_;
 969      return "undef" unless defined $v;
 970      my($t) = ref $v;
 971      return "q[$v]" unless $t;
 972      if ($t eq 'ARRAY') {
 973          my(@m, @neat);
 974          push @m, "[";
 975          foreach my $elem (@$v) {
 976              push @neat, "q[$elem]";
 977          }
 978          push @m, join ", ", @neat;
 979          push @m, "]";
 980          return join "", @m;
 981      }
 982      return "$v" unless $t eq 'HASH';
 983      my(@m, $key, $val);
 984      while (($key,$val) = each %$v){
 985          last unless defined $key; # cautious programming in case (undef,undef) is true
 986          push(@m,"$key=>".neatvalue($val)) ;
 987      }
 988      return "{ ".join(', ',@m)." }";
 989  }
 990  
 991  sub selfdocument {
 992      my($self) = @_;
 993      my(@m);
 994      if ($Verbose){
 995          push @m, "\n# Full list of MakeMaker attribute values:";
 996          foreach my $key (sort keys %$self){
 997              next if $key eq 'RESULT' || $key =~ /^[A-Z][a-z]/;
 998              my($v) = neatvalue($self->{$key});
 999              $v =~ s/(CODE|HASH|ARRAY|SCALAR)\([\dxa-f]+\)/$1\(...\)/;
1000              $v =~ tr/\n/ /s;
1001              push @m, "# $key => $v";
1002          }
1003      }
1004      join "\n", @m;
1005  }
1006  
1007  1;
1008  
1009  __END__
1010  
1011  =head1 NAME
1012  
1013  ExtUtils::MakeMaker - Create a module Makefile
1014  
1015  =head1 SYNOPSIS
1016  
1017    use ExtUtils::MakeMaker;
1018  
1019    WriteMakefile( ATTRIBUTE => VALUE [, ...] );
1020  
1021  =head1 DESCRIPTION
1022  
1023  This utility is designed to write a Makefile for an extension module
1024  from a Makefile.PL. It is based on the Makefile.SH model provided by
1025  Andy Dougherty and the perl5-porters.
1026  
1027  It splits the task of generating the Makefile into several subroutines
1028  that can be individually overridden.  Each subroutine returns the text
1029  it wishes to have written to the Makefile.
1030  
1031  MakeMaker is object oriented. Each directory below the current
1032  directory that contains a Makefile.PL is treated as a separate
1033  object. This makes it possible to write an unlimited number of
1034  Makefiles with a single invocation of WriteMakefile().
1035  
1036  =head2 How To Write A Makefile.PL
1037  
1038  See ExtUtils::MakeMaker::Tutorial.
1039  
1040  The long answer is the rest of the manpage :-)
1041  
1042  =head2 Default Makefile Behaviour
1043  
1044  The generated Makefile enables the user of the extension to invoke
1045  
1046    perl Makefile.PL # optionally "perl Makefile.PL verbose"
1047    make
1048    make test        # optionally set TEST_VERBOSE=1
1049    make install     # See below
1050  
1051  The Makefile to be produced may be altered by adding arguments of the
1052  form C<KEY=VALUE>. E.g.
1053  
1054    perl Makefile.PL INSTALL_BASE=~
1055  
1056  Other interesting targets in the generated Makefile are
1057  
1058    make config     # to check if the Makefile is up-to-date
1059    make clean      # delete local temp files (Makefile gets renamed)
1060    make realclean  # delete derived files (including ./blib)
1061    make ci         # check in all the files in the MANIFEST file
1062    make dist       # see below the Distribution Support section
1063  
1064  =head2 make test
1065  
1066  MakeMaker checks for the existence of a file named F<test.pl> in the
1067  current directory and if it exists it execute the script with the
1068  proper set of perl C<-I> options.
1069  
1070  MakeMaker also checks for any files matching glob("t/*.t"). It will
1071  execute all matching files in alphabetical order via the
1072  L<Test::Harness> module with the C<-I> switches set correctly.
1073  
1074  If you'd like to see the raw output of your tests, set the
1075  C<TEST_VERBOSE> variable to true.
1076  
1077    make test TEST_VERBOSE=1
1078  
1079  =head2 make testdb
1080  
1081  A useful variation of the above is the target C<testdb>. It runs the
1082  test under the Perl debugger (see L<perldebug>). If the file
1083  F<test.pl> exists in the current directory, it is used for the test.
1084  
1085  If you want to debug some other testfile, set the C<TEST_FILE> variable
1086  thusly:
1087  
1088    make testdb TEST_FILE=t/mytest.t
1089  
1090  By default the debugger is called using C<-d> option to perl. If you
1091  want to specify some other option, set the C<TESTDB_SW> variable:
1092  
1093    make testdb TESTDB_SW=-Dx
1094  
1095  =head2 make install
1096  
1097  make alone puts all relevant files into directories that are named by
1098  the macros INST_LIB, INST_ARCHLIB, INST_SCRIPT, INST_MAN1DIR and
1099  INST_MAN3DIR.  All these default to something below ./blib if you are
1100  I<not> building below the perl source directory. If you I<are>
1101  building below the perl source, INST_LIB and INST_ARCHLIB default to
1102  ../../lib, and INST_SCRIPT is not defined.
1103  
1104  The I<install> target of the generated Makefile copies the files found
1105  below each of the INST_* directories to their INSTALL*
1106  counterparts. Which counterparts are chosen depends on the setting of
1107  INSTALLDIRS according to the following table:
1108  
1109                                   INSTALLDIRS set to
1110                             perl        site          vendor
1111  
1112                   PERLPREFIX      SITEPREFIX          VENDORPREFIX
1113    INST_ARCHLIB   INSTALLARCHLIB  INSTALLSITEARCH     INSTALLVENDORARCH
1114    INST_LIB       INSTALLPRIVLIB  INSTALLSITELIB      INSTALLVENDORLIB
1115    INST_BIN       INSTALLBIN      INSTALLSITEBIN      INSTALLVENDORBIN
1116    INST_SCRIPT    INSTALLSCRIPT   INSTALLSITESCRIPT   INSTALLVENDORSCRIPT
1117    INST_MAN1DIR   INSTALLMAN1DIR  INSTALLSITEMAN1DIR  INSTALLVENDORMAN1DIR
1118    INST_MAN3DIR   INSTALLMAN3DIR  INSTALLSITEMAN3DIR  INSTALLVENDORMAN3DIR
1119  
1120  The INSTALL... macros in turn default to their %Config
1121  ($Config{installprivlib}, $Config{installarchlib}, etc.) counterparts.
1122  
1123  You can check the values of these variables on your system with
1124  
1125      perl '-V:install.*'
1126  
1127  And to check the sequence in which the library directories are
1128  searched by perl, run
1129  
1130      perl -le 'print join $/, @INC'
1131  
1132  Sometimes older versions of the module you're installing live in other
1133  directories in @INC.  Because Perl loads the first version of a module it 
1134  finds, not the newest, you might accidentally get one of these older
1135  versions even after installing a brand new version.  To delete I<all other
1136  versions of the module you're installing> (not simply older ones) set the
1137  C<UNINST> variable.
1138  
1139      make install UNINST=1
1140  
1141  
1142  =head2 INSTALL_BASE
1143  
1144  INSTALL_BASE can be passed into Makefile.PL to change where your
1145  module will be installed.  INSTALL_BASE is more like what everyone
1146  else calls "prefix" than PREFIX is.
1147  
1148  To have everything installed in your home directory, do the following.
1149  
1150      # Unix users, INSTALL_BASE=~ works fine
1151      perl Makefile.PL INSTALL_BASE=/path/to/your/home/dir
1152  
1153  Like PREFIX, it sets several INSTALL* attributes at once.  Unlike
1154  PREFIX it is easy to predict where the module will end up.  The
1155  installation pattern looks like this:
1156  
1157      INSTALLARCHLIB     INSTALL_BASE/lib/perl5/$Config{archname}
1158      INSTALLPRIVLIB     INSTALL_BASE/lib/perl5
1159      INSTALLBIN         INSTALL_BASE/bin
1160      INSTALLSCRIPT      INSTALL_BASE/bin
1161      INSTALLMAN1DIR     INSTALL_BASE/man/man1
1162      INSTALLMAN3DIR     INSTALL_BASE/man/man3
1163  
1164  INSTALL_BASE in MakeMaker and C<--install_base> in Module::Build (as
1165  of 0.28) install to the same location.  If you want MakeMaker and
1166  Module::Build to install to the same location simply set INSTALL_BASE
1167  and C<--install_base> to the same location.
1168  
1169  INSTALL_BASE was added in 6.31.
1170  
1171  
1172  =head2 PREFIX and LIB attribute
1173  
1174  PREFIX and LIB can be used to set several INSTALL* attributes in one
1175  go.  Here's an example for installing into your home directory.
1176  
1177      # Unix users, PREFIX=~ works fine
1178      perl Makefile.PL PREFIX=/path/to/your/home/dir
1179  
1180  This will install all files in the module under your home directory,
1181  with man pages and libraries going into an appropriate place (usually
1182  ~/man and ~/lib).  How the exact location is determined is complicated
1183  and depends on how your Perl was configured.  INSTALL_BASE works more
1184  like what other build systems call "prefix" than PREFIX and we
1185  recommend you use that instead.
1186  
1187  Another way to specify many INSTALL directories with a single
1188  parameter is LIB.
1189  
1190      perl Makefile.PL LIB=~/lib
1191  
1192  This will install the module's architecture-independent files into
1193  ~/lib, the architecture-dependent files into ~/lib/$archname.
1194  
1195  Note, that in both cases the tilde expansion is done by MakeMaker, not
1196  by perl by default, nor by make.
1197  
1198  Conflicts between parameters LIB, PREFIX and the various INSTALL*
1199  arguments are resolved so that:
1200  
1201  =over 4
1202  
1203  =item *
1204  
1205  setting LIB overrides any setting of INSTALLPRIVLIB, INSTALLARCHLIB,
1206  INSTALLSITELIB, INSTALLSITEARCH (and they are not affected by PREFIX);
1207  
1208  =item *
1209  
1210  without LIB, setting PREFIX replaces the initial C<$Config{prefix}>
1211  part of those INSTALL* arguments, even if the latter are explicitly
1212  set (but are set to still start with C<$Config{prefix}>).
1213  
1214  =back
1215  
1216  If the user has superuser privileges, and is not working on AFS or
1217  relatives, then the defaults for INSTALLPRIVLIB, INSTALLARCHLIB,
1218  INSTALLSCRIPT, etc. will be appropriate, and this incantation will be
1219  the best:
1220  
1221      perl Makefile.PL; 
1222      make; 
1223      make test
1224      make install
1225  
1226  make install per default writes some documentation of what has been
1227  done into the file C<$(INSTALLARCHLIB)/perllocal.pod>. This feature
1228  can be bypassed by calling make pure_install.
1229  
1230  =head2 AFS users
1231  
1232  will have to specify the installation directories as these most
1233  probably have changed since perl itself has been installed. They will
1234  have to do this by calling
1235  
1236      perl Makefile.PL INSTALLSITELIB=/afs/here/today \
1237          INSTALLSCRIPT=/afs/there/now INSTALLMAN3DIR=/afs/for/manpages
1238      make
1239  
1240  Be careful to repeat this procedure every time you recompile an
1241  extension, unless you are sure the AFS installation directories are
1242  still valid.
1243  
1244  =head2 Static Linking of a new Perl Binary
1245  
1246  An extension that is built with the above steps is ready to use on
1247  systems supporting dynamic loading. On systems that do not support
1248  dynamic loading, any newly created extension has to be linked together
1249  with the available resources. MakeMaker supports the linking process
1250  by creating appropriate targets in the Makefile whenever an extension
1251  is built. You can invoke the corresponding section of the makefile with
1252  
1253      make perl
1254  
1255  That produces a new perl binary in the current directory with all
1256  extensions linked in that can be found in INST_ARCHLIB, SITELIBEXP,
1257  and PERL_ARCHLIB. To do that, MakeMaker writes a new Makefile, on
1258  UNIX, this is called Makefile.aperl (may be system dependent). If you
1259  want to force the creation of a new perl, it is recommended, that you
1260  delete this Makefile.aperl, so the directories are searched-through
1261  for linkable libraries again.
1262  
1263  The binary can be installed into the directory where perl normally
1264  resides on your machine with
1265  
1266      make inst_perl
1267  
1268  To produce a perl binary with a different name than C<perl>, either say
1269  
1270      perl Makefile.PL MAP_TARGET=myperl
1271      make myperl
1272      make inst_perl
1273  
1274  or say
1275  
1276      perl Makefile.PL
1277      make myperl MAP_TARGET=myperl
1278      make inst_perl MAP_TARGET=myperl
1279  
1280  In any case you will be prompted with the correct invocation of the
1281  C<inst_perl> target that installs the new binary into INSTALLBIN.
1282  
1283  make inst_perl per default writes some documentation of what has been
1284  done into the file C<$(INSTALLARCHLIB)/perllocal.pod>. This
1285  can be bypassed by calling make pure_inst_perl.
1286  
1287  Warning: the inst_perl: target will most probably overwrite your
1288  existing perl binary. Use with care!
1289  
1290  Sometimes you might want to build a statically linked perl although
1291  your system supports dynamic loading. In this case you may explicitly
1292  set the linktype with the invocation of the Makefile.PL or make:
1293  
1294      perl Makefile.PL LINKTYPE=static    # recommended
1295  
1296  or
1297  
1298      make LINKTYPE=static                # works on most systems
1299  
1300  =head2 Determination of Perl Library and Installation Locations
1301  
1302  MakeMaker needs to know, or to guess, where certain things are
1303  located.  Especially INST_LIB and INST_ARCHLIB (where to put the files
1304  during the make(1) run), PERL_LIB and PERL_ARCHLIB (where to read
1305  existing modules from), and PERL_INC (header files and C<libperl*.*>).
1306  
1307  Extensions may be built either using the contents of the perl source
1308  directory tree or from the installed perl library. The recommended way
1309  is to build extensions after you have run 'make install' on perl
1310  itself. You can do that in any directory on your hard disk that is not
1311  below the perl source tree. The support for extensions below the ext
1312  directory of the perl distribution is only good for the standard
1313  extensions that come with perl.
1314  
1315  If an extension is being built below the C<ext/> directory of the perl
1316  source then MakeMaker will set PERL_SRC automatically (e.g.,
1317  C<../..>).  If PERL_SRC is defined and the extension is recognized as
1318  a standard extension, then other variables default to the following:
1319  
1320    PERL_INC     = PERL_SRC
1321    PERL_LIB     = PERL_SRC/lib
1322    PERL_ARCHLIB = PERL_SRC/lib
1323    INST_LIB     = PERL_LIB
1324    INST_ARCHLIB = PERL_ARCHLIB
1325  
1326  If an extension is being built away from the perl source then MakeMaker
1327  will leave PERL_SRC undefined and default to using the installed copy
1328  of the perl library. The other variables default to the following:
1329  
1330    PERL_INC     = $archlibexp/CORE
1331    PERL_LIB     = $privlibexp
1332    PERL_ARCHLIB = $archlibexp
1333    INST_LIB     = ./blib/lib
1334    INST_ARCHLIB = ./blib/arch
1335  
1336  If perl has not yet been installed then PERL_SRC can be defined on the
1337  command line as shown in the previous section.
1338  
1339  
1340  =head2 Which architecture dependent directory?
1341  
1342  If you don't want to keep the defaults for the INSTALL* macros,
1343  MakeMaker helps you to minimize the typing needed: the usual
1344  relationship between INSTALLPRIVLIB and INSTALLARCHLIB is determined
1345  by Configure at perl compilation time. MakeMaker supports the user who
1346  sets INSTALLPRIVLIB. If INSTALLPRIVLIB is set, but INSTALLARCHLIB not,
1347  then MakeMaker defaults the latter to be the same subdirectory of
1348  INSTALLPRIVLIB as Configure decided for the counterparts in %Config ,
1349  otherwise it defaults to INSTALLPRIVLIB. The same relationship holds
1350  for INSTALLSITELIB and INSTALLSITEARCH.
1351  
1352  MakeMaker gives you much more freedom than needed to configure
1353  internal variables and get different results. It is worth to mention,
1354  that make(1) also lets you configure most of the variables that are
1355  used in the Makefile. But in the majority of situations this will not
1356  be necessary, and should only be done if the author of a package
1357  recommends it (or you know what you're doing).
1358  
1359  =head2 Using Attributes and Parameters
1360  
1361  The following attributes may be specified as arguments to WriteMakefile()
1362  or as NAME=VALUE pairs on the command line.
1363  
1364  =over 2
1365  
1366  =item ABSTRACT
1367  
1368  One line description of the module. Will be included in PPD file.
1369  
1370  =item ABSTRACT_FROM
1371  
1372  Name of the file that contains the package description. MakeMaker looks
1373  for a line in the POD matching /^($package\s-\s)(.*)/. This is typically
1374  the first line in the "=head1 NAME" section. $2 becomes the abstract.
1375  
1376  =item AUTHOR
1377  
1378  String containing name (and email address) of package author(s). Is used
1379  in PPD (Perl Package Description) files for PPM (Perl Package Manager).
1380  
1381  =item BINARY_LOCATION
1382  
1383  Used when creating PPD files for binary packages.  It can be set to a
1384  full or relative path or URL to the binary archive for a particular
1385  architecture.  For example:
1386  
1387          perl Makefile.PL BINARY_LOCATION=x86/Agent.tar.gz
1388  
1389  builds a PPD package that references a binary of the C<Agent> package,
1390  located in the C<x86> directory relative to the PPD itself.
1391  
1392  =item C
1393  
1394  Ref to array of *.c file names. Initialised from a directory scan
1395  and the values portion of the XS attribute hash. This is not
1396  currently used by MakeMaker but may be handy in Makefile.PLs.
1397  
1398  =item CCFLAGS
1399  
1400  String that will be included in the compiler call command line between
1401  the arguments INC and OPTIMIZE.
1402  
1403  =item CONFIG
1404  
1405  Arrayref. E.g. [qw(archname manext)] defines ARCHNAME & MANEXT from
1406  config.sh. MakeMaker will add to CONFIG the following values anyway:
1407  ar
1408  cc
1409  cccdlflags
1410  ccdlflags
1411  dlext
1412  dlsrc
1413  ld
1414  lddlflags
1415  ldflags
1416  libc
1417  lib_ext
1418  obj_ext
1419  ranlib
1420  sitelibexp
1421  sitearchexp
1422  so
1423  
1424  =item CONFIGURE
1425  
1426  CODE reference. The subroutine should return a hash reference. The
1427  hash may contain further attributes, e.g. {LIBS =E<gt> ...}, that have to
1428  be determined by some evaluation method.
1429  
1430  =item DEFINE
1431  
1432  Something like C<"-DHAVE_UNISTD_H">
1433  
1434  =item DESTDIR
1435  
1436  This is the root directory into which the code will be installed.  It
1437  I<prepends itself to the normal prefix>.  For example, if your code
1438  would normally go into F</usr/local/lib/perl> you could set DESTDIR=~/tmp/
1439  and installation would go into F<~/tmp/usr/local/lib/perl>.
1440  
1441  This is primarily of use for people who repackage Perl modules.
1442  
1443  NOTE: Due to the nature of make, it is important that you put the trailing
1444  slash on your DESTDIR.  F<~/tmp/> not F<~/tmp>.
1445  
1446  =item DIR
1447  
1448  Ref to array of subdirectories containing Makefile.PLs e.g. [ 'sdbm'
1449  ] in ext/SDBM_File
1450  
1451  =item DISTNAME
1452  
1453  A safe filename for the package. 
1454  
1455  Defaults to NAME above but with :: replaced with -.
1456  
1457  For example, Foo::Bar becomes Foo-Bar.
1458  
1459  =item DISTVNAME
1460  
1461  Your name for distributing the package with the version number
1462  included.  This is used by 'make dist' to name the resulting archive
1463  file.
1464  
1465  Defaults to DISTNAME-VERSION.
1466  
1467  For example, version 1.04 of Foo::Bar becomes Foo-Bar-1.04.
1468  
1469  On some OS's where . has special meaning VERSION_SYM may be used in
1470  place of VERSION.
1471  
1472  =item DL_FUNCS
1473  
1474  Hashref of symbol names for routines to be made available as universal
1475  symbols.  Each key/value pair consists of the package name and an
1476  array of routine names in that package.  Used only under AIX, OS/2,
1477  VMS and Win32 at present.  The routine names supplied will be expanded
1478  in the same way as XSUB names are expanded by the XS() macro.
1479  Defaults to
1480  
1481    {"$(NAME)" => ["boot_$(NAME)" ] }
1482  
1483  e.g.
1484  
1485    {"RPC" => [qw( boot_rpcb rpcb_gettime getnetconfigent )],
1486     "NetconfigPtr" => [ 'DESTROY'] }
1487  
1488  Please see the L<ExtUtils::Mksymlists> documentation for more information
1489  about the DL_FUNCS, DL_VARS and FUNCLIST attributes.
1490  
1491  =item DL_VARS
1492  
1493  Array of symbol names for variables to be made available as universal symbols.
1494  Used only under AIX, OS/2, VMS and Win32 at present.  Defaults to [].
1495  (e.g. [ qw(Foo_version Foo_numstreams Foo_tree ) ])
1496  
1497  =item EXCLUDE_EXT
1498  
1499  Array of extension names to exclude when doing a static build.  This
1500  is ignored if INCLUDE_EXT is present.  Consult INCLUDE_EXT for more
1501  details.  (e.g.  [ qw( Socket POSIX ) ] )
1502  
1503  This attribute may be most useful when specified as a string on the
1504  command line:  perl Makefile.PL EXCLUDE_EXT='Socket Safe'
1505  
1506  =item EXE_FILES
1507  
1508  Ref to array of executable files. The files will be copied to the
1509  INST_SCRIPT directory. Make realclean will delete them from there
1510  again.
1511  
1512  If your executables start with something like #!perl or
1513  #!/usr/bin/perl MakeMaker will change this to the path of the perl
1514  'Makefile.PL' was invoked with so the programs will be sure to run
1515  properly even if perl is not in /usr/bin/perl.
1516  
1517  =item FIRST_MAKEFILE
1518  
1519  The name of the Makefile to be produced.  This is used for the second
1520  Makefile that will be produced for the MAP_TARGET.
1521  
1522  Defaults to 'Makefile' or 'Descrip.MMS' on VMS.
1523  
1524  (Note: we couldn't use MAKEFILE because dmake uses this for something
1525  else).
1526  
1527  =item FULLPERL
1528  
1529  Perl binary able to run this extension, load XS modules, etc...
1530  
1531  =item FULLPERLRUN
1532  
1533  Like PERLRUN, except it uses FULLPERL.
1534  
1535  =item FULLPERLRUNINST
1536  
1537  Like PERLRUNINST, except it uses FULLPERL.
1538  
1539  =item FUNCLIST
1540  
1541  This provides an alternate means to specify function names to be
1542  exported from the extension.  Its value is a reference to an
1543  array of function names to be exported by the extension.  These
1544  names are passed through unaltered to the linker options file.
1545  
1546  =item H
1547  
1548  Ref to array of *.h file names. Similar to C.
1549  
1550  =item IMPORTS
1551  
1552  This attribute is used to specify names to be imported into the
1553  extension. Takes a hash ref.
1554  
1555  It is only used on OS/2 and Win32.
1556  
1557  =item INC
1558  
1559  Include file dirs eg: C<"-I/usr/5include -I/path/to/inc">
1560  
1561  =item INCLUDE_EXT
1562  
1563  Array of extension names to be included when doing a static build.
1564  MakeMaker will normally build with all of the installed extensions when
1565  doing a static build, and that is usually the desired behavior.  If
1566  INCLUDE_EXT is present then MakeMaker will build only with those extensions
1567  which are explicitly mentioned. (e.g.  [ qw( Socket POSIX ) ])
1568  
1569  It is not necessary to mention DynaLoader or the current extension when
1570  filling in INCLUDE_EXT.  If the INCLUDE_EXT is mentioned but is empty then
1571  only DynaLoader and the current extension will be included in the build.
1572  
1573  This attribute may be most useful when specified as a string on the
1574  command line:  perl Makefile.PL INCLUDE_EXT='POSIX Socket Devel::Peek'
1575  
1576  =item INSTALLARCHLIB
1577  
1578  Used by 'make install', which copies files from INST_ARCHLIB to this
1579  directory if INSTALLDIRS is set to perl.
1580  
1581  =item INSTALLBIN
1582  
1583  Directory to install binary files (e.g. tkperl) into if
1584  INSTALLDIRS=perl.
1585  
1586  =item INSTALLDIRS
1587  
1588  Determines which of the sets of installation directories to choose:
1589  perl, site or vendor.  Defaults to site.
1590  
1591  =item INSTALLMAN1DIR
1592  
1593  =item INSTALLMAN3DIR
1594  
1595  These directories get the man pages at 'make install' time if
1596  INSTALLDIRS=perl.  Defaults to $Config{installman*dir}.
1597  
1598  If set to 'none', no man pages will be installed.
1599  
1600  =item INSTALLPRIVLIB
1601  
1602  Used by 'make install', which copies files from INST_LIB to this
1603  directory if INSTALLDIRS is set to perl.
1604  
1605  Defaults to $Config{installprivlib}.
1606  
1607  =item INSTALLSCRIPT
1608  
1609  Used by 'make install' which copies files from INST_SCRIPT to this
1610  directory if INSTALLDIRS=perl.
1611  
1612  =item INSTALLSITEARCH
1613  
1614  Used by 'make install', which copies files from INST_ARCHLIB to this
1615  directory if INSTALLDIRS is set to site (default).
1616  
1617  =item INSTALLSITEBIN
1618  
1619  Used by 'make install', which copies files from INST_BIN to this
1620  directory if INSTALLDIRS is set to site (default).
1621  
1622  =item INSTALLSITELIB
1623  
1624  Used by 'make install', which copies files from INST_LIB to this
1625  directory if INSTALLDIRS is set to site (default).
1626  
1627  =item INSTALLSITEMAN1DIR
1628  
1629  =item INSTALLSITEMAN3DIR
1630  
1631  These directories get the man pages at 'make install' time if
1632  INSTALLDIRS=site (default).  Defaults to 
1633  $(SITEPREFIX)/man/man$(MAN*EXT).
1634  
1635  If set to 'none', no man pages will be installed.
1636  
1637  =item INSTALLSITESCRIPT
1638  
1639  Used by 'make install' which copies files from INST_SCRIPT to this
1640  directory if INSTALLDIRS is set to site (default).
1641  
1642  =item INSTALLVENDORARCH
1643  
1644  Used by 'make install', which copies files from INST_ARCHLIB to this
1645  directory if INSTALLDIRS is set to vendor.
1646  
1647  =item INSTALLVENDORBIN
1648  
1649  Used by 'make install', which copies files from INST_BIN to this
1650  directory if INSTALLDIRS is set to vendor.
1651  
1652  =item INSTALLVENDORLIB
1653  
1654  Used by 'make install', which copies files from INST_LIB to this
1655  directory if INSTALLDIRS is set to vendor.
1656  
1657  =item INSTALLVENDORMAN1DIR
1658  
1659  =item INSTALLVENDORMAN3DIR
1660  
1661  These directories get the man pages at 'make install' time if
1662  INSTALLDIRS=vendor.  Defaults to $(VENDORPREFIX)/man/man$(MAN*EXT).
1663  
1664  If set to 'none', no man pages will be installed.
1665  
1666  =item INSTALLVENDORSCRIPT
1667  
1668  Used by 'make install' which copies files from INST_SCRIPT to this
1669  directory if INSTALLDIRS is set to is set to vendor.
1670  
1671  =item INST_ARCHLIB
1672  
1673  Same as INST_LIB for architecture dependent files.
1674  
1675  =item INST_BIN
1676  
1677  Directory to put real binary files during 'make'. These will be copied
1678  to INSTALLBIN during 'make install'
1679  
1680  =item INST_LIB
1681  
1682  Directory where we put library files of this extension while building
1683  it.
1684  
1685  =item INST_MAN1DIR
1686  
1687  Directory to hold the man pages at 'make' time
1688  
1689  =item INST_MAN3DIR
1690  
1691  Directory to hold the man pages at 'make' time
1692  
1693  =item INST_SCRIPT
1694  
1695  Directory, where executable files should be installed during
1696  'make'. Defaults to "./blib/script", just to have a dummy location during
1697  testing. make install will copy the files in INST_SCRIPT to
1698  INSTALLSCRIPT.
1699  
1700  =item LD
1701  
1702  Program to be used to link libraries for dynamic loading.
1703  
1704  Defaults to $Config{ld}.
1705  
1706  =item LDDLFLAGS
1707  
1708  Any special flags that might need to be passed to ld to create a
1709  shared library suitable for dynamic loading.  It is up to the makefile
1710  to use it.  (See L<Config/lddlflags>)
1711  
1712  Defaults to $Config{lddlflags}.
1713  
1714  =item LDFROM
1715  
1716  Defaults to "$(OBJECT)" and is used in the ld command to specify
1717  what files to link/load from (also see dynamic_lib below for how to
1718  specify ld flags)
1719  
1720  =item LIB
1721  
1722  LIB should only be set at C<perl Makefile.PL> time but is allowed as a
1723  MakeMaker argument. It has the effect of setting both INSTALLPRIVLIB
1724  and INSTALLSITELIB to that value regardless any explicit setting of
1725  those arguments (or of PREFIX).  INSTALLARCHLIB and INSTALLSITEARCH
1726  are set to the corresponding architecture subdirectory.
1727  
1728  =item LIBPERL_A
1729  
1730  The filename of the perllibrary that will be used together with this
1731  extension. Defaults to libperl.a.
1732  
1733  =item LIBS
1734  
1735  An anonymous array of alternative library
1736  specifications to be searched for (in order) until
1737  at least one library is found. E.g.
1738  
1739    'LIBS' => ["-lgdbm", "-ldbm -lfoo", "-L/path -ldbm.nfs"]
1740  
1741  Mind, that any element of the array
1742  contains a complete set of arguments for the ld
1743  command. So do not specify
1744  
1745    'LIBS' => ["-ltcl", "-ltk", "-lX11"]
1746  
1747  See ODBM_File/Makefile.PL for an example, where an array is needed. If
1748  you specify a scalar as in
1749  
1750    'LIBS' => "-ltcl -ltk -lX11"
1751  
1752  MakeMaker will turn it into an array with one element.
1753  
1754  =item LICENSE
1755  
1756  The licensing terms of your distribution.  Generally its "perl" for the
1757  same license as Perl itself.
1758  
1759  See L<Module::Build::Authoring> for the list of options.
1760  
1761  Defaults to "unknown".
1762  
1763  =item LINKTYPE
1764  
1765  'static' or 'dynamic' (default unless usedl=undef in
1766  config.sh). Should only be used to force static linking (also see
1767  linkext below).
1768  
1769  =item MAKE
1770  
1771  Variant of make you intend to run the generated Makefile with.  This
1772  parameter lets Makefile.PL know what make quirks to account for when
1773  generating the Makefile.
1774  
1775  MakeMaker also honors the MAKE environment variable.  This parameter
1776  takes precedent.
1777  
1778  Currently the only significant values are 'dmake' and 'nmake' for Windows
1779  users.
1780  
1781  Defaults to $Config{make}.
1782  
1783  =item MAKEAPERL
1784  
1785  Boolean which tells MakeMaker, that it should include the rules to
1786  make a perl. This is handled automatically as a switch by
1787  MakeMaker. The user normally does not need it.
1788  
1789  =item MAKEFILE_OLD
1790  
1791  When 'make clean' or similar is run, the $(FIRST_MAKEFILE) will be
1792  backed up at this location.
1793  
1794  Defaults to $(FIRST_MAKEFILE).old or $(FIRST_MAKEFILE)_old on VMS.
1795  
1796  =item MAN1PODS
1797  
1798  Hashref of pod-containing files. MakeMaker will default this to all
1799  EXE_FILES files that include POD directives. The files listed
1800  here will be converted to man pages and installed as was requested
1801  at Configure time.
1802  
1803  =item MAN3PODS
1804  
1805  Hashref that assigns to *.pm and *.pod files the files into which the
1806  manpages are to be written. MakeMaker parses all *.pod and *.pm files
1807  for POD directives. Files that contain POD will be the default keys of
1808  the MAN3PODS hashref. These will then be converted to man pages during
1809  C<make> and will be installed during C<make install>.
1810  
1811  =item MAP_TARGET
1812  
1813  If it is intended, that a new perl binary be produced, this variable
1814  may hold a name for that binary. Defaults to perl
1815  
1816  =item MYEXTLIB
1817  
1818  If the extension links to a library that it builds set this to the
1819  name of the library (see SDBM_File)
1820  
1821  =item NAME
1822  
1823  Perl module name for this extension (DBD::Oracle). This will default
1824  to the directory name but should be explicitly defined in the
1825  Makefile.PL.
1826  
1827  =item NEEDS_LINKING
1828  
1829  MakeMaker will figure out if an extension contains linkable code
1830  anywhere down the directory tree, and will set this variable
1831  accordingly, but you can speed it up a very little bit if you define
1832  this boolean variable yourself.
1833  
1834  =item NOECHO
1835  
1836  Command so make does not print the literal commands its running.
1837  
1838  By setting it to an empty string you can generate a Makefile that
1839  prints all commands. Mainly used in debugging MakeMaker itself.
1840  
1841  Defaults to C<@>.
1842  
1843  =item NORECURS
1844  
1845  Boolean.  Attribute to inhibit descending into subdirectories.
1846  
1847  =item NO_META
1848  
1849  When true, suppresses the generation and addition to the MANIFEST of
1850  the META.yml module meta-data file during 'make distdir'.
1851  
1852  Defaults to false.
1853  
1854  =item NO_VC
1855  
1856  In general, any generated Makefile checks for the current version of
1857  MakeMaker and the version the Makefile was built under. If NO_VC is
1858  set, the version check is neglected. Do not write this into your
1859  Makefile.PL, use it interactively instead.
1860  
1861  =item OBJECT
1862  
1863  List of object files, defaults to '$(BASEEXT)$(OBJ_EXT)', but can be a long
1864  string containing all object files, e.g. "tkpBind.o
1865  tkpButton.o tkpCanvas.o"
1866  
1867  (Where BASEEXT is the last component of NAME, and OBJ_EXT is $Config{obj_ext}.)
1868  
1869  =item OPTIMIZE
1870  
1871  Defaults to C<-O>. Set it to C<-g> to turn debugging on. The flag is
1872  passed to subdirectory makes.
1873  
1874  =item PERL
1875  
1876  Perl binary for tasks that can be done by miniperl
1877  
1878  =item PERL_CORE
1879  
1880  Set only when MakeMaker is building the extensions of the Perl core
1881  distribution.
1882  
1883  =item PERLMAINCC
1884  
1885  The call to the program that is able to compile perlmain.c. Defaults
1886  to $(CC).
1887  
1888  =item PERL_ARCHLIB
1889  
1890  Same as for PERL_LIB, but for architecture dependent files.
1891  
1892  Used only when MakeMaker is building the extensions of the Perl core
1893  distribution (because normally $(PERL_ARCHLIB) is automatically in @INC,
1894  and adding it would get in the way of PERL5LIB).
1895  
1896  =item PERL_LIB
1897  
1898  Directory containing the Perl library to use.
1899  
1900  Used only when MakeMaker is building the extensions of the Perl core
1901  distribution (because normally $(PERL_LIB) is automatically in @INC,
1902  and adding it would get in the way of PERL5LIB).
1903  
1904  =item PERL_MALLOC_OK
1905  
1906  defaults to 0.  Should be set to TRUE if the extension can work with
1907  the memory allocation routines substituted by the Perl malloc() subsystem.
1908  This should be applicable to most extensions with exceptions of those
1909  
1910  =over 4
1911  
1912  =item *
1913  
1914  with bugs in memory allocations which are caught by Perl's malloc();
1915  
1916  =item *
1917  
1918  which interact with the memory allocator in other ways than via
1919  malloc(), realloc(), free(), calloc(), sbrk() and brk();
1920  
1921  =item *
1922  
1923  which rely on special alignment which is not provided by Perl's malloc().
1924  
1925  =back
1926  
1927  B<NOTE.>  Negligence to set this flag in I<any one> of loaded extension
1928  nullifies many advantages of Perl's malloc(), such as better usage of
1929  system resources, error detection, memory usage reporting, catchable failure
1930  of memory allocations, etc.
1931  
1932  =item PERLPREFIX
1933  
1934  Directory under which core modules are to be installed.
1935  
1936  Defaults to $Config{installprefixexp} falling back to
1937  $Config{installprefix}, $Config{prefixexp} or $Config{prefix} should
1938  $Config{installprefixexp} not exist.
1939  
1940  Overridden by PREFIX.
1941  
1942  =item PERLRUN
1943  
1944  Use this instead of $(PERL) when you wish to run perl.  It will set up
1945  extra necessary flags for you.
1946  
1947  =item PERLRUNINST
1948  
1949  Use this instead of $(PERL) when you wish to run perl to work with
1950  modules.  It will add things like -I$(INST_ARCH) and other necessary
1951  flags so perl can see the modules you're about to install.
1952  
1953  =item PERL_SRC
1954  
1955  Directory containing the Perl source code (use of this should be
1956  avoided, it may be undefined)
1957  
1958  =item PERM_RW
1959  
1960  Desired permission for read/writable files. Defaults to C<644>.
1961  See also L<MM_Unix/perm_rw>.
1962  
1963  =item PERM_RWX
1964  
1965  Desired permission for executable files. Defaults to C<755>.
1966  See also L<MM_Unix/perm_rwx>.
1967  
1968  =item PL_FILES
1969  
1970  MakeMaker can run programs to generate files for you at build time.
1971  By default any file named *.PL (except Makefile.PL and Build.PL) in
1972  the top level directory will be assumed to be a Perl program and run
1973  passing its own basename in as an argument.  For example...
1974  
1975      perl foo.PL foo
1976  
1977  This behavior can be overridden by supplying your own set of files to
1978  search.  PL_FILES accepts a hash ref, the key being the file to run
1979  and the value is passed in as the first argument when the PL file is run.
1980  
1981      PL_FILES => {'bin/foobar.PL' => 'bin/foobar'}
1982  
1983  Would run bin/foobar.PL like this:
1984  
1985      perl bin/foobar.PL bin/foobar
1986  
1987  If multiple files from one program are desired an array ref can be used.
1988  
1989      PL_FILES => {'bin/foobar.PL' => [qw(bin/foobar1 bin/foobar2)]}
1990  
1991  In this case the program will be run multiple times using each target file.
1992  
1993      perl bin/foobar.PL bin/foobar1
1994      perl bin/foobar.PL bin/foobar2
1995  
1996  PL files are normally run B<after> pm_to_blib and include INST_LIB and
1997  INST_ARCH in its C<@INC> so the just built modules can be
1998  accessed... unless the PL file is making a module (or anything else in
1999  PM) in which case it is run B<before> pm_to_blib and does not include
2000  INST_LIB and INST_ARCH in its C<@INC>.  This apparently odd behavior
2001  is there for backwards compatibility (and its somewhat DWIM).
2002  
2003  
2004  =item PM
2005  
2006  Hashref of .pm files and *.pl files to be installed.  e.g.
2007  
2008    {'name_of_file.pm' => '$(INST_LIBDIR)/install_as.pm'}
2009  
2010  By default this will include *.pm and *.pl and the files found in
2011  the PMLIBDIRS directories.  Defining PM in the
2012  Makefile.PL will override PMLIBDIRS.
2013  
2014  =item PMLIBDIRS
2015  
2016  Ref to array of subdirectories containing library files.  Defaults to
2017  [ 'lib', $(BASEEXT) ]. The directories will be scanned and I<any> files
2018  they contain will be installed in the corresponding location in the
2019  library.  A libscan() method can be used to alter the behaviour.
2020  Defining PM in the Makefile.PL will override PMLIBDIRS.
2021  
2022  (Where BASEEXT is the last component of NAME.)
2023  
2024  =item PM_FILTER
2025  
2026  A filter program, in the traditional Unix sense (input from stdin, output
2027  to stdout) that is passed on each .pm file during the build (in the
2028  pm_to_blib() phase).  It is empty by default, meaning no filtering is done.
2029  
2030  Great care is necessary when defining the command if quoting needs to be
2031  done.  For instance, you would need to say:
2032  
2033    {'PM_FILTER' => 'grep -v \\"^\\#\\"'}
2034  
2035  to remove all the leading comments on the fly during the build.  The
2036  extra \\ are necessary, unfortunately, because this variable is interpolated
2037  within the context of a Perl program built on the command line, and double
2038  quotes are what is used with the -e switch to build that command line.  The
2039  # is escaped for the Makefile, since what is going to be generated will then
2040  be:
2041  
2042    PM_FILTER = grep -v \"^\#\"
2043  
2044  Without the \\ before the #, we'd have the start of a Makefile comment,
2045  and the macro would be incorrectly defined.
2046  
2047  =item POLLUTE
2048  
2049  Release 5.005 grandfathered old global symbol names by providing preprocessor
2050  macros for extension source compatibility.  As of release 5.6, these
2051  preprocessor definitions are not available by default.  The POLLUTE flag
2052  specifies that the old names should still be defined:
2053  
2054    perl Makefile.PL POLLUTE=1
2055  
2056  Please inform the module author if this is necessary to successfully install
2057  a module under 5.6 or later.
2058  
2059  =item PPM_INSTALL_EXEC
2060  
2061  Name of the executable used to run C<PPM_INSTALL_SCRIPT> below. (e.g. perl)
2062  
2063  =item PPM_INSTALL_SCRIPT
2064  
2065  Name of the script that gets executed by the Perl Package Manager after
2066  the installation of a package.
2067  
2068  =item PREFIX
2069  
2070  This overrides all the default install locations.  Man pages,
2071  libraries, scripts, etc...  MakeMaker will try to make an educated
2072  guess about where to place things under the new PREFIX based on your
2073  Config defaults.  Failing that, it will fall back to a structure
2074  which should be sensible for your platform.
2075  
2076  If you specify LIB or any INSTALL* variables they will not be effected
2077  by the PREFIX.
2078  
2079  =item PREREQ_FATAL
2080  
2081  Bool. If this parameter is true, failing to have the required modules
2082  (or the right versions thereof) will be fatal. C<perl Makefile.PL>
2083  will C<die> instead of simply informing the user of the missing dependencies.
2084  
2085  It is I<extremely> rare to have to use C<PREREQ_FATAL>. Its use by module
2086  authors is I<strongly discouraged> and should never be used lightly.
2087  Module installation tools have ways of resolving umet dependencies but
2088  to do that they need a F<Makefile>.  Using C<PREREQ_FATAL> breaks this.
2089  That's bad.
2090  
2091  The only situation where it is appropriate is when you have
2092  dependencies that are indispensible to actually I<write> a
2093  F<Makefile>. For example, MakeMaker's F<Makefile.PL> needs L<File::Spec>.
2094  If its not available it cannot write the F<Makefile>.
2095  
2096  Note: see L<Test::Harness> for a shortcut for stopping tests early
2097  if you are missing dependencies and are afraid that users might
2098  use your module with an incomplete environment.
2099  
2100  =item PREREQ_PM
2101  
2102  Hashref: Names of modules that need to be available to run this
2103  extension (e.g. Fcntl for SDBM_File) are the keys of the hash and the
2104  desired version is the value. If the required version number is 0, we
2105  only check if any version is installed already.
2106  
2107  =item PREREQ_PRINT
2108  
2109  Bool.  If this parameter is true, the prerequisites will be printed to
2110  stdout and MakeMaker will exit.  The output format is an evalable hash
2111  ref.
2112  
2113  $PREREQ_PM = {
2114                 'A::B' => Vers1,
2115                 'C::D' => Vers2,
2116                 ...
2117               };
2118  
2119  =item PRINT_PREREQ
2120  
2121  RedHatism for C<PREREQ_PRINT>.  The output format is different, though:
2122  
2123      perl(A::B)>=Vers1 perl(C::D)>=Vers2 ...
2124  
2125  =item SITEPREFIX
2126  
2127  Like PERLPREFIX, but only for the site install locations.
2128  
2129  Defaults to $Config{siteprefixexp}.  Perls prior to 5.6.0 didn't have
2130  an explicit siteprefix in the Config.  In those cases
2131  $Config{installprefix} will be used.
2132  
2133  Overridable by PREFIX
2134  
2135  =item SIGN
2136  
2137  When true, perform the generation and addition to the MANIFEST of the
2138  SIGNATURE file in the distdir during 'make distdir', via 'cpansign
2139  -s'.
2140  
2141  Note that you need to install the Module::Signature module to
2142  perform this operation.
2143  
2144  Defaults to false.
2145  
2146  =item SKIP
2147  
2148  Arrayref. E.g. [qw(name1 name2)] skip (do not write) sections of the
2149  Makefile. Caution! Do not use the SKIP attribute for the negligible
2150  speedup. It may seriously damage the resulting Makefile. Only use it
2151  if you really need it.
2152  
2153  =item TYPEMAPS
2154  
2155  Ref to array of typemap file names.  Use this when the typemaps are
2156  in some directory other than the current directory or when they are
2157  not named B<typemap>.  The last typemap in the list takes
2158  precedence.  A typemap in the current directory has highest
2159  precedence, even if it isn't listed in TYPEMAPS.  The default system
2160  typemap has lowest precedence.
2161  
2162  =item VENDORPREFIX
2163  
2164  Like PERLPREFIX, but only for the vendor install locations.
2165  
2166  Defaults to $Config{vendorprefixexp}.
2167  
2168  Overridable by PREFIX
2169  
2170  =item VERBINST
2171  
2172  If true, make install will be verbose
2173  
2174  =item VERSION
2175  
2176  Your version number for distributing the package.  This defaults to
2177  0.1.
2178  
2179  =item VERSION_FROM
2180  
2181  Instead of specifying the VERSION in the Makefile.PL you can let
2182  MakeMaker parse a file to determine the version number. The parsing
2183  routine requires that the file named by VERSION_FROM contains one
2184  single line to compute the version number. The first line in the file
2185  that contains the regular expression
2186  
2187      /([\$*])(([\w\:\']*)\bVERSION)\b.*\=/
2188  
2189  will be evaluated with eval() and the value of the named variable
2190  B<after> the eval() will be assigned to the VERSION attribute of the
2191  MakeMaker object. The following lines will be parsed o.k.:
2192  
2193      $VERSION = '1.00';
2194      *VERSION = \'1.01';
2195      ($VERSION) = q$Revision: 41145 $ =~ /(\d+)/g;
2196      $FOO::VERSION = '1.10';
2197      *FOO::VERSION = \'1.11';
2198      our $VERSION = 1.2.3;       # new for perl5.6.0
2199  
2200  but these will fail:
2201  
2202      my $VERSION = '1.01';
2203      local $VERSION = '1.02';
2204      local $FOO::VERSION = '1.30';
2205  
2206  L<version> will be loaded, if available, so this will work.
2207  
2208      our $VERSION = qv(1.2.3);   # version.pm will be loaded if available
2209  
2210  Its up to you to declare a dependency on C<version>.  Also note that this
2211  feature was introduced in MakeMaker 6.35.  Earlier versions of MakeMaker
2212  require this:
2213  
2214      # All on one line
2215      use version; our $VERSION = qv(1.2.3);
2216  
2217  (Putting C<my> or C<local> on the preceding line will work o.k.)
2218  
2219  The file named in VERSION_FROM is not added as a dependency to
2220  Makefile. This is not really correct, but it would be a major pain
2221  during development to have to rewrite the Makefile for any smallish
2222  change in that file. If you want to make sure that the Makefile
2223  contains the correct VERSION macro after any change of the file, you
2224  would have to do something like
2225  
2226      depend => { Makefile => '$(VERSION_FROM)' }
2227  
2228  See attribute C<depend> below.
2229  
2230  =item VERSION_SYM
2231  
2232  A sanitized VERSION with . replaced by _.  For places where . has
2233  special meaning (some filesystems, RCS labels, etc...)
2234  
2235  =item XS
2236  
2237  Hashref of .xs files. MakeMaker will default this.  e.g.
2238  
2239    {'name_of_file.xs' => 'name_of_file.c'}
2240  
2241  The .c files will automatically be included in the list of files
2242  deleted by a make clean.
2243  
2244  =item XSOPT
2245  
2246  String of options to pass to xsubpp.  This might include C<-C++> or
2247  C<-extern>.  Do not include typemaps here; the TYPEMAP parameter exists for
2248  that purpose.
2249  
2250  =item XSPROTOARG
2251  
2252  May be set to an empty string, which is identical to C<-prototypes>, or
2253  C<-noprototypes>. See the xsubpp documentation for details. MakeMaker
2254  defaults to the empty string.
2255  
2256  =item XS_VERSION
2257  
2258  Your version number for the .xs file of this package.  This defaults
2259  to the value of the VERSION attribute.
2260  
2261  =back
2262  
2263  =head2 Additional lowercase attributes
2264  
2265  can be used to pass parameters to the methods which implement that
2266  part of the Makefile.  Parameters are specified as a hash ref but are
2267  passed to the method as a hash.
2268  
2269  =over 2
2270  
2271  =item clean
2272  
2273    {FILES => "*.xyz foo"}
2274  
2275  =item depend
2276  
2277    {ANY_TARGET => ANY_DEPENDENCY, ...}
2278  
2279  (ANY_TARGET must not be given a double-colon rule by MakeMaker.)
2280  
2281  =item dist
2282  
2283    {TARFLAGS => 'cvfF', COMPRESS => 'gzip', SUFFIX => '.gz',
2284    SHAR => 'shar -m', DIST_CP => 'ln', ZIP => '/bin/zip',
2285    ZIPFLAGS => '-rl', DIST_DEFAULT => 'private tardist' }
2286  
2287  If you specify COMPRESS, then SUFFIX should also be altered, as it is
2288  needed to tell make the target file of the compression. Setting
2289  DIST_CP to ln can be useful, if you need to preserve the timestamps on
2290  your files. DIST_CP can take the values 'cp', which copies the file,
2291  'ln', which links the file, and 'best' which copies symbolic links and
2292  links the rest. Default is 'best'.
2293  
2294  =item dynamic_lib
2295  
2296    {ARMAYBE => 'ar', OTHERLDFLAGS => '...', INST_DYNAMIC_DEP => '...'}
2297  
2298  =item linkext
2299  
2300    {LINKTYPE => 'static', 'dynamic' or ''}
2301  
2302  NB: Extensions that have nothing but *.pm files had to say
2303  
2304    {LINKTYPE => ''}
2305  
2306  with Pre-5.0 MakeMakers. Since version 5.00 of MakeMaker such a line
2307  can be deleted safely. MakeMaker recognizes when there's nothing to
2308  be linked.
2309  
2310  =item macro
2311  
2312    {ANY_MACRO => ANY_VALUE, ...}
2313  
2314  =item postamble
2315  
2316  Anything put here will be passed to MY::postamble() if you have one.
2317  
2318  =item realclean
2319  
2320    {FILES => '$(INST_ARCHAUTODIR)/*.xyz'}
2321  
2322  =item test
2323  
2324    {TESTS => 't/*.t'}
2325  
2326  =item tool_autosplit
2327  
2328    {MAXLEN => 8}
2329  
2330  =back
2331  
2332  =head2 Overriding MakeMaker Methods
2333  
2334  If you cannot achieve the desired Makefile behaviour by specifying
2335  attributes you may define private subroutines in the Makefile.PL.
2336  Each subroutine returns the text it wishes to have written to
2337  the Makefile. To override a section of the Makefile you can
2338  either say:
2339  
2340          sub MY::c_o { "new literal text" }
2341  
2342  or you can edit the default by saying something like:
2343  
2344          package MY; # so that "SUPER" works right
2345          sub c_o {
2346              my $inherited = shift->SUPER::c_o(@_);
2347              $inherited =~ s/old text/new text/;
2348              $inherited;
2349          }
2350  
2351  If you are running experiments with embedding perl as a library into
2352  other applications, you might find MakeMaker is not sufficient. You'd
2353  better have a look at ExtUtils::Embed which is a collection of utilities
2354  for embedding.
2355  
2356  If you still need a different solution, try to develop another
2357  subroutine that fits your needs and submit the diffs to
2358  C<makemaker@perl.org>
2359  
2360  For a complete description of all MakeMaker methods see
2361  L<ExtUtils::MM_Unix>.
2362  
2363  Here is a simple example of how to add a new target to the generated
2364  Makefile:
2365  
2366      sub MY::postamble {
2367          return <<'MAKE_FRAG';
2368      $(MYEXTLIB): sdbm/Makefile
2369              cd sdbm && $(MAKE) all
2370  
2371      MAKE_FRAG
2372      }
2373  
2374  =head2 The End Of Cargo Cult Programming
2375  
2376  WriteMakefile() now does some basic sanity checks on its parameters to
2377  protect against typos and malformatted values.  This means some things
2378  which happened to work in the past will now throw warnings and
2379  possibly produce internal errors.
2380  
2381  Some of the most common mistakes:
2382  
2383  =over 2
2384  
2385  =item C<< MAN3PODS => ' ' >>
2386  
2387  This is commonly used to suppress the creation of man pages.  MAN3PODS
2388  takes a hash ref not a string, but the above worked by accident in old
2389  versions of MakeMaker.
2390  
2391  The correct code is C<< MAN3PODS => { } >>.
2392  
2393  =back
2394  
2395  
2396  =head2 Hintsfile support
2397  
2398  MakeMaker.pm uses the architecture specific information from
2399  Config.pm. In addition it evaluates architecture specific hints files
2400  in a C<hints/> directory. The hints files are expected to be named
2401  like their counterparts in C<PERL_SRC/hints>, but with an C<.pl> file
2402  name extension (eg. C<next_3_2.pl>). They are simply C<eval>ed by
2403  MakeMaker within the WriteMakefile() subroutine, and can be used to
2404  execute commands as well as to include special variables. The rules
2405  which hintsfile is chosen are the same as in Configure.
2406  
2407  The hintsfile is eval()ed immediately after the arguments given to
2408  WriteMakefile are stuffed into a hash reference $self but before this
2409  reference becomes blessed. So if you want to do the equivalent to
2410  override or create an attribute you would say something like
2411  
2412      $self->{LIBS} = ['-ldbm -lucb -lc'];
2413  
2414  =head2 Distribution Support
2415  
2416  For authors of extensions MakeMaker provides several Makefile
2417  targets. Most of the support comes from the ExtUtils::Manifest module,
2418  where additional documentation can be found.
2419  
2420  =over 4
2421  
2422  =item    make distcheck
2423  
2424  reports which files are below the build directory but not in the
2425  MANIFEST file and vice versa. (See ExtUtils::Manifest::fullcheck() for
2426  details)
2427  
2428  =item    make skipcheck
2429  
2430  reports which files are skipped due to the entries in the
2431  C<MANIFEST.SKIP> file (See ExtUtils::Manifest::skipcheck() for
2432  details)
2433  
2434  =item    make distclean
2435  
2436  does a realclean first and then the distcheck. Note that this is not
2437  needed to build a new distribution as long as you are sure that the
2438  MANIFEST file is ok.
2439  
2440  =item    make manifest
2441  
2442  rewrites the MANIFEST file, adding all remaining files found (See
2443  ExtUtils::Manifest::mkmanifest() for details)
2444  
2445  =item    make distdir
2446  
2447  Copies all the files that are in the MANIFEST file to a newly created
2448  directory with the name C<$(DISTNAME)-$(VERSION)>. If that directory
2449  exists, it will be removed first.
2450  
2451  Additionally, it will create a META.yml module meta-data file in the
2452  distdir and add this to the distdir's MANIFEST.  You can shut this
2453  behavior off with the NO_META flag.
2454  
2455  =item   make disttest
2456  
2457  Makes a distdir first, and runs a C<perl Makefile.PL>, a make, and
2458  a make test in that directory.
2459  
2460  =item    make tardist
2461  
2462  First does a distdir. Then a command $(PREOP) which defaults to a null
2463  command, followed by $(TO_UNIX), which defaults to a null command under
2464  UNIX, and will convert files in distribution directory to UNIX format
2465  otherwise. Next it runs C<tar> on that directory into a tarfile and
2466  deletes the directory. Finishes with a command $(POSTOP) which
2467  defaults to a null command.
2468  
2469  =item    make dist
2470  
2471  Defaults to $(DIST_DEFAULT) which in turn defaults to tardist.
2472  
2473  =item    make uutardist
2474  
2475  Runs a tardist first and uuencodes the tarfile.
2476  
2477  =item    make shdist
2478  
2479  First does a distdir. Then a command $(PREOP) which defaults to a null
2480  command. Next it runs C<shar> on that directory into a sharfile and
2481  deletes the intermediate directory again. Finishes with a command
2482  $(POSTOP) which defaults to a null command.  Note: For shdist to work
2483  properly a C<shar> program that can handle directories is mandatory.
2484  
2485  =item    make zipdist
2486  
2487  First does a distdir. Then a command $(PREOP) which defaults to a null
2488  command. Runs C<$(ZIP) $(ZIPFLAGS)> on that directory into a
2489  zipfile. Then deletes that directory. Finishes with a command
2490  $(POSTOP) which defaults to a null command.
2491  
2492  =item    make ci
2493  
2494  Does a $(CI) and a $(RCS_LABEL) on all files in the MANIFEST file.
2495  
2496  =back
2497  
2498  Customization of the dist targets can be done by specifying a hash
2499  reference to the dist attribute of the WriteMakefile call. The
2500  following parameters are recognized:
2501  
2502      CI           ('ci -u')
2503      COMPRESS     ('gzip --best')
2504      POSTOP       ('@ :')
2505      PREOP        ('@ :')
2506      TO_UNIX      (depends on the system)
2507      RCS_LABEL    ('rcs -q -Nv$(VERSION_SYM):')
2508      SHAR         ('shar')
2509      SUFFIX       ('.gz')
2510      TAR          ('tar')
2511      TARFLAGS     ('cvf')
2512      ZIP          ('zip')
2513      ZIPFLAGS     ('-r')
2514  
2515  An example:
2516  
2517      WriteMakefile( 'dist' => { COMPRESS=>"bzip2", SUFFIX=>".bz2" })
2518  
2519  
2520  =head2 Module Meta-Data
2521  
2522  Long plaguing users of MakeMaker based modules has been the problem of
2523  getting basic information about the module out of the sources
2524  I<without> running the F<Makefile.PL> and doing a bunch of messy
2525  heuristics on the resulting F<Makefile>.  To this end a simple module
2526  meta-data file has been introduced, F<META.yml>.
2527  
2528  F<META.yml> is a YAML document (see http://www.yaml.org) containing
2529  basic information about the module (name, version, prerequisites...)
2530  in an easy to read format.  The format is developed and defined by the
2531  Module::Build developers (see 
2532  http://module-build.sourceforge.net/META-spec.html)
2533  
2534  MakeMaker will automatically generate a F<META.yml> file for you and
2535  add it to your F<MANIFEST> as part of the 'distdir' target (and thus
2536  the 'dist' target).  This is intended to seamlessly and rapidly
2537  populate CPAN with module meta-data.  If you wish to shut this feature
2538  off, set the C<NO_META> C<WriteMakefile()> flag to true.
2539  
2540  
2541  =head2 Disabling an extension
2542  
2543  If some events detected in F<Makefile.PL> imply that there is no way
2544  to create the Module, but this is a normal state of things, then you
2545  can create a F<Makefile> which does nothing, but succeeds on all the
2546  "usual" build targets.  To do so, use
2547  
2548      use ExtUtils::MakeMaker qw(WriteEmptyMakefile);
2549      WriteEmptyMakefile();
2550  
2551  instead of WriteMakefile().
2552  
2553  This may be useful if other modules expect this module to be I<built>
2554  OK, as opposed to I<work> OK (say, this system-dependent module builds
2555  in a subdirectory of some other distribution, or is listed as a
2556  dependency in a CPAN::Bundle, but the functionality is supported by
2557  different means on the current architecture).
2558  
2559  =head2 Other Handy Functions
2560  
2561  =over 4
2562  
2563  =item prompt
2564  
2565      my $value = prompt($message);
2566      my $value = prompt($message, $default);
2567  
2568  The C<prompt()> function provides an easy way to request user input
2569  used to write a makefile.  It displays the $message as a prompt for
2570  input.  If a $default is provided it will be used as a default.  The
2571  function returns the $value selected by the user.
2572  
2573  If C<prompt()> detects that it is not running interactively and there
2574  is nothing on STDIN or if the PERL_MM_USE_DEFAULT environment variable
2575  is set to true, the $default will be used without prompting.  This
2576  prevents automated processes from blocking on user input. 
2577  
2578  If no $default is provided an empty string will be used instead.
2579  
2580  =back
2581  
2582  
2583  =head1 ENVIRONMENT
2584  
2585  =over 4
2586  
2587  =item PERL_MM_OPT
2588  
2589  Command line options used by C<MakeMaker-E<gt>new()>, and thus by
2590  C<WriteMakefile()>.  The string is split on whitespace, and the result
2591  is processed before any actual command line arguments are processed.
2592  
2593  =item PERL_MM_USE_DEFAULT
2594  
2595  If set to a true value then MakeMaker's prompt function will
2596  always return the default without waiting for user input.
2597  
2598  =item PERL_CORE
2599  
2600  Same as the PERL_CORE parameter.  The parameter overrides this.
2601  
2602  =back
2603  
2604  =head1 SEE ALSO
2605  
2606  L<Module::Build> is a pure-Perl alternative to MakeMaker which does
2607  not rely on make or any other external utility.  It is easier to
2608  extend to suit your needs.
2609  
2610  L<Module::Install> is a wrapper around MakeMaker which adds features
2611  not normally available.
2612  
2613  L<ExtUtils::ModuleMaker> and L<Module::Starter> are both modules to
2614  help you setup your distribution.
2615  
2616  =head1 AUTHORS
2617  
2618  Andy Dougherty C<doughera@lafayette.edu>, Andreas KE<ouml>nig
2619  C<andreas.koenig@mind.de>, Tim Bunce C<timb@cpan.org>.  VMS
2620  support by Charles Bailey C<bailey@newman.upenn.edu>.  OS/2 support
2621  by Ilya Zakharevich C<ilya@math.ohio-state.edu>.
2622  
2623  Currently maintained by Michael G Schwern C<schwern@pobox.com>
2624  
2625  Send patches and ideas to C<makemaker@perl.org>.
2626  
2627  Send bug reports via http://rt.cpan.org/.  Please send your
2628  generated Makefile along with your report.
2629  
2630  For more up-to-date information, see L<http://www.makemaker.org>.
2631  
2632  =head1 LICENSE
2633  
2634  This program is free software; you can redistribute it and/or 
2635  modify it under the same terms as Perl itself.
2636  
2637  See L<http://www.perl.com/perl/misc/Artistic.html>
2638  
2639  
2640  =cut


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1