[prev in list] [next in list] [prev in thread] [next in thread] 

List:       apreq-cvs
Subject:    cvs commit: httpd-apreq-2/win32 util.pl apreq2_win32.pl Configure.pl
From:       randyk () apache ! org
Date:       2003-10-24 2:10:55
[Download RAW message or body]

randyk      2003/10/23 19:10:55

  Modified:    win32    Configure.pl
  Added:       win32    util.pl apreq2_win32.pl
  Log:
  Create and install a Win32 version of the apreq2-config script.
  
  Revision  Changes    Path
  1.21      +4 -0      httpd-apreq-2/win32/Configure.pl
  
  Index: Configure.pl
  ===================================================================
  RCS file: /home/cvs/httpd-apreq-2/win32/Configure.pl,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- Configure.pl	24 Oct 2003 00:25:08 -0000	1.20
  +++ Configure.pl	24 Oct 2003 02:10:55 -0000	1.21
  @@ -154,6 +154,10 @@
   END
   }
   
  +my @args = ($^X, "$apreq_home/win32/apreq2_win32.pl", 
  +            "--with-apache2=$apache");
  +system(@args) == 0 or warn "system @args failed: $?";
  +
   sub usage {
       print <<'END';
   
  
  
  
  1.1                  httpd-apreq-2/win32/util.pl
  
  Index: util.pl
  ===================================================================
  sub usage {
      my $script = shift;
      print <<"END";
  
   Usage: perl $script [--with-apache2=C:\Path\to\Apache2]
          perl $script --help
  
  Options:
  
    --with-apache2=C:\Path\to\Apache2 : specify the top-level Apache2 directory
    --help                            : print this help message
  
  With no options specified, an attempt will be made to find a suitable 
  Apache2 directory.
  
  END
      exit;
  }
  
  sub check {
      my $apache = shift;
      die qq{No libhttpd library found under $apache/lib}
          unless -e qq{$apache/lib/libhttpd.lib};
      die qq{No httpd header found under $apache/include}
          unless -e qq{$apache/include/httpd.h};
      my $vers = qx{"$apache/bin/Apache.exe" -v};
      die qq{"$apache" does not appear to be version 2.0}
          unless $vers =~ m!Apache/2.0!;
      return 1;
  }
  
  1;
  
  
  
  1.1                  httpd-apreq-2/win32/apreq2_win32.pl
  
  Index: apreq2_win32.pl
  ===================================================================
  #!perl
  use strict;
  use Config;
  use Getopt::Long;
  require Win32;
  use ExtUtils::MakeMaker;
  use warnings;
  use FindBin;
  
  BEGIN {
      die 'This script is intended for Win32' unless $^O =~ /Win32/i;
  }
  
  my $license = <<'END';
  # ====================================================================
  # The Apache Software License, Version 1.1
  #
  # Copyright (c) 2001-2003 The Apache Software Foundation.  All rights
  # reserved.
  #
  # Redistribution and use in source and binary forms, with or without
  # modification, are permitted provided that the following conditions
  # are met:
  #
  # 1. Redistributions of source code must retain the above copyright
  #    notice, this list of conditions and the following disclaimer.
  #
  # 2. Redistributions in binary form must reproduce the above copyright
  #    notice, this list of conditions and the following disclaimer in
  #    the documentation and/or other materials provided with the
  #    distribution.
  #
  # 3. The end-user documentation included with the redistribution,
  #    if any, must include the following acknowledgment:
  #       "This product includes software developed by the
  #        Apache Software Foundation (http://www.apache.org/)."
  #    Alternately, this acknowledgment may appear in the software itself,
  #    if and wherever such third-party acknowledgments normally appear.
  #
  # 4. The names "Apache" and "Apache Software Foundation" must
  #    not be used to endorse or promote products derived from this
  #    software without prior written permission. For written
  #    permission, please contact apache@apache.org.
  #
  # 5. Products derived from this software may not be called "Apache",
  #    nor may "Apache" appear in their name, without prior written
  #    permission of the Apache Software Foundation.
  #
  # THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  # DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  # ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  # USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  # SUCH DAMAGE.
  # ====================================================================
  #
  # This software consists of voluntary contributions made by many
  # individuals on behalf of the Apache Software Foundation.  For more
  # information on the Apache Software Foundation, please see
  # <http://www.apache.org/>.
  
  # APR-util script designed to allow easy command line access to APR-util
  # configuration parameters.
  
  END
  
  my $file = 'apreq2-config.pl';
  my $apreq_home = Win32::GetShortPathName($FindBin::Bin);
  $apreq_home =~ s!/?win32$!!;
  $apreq_home =~ s!/!\\!g;
  require "$apreq_home/win32/util.pl";
  
  my ($prefix, $help);
  GetOptions('with-apache2=s' => \$prefix, 'help' => \$help) or usage($0);
  usage($0) if $help;
  
  unless (defined $prefix and -d $prefix) {
      $prefix = prompt("Please give the path to your Apache2 installation:",
  		     $prefix);
  }
  die "Can't find a suitable Apache2 installation!" 
      unless (-d $prefix and check($prefix));
  
  $prefix = Win32::GetShortPathName($prefix);
  $prefix =~ s!\\!/!g;
  
  my $src_version = "$apreq_home/src/apreq_version.h";
  my $apache_version = "$prefix/include/apreq_version.h";
  
  my $apreq_version = -e $src_version ? $src_version : $apache_version;
  open(my $inc, $apreq_version)
      or die "Cannot open $apreq_version: $!";
  my %vers;
  while (<$inc>) {
      if (/define\s+APREQ_(MAJOR|MINOR|PATCH)_VERSION\s+(\d+)/) {
          $vers{$1} = $2;
      }
  }
  close $inc;
  my $dotted = "$vers{MAJOR}.$vers{MINOR}.$vers{PATCH}";
  my $src_dir = -d $apreq_home ? $apreq_home : '';
  
  my %apreq_args = (APREQ_MAJOR_VERSION => $vers{MAJOR},
                    APREQ_DOTTED_VERSION => $dotted,
                    APREQ_LIBNAME => 'libapreq.lib',
                    prefix => $prefix,
                    exec_prefix => $prefix,
                    bindir => "$prefix/bin",
                    libdir => "$prefix/lib",
                    datadir => $prefix,
                    installbuilddir => "$prefix/build",
                    includedir => "$prefix/include",
                  
                    CC => $Config{cc},
                    CPP => $Config{cpp},
                    LD => $Config{ld},
                    SHELL => $ENV{comspec},
                    CPPFLAGS => '',
                    CFLAGS => q{ /nologo /MD /W3 /O2 /D "WIN32" /D "_WINDOWS" /D "NDEBUG" },
                    LDFLAGS => q{ kernel32.lib /nologo /subsystem:windows /dll /machine:I386 },
                    LIBS => '',
                    EXTRA_INCLUDES => '',
                    APREQ_SOURCE_DIR => $src_dir,
                    APREQ_SO_EXT => $Config{dlext},
                    APREQ_LIB_TARGET => '',
                 );
  
  my $apreq_usage = << 'EOF';
  Usage: apreq2-config [OPTION]
  
  Known values for OPTION are:
    --prefix[=DIR]    change prefix to DIR
    --bindir          print location where binaries are installed
    --includedir      print location where headers are installed
    --libdir          print location where libraries are installed
    --cc              print C compiler name
    --cpp             print C preprocessor name and any required options
    --ld              print C linker name
    --cflags          print C compiler flags
    --cppflags        print cpp flags
    --includes        print include information
    --ldflags         print linker flags
    --libs            print additional libraries to link against
    --srcdir          print APR-util source directory
    --installbuilddir print APR-util build helper directory
    --link-ld         print link switch(es) for linking to APREQ
    --apreq-so-ext    print the extensions of shared objects on this platform
    --version         print the APR-util version as a dotted triple
    --help            print this help
  
  When linking, an application should do something like:
    APREQ_LIBS="\`apreq2-config --link-ld --libs\`"
  
  An application should use the results of --cflags, --cppflags, --includes,
  and --ldflags in their build process.
  EOF
  
  my $full = "$prefix/bin/$file";
  open(my $fh, ">$full") or die "Cannot open $full: $!";
  print $fh <<"END";
  #!$^X
  use strict;
  use warnings;
  use Getopt::Long;
  
  $license
  sub usage {
      print << 'EOU';
  $apreq_usage
  EOU
      exit(1);
  }
  
  END
  
  foreach my $var (keys %apreq_args) {
      print $fh qq{my \${$var} = q[$apreq_args{$var}];\n};
  }
  print $fh $_ while <DATA>;
  close $fh;
  
  my @args = ('pl2bat', $full);
  system(@args) == 0 or die "system @args failed: $?";
  print qq{apreq2-config.bat has been created under $prefix/bin.\n\n};
  
  __DATA__
  
  my %opts = ();
  GetOptions(\%opts,
             'prefix:s',
             'bindir',
             'includedir',
             'libdir',
             'cc',
             'cpp',
             'ld',
             'cflags',
             'cppflags',
             'includes',
             'ldflags',
             'libs',
             'srcdir',
             'installbuilddir',
             'link-ld',
             'apreq-so-ext',
             'version',
             'help'
            ) or usage();
  
  usage() if ($opts{help} or not %opts);
  
  if (exists $opts{prefix} and $opts{prefix} eq "") {
      print qq{$prefix\n};
      exit(0);
  }
  my $user_prefix = defined $opts{prefix} ? $opts{prefix} : '';
  my $flags = '';
  
  SWITCH : {
      local $\ = "\n";
      $opts{bindir} and do {
          print $user_prefix ? "$user_prefix/bin" : $bindir;
          last SWITCH;
      };
      $opts{includedir} and do {
          print $user_prefix ? "$user_prefix/include" : $includedir;
          last SWITCH;
      };
      $opts{libdir} and do {
          print $user_prefix ? "$user_prefix/lib" : $libdir;
          last SWITCH;
      };
      $opts{installbuilddir} and do {
          print $user_prefix ? "$user_prefix/build" : $installbuilddir;
          last SWITCH;
      };
      $opts{srcdir} and do {
          print $APREQ_SOURCE_DIR;
          last SWITCH;
      };
      $opts{cc} and do {
          print $CC;
          last SWITCH;
      };
      $opts{cpp} and do {
          print $CPP;
          last SWITCH;
      };
      $opts{ld} and do {
          print $LD;
          last SWITCH;
      };
      $opts{cflags} and $flags .= " $CFLAGS ";
      $opts{cppflags} and $flags .= " $CPPFLAGS ";
      $opts{includes} and do {
          my $inc = $user_prefix ? "$user_prefix/include" : $includedir;
          $flags .= qq{ /I"$inc" $EXTRA_INCLUDES };
      };
      $opts{ldflags} and $flags .= " $LDFLAGS ";
      $opts{libs} and $flags .= " $LIBS ";
      $opts{'link-ld'} and do {
          my $libpath = $user_prefix ? "$user_prefix/lib" : $libdir;
          $flags .= qq{ /libpath:"$libpath" $APREQ_LIBNAME };
      };
      $opts{'apreq-so-ext'} and do {
          print $APREQ_SO_EXT;
          last SWITCH;
      };
      $opts{version} and do {
          print $APREQ_DOTTED_VERSION;
          last SWITCH;
      };
      print $flags if $flags;
  }
  exit(0);
  
  
  
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic