|
|
1.1 ! root 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 [-g] [-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 -Nn802'} ! 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:O:o: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: CCFLAGS="$CCFLAGS -g" ! 62: F2CFLAGS="$F2CFLAGS -g" ! 63: shift;; ! 64: ! 65: -I) CCFLAGS="$CCFLAGS -I$2" ! 66: shift 2 ! 67: ;; ! 68: ! 69: -o) OUTF=$2 ! 70: shift 2 ! 71: ;; ! 72: ! 73: -O) case $2 in -1) O=-O1;; -2) O=-O2;; -3) O=-O3;; *) O=-O;; esac ! 74: case $O in -O);; *) shift;; esac ! 75: # lcc ignores -O... ! 76: shift ! 77: ;; ! 78: ! 79: -u) F2CFLAGS="$F2CFLAGS -u" ! 80: shift ! 81: ;; ! 82: ! 83: -w) F2CFLAGS="$F2CFLAGS -w" ! 84: case $2 in -6) F2CFLAGS="$F2CFLAGS"66; shift ! 85: case $2 in -6) shift;; esac;; esac ! 86: shift ! 87: ;; ! 88: ! 89: -N) F2CFLAGS="$F2CFLAGS $1""$2" ! 90: shift 2 ! 91: ;; ! 92: ! 93: -S) CFLAGS="$CFLAGS -S" ! 94: cOPT=0 ! 95: shift ! 96: ;; ! 97: ! 98: *) ! 99: echo "invalid parameter $1" 1>&2 ! 100: shift ! 101: ;; ! 102: esac ! 103: done ! 104: shift ! 105: while ! 106: test -n "$1" ! 107: do ! 108: case "$1" ! 109: in ! 110: *.[fF]) ! 111: case "$1" in *.f) f=".f";; *.F) f=".F";; esac ! 112: b=`basename $1 $f` ! 113: $F2C $F2CFLAGS $1 ! 114: case $? in 0);; *) exit;; esac ! 115: $CC -c $CFLAGS $b.c 2>$s ! 116: rc=$? ! 117: sed '/parameter .* is not referenced/d;/warning: too many parameters/d' $s 1>&2 ! 118: case $rc in 0);; *) exit;; esac ! 119: OFILES="$OFILES $b.o" ! 120: rm $b.c ! 121: case $cOPT in 1) cOPT=2;; esac ! 122: shift ! 123: ;; ! 124: *.e) ! 125: b=`basename $1 .e` ! 126: $EFL $EFLFLAGS $1 >$b.f ! 127: case $? in 0);; *) exit;; esac ! 128: $F2C $F2CFLAGS $b.f ! 129: case $? in 0);; *) exit;; esac ! 130: $CC -c $CFLAGS $b.c ! 131: case $? in 0);; *) exit;; esac ! 132: OFILES="$OFILES $b.o" ! 133: rm $b.[cf] ! 134: case $cOPT in 1) cOPT=2;; esac ! 135: shift ! 136: ;; ! 137: *.s) ! 138: echo $1: 1>&2 ! 139: OFILE=`basename $1 .s`.o ! 140: ${AS:-/usr/bin/as} -o $OFILE $AFLAGS $1 ! 141: case $? in 0);; *) exit;; esac ! 142: OFILES="$OFILES $OFILE" ! 143: case $cOPT in 1) cOPT=2;; esac ! 144: shift ! 145: ;; ! 146: *.c) ! 147: echo $1: 1>&2 ! 148: OFILE=`basename $1 .c`.o ! 149: $CC -c $CFLAGS $CCFLAGS $1 ! 150: rc=$?; case $rc in 0);; *) exit;; esac ! 151: OFILES="$OFILES $OFILE" ! 152: case $cOPT in 1) cOPT=2;; esac ! 153: shift ! 154: ;; ! 155: *.o) ! 156: OFILES="$OFILES $1" ! 157: case $cOPT in 1) cOPT=2;; esac ! 158: shift ! 159: ;; ! 160: -l) ! 161: OFILES="$OFILES -l$2" ! 162: shift 2 ! 163: case $cOPT in 1) cOPT=2;; esac ! 164: ;; ! 165: -l*) ! 166: OFILES="$OFILES $1" ! 167: shift ! 168: case $cOPT in 1) cOPT=2;; esac ! 169: ;; ! 170: -o) ! 171: OUTF=$2; shift 2;; ! 172: *) ! 173: OFILES="$OFILES $1" ! 174: shift ! 175: case $cOPT in 1) cOPT=2;; esac ! 176: ;; ! 177: esac ! 178: done ! 179: ! 180: case $cOPT in 2) $CC -o $OUTF -u MAIN__ $OFILES -lf2c -lm;; esac ! 181: rc=$? ! 182: exit $rc
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.