cvs commit: modperl-2.0/xs .cvsignore

2001-10-20 Thread dougm

dougm   01/10/20 22:29:46

  Modified:lib/ModPerl WrapXS.pm
   xs   .cvsignore
  Log:
  .{def,exp} generation tweaks:
  - do not include static functions
  - split __inline__ functions into separate file
  - rework into single write_export_file generic function
with header/format functions specific to .def and .exp
  
  Revision  ChangesPath
  1.27  +68 -25modperl-2.0/lib/ModPerl/WrapXS.pm
  
  Index: WrapXS.pm
  ===
  RCS file: /home/cvs/modperl-2.0/lib/ModPerl/WrapXS.pm,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- WrapXS.pm 2001/10/09 18:28:18 1.26
  +++ WrapXS.pm 2001/10/21 05:29:46 1.27
  @@ -568,8 +568,8 @@
   
   $self->get_functions;
   $self->get_structures;
  -$self->write_exp; #XXX if $^O eq 'aix'
  -$self->write_def; #XXX if $^O eq 'Win32'
  +$self->write_export_file('exp'); #XXX if $^O eq 'aix'
  +$self->write_export_file('def'); #XXX if $^O eq 'Win32'
   
   while (my($module, $functions) = each %{ $self->{XS} }) {
   #my($root, $sub) = split '::', $module;
  @@ -582,50 +582,93 @@
   }
   }
   
  -sub open_export_file {
  +#two export files are generated:
  +#$name.$ext - global symbols
  +#${name}_inline.$ext - __inline__ functions
  +#the inline export file is needed #ifdef MP_DEBUG
  +#since __inline__ will be turned off
  +
  +sub open_export_files {
   my($self, $name, $ext) = @_;
  -my $file = join '/', $self->{XS_DIR}, "$name.$ext";
  -open my $fh, '>', $file or die "open $file: $!";
  -return($fh, $file);
  -}
   
  -sub write_exp {
  -my $self = shift;
  +my $dir = $self->{XS_DIR};
   
  -my %files = (
  -modperl => $ModPerl::FunctionTable,
  -apache  => $Apache::FunctionTable,
  -);
  +my $exp_file = "$dir/$name.$ext";
  +my $exp_file_inline = "$dir/${name}_inline.$ext";
   
  -while (my($name, $table) = each %files) {
  -my($fh, $file) = $self->open_export_file($name, 'exp');
  -print $fh "#!\n";
  +open my $exp_fh, '>', $exp_file or
  +  die "open $exp_file: $!";
  +open my $exp_inline_fh, '>', $exp_file_inline or
  +  die "open $exp_file_inline: $!";
   
  -for my $entry (@$table) {
  -print $fh "$entry->{name}\n";
  -}
  +return($exp_fh, $exp_inline_fh);
  +}
  +
  +sub func_is_static {
  +my($self, $entry) = @_;
  +if (my $attr = $entry->{attr}) {
  +return 1 if grep { $_ eq 'static' } @$attr;
  +}
  +return 0;
  +}
   
  -close $fh or die "close $file: $!";
  +sub func_is_inline {
  +my($self, $entry) = @_;
  +if (my $attr = $entry->{attr}) {
  +return 1 if grep { $_ eq '__inline__' } @$attr;
   }
  +return 0;
   }
   
  -sub write_def {
  +sub export_file_header_exp {
   my $self = shift;
  +"#!\n";
  +}
  +
  +sub export_file_format_exp {
  +my($self, $val) = @_;
  +"$val\n";
  +}
   
  +sub export_file_header_def {
  +my $self = shift;
  +"LIBRARY\n\nEXPORTS\n\n";
  +}
  +
  +sub export_file_format_def {
  +my($self, $val) = @_;
  +"   $val\n";
  +}
  +
  +sub write_export_file {
  +my($self, $ext) = @_;
  +
   my %files = (
   modperl => $ModPerl::FunctionTable,
   apache  => $Apache::FunctionTable,
   );
   
  +my $header = \&{"export_file_header_$ext"};
  +my $format = \&{"export_file_format_$ext"};
  +
   while (my($name, $table) = each %files) {
  -my($fh, $file) = $self->open_export_file($name, 'def');
  -print $fh "LIBRARY\n\nEXPORTS\n\n";
  +my($exp_fh, $exp_inline_fh) =
  +  $self->open_export_files($name, $ext);
   
  +for my $fh ($exp_fh, $exp_inline_fh) {
  +print $fh $self->$header();
  +}
  +
   for my $entry (@$table) {
  -print $fh "   $entry->{name}\n";
  +next if $self->func_is_static($entry);
  +my $fh = $self->func_is_inline($entry) ?
  +  $exp_inline_fh : $exp_fh;
  +print $fh $self->$format($entry->{name});
   }
   
  -close $fh or die "close $file: $!";
  +for my $fh ($exp_fh, $exp_inline_fh) {
  +close $fh;
  +}
   }
   }
   
  
  
  
  1.4   +1 -2  modperl-2.0/xs/.cvsignore
  
  Index: .cvsignore
  ===
  RCS file: /home/cvs/modperl-2.0/xs/.cvsignore,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- .cvsignore2001/10/17 07:25:13 1.3
  +++ .cvsignore2001/10/21 05:29:46 1.4
  @@ -2,6 +2,5 @@
   Makefile
   modperl_xs_typedefs.h
   modperl_xs_sv_convert.h
  -apache.exp
  -modperl.exp
  +*.exp
   *.def
  
  
  



cvs commit: modperl-2.0/xs .cvsignore

2001-10-17 Thread stas

stas01/10/17 00:25:13

  Modified:xs   .cvsignore
  Log:
  - ignore *.def
  
  Revision  ChangesPath
  1.3   +1 -0  modperl-2.0/xs/.cvsignore
  
  Index: .cvsignore
  ===
  RCS file: /home/cvs/modperl-2.0/xs/.cvsignore,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- .cvsignore2001/10/09 18:19:36 1.2
  +++ .cvsignore2001/10/17 07:25:13 1.3
  @@ -4,3 +4,4 @@
   modperl_xs_sv_convert.h
   apache.exp
   modperl.exp
  +*.def
  
  
  



cvs commit: modperl-2.0/xs .cvsignore

2001-10-09 Thread dougm

dougm   01/10/09 11:19:36

  Modified:lib/ModPerl WrapXS.pm
   xs   .cvsignore
  Log:
  generate {apache,modperl}.exp files for aix
  
  Revision  ChangesPath
  1.25  +23 -0 modperl-2.0/lib/ModPerl/WrapXS.pm
  
  Index: WrapXS.pm
  ===
  RCS file: /home/cvs/modperl-2.0/lib/ModPerl/WrapXS.pm,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- WrapXS.pm 2001/10/08 17:04:46 1.24
  +++ WrapXS.pm 2001/10/09 18:19:35 1.25
  @@ -568,6 +568,7 @@
   
   $self->get_functions;
   $self->get_structures;
  +$self->write_exp; #XXX if $^O eq 'aix'
   
   while (my($module, $functions) = each %{ $self->{XS} }) {
   #my($root, $sub) = split '::', $module;
  @@ -577,6 +578,28 @@
   $self->write_makefilepl($module);
   $self->write_xs($module, $functions);
   $self->write_pm($module);
  +}
  +}
  +
  +sub write_exp {
  +my $self = shift;
  +
  +my %files = (
  +modperl => $ModPerl::FunctionTable,
  +apache  => $Apache::FunctionTable,
  +);
  +
  +while (my($name, $table) = each %files) {
  +my $file = join '/', $self->{XS_DIR}, "$name.exp";
  +open my $fh, '>', $file or die "open $file: $!";
  +
  +print $fh "#!\n";
  +
  +for my $entry (@$table) {
  +print $fh "$entry->{name}\n";
  +}
  +
  +close $fh or die "close $file: $!";
   }
   }
   
  
  
  
  1.2   +2 -0  modperl-2.0/xs/.cvsignore
  
  Index: .cvsignore
  ===
  RCS file: /home/cvs/modperl-2.0/xs/.cvsignore,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- .cvsignore2001/03/05 04:06:54 1.1
  +++ .cvsignore2001/10/09 18:19:36 1.2
  @@ -2,3 +2,5 @@
   Makefile
   modperl_xs_typedefs.h
   modperl_xs_sv_convert.h
  +apache.exp
  +modperl.exp