#!perl #
# # Perl script 'f.pl' to compile a single Fortran 77 source code file # # Editing this file enables to very simply compile and link all Fortran # programs of package FORMS and related packages (like MODEL, CRT, NET, # ANRAY and FD) using system-independent Perl scripts. # # Version: 6.00 # Date: 2006, June 8 # # Coded by: Vaclav Bucha and Ludek Klimes # Department of Geophysics, Charles University Prague, # Ke Karlovu 3, 121 16 Praha 2, Czech Republic, # E-mails: bucha@seis.karlov.mff.cuni.cz # klimes@seis.karlov.mff.cuni.cz # # ...................................................................... # # This file consists of the following PERL subroutines: # COMPILE... Subroutine designed to compile a single Fortran 77 # source code file. # COMPILE # Main script designed to compile single Fortran 77 source code # file by means of invocation of subroutine COMPILE # if its name is specified at the command line. # F # # ====================================================================== # # # # Subroutine COMPILE($FILE[,$OPTIONS]) # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Subroutine designed to compile a single Fortran 77 source code file. # # Input: # $FILE...String containing the name of the Fortran 77 source code # file without extension '.for'. # $OPTIONS... Optional command-line arguments for the compiler. # # No output. # # Note: Uncomment and modify commands for your compiler. After that, # comment the following line: die "Uncomment and modify commands for your compiler. Error"; # # ---------------------------------------------------------------------- # sub COMPILE { $FILE=$_[0]; @FILEandOPTIONS=@_; print "---------- Compiling ${FILE}.for ----------\n"; # # Linux compiler g77: # ~~~~~~~~~~~~~~~~~~~ # Compiling $FILE.for to get executable $FILE # open(LU,"|g77 -o @FILEandOPTIONS $FILE.for>$FILE.lst"); # (option -O is not recommended) # (option -O cannot be used to compile mtt.for and anray.for) # (option -m32 when compiling on 64-bit Linux is recommended) # (rounding errors on a PC sometimes resemble RISC computers) # close(LU) || die "Error"; # # Linux compiler fort77: # ~~~~~~~~~~~~~~~~~~~~~~ # Copying $FILE.for to $FILE.f # symlink("$FILE.for","$FILE.f"); # Compiling $FILE.f to get executable $FILE # open(LU,"|fort77 -Nc40 -O -o @FILEandOPTIONS $FILE.f"); # (option -Nc40 is necessary to compile grdcal.for) # (do not use option -O to compile mtt.for) # (program green.for does not work properly) # (cannot compile package RMATRIX) # close(LU) || die "Error"; # Deleting $FILE.f # unlink("$FILE.f"); # # HP-Unix compiler fort77: # ~~~~~~~~~~~~~~~~~~~~~~~~ # Copying $FILE.for to $FILE.f # symlink("$FILE.for","$FILE.f"); # Compiling $FILE.f to get executable $FILE # open(LU,"|fort77 -o @FILEandOPTIONS $FILE.f"); # (use option -K to compile grdran2d.for) # (subroutine SIGNAL in ss.for must be renamed) # close(LU) || die "Error"; # Deleting $FILE.f # unlink("$FILE.f"); # # MS-DOS Lahey compliler F77L3 and linker 386LINK: # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Compiling $FILE.for to get $FILE.obj # open(LU,"|F77L3 @FILEandOPTIONS >$FILE.lst"); # close(LU) || die "Error"; # Linking $FILE.obj to get executable $FILE.exe # open(LU,"|386LINK @FILEandOPTIONS -lib GRAPH3 -symbol"); # (use option -stack 13000000 to link grdran2d.for) # (use option -stack 100000 to link green.for) # close(LU) || die "Error"; # Deleting $FILE.obj # unlink("$FILE.obj"); } # ====================================================================== # # # # Main script # ~~~~~~~~~~~ # Usage: # perl f.pl [$FILE [options]] # Parameters: # $FILE...String containing the name of the Fortran 77 source code # file without extension '.for'. # If $FILE is not specified, no action is done. # # ---------------------------------------------------------------------- # if (scalar(@ARGV)>0) {&COMPILE(@ARGV)}; # # ====================================================================== 1; #