home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_progs / prog_c / f2c.lha / orig / F2CDOC.ZOO / fc < prev    next >
Encoding:
Text File  |  1990-12-10  |  3.3 KB  |  181 lines

  1. #!/bin/sh
  2. PATH=/v/bin:/bin:/usr/bin
  3. # f77-style shell script to compile and load fortran, C, and assembly codes
  4.  
  5. #    usage:    f77 [-O] [-o absfile] [-c] files [-l library]
  6.  
  7. #        -o objfile    Override default executable name a.out.
  8.  
  9. #        -c        Do not call linker, leave relocatables in *.o.
  10.  
  11. #        -S        leave assembler output on file.s
  12.  
  13. #        -l library    (passed to ld).
  14.  
  15. #        -u        complain about undeclared variables
  16.  
  17. #        -w        omit all warning messages
  18.  
  19. #        -w66        omit Fortran 66 compatibility warning messages
  20.  
  21. #        files        FORTRAN source files ending in .f .
  22. #                C source files ending in .c .
  23. #                Assembly language files ending in .s .
  24. #                efl source files ending in .e .
  25.  
  26. #        -D def        passed to C compiler (for .c files)
  27.  
  28. #        -I includepath    passed to C compiler (for .c files)
  29.  
  30. #        -Ntnnn        allow nnn entries in table t
  31.  
  32. s=/tmp/stderr_$$
  33. t=/tmp/f77_$$.o
  34. CC=${CC_f2c:-'/v/bin/lcc -Wfdouble=8,4,1'}
  35. EFL=${EFL:-/v/bin/efl}
  36. EFLFLAGS=${EFLFLAGS:-'system=portable deltastno=10'}
  37. F2C=${F2C:-/v/bin/f2c}
  38. F2CFLAGS=${F2CFLAGS:='-ARw8'}
  39. rc=0
  40. trap "rm -f $s $t; exit \$rc" 0
  41. lib=/lib/num/lib.lo
  42. OUTF=a.out
  43. cOPT=1
  44. set -- `getopt cD:gI:N:Oo:Suw6 "$@"`
  45. case $? in 0);; *) exit 1;; esac
  46. CCFLAGS=
  47. while
  48.     test X"$1" != X--
  49. do
  50.     case "$1"
  51.     in
  52.     -c)    cOPT=0
  53.         shift
  54.         ;;
  55.  
  56.     -D)    CCFLAGS="$CCFLAGS -D$2"
  57.         shift 2
  58.         ;;
  59.  
  60.     -g)    CFLAGS="$CFLAGS -g"
  61.         shift;;
  62.  
  63.     -I)    CCFLAGS="$CCFLAGS -I$2"
  64.         shift 2
  65.         ;;
  66.  
  67.     -o)    OUTF=$2
  68.         shift 2
  69.         ;;
  70.  
  71.     -O)    case $2 in -1) O=-O1;; -2) O=-O2;; -3) O=-O3;; *) O=-O;; esac
  72.         case $O in -O);; *) shift;; esac
  73.         # lcc ignores -O...
  74.         shift
  75.         ;;
  76.  
  77.     -u)    F2CFLAGS="$F2CFLAGS -u"
  78.         shift
  79.         ;;
  80.  
  81.     -w)    F2CFLAGS="$F2CFLAGS -w"
  82.         case $2 in -6) F2CFLAGS="$F2CFLAGS"66; shift
  83.             case $2 in -6) shift;; esac;; esac
  84.         shift
  85.         ;;
  86.  
  87.     -N)    F2CFLAGS="$F2CFLAGS $1""$2"
  88.         shift 2
  89.         ;;
  90.  
  91.     -S)    CFLAGS="$CFLAGS -S"
  92.         cOPT=0
  93.         shift
  94.         ;;
  95.  
  96.     *)
  97.         echo "invalid parameter $1" 1>&2
  98.         shift
  99.         ;;
  100.     esac
  101. done
  102. shift
  103. while
  104.     test -n "$1"
  105. do
  106.     case "$1"
  107.     in
  108.     *.[fF])
  109.         case "$1" in *.f) f=".f";; *.F) f=".F";; esac
  110.         b=`basename $1 $f`
  111.         $F2C $F2CFLAGS $1
  112.         case $? in 0);; *) exit;; esac
  113.                 $CC -c $CFLAGS $b.c 2>$s
  114.         rc=$?
  115.         sed '/parameter .* is not referenced/d;/warning: too many parameters/d' $s 1>&2
  116.         case $rc in 0);; *) exit;; esac
  117.         OFILES="$OFILES $b.o"
  118.         rm $b.c
  119.         case $cOPT in 1) cOPT=2;; esac
  120.         shift
  121.         ;;
  122.     *.e)
  123.         b=`basename $1 .e`
  124.         $EFL $EFLFLAGS $1 >$b.f
  125.         case $? in 0);; *) exit;; esac
  126.         $F2C $F2CFLAGS $b.f
  127.         case $? in 0);; *) exit;; esac
  128.                 $CC -c $CFLAGS $b.c
  129.         case $? in 0);; *) exit;; esac
  130.         OFILES="$OFILES $b.o"
  131.         rm $b.[cf]
  132.         case $cOPT in 1) cOPT=2;; esac
  133.         shift
  134.         ;;
  135.     *.s)
  136.         echo $1: 1>&2
  137.         OFILE=`basename $1 .s`.o
  138.         ${AS:-/usr/bin/as} -o $OFILE $AFLAGS $1
  139.         case $? in 0);; *) exit;; esac
  140.         OFILES="$OFILES $OFILE"
  141.         case $cOPT in 1) cOPT=2;; esac
  142.         shift
  143.         ;;
  144.     *.c)
  145.         echo $1: 1>&2
  146.         OFILE=`basename $1 .c`.o
  147.                 $CC -c $CFLAGS $CCFLAGS $1
  148.         rc=$?; case $rc in 0);; *) exit;; esac
  149.         OFILES="$OFILES $OFILE"
  150.         case $cOPT in 1) cOPT=2;; esac
  151.         shift
  152.         ;;
  153.     *.o)
  154.         OFILES="$OFILES $1"
  155.         case $cOPT in 1) cOPT=2;; esac
  156.         shift
  157.         ;;
  158.     -l)
  159.         OFILES="$OFILES -l$2"
  160.         shift 2
  161.         case $cOPT in 1) cOPT=2;; esac
  162.         ;;
  163.     -l*)
  164.         OFILES="$OFILES $1"
  165.         shift
  166.         case $cOPT in 1) cOPT=2;; esac
  167.         ;;
  168.     -o)
  169.         OUTF=$2; shift 2;;
  170.     *)
  171.         OFILES="$OFILES $1"
  172.         shift
  173.         case $cOPT in 1) cOPT=2;; esac
  174.         ;;
  175.     esac
  176. done
  177.  
  178. case $cOPT in 2) $CC -o $OUTF -u MAIN__ $OFILES -lf2c -lm;; esac
  179. rc=$?
  180. exit $rc
  181.