stas        2004/08/06 12:34:37

  Modified:    lib/Apache Build.pm
               lib/ModPerl Config.pm
               xs/APR/APR Makefile.PL
  Log:
  refactoring the ap(r|u)(-1?)config code and acquiring of the linking flags
  
  Revision  Changes    Path
  1.169     +45 -16    modperl-2.0/lib/Apache/Build.pm
  
  Index: Build.pm
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/lib/Apache/Build.pm,v
  retrieving revision 1.168
  retrieving revision 1.169
  diff -u -u -r1.168 -r1.169
  --- Build.pm  6 Aug 2004 12:55:48 -0000       1.168
  +++ Build.pm  6 Aug 2004 19:34:37 -0000       1.169
  @@ -933,23 +933,52 @@
       $self->{apr_bindir};
   }
   
  -# XXX: we assume that apr-config and apu-config reside in the same
  -# directory
  +sub apr_generation {
  +    my($self) = @_;
  +    return $self->httpd_version_as_int =~ m/21\d+/ ? 1 : 0;
  +}
  +
  +# returns an array of apr/apu linking flags (--link-ld --libs) if found
  +# an empty array otherwise
  +my @apru_link_flags = ();
  +sub apru_link_flags {
  +    my($self) = @_;
  +
  +    return @apru_link_flags if @apru_link_flags;
  +
  +    for ($self->apr_config_path, $self->apu_config_path) {
  +        if (my $link = $_ && -x $_ && qx{$_ --link-ld --libs}) {
  +            chomp $link;
  +            push @apru_link_flags, $link;
  +        }
  +    }
  +
  +    return @apru_link_flags;
  +}
  +
   sub apr_config_path {
  -    my ($self) = @_;
  +    shift->apru_config_path("apr");
  +}
  +
  +sub apu_config_path {
  +    shift->apru_config_path("apu");
  +}
  +
  +sub apru_config_path {
  +    my ($self, $what) = @_;
  +
  +    my $key = "${what}_config_path"; # apr_config_path
  +    my $mp_key = "MP_" . uc($what) . "_CONFIG"; # MP_APR_CONFIG
   
  -    return $self->{apr_config_path}
  -        if $self->{apr_config_path} and -x $self->{apr_config_path};
  +    return $self->{$key} if $self->{$key} and -x $self->{$key};
   
  -    if (exists $self->{MP_APR_CONFIG} and -x $self->{MP_APR_CONFIG}) {
  -        $self->{apr_config_path} = $self->{MP_APR_CONFIG};
  +    if (exists $self->{$mp_key} and -x $self->{$mp_key}) {
  +        $self->{$key} = $self->{$mp_key};
       }
   
  -    my $config = $self->httpd_version_as_int =~ m/21\d+/
  -                     ? 'apr-1-config'
  -                     : 'apr-config';
  +    my $config = $self->apr_generation ? "$what-1-config" : "$what-config";
   
  -    if (!$self->{apr_config_path}) {
  +    if (!$self->{$key}) {
           my @tries = ();
           if ($self->httpd_is_source_tree) {
               push @tries, grep { -d $_ }
  @@ -974,22 +1003,22 @@
   
           for my $try (@tries) {
               next unless -x $try;
  -            $self->{apr_config_path} = $try;
  +            $self->{$key} = $try;
           }
       }
   
  -    $self->{apr_config_path} ||= Apache::TestConfig::which($config);
  +    $self->{$key} ||= Apache::TestConfig::which($config);
   
       # apr_bindir makes sense only if httpd/apr is installed, if we are
       # building against the source tree we can't link against
       # apr/aprutil libs
       unless ($self->httpd_is_source_tree) {
  -        $self->{apr_bindir} = $self->{apr_config_path}
  -            ? dirname $self->{apr_config_path}
  +        $self->{apr_bindir} = $self->{$key}
  +            ? dirname $self->{$key}
               : '';
           }
   
  -    $self->{apr_config_path};
  +    $self->{$key};
   }
   
   sub apr_includedir {
  
  
  
  1.14      +9 -16     modperl-2.0/lib/ModPerl/Config.pm
  
  Index: Config.pm
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/lib/ModPerl/Config.pm,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -u -r1.13 -r1.14
  --- Config.pm 6 Aug 2004 12:55:48 -0000       1.13
  +++ Config.pm 6 Aug 2004 19:34:37 -0000       1.14
  @@ -23,7 +23,7 @@
   use constant WIN32 => Apache::Build::WIN32;
   
   sub as_string {
  -    my $build_config = Apache::Build->build_config;
  +    my $build = Apache::Build->build_config;
   
       my $cfg = '';
   
  @@ -34,15 +34,15 @@
   
       # the widest key length
       my $max_len = 0;
  -    for (map {length} grep /^MP_/, keys %$build_config) {
  +    for (map {length} grep /^MP_/, keys %$build) {
           $max_len = $_ if $_ > $max_len;
       }
   
       # mod_perl opts
       $cfg .= "*** Makefile.PL options:\n";
       $cfg .= join '',
  -        map {sprintf "  %-${max_len}s => %s\n", $_, $build_config->{$_}}
  -            grep /^MP_/, sort keys %$build_config;
  +        map {sprintf "  %-${max_len}s => %s\n", $_, $build->{$_}}
  +            grep /^MP_/, sort keys %$build;
   
       my $command = '';
   
  @@ -58,24 +58,17 @@
   
       # apr
       $cfg .= "\n\n*** (apr|apu)-config linking info\n\n";
  -    if (my $apr_bindir = $build_config->apr_bindir()) {
  -        my @configs = $build_config->httpd_version_as_int =~ m/21\d+/
  -            ? qw(apr-1 apu-1)
  -            : qw(apr apu);
  -
  -        my $ext = WIN32 ? '.bat' : '';
  -        my @libs = grep $_, map { -x $_ && qx{$_ --link-ld --libs} }
  -            map { qq{$apr_bindir/$_-config$ext} } @configs;
  -        chomp @libs;
  -        my $libs = join "\n", @libs;
  +    my @apru_link_flags = $build->apru_link_flags;
  +    if (@apru_link_flags) {
  +        my $libs = join "\n", @apru_link_flags;
           $cfg .= "$libs\n\n";
       }
       else {
  -        $cfg .= "config scripts were not found\n\n";
  +        $cfg .= "(apr|apu)-config scripts were not found\n\n";
       }
   
       # perl opts
  -    my $perl = $build_config->{MODPERL_PERLPATH};
  +    my $perl = $build->{MODPERL_PERLPATH};
       $command = "$perl -V";
       $cfg .= "\n\n*** $command\n";
       $cfg .= qx{$command};
  
  
  
  1.28      +2 -13     modperl-2.0/xs/APR/APR/Makefile.PL
  
  Index: Makefile.PL
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/xs/APR/APR/Makefile.PL,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -u -r1.27 -r1.28
  --- Makefile.PL       6 Aug 2004 12:55:48 -0000       1.27
  +++ Makefile.PL       6 Aug 2004 19:34:37 -0000       1.28
  @@ -20,19 +20,8 @@
   my $libs = '';
   my $build = ModPerl::BuildMM::build_config();
   
  -if (my $apr_bindir = $build->apr_bindir()) {
  -
  -    my @configs = $build->httpd_version_as_int =~ m/21\d+/
  -        ? qw(apr-1 apu-1)
  -        : qw(apr apu);
  -
  -    # XXX: this works only with libapr 0.9.2+
  -    my $ext = WIN32 ? '.bat' : '';
  -    my @libs = grep $_, map { -x $_ && qx{$_ --link-ld --libs} }
  -        map { qq{$apr_bindir/$_-config$ext} } @configs;
  -    chomp @libs;
  -    $libs = join ' ', @libs;
  -}
  +my @apru_link_flags = $build->apru_link_flags;
  +$libs .= join ' ', @apru_link_flags if @apru_link_flags;
   
   if (WIN32) {
       $libs =~ s{/libpath:}{-L}g;
  
  
  

Reply via email to