dougm       00/04/16 17:02:26

  Modified:    .        Makefile.PL
               lib/Apache Build.pm
               patches  link-hack.pat
               src/modules/perl modperl_log.h
  Log:
  add Apache::Build::{ccopts,ldopts} methods
  enable libgtop linking if debug and available
  beef up logic for generating/cleaning files
  
  Revision  Changes    Path
  1.9       +5 -5      modperl-2.0/Makefile.PL
  
  Index: Makefile.PL
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/Makefile.PL,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Makefile.PL       2000/04/16 01:41:21     1.8
  +++ Makefile.PL       2000/04/17 00:02:22     1.9
  @@ -10,7 +10,7 @@
   
   our $VERSION;
   
  -my $build = Apache::Build->new;
  +my $build = Apache::Build->new(debug => 1);
   my $code  = ModPerl::Code->new;
   
   #quick hack until build system is complete
  @@ -43,6 +43,7 @@
         $httpd_version, $VERSION, $^V;
   
       $build->save;
  +    $build->save_ldopts;
   
       $code->generate;
   }
  @@ -57,17 +58,16 @@
       my $opts = shift;
       return clean() if $opts->{m} eq 'c';
   
  -    my $ccopts = ExtUtils::Embed::ccopts();
  +    my $ccopts = $build->ccopts;
       my @inc = $build->inc;
       my($cc, $ar) = map { $build->perl_config($_) } qw(cc ar);
   
       chdir $code->path;
   
  -    my $flags = "-g -Wall";
  -    $flags .= " -E" if $opts->{E};
  +    $ccopts .= " -E" if $opts->{E};
   
       for (sort { (stat $b)[9] <=> (stat $a)[9] } @{ $code->c_files }) {
  -        echo_cmd "$cc $flags $ccopts @inc -c $_";
  +        echo_cmd "$cc $ccopts @inc -c $_";
       }
   
       echo_cmd "$ar crv libmodperl.a @{ $code->o_files }";
  
  
  
  1.4       +70 -8     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.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Build.pm  2000/04/15 17:38:45     1.3
  +++ Build.pm  2000/04/17 00:02:23     1.4
  @@ -5,6 +5,7 @@
   use warnings;
   use Config;
   use Cwd ();
  +use ExtUtils::Embed ();
   use constant is_win32 => $^O eq 'MSWin32';
   use constant IS_MOD_PERL_BUILD => grep { -e "$_/lib/mod_perl.pm" } qw(. ..);
   
  @@ -60,6 +61,40 @@
   
   #--- Perl Config stuff ---
   
  +sub gtop_ldopts {
  +    my $xlibs = "-L/usr/X11/lib -L/usr/X11R6/lib -lXau";
  +    return " -lgtop -lgtop_sysdeps -lgtop_common $xlibs";
  +}
  +
  +sub ldopts {
  +    my($self) = @_;
  +
  +    my $ldopts = ExtUtils::Embed::ldopts();
  +    chomp $ldopts;
  +
  +    if ($self->{use_gtop}) {
  +        $ldopts .= $self->gtop_ldopts;
  +    }
  +
  +    $ldopts;
  +}
  +
  +sub ccopts {
  +    my($self) = @_;
  +
  +    my $ccopts = ExtUtils::Embed::ccopts();
  +
  +    if ($self->{use_gtop}) {
  +        $ccopts .= " -DMP_USE_GTOP";
  +    }
  +
  +    if ($self->{debug}) {
  +        $ccopts .= " -g -Wall -DMP_TRACE";
  +    }
  +
  +    $ccopts;
  +}
  +
   sub perl_config {
       my($self, $key) = @_;
   
  @@ -181,22 +216,37 @@
   
   sub new {
       my $class = shift;
  +
  +    my $self = bless {
  +        cwd => Cwd::fastcwd(),
  +        @_,
  +    }, $class;
   
  -    bless {
  -           cwd => Cwd::fastcwd(),
  -           @_,
  -          }, $class;
  +    if ($self->{debug}) {
  +        $self->{use_gtop} = 1 if $self->find_dlfile('gtop');
  +    }
  +
  +    $self;
   }
   
   sub DESTROY {}
   
  -my $save_file = 'lib/Apache/BuildConfig.pm';
  +my %default_files = (
  +    'build_config' => 'lib/Apache/BuildConfig.pm',
  +    'ldopts' => 'src/modules/perl/ldopts',
  +);
   
   sub clean_files {
       my $self = shift;
  -    $self->{save_file} || $save_file;
  +    map { $self->default_file($_) } keys %default_files;
   }
   
  +sub default_file {
  +    my($self, $name, $override) = @_;
  +    my $key = join '_', 'file', $name;
  +    $self->{$key} ||= ($override || $default_files{$name});
  +}
  +
   sub freeze {
       require Data::Dumper;
       local $Data::Dumper::Terse = 1;
  @@ -205,12 +255,24 @@
       $data;
   }
   
  +sub save_ldopts {
  +    my($self, $file) = @_;
  +
  +    $file ||= $self->default_file('ldopts', $file);
  +    my $ldopts = $self->ldopts;
  +
  +    open my $fh, '>', $file or die "open $file: $!";
  +    print $fh "#!/bin/sh\n\necho $ldopts\n";
  +    close $fh;
  +    chmod 0755, $file;
  +}
  +
   sub save {
       my($self, $file) = @_;
   
  -    $self->{save_file} = $file || $save_file;
  +    $file ||= $self->default_file('build_config');
       (my $obj = $self->freeze) =~ s/^/    /;
  -    open my $fh, '>', $self->{save_file} or die "open $file: $!";
  +    open my $fh, '>', $file or die "open $file: $!";
   
       print $fh <<EOF;
   package Apache::BuildConfig;
  
  
  
  1.2       +6 -9      modperl-2.0/patches/link-hack.pat
  
  Index: link-hack.pat
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/patches/link-hack.pat,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- link-hack.pat     2000/04/16 16:56:35     1.1
  +++ link-hack.pat     2000/04/17 00:02:24     1.2
  @@ -1,22 +1,19 @@
  -here's how to hack libmodperl.a into apache-2.0 until the build system 
  -is completed.  (ithrperl == -Dusethreads perl)
  -
   Index: src/build/program.mk
   ===================================================================
   RCS file: /home/cvs/apache-2.0/src/build/program.mk,v
   retrieving revision 1.3
   diff -u -u -r1.3 program.mk
   --- src/build/program.mk     2000/03/31 07:02:31     1.3
  -+++ src/build/program.mk     2000/04/16 16:54:10
  -@@ -53,8 +53,10 @@
  - #
  ++++ src/build/program.mk     2000/04/16 23:43:14
  +@@ -54,7 +54,10 @@
    # The build environment was provided by Sascha Schumann.
    #
  -+LIBMODPERL=../../modperl-2.0/src/modules/perl/libmodperl.a
  -+MP_LIBS = $(LIBMODPERL) `ithrperl -MExtUtils::Embed -e ldopts`
    
  ++MP_SRC = ../../modperl-2.0/src/modules/perl
  ++MP_LDADD = $(MP_SRC)/libmodperl.a `$(MP_SRC)/ldopts`
  ++
    PROGRAM_OBJECTS = $(PROGRAM_SOURCES:.c=.lo)
    
    $(PROGRAM_NAME): $(PROGRAM_DEPENDENCIES) $(PROGRAM_OBJECTS)
   -    $(LINK) $(PROGRAM_LDFLAGS) $(PROGRAM_OBJECTS) $(PROGRAM_LDADD)
  -+    $(LINK) $(PROGRAM_LDFLAGS) $(PROGRAM_OBJECTS) $(PROGRAM_LDADD) $(MP_LIBS)
  ++    $(LINK) $(PROGRAM_LDFLAGS) $(PROGRAM_OBJECTS) $(PROGRAM_LDADD) $(MP_LDADD)
  
  
  
  1.2       +0 -2      modperl-2.0/src/modules/perl/modperl_log.h
  
  Index: modperl_log.h
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_log.h,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- modperl_log.h     2000/04/15 01:38:24     1.1
  +++ modperl_log.h     2000/04/17 00:02:25     1.2
  @@ -1,8 +1,6 @@
   #ifndef MODPERL_LOG_H
   #define MODPERL_LOG_H
   
  -#define MP_TRACE /* XXX: make optional */
  -
   #define MP_FUNC __FUNCTION__ /* XXX: not every cc supports this
                                 * sort out later
                                 */
  
  
  

Reply via email to