NAME
ExtUtils::F77 - Simple interface to F77 libs
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! It was originally developed to make building and installation of the PGPLOT module easier, which links to the pgplot Fortran graphics library. It is now used by a number of perl modules.
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 submitted patches for new database entries for your system at https://github.com/PDLPorters/extutils-f77
Note the default on most systems is now to search for a generic 'GNU' compiler which can be gfortran, g77, g95 or fort77 (in that order based on usage) and then find the appropriate link libraries automatically. (This is the 'Generic' 'GNU' database entry in the code.)
The target compiler can be explicitly overriden by setting the environment variable F77, e.g.
% setenv F77 "x86_64-pc-linux-gnu-gfortran"
% perl -MExtUtils::F77 -e 'print ExtUtils::F77->compiler, "\n"'
The library list which the module returns can be explicitly overridden by setting the environment variable F77LIBS, e.g.
% setenv F77LIBS "-lfoo -lbar"
% perl -MExtUtils::F77 -e 'print ExtUtils::F77->runtime, "\n"'
...
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;
METHODS
The following are all class methods.
runtime
Returns a list of F77 runtime libraries.
$fortranlibs = ExtUtils::F77->runtime;
runtimeok
Returns TRUE only if runtime libraries have been found successfully.
trail_
Returns true if F77 names have trailing underscores.
compiler
Returns command to execute the compiler (e.g. 'f77').
cflags
Returns compiler flags.
testcompiler
Test to see if compiler actually works.
DEBUGGING
To debug this module, and/or get more information about its workings, set $ExtUtils::F77::DEBUG
to a true value. If set, it will warn
various information about its operations.
As of version 1.22, this module will no longer print or warn if it is working normally.
SEE ALSO
PDL (PDL::Minuit and PDL::Slatec), PGPLOT
AUTHOR
Karl Glazebrook, with many other contributions (see git repository at https://github.com/PDLPorters/extutils-f77)