You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl-cvs@perl.apache.org by ra...@apache.org on 2003/07/25 03:49:10 UTC

cvs commit: modperl-2.0/lib/Apache Build.pm

randyk      2003/07/24 18:49:10

  Modified:    .        Changes
               lib/Apache Build.pm
  Log:
  Reviewed by:	stas
  For Win32,
  - generate .pdb files for debugging when built with MP_DEBUG, and
  install them into the same directory as the associated dll/so libs.
  - install mod_perl.lib into MP_AP_PREFIX/lib/ for use by 3rd party modules.
  
  Revision  Changes    Path
  1.196     +5 -0      modperl-2.0/Changes
  
  Index: Changes
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/Changes,v
  retrieving revision 1.195
  retrieving revision 1.196
  diff -u -r1.195 -r1.196
  --- Changes	12 Jun 2003 23:42:23 -0000	1.195
  +++ Changes	25 Jul 2003 01:49:10 -0000	1.196
  @@ -12,6 +12,11 @@
   
   =item 1.99_10-dev
   
  +For Win32, generate .pdb files for debugging when built with
  +MP_DEBUG. These will get installed into the same directory as
  +the associated dll/so libs. As well, install mod_perl.lib
  +into MP_AP_PREFIX/lib/ for use by 3rd party modules [Randy Kobes].
  +
   Apache2.pm is now autogenerated and will adjust @INC to include
   Apache2/ subdirs only if built with MP_INST_APACHE2=1 [Stas]
   
  
  
  
  1.128     +67 -11    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.127
  retrieving revision 1.128
  diff -u -r1.127 -r1.128
  --- Build.pm	12 Jun 2003 23:42:23 -0000	1.127
  +++ Build.pm	25 Jul 2003 01:49:10 -0000	1.128
  @@ -319,7 +319,9 @@
   
       if ($self->{MP_DEBUG}) {
           if (MSVC) {
  -            $val =~ s/-release/-debug/;
  +            unless ($val =~ s/-release/-debug/) {
  +                $val .= ' -debug';
  +            }
           }
       }
   
  @@ -1058,8 +1060,11 @@
   sub dynamic_link_MSWin32 {
       my $self = shift;
       my $defs = $self->export_files_MSWin32;
  +    my $symbols = $self->modperl_symbols_MSWin32;
       return $self->dynamic_link_header_default .
  -           "\t$defs" . ' -out:$@';
  +        "\t$defs" .
  +        ($symbols ? ' \\' . "\n\t-pdb:$symbols" : '') .
  +        ' -out:$@';
   }
   
   sub dynamic_link_aix {
  @@ -1093,7 +1098,8 @@
   
   sub modperl_libs_MSWin32 {
       my $self = shift;
  -    #XXX: install/use mod_perl.lib for 3rd party xs modules
  +    # mod_perl.lib will be installed into MP_AP_PREFIX/lib
  +    # for use by 3rd party xs modules
       "$self->{cwd}/src/modules/perl/$self->{MP_LIBNAME}.lib";
   }
   
  @@ -1104,11 +1110,35 @@
       $libs->($self);
   }
   
  +sub modperl_symbols_MSWin32 {
  +    my $self = shift;
  +    return "" unless $self->{MP_DEBUG};
  +    "$self->{cwd}/src/modules/perl/$self->{MP_LIBNAME}.pdb";
  +}
  +
  +sub modperl_symbols {
  +    my $self = shift;
  +    my $symbols = \&{"modperl_symbols_$^O"};
  +    return "" unless defined &$symbols;
  +    $symbols->($self);
  +}
  +
   sub write_src_makefile {
       my $self = shift;
       my $code = ModPerl::Code->new;
       my $path = $code->path;
   
  +    my $install = <<'EOI';
  +install:
  +# install mod_perl.so
  +	@$(MKPATH) $(MODPERL_AP_LIBEXECDIR)
  +	$(MODPERL_TEST_F) $(MODPERL_LIB_DSO) && \
  +	$(MODPERL_CP) $(MODPERL_LIB_DSO) $(MODPERL_AP_LIBEXECDIR)
  +# install mod_perl .h files
  +	@$(MKPATH) $(MODPERL_AP_INCLUDEDIR)
  +	$(MODPERL_CP) $(MODPERL_H_FILES) $(MODPERL_AP_INCLUDEDIR)
  +EOI
  +
       my $mf = $self->default_file('makefile');
   
       open my $fh, '>', $mf or die "open $mf: $!";
  @@ -1141,6 +1171,28 @@
           print $fh $self->canon_make_attr("lib_$type", $libs{$type});
       }
   
  +    if (my $symbols = $self->modperl_symbols) {
  +        print $fh $self->canon_make_attr('lib_symbols', $symbols);
  +        $install .= <<'EOI';
  +# install mod_perl symbol file
  +	@$(MKPATH) $(MODPERL_AP_LIBEXECDIR)
  +	$(MODPERL_TEST_F) $(MODPERL_LIB_SYMBOLS) && \
  +	$(MODPERL_CP) $(MODPERL_LIB_SYMBOLS) $(MODPERL_AP_LIBEXECDIR)
  +EOI
  +    }
  +
  +    if (my $libs = $self->modperl_libs) {
  +        print $fh $self->canon_make_attr('lib_location', $libs);
  +        print $fh $self->canon_make_attr('ap_libdir', 
  +                                         "$self->{MP_AP_PREFIX}/lib");
  +        $install .= <<'EOI';
  +# install mod_perl.lib
  +	@$(MKPATH) $(MODPERL_AP_LIBDIR)
  +	$(MODPERL_TEST_F) $(MODPERL_LIB_LOCATION) && \
  +	$(MODPERL_CP) $(MODPERL_LIB_LOCATION) $(MODPERL_AP_LIBDIR)
  +EOI
  +    }
  +
       my $libperl = join '/',
         $self->perl_config('archlibexp'), 'CORE', $self->perl_config('libperl');
   
  @@ -1188,14 +1240,11 @@
   
   lib: $(MODPERL_LIB)
   
  -install:
  -# install mod_perl.so
  -	@$(MKPATH) $(MODPERL_AP_LIBEXECDIR)
  -	$(MODPERL_TEST_F) $(MODPERL_LIB_DSO) && \
  -	$(MODPERL_CP) $(MODPERL_LIB_DSO) $(MODPERL_AP_LIBEXECDIR)
  -# install mod_perl .h files
  -	@$(MKPATH) $(MODPERL_AP_INCLUDEDIR)
  -	$(MODPERL_CP) $(MODPERL_H_FILES) $(MODPERL_AP_INCLUDEDIR)
  +EOF
  +
  +    print $fh $install;
  +
  +    print $fh <<'EOF';
   
   .SUFFIXES: .xs .c $(MODPERL_OBJ_EXT) .lo .i .s
   
  @@ -1264,6 +1313,13 @@
       my $flags = \&{"otherldflags_$^O"};
       return $self->otherldflags_default unless defined &$flags;
       $flags->($self);
  +}
  +
  +sub otherldflags_MSWin32 {
  +    my $self = shift;
  +    my $flags = $self->otherldflags_default;
  +    $flags .= ' -pdb:$(INST_ARCHAUTODIR)\$(BASEEXT).pdb' if $self->{MP_DEBUG};
  +    $flags;
   }
   
   sub typemaps {