stas        2003/03/23 21:12:26

  Modified:    lib/ModPerl MM.pm
  Log:
  refactor WriteMakefile's code
  - to allow Makefile.PL to specify its own top-level arguments for WriteMakefile
  - to allow Makefile.PL re-use the defaults specified in ModPerl::MM
  
  Revision  Changes    Path
  1.26      +35 -12    modperl-2.0/lib/ModPerl/MM.pm
  
  Index: MM.pm
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/lib/ModPerl/MM.pm,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- MM.pm     24 Mar 2003 04:48:45 -0000      1.25
  +++ MM.pm     24 Mar 2003 05:12:26 -0000      1.26
  @@ -98,7 +98,27 @@
       }
   }
   
  +my @default_opts = qw(CCFLAGS LIBS INC OPTIMIZE LDDLFLAGS TYPEMAPS);
  +my @default_dlib_opts = qw(OTHERLDFLAGS);
  +
  +sub opt_CCFLAGS {
  +    my $build = build_config();
  +    $build->perl_ccopts . $build->ap_ccopts;
  +}
  +
  +sub opt_LIBS {
  +    my $build = build_config();
  +    join ' ', $build->apache_libs, $build->modperl_libs;
  +}
  +
  +sub opt_INC          { build_config()->inc;                      }
  +sub opt_OPTIMIZE     { build_config()->perl_config('optimize');  }
  +sub opt_LDDLFLAGS    { build_config()->perl_config('lddlflags'); }
  +sub opt_TYPEMAPS     { build_config()->typemaps;                 }
  +sub opt_OTHERLDFLAGS { build_config()->otherldflags;             }
  +
   sub WriteMakefile {
  +    my %args = @_;
   
       # override ExtUtils::MakeMaker::mv_all_methods
       # can't do that on loading since ModPerl::MM is also use()'d
  @@ -111,21 +131,24 @@
       my $build = build_config();
       my_import(__PACKAGE__);
   
  -    my $libs = join ' ', $build->apache_libs, $build->modperl_libs;
  -    my $ccflags = $build->perl_ccopts . $build->ap_ccopts;
  +    # set top-level WriteMakefile's values if weren't set already
  +    for (@default_opts) {
  +        no strict 'refs';
  +        $args{$_} = "opt_$_"->() unless exists $args{$_}; # already defined
  +    }
   
  -    my @opts = (
  -        INC       => $build->inc,
  -        CCFLAGS   => $ccflags,
  -        OPTIMIZE  => $build->perl_config('optimize'),
  -        LDDLFLAGS => $build->perl_config('lddlflags'),
  -        LIBS      => $libs,
  -        TYPEMAPS  => $build->typemaps,
  -        dynamic_lib => { OTHERLDFLAGS => $build->otherldflags },
  -    );
  +    # set dynamic_lib-level WriteMakefile's values if weren't set already
  +    $args{dynamic_lib} ||= {};
  +    my $dlib = $args{dynamic_lib};
  +    for (@default_dlib_opts) {
  +        no strict 'refs';
  +        $dlib->{$_} = "opt_$_"->() unless exists $dlib->{$_};
  +    }
   
  -    ExtUtils::MakeMaker::WriteMakefile(@opts, @_);
  +    ExtUtils::MakeMaker::WriteMakefile(%args);
   }
  +
  +#### MM overrides ####
   
   sub ModPerl::MM::MY::constants {
       my $self = shift;
  
  
  

Reply via email to