stas        2003/03/23 21:43:51

  Modified:    lib/ModPerl MM.pm
  Log:
  use a more flexible approach to retrieve the defauls, by hiding the
  internal implementation behind a single front end public function.
  
  Revision  Changes    Path
  1.27      +21 -19    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.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- MM.pm     24 Mar 2003 05:12:26 -0000      1.26
  +++ MM.pm     24 Mar 2003 05:43:51 -0000      1.27
  @@ -6,6 +6,7 @@
   use ExtUtils::Install ();
   use Cwd ();
   use Apache::Build ();
  +use Carp;
   
   our %PM; #add files to installation
   
  @@ -100,23 +101,26 @@
   
   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;
  +my $b = build_config();
  +my %opts = (
  +    CCFLAGS      => sub { $b->perl_ccopts . $b->ap_ccopts             },
  +    LIBS         => sub { join ' ', $b->apache_libs, $b->modperl_libs },
  +    INC          => sub { $b->inc;                                    },
  +    OPTIMIZE     => sub { $b->perl_config('optimize');                },
  +    LDDLFLAGS    => sub { $b->perl_config('lddlflags');               },
  +    TYPEMAPS     => sub { $b->typemaps;                               },
  +    OTHERLDFLAGS => sub { $b->otherldflags;                           },
  +);
  +
  +sub get_def_opt {
  +    my $opt = shift;
  +    return $opts{$opt}->() if exists $opts{$opt};
  +    # handle cases when Makefile.PL wants an option we don't have a
  +    # default for. XXX: some options expect [] rather than scalar.
  +    Carp::carp("!!! no default argument defined for argument: $opt");
  +    return '';
   }
   
  -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 = @_;
   
  @@ -133,16 +137,14 @@
   
       # set top-level WriteMakefile's values if weren't set already
       for (@default_opts) {
  -        no strict 'refs';
  -        $args{$_} = "opt_$_"->() unless exists $args{$_}; # already defined
  +        $args{$_} = get_def_opt($_) unless exists $args{$_}; # already defined
       }
   
       # 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->{$_};
  +        $dlib->{$_} = get_def_opt($_) unless exists $dlib->{$_};
       }
   
       ExtUtils::MakeMaker::WriteMakefile(%args);
  
  
  

Reply via email to