r35 - in packages: . libextutils-f77-perl libextutils-f77-perl/branches libextutils-f77-perl/branches/upstream libextutils-f77-perl/branches/upstream/current libextutils-f77-perl/branches/upstream/current/t

Luk Claes luk-guest@haydn.debian.org
Wed, 09 Jun 2004 11:25:18 -0600


Author: luk-guest
Date: 2004-06-09 11:25:15 -0600 (Wed, 09 Jun 2004)
New Revision: 35

Added:
   packages/libextutils-f77-perl/
   packages/libextutils-f77-perl/branches/
   packages/libextutils-f77-perl/branches/upstream/
   packages/libextutils-f77-perl/branches/upstream/current/
   packages/libextutils-f77-perl/branches/upstream/current/CHANGES
   packages/libextutils-f77-perl/branches/upstream/current/COPYING
   packages/libextutils-f77-perl/branches/upstream/current/F77.pm
   packages/libextutils-f77-perl/branches/upstream/current/MANIFEST
   packages/libextutils-f77-perl/branches/upstream/current/Makefile.PL
   packages/libextutils-f77-perl/branches/upstream/current/README
   packages/libextutils-f77-perl/branches/upstream/current/t/
   packages/libextutils-f77-perl/branches/upstream/current/t/require.t
   packages/libextutils-f77-perl/tags/
Log:
[svn-inject] Installing original source of libextutils-f77-perl

Added: packages/libextutils-f77-perl/branches/upstream/current/CHANGES
===================================================================
--- packages/libextutils-f77-perl/branches/upstream/current/CHANGES	2004-06-09 16:27:47 UTC (rev 34)
+++ packages/libextutils-f77-perl/branches/upstream/current/CHANGES	2004-06-09 17:25:15 UTC (rev 35)
@@ -0,0 +1,85 @@
+ExtUtils::F77 Changes list 
+--------------------------
+
+v1.14 released Jun 15th 2001
+----------------------------
+
+* Diab Jerius' Solaris regex patch
+* Tim Butler's Solaris patch
+* Now prints version on "use"
+* David Meleedy's Solaris patch?
+* My mix and match of all the above
+* Added COPYING file for Licence statement
+* Tim Jeness' latest Solaris patch
+* My own patch to make sure gcclibs are appended for g77
+
+v1.13 released May 8th 2000
+---------------------------
+
+* Small IRIX patch from Christian Soeller.
+* Tim Butler's Solaris patch (to make sure directories in path really
+  do contain libF77.a)
+* Charles Lane's latest VMS patch (properly blanks VMS libs)
+* Changed my email address.
+* Added Gokhan Ulu's <ulu@ultra.bu.edu> patch to use Solaris 
+  LD_LIBRARY_PATH variable to assist in locating F77 libs.
+
+v1.12 released Oct 26th 1999
+----------------------------
+
+* SGI coding suggestion from Tim Jenness to suppress a warning.
+
+v1.11 released Oct 15th 1999
+-----------------------------
+
+* Now removed from PGPLOT module distribution to avoid confusing CPAN,
+  now purely available standalone.
+* Got rid of some "for my $foo" ism's for 5.003 compatibility.
+* Christian's cygwin patches.
+* Patch to restore fallback to g77 behaviour if o/s compiler not found.
+  (e.g. solaris)
+* IRIX changes from Ovidiu Toader <ovi@physics.utoronto.ca>
+* Fixed g77 to use -lg2c in prefererence
+
+v1.10 released May 14th 1999
+-----------------------------
+
+Tim Jenness <t.jenness@jach.hawaii.edu>:
+* Fixes for Redhat 6.0 searching for libg2c.a
+* Better POD documentation
+* New runtimeok() method
+
+v1.09 released May 11th, 1999
+-----------------------------
+
+* Yet another IRIX patch (Allen Smith <easmith@beatrice.rutgers.edu>, Nov 1998)
+* Added -lg2c support provisionally
+* Yet another IRIX mod from Christian Soeller  <c.soeller@auckland.ac.nz>
+* Improved docs slightly.
+* Small VMS patch from Chuck Lane <lane@duphy4.physics.drexel.edu>
+
+
+v1.08 released Sep 11th, 1998
+-----------------------------
+
+* Better gcc detection (Anton Berezin)
+* Improved libf2c directory location
+* fixed pod2man bugs in documentation
+* IRIX n32 fix
+
+
+v1.07 released May 21st, 1998.
+------------------------------
+
+* Now supports VMS! Thanks to Charles Lane for his patch
+
+* Added -lxlf90 to AIX libs (Andreas Heitmann)
+
+* Added g77/f77/fort77 search for Generic g77/f2c
+
+* Fixed minor bug in falling back to g77/f2c
+
+* Added support for explicit overriding of Fortran libs
+  using the environment variable F77LIBS.
+  
+  

Added: packages/libextutils-f77-perl/branches/upstream/current/COPYING
===================================================================
--- packages/libextutils-f77-perl/branches/upstream/current/COPYING	2004-06-09 16:27:47 UTC (rev 34)
+++ packages/libextutils-f77-perl/branches/upstream/current/COPYING	2004-06-09 17:25:15 UTC (rev 35)
@@ -0,0 +1,35 @@
+  Copyright (c) 2001 by Karl Glazebrook. All rights reserved.  This distribution 
+  is free software; you can redistribute it and/or modify it under the same 
+  terms as Perl itself.
+
+  THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND ANY EXPRESS
+  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 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.
+
+  BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+  FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+  OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+  PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
+  EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS
+  WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+  ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+  WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+  REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR
+  DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
+  DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM
+  (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
+  INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF
+  THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER
+  OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

Added: packages/libextutils-f77-perl/branches/upstream/current/F77.pm
===================================================================
--- packages/libextutils-f77-perl/branches/upstream/current/F77.pm	2004-06-09 16:27:47 UTC (rev 34)
+++ packages/libextutils-f77-perl/branches/upstream/current/F77.pm	2004-06-09 17:25:15 UTC (rev 35)
@@ -0,0 +1,584 @@
+
+package ExtUtils::F77;
+
+use Config;
+
+=head1 NAME
+
+ExtUtils::F77 - Simple interface to F77 libs
+
+=head1 DESCRIPTION
+
+This module tries to figure out how to link C programs with
+Fortran subroutines on your system. Basically one must add a list
+of Fortran runtime libraries. The problem is their location
+and name varies with each OS/compiler combination!
+
+This module tries to implement a simple  
+'rule-of-thumb' database for various flavours of UNIX systems.
+A simple self-documenting Perl database of knowledge/code
+for figuring out how to link for various combinations of OS and
+compiler is embedded in the modules Perl code. Please help 
+save the world by sending database entries for
+your system to kgb@aaoepp.aao.gov.au
+
+The library list which the module returns 
+can be explicitly overridden by setting the environment 
+variable F77LIBS, e.g.
+
+  % setenv F77LIBS "-lfoo -lbar"
+  % perl Makefile.PL
+  ...
+
+=cut
+
+$VERSION = "1.14";
+
+# Database starts here. Basically we have a large hash specifying
+# entries for each os/compiler combination. Entries can be code refs
+# in which case they are executed and the returned value used. This
+# allows us to be quite smart.
+
+# Hash key convention is uppercase first letter of
+# hash keys. First key is usually the name of the architecture as
+# returned by Config (modulo ucfirst()).
+
+print "Loaded ExtUtils::F77 version $VERSION\n";
+
+%F77config=();
+
+### SunOS (use this as a template for new entries) ###
+
+# Code to figure out and return link-string for this architecture
+# Returns false if it can't find anything sensible.
+
+$F77config{Sunos}{F77}{Link} = sub {  
+       $dir = find_highest_SC("/usr/lang/SC*");
+       return "" unless $dir; # Failure
+       print "$Pkg: Found Fortran latest version lib dir $dir\n";
+       return "-L$dir -lF77 -lm";
+};
+
+# Whether symbols (subroutine names etc.) have trailing underscores 
+# (true/false)
+
+$F77config{Sunos}{F77}{Trail_} = 1; 
+
+# Name of default compiler - corresponds to one of the above keys
+
+$F77config{Sunos}{DEFAULT} = 'F77'; 
+
+# Program to run to actually compile stuff
+
+$F77config{Sunos}{F77}{Compiler} = 'f77';
+
+# Associated compiler flags
+
+$F77config{Sunos}{F77}{Cflags} = '-O';
+
+############ Rest of database is here ############ 
+
+### Solaris ###
+
+$F77config{Solaris}{F77}{Link} = sub {
+     my $NSPATH;
+     my $dir;
+ 
+     #find the SUNWspro entry of nonstandard inst. in LD_LIBRARY_PATH
+     if ( defined $ENV{'LD_LIBRARY_PATH'} &&
+	  $ENV{'LD_LIBRARY_PATH'} =~ m{([^:]*SUNWspro[^/]*)} )
+     {
+       $NSPATH = $1;
+     }
+
+     elsif ( defined $ENV{'PATH'} ) {
+
+       foreach ( split (/:/,$ENV{PATH}) ) {
+	 if ( m{(.*SUNWspro[^/]*)} ) {
+	   $NSPATH = $1;
+	   last;
+	 }
+       }
+     }
+
+
+     if (defined $NSPATH) {
+
+       print "$Pkg: Found F77 path:--->$NSPATH\n";
+
+       $dir = find_highest_SC("$NSPATH/WS*/lib") ||
+              find_highest_SC("$NSPATH/SC*/lib") ||
+	      find_highest_SC("$NSPATH/sunwspro*/SUNWspro/SC*/lib");
+
+       # that failed.  try $NSPATH/lib. use glob to
+       # match for libF77.*, as libF77.a isn't there anymore?
+       unless ( $dir )
+       {
+	 print "$Pkg: Trying $NSPATH/lib\n";
+	 $dir = "$NSPATH/lib" if glob("$NSPATH/lib/libF77*");
+       }
+	      
+     } else {
+     }
+     return "" unless $dir; # Failure
+     print "$Pkg: Found Fortran latest version lib dir $dir\n";
+     return "-L$dir -lF77 -lM77 -lsunmath -lm";
+ };
+
+
+$F77config{Solaris}{F77}{Trail_} = 1;
+$F77config{Solaris}{F77}{Compiler} = 'f77';
+$F77config{Solaris}{F77}{Cflags} = '-O';
+$F77config{Solaris}{DEFAULT} = 'F77';
+
+### Generic GNU-77 or F2C system ###
+
+$F77config{Generic}{G77}{Link} = sub {
+    my @libs = ('g2c', 'f2c');
+    my ($dir, $lib, $test);
+    foreach $test (@libs) {
+      $dir = `g77 -print-file-name=lib$test.a`;
+      chomp $dir;
+      # Note that -print-file-name returns just the library name
+      # if it cant be found - make sure that we only accept the
+      # directory if it returns a proper path (or matches a /)
+      if (defined $dir && $dir ne "lib$test.a") {
+        $lib = $test; # Found an existing library
+        last; 
+      }
+    }
+
+    if( defined $dir  && defined $lib) {
+        $dir =~ s,/lib$lib.a$,,;
+    } else {
+        $dir = "/usr/local/lib";
+        $lib = "f2c";
+    }    
+    return( "-L$dir -L/usr/lib -l$lib -lm" );
+};
+$F77config{Generic}{G77}{Trail_} = 1;
+$F77config{Generic}{G77}{Compiler} = find_in_path('g77','f77','fort77');
+$F77config{Generic}{G77}{Cflags} = '-O';
+$F77config{Generic}{DEFAULT} = 'G77';
+$F77config{Generic}{F2c}     = $F77config{Generic}{G77};
+
+### cygwin ###
+#"-lg2c -lm";
+# needed this on my cygwin system to get things working properly
+sub getcyglink {
+   return join ' ', map {my $lp = `g77 -print-file-name=lib$_.a`;
+			$lp =~ s|/[^/]+$||;
+			 $lp =~ s|L([a-z,A-Z]):|L//$1|g;
+			 "-L$lp -l$_"} qw/g2c m/;
+}
+
+$F77config{Cygwin}{G77}{Trail_} = 1;
+$F77config{Cygwin}{G77}{Compiler} = 'g77';
+$F77config{Cygwin}{G77}{Cflags} = '-O';
+$F77config{Cygwin}{G77}{Link}	= \&getcyglink;
+$F77config{Cygwin}{DEFAULT}	= 'G77';
+
+### Linux ###
+
+$F77config{Linux}{G77}     = $F77config{Generic}{G77};
+$F77config{Linux}{F2c}     = $F77config{Generic}{G77};
+$F77config{Linux}{DEFAULT} = 'G77';
+
+### DEC OSF/1 ###
+
+$F77config{Dec_osf}{F77}{Link}   = "-L/usr/lib -lUfor -lfor -lFutil -lm -lots -lc";
+$F77config{Dec_osf}{F77}{Trail_} = 1;
+$F77config{Dec_osf}{F77}{Compiler} = 'f77';
+$F77config{Dec_osf}{F77}{Cflags} = '-O';
+$F77config{Dec_osf}{DEFAULT}     = 'F77';
+
+### HP/UX ###
+
+$F77config{Hpux}{F77}{Link}   = "-L/usr/lib -lcl -lm";
+$F77config{Hpux}{F77}{Trail_} = 0;
+$F77config{Hpux}{F77}{Compiler} = 'f77';
+$F77config{Hpux}{F77}{Cflags} = '-O';
+$F77config{Hpux}{DEFAULT}     = 'F77';
+
+### IRIX ###
+
+# From: Ovidiu Toader <ovi@physics.utoronto.ca>
+# For an SGI running IRIX 6.4 or higher (probably lower than 6.4 also)
+# there is a new abi, -64, which produces 64 bit executables. This is no
+# longer an experimental feature and I am using it exclusively without any
+# problem. The code below is what I use instead of original IRIX section
+# in the ExtUtils::F77 package. It adds the -64 flag and it is supposed to
+# provide the same functionality as the old code for a non -64 abi. 
+
+if (ucfirst($Config{'osname'}) eq "Irix")
+{
+  my ($cflags,$mips,$default_abi,$abi,$mips_dir,$libs);
+  $cflags = $Config{cc};
+  ($mips) = ($cflags =~ /(-mips\d)/g);
+  $mips = "" if ! defined($mips);
+  $mips_dir = $mips;$mips_dir =~ s/-//g;
+  $default_abi = $Config{osvers} >= 6.4 ? "-n32" : "-o32";
+ GET_ABI:
+  {
+    # -32 seems to be synonymous for -o32 (CS)
+    $abi = "-o32",last GET_ABI if $cflags =~ /-o?32/;
+    $abi = "-n32",last GET_ABI if $cflags =~ /-n32/;
+    $abi = "-64",last GET_ABI if $cflags =~ /-64/;
+    $abi = $default_abi;
+  }
+  if ( $abi eq "-64" ){
+    $libs = ( (-r "/usr/lib64/$mips_dir") && (-d _) && (-x _) ) ?
+	"-L/usr/lib64/$mips_dir" : "";
+    $libs .=  " -L/usr/lib64 -lftn -lm";
+  }
+  if ( $abi eq "-n32" ){
+    $libs = ( (-r "/usr/lib32/$mips_dir") && (-d _) && (-x _) ) ?
+	"-L/usr/lib32/$mips_dir" : "";
+    $libs .=  " -L/usr/lib32 -lftn -lm";
+  }
+  if ( $abi eq "-o32" ){
+    $libs = "-L/usr/lib -lF77 -lI77 -lU77 -lisam -lm";
+  }
+  $F77config{Irix}{F77}{Cflags}   = "$abi $mips";
+  $F77config{Irix}{F77}{Link}     = "$libs";
+  $F77config{Irix}{F77}{Trail_}   = 1;
+  $F77config{Irix}{F77}{Compiler} = "f77 $abi";
+  $F77config{Irix}{DEFAULT}       = 'F77';
+}
+
+### AIX ###
+
+$F77config{Aix}{F77}{Link}   = "-L/usr/lib -lxlf90 -lxlf -lc -lm";
+$F77config{Aix}{F77}{Trail_} = 0;
+$F77config{Aix}{DEFAULT}     = 'F77';
+
+### FreeBSD ###
+
+$F77config{Freebsd}{F77}{Trail_} = 1;
+$F77config{Freebsd}{F77}{Link}   = '-L/usr/lib -lf2c -lm';
+$F77config{Freebsd}{DEFAULT}     = 'F77';
+
+### VMS ###
+
+$F77config{VMS}{Fortran}{Trail_} = 0;
+$F77config{VMS}{Fortran}{Link}   = ' ';         # <---need this space!
+$F77config{VMS}{DEFAULT}     = 'Fortran';
+$F77config{VMS}{Fortran}{Compiler} = 'Fortran';
+
+############ End of database is here ############ 
+
+=head1 SYNOPSIS
+
+  use ExtUtils::F77;               # Automatic guess 
+  use ExtUtils::F77 qw(sunos);     # Specify system
+  use ExtUtils::F77 qw(linux g77); # Specify system and compiler
+  $fortranlibs = ExtUtils::F77->runtime;
+
+=cut
+
+# Package variables
+
+$Runtime = "-LSNAFU -lwontwork";
+$RuntimeOK = 0;
+$Trail_  = 1;
+$Pkg   = "";
+$Compiler = "";
+$Cflags = "";
+
+sub get; # See below
+
+# All the figuring out occurs during import - this is because
+# a lot of the answers depend on a lot of the guesswork.
+
+sub import {
+   $Pkg    = shift;
+   my $system   = ucfirst(shift);  # Set package variables
+   my $compiler = ucfirst(shift);
+   $Runtime = "-LSNAFU -lwontwork";
+
+   # Guesses if system/compiler not specified.
+
+   $system   = ucfirst $Config{'osname'} unless $system;
+   $system = 'Cygwin' if $system =~ /Cygwin/;
+   $compiler = get $F77config{$system}{DEFAULT} unless $compiler;
+
+   print "$Pkg: Using system=$system compiler=$compiler\n";
+   
+   if (defined($ENV{F77LIBS})) {
+      print "Overriding Fortran libs from value of enviroment variable F77LIBS = $ENV{F77LIBS}\n";
+      $Runtime = $ENV{F77LIBS};
+   }
+   else {
+      
+     # Try this combination
+
+     if (defined( $F77config{$system} )){
+     	my $flibs = get ($F77config{$system}{$compiler}{Link});
+        if ($flibs ne "") {
+     	   $Runtime = $flibs;# . gcclibs();
+	   # We don't want to append gcc libs if we are using
+	   # non gnu compilers. Initially, explicitly check for
+	   # use of sun compiler
+	   $Runtime .= gcclibs($flibs) unless $flibs =~ /sunmath/;
+	   $Runtime =~ s|L([a-z,A-Z]):|L//$1|g if $^O =~ /cygwin/i;
+           $Runtime = ' ' if $^O eq 'VMS';  # <-- need this space!
+	   print "Runtime: $Runtime\n";
+           $ok = 1;
+     	   $ok = validate_libs($Runtime) if $flibs ne "";
+	}
+     }else {
+     	$Runtime = $ok = "";
+     }
+
+     # If it doesn't work try Generic + GNU77
+
+      unless (("$Runtime" ne "-LSNAFU -lwontwork") && $ok) {
+     	print <<"EOD";
+$Pkg: Unable to guess and/or validate system/compiler configuration
+$Pkg: Will try system=Generic Compiler=G77
+EOD
+    	 $system   = "Generic";
+    	 $compiler = "G77";
+    	 my $flibs = get ($F77config{$system}{$compiler}{Link});
+    	 $Runtime =  $flibs . gcclibs($flibs);
+    	 $ok = validate_libs($Runtime) if $flibs ne "";
+    	 print "$Pkg: Well that didn't appear to validate. Well I will try it anyway.\n"
+    	      unless $Runtime && $ok;
+       }
+ 
+      $RuntimeOK = $ok;
+      
+   } # Not overriding   
+
+   # Now get the misc info for the methods.
+      
+   if (defined( $F77config{$system}{$compiler}{Trail_} )){
+      $Trail_  = get $F77config{$system}{$compiler}{Trail_};  
+   }
+   else{ 
+      print << "EOD";
+$Pkg: There does not appear to be any configuration info about
+$Pkg: names with trailing underscores for system $system. Will assume
+$Pkg: F77 names have trailing underscores.
+EOD
+      $Trail_ = 1;
+   }
+  
+   if (defined( $F77config{$system}{$compiler}{Compiler} )) {
+	$Compiler = $F77config{$system}{$compiler}{Compiler};
+   } else {
+	print << "EOD";
+$Pkg: There does not appear to be any configuration info about
+$Pkg: the F77 compiler name. Will assume 'f77'.
+EOD
+	$Compiler = 'f77';
+   }
+print "$Pkg: Compiler: $Compiler\n";
+
+   if (defined( $F77config{$system}{$compiler}{Cflags} )) {
+	$Cflags = $F77config{$system}{$compiler}{Cflags};
+   } else {
+	print << "EOD";
+$Pkg: There does not appear to be any configuration info about
+$Pkg: the options for the F77 compiler. Will assume none
+$Pkg: necessary.
+EOD
+	$Cflags = '';
+   }
+
+   print "$Pkg: Cflags: $Cflags\n";
+   
+} # End of import ()
+
+=head1 METHODS
+
+The following methods are provided:
+
+=over 4
+
+=item * B<runtime>
+
+Returns a list of F77 runtime libraries.
+
+  $fortranlibs = ExtUtils::F77->runtime;
+
+=item * B<runtimeok>
+
+Returns TRUE only if runtime libraries have been found successfully.
+
+=item * B<trail_>
+
+Returns true if F77 names have trailing underscores.
+
+=item * B<compiler>
+
+Returns command to execute the compiler (e.g. 'f77').
+
+=item * B<cflags>
+
+Returns compiler flags.
+
+=item * B<testcompiler>
+
+Test to see if compiler actually works.
+
+=back
+
+More methods  will probably be added in the future.
+
+=cut
+	
+sub runtime { return $Runtime; }
+sub runtimeok { return $RuntimeOK; }
+sub trail_  { return $Trail_; }
+sub compiler { return $Compiler; }
+sub cflags  { return $Cflags; }
+
+### Minor internal utility routines ###
+
+# Get hash entry, evaluating code references
+
+sub get { ref($_[0]) eq "CODE" ? &{$_[0]} : $_[0] };
+
+# Test if any files exist matching glob
+
+sub any_exists {
+    my @glob = glob(shift);
+    return scalar(@glob);
+}
+
+# Find highest version number of SCN.N(.N) directories
+# (Nasty SunOS/Solaris naming scheme for F77 libs]
+sub find_highest_SC {
+    print "$Pkg: Scanning for $_[0]\n";
+    my @glob = glob(shift);
+    my %n=();
+    for (@glob) {
+      #print "Found $_\n";
+       if ( m|/SC(\d)\.(\d)/?.*$| ) {
+           $n{$_} = $1 *100 + $2 * 10;
+       }
+       if ( m|/SC(\d)\.(\d)\.(\d)/?.*$| ) {
+           $n{$_} = $1 *100 + $2 * 10 + $3;
+       }
+    }
+    my @sorted_dirs = grep {-f "$_/libF77.a"} sort {$n{$a} <=> $n{$b}} @glob;
+
+    return pop @sorted_dirs; # Highest N
+}
+     
+# Validate a string of form "-Ldir -lfoo -lbar"
+
+sub validate_libs {
+   print "$Pkg: Validating $_[0]   ";
+   my @args = split(' ',shift());
+   my $pat;
+   my $ret = 1;
+
+   # Create list of directories to search (with common defaults)
+
+   my @path = ();     
+   for (@args, "/usr/lib", "/lib") { 
+      push @path, $1 if /^-L(.+)$/ && -d $1;
+   }
+
+   # Search directories
+
+   for (@args) {      
+      next if /^-L/;
+      next if $_ eq "-lm"; # Ignore this common guy
+      if (/^-l(.+)$/) {
+         $pat = join(" ", map {$_."/lib".$1.".*"} @path); # Join dirs + file
+         #print "Checking for $pat\n";
+         unless (any_exists($pat)) {
+            print "\n$Pkg:    Unable to find library $_" ;
+            $ret = 0;
+         }
+       }
+   }
+   print $ret ? "[ok]\n" : "\n";
+   return $ret;
+}
+
+
+sub testcompiler {
+ 
+    my $file = "/tmp/testf77$$";
+    my $ret;
+    open(OUT,">$file.f");
+    print OUT "      print *, 'Hello World'\n";
+    print OUT "      end\n";
+    close(OUT);
+    print "Compiling the test Fortran program...\n";
+    system "$Compiler $Cflags $file.f -o ${file}_exe";
+    print "Executing the test program...\n";
+    if (`${file}_exe` ne " Hello World\n") {
+       print "Test of Fortran Compiler FAILED. \n";
+       print "Do not know how to compile Fortran on your system\n";
+       $ret=0;
+    }
+    else{
+       print "Congratulations you seem to have a working f77!\n";
+       $ret=1;
+    }
+    unlink("${file}_exe"); unlink("$file.f"); unlink("$file.o") if -e "$file.o";
+    return $ret;
+};
+
+# Return gcc libs (e.g. -L/usr/local/lib/gcc-lib/sparc-sun-sunos4.1.3_U1/2.7.0 -lgcc)
+
+sub gcclibs {
+   my $flibs = shift; # Fortran libs
+   my $isgcc = $Config{'cc'} eq 'gcc';
+   if (!$isgcc && $^O ne 'VMS') {
+      print "Checking for gcc in disguise:\n";
+      $isgcc = 1 if $Config{gccversion};
+      my $string;
+      if ($isgcc) {
+        $string = "Compiler is gcc version $Config{gccversion}";
+        $string .= "\n" unless $string =~ /\n$/;
+      } else {
+        $string = "Not gcc\n";
+      }
+      print $string;
+   }
+   if ($isgcc or ($flibs =~ /-lg2c/) or ($flibs =~ /-lf2c/) ) {
+       $gccdir = `gcc -print-libgcc-file-name`; chomp $gccdir;
+       $gccdir =~ s/\/libgcc.a//;
+       return " -L$gccdir -lgcc";   
+   }else{
+       return "";
+   }
+}
+
+# Try and find a program in the users PATH
+
+sub find_in_path {
+   my @names = @_;
+   my @path = split(":",$ENV{PATH});
+   my ($name,$dir);
+   for $name (@names) {
+      for $dir (@path) {
+         if (-x $dir."/$name") {
+	    print "Found compiler $name\n";
+	    return $name;
+	  }
+      }
+   }
+   return '' if $^O eq 'VMS';
+   die "Unable to find a fortran compiler using names: ".join(" ",@names);
+}
+
+
+=head1 AUTHOR
+
+Karl Glazebrook (kgb@aaoepp.aao.GOV.AU).
+
+=cut
+
+
+1; # Return true
+
+
+
+


Property changes on: packages/libextutils-f77-perl/branches/upstream/current/F77.pm
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libextutils-f77-perl/branches/upstream/current/MANIFEST
===================================================================
--- packages/libextutils-f77-perl/branches/upstream/current/MANIFEST	2004-06-09 16:27:47 UTC (rev 34)
+++ packages/libextutils-f77-perl/branches/upstream/current/MANIFEST	2004-06-09 17:25:15 UTC (rev 35)
@@ -0,0 +1,7 @@
+CHANGES
+README
+Makefile.PL
+F77.pm
+MANIFEST
+t/require.t
+COPYING

Added: packages/libextutils-f77-perl/branches/upstream/current/Makefile.PL
===================================================================
--- packages/libextutils-f77-perl/branches/upstream/current/Makefile.PL	2004-06-09 16:27:47 UTC (rev 34)
+++ packages/libextutils-f77-perl/branches/upstream/current/Makefile.PL	2004-06-09 17:25:15 UTC (rev 35)
@@ -0,0 +1,13 @@
+
+# Makefile.PL for ExtUtils::F77
+
+use ExtUtils::MakeMaker;
+# # See lib/ExtUtils/MakeMaker.pm for details of how to influence
+# # the contents of the Makefile that is written.
+WriteMakefile(
+     'NAME'	=> 'ExtUtils::F77',
+     'VERSION_FROM'	=> 'F77.pm',  
+     'linkext'  => {LINKTYPE => ''},  # Only .pm files in this directory
+    'dist'      => { COMPRESS=>"gzip", SUFFIX=>"gz" }
+ );
+

Added: packages/libextutils-f77-perl/branches/upstream/current/README
===================================================================
--- packages/libextutils-f77-perl/branches/upstream/current/README	2004-06-09 16:27:47 UTC (rev 34)
+++ packages/libextutils-f77-perl/branches/upstream/current/README	2004-06-09 17:25:15 UTC (rev 35)
@@ -0,0 +1,18 @@
+
+
+ExtUtils::F77 module 
+--------------------
+
+Karl Glazebrook
+
+karlglazebrook@yahoo.com
+
+[see file CHANGES for new features]
+
+This module tries to figure out how to link C programs with
+Fortran subroutines on your system. Basically one must add a list
+of Fortran runtime libraries. The problem is their location
+and name varies with each OS/compiler combination!
+
+Please see file COPYING for copyright/license information
+

Added: packages/libextutils-f77-perl/branches/upstream/current/t/require.t
===================================================================
--- packages/libextutils-f77-perl/branches/upstream/current/t/require.t	2004-06-09 16:27:47 UTC (rev 34)
+++ packages/libextutils-f77-perl/branches/upstream/current/t/require.t	2004-06-09 17:25:15 UTC (rev 35)
@@ -0,0 +1,12 @@
+#!/usr/local/bin/perl -w
+
+# Simple test to just load the F77.pm module
+
+use strict;
+use vars qw/$loaded/;
+
+BEGIN { $| = 1; print "1..1\n"; }
+END {print "not ok 1\n" unless $loaded;}
+use ExtUtils::F77;
+$loaded = 1;
+print "ok 1\n";