|
|
1.1 root 1: #!/bin/sh
2: PATH=/v/bin:/bin:/usr/bin
3: # f77 - Unix script to compile and load fortran (C, Pascal, 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: # -m produce a load map (objfile.map).
12:
13: # -S leave assembler output on file.s
14:
15: # -l library (passed to ld).
16:
17: # files FORTRAN source files ending in .f .
18: # C source files ending in .c .
19: # Assembly language files ending in .s .
20: # efl source files ending in .e .
21:
22: F77=/usr/dmg/F77/libF77.a
23: I77=/usr/dmg/I77/libI77.a
24: s=/tmp/stderr_$$
25: t=/tmp/f77_$$.o
26: CC=${CC_f2c:-/v/bin/lcc}
27: EFL=${EFL:-/usr/dmg/bin/Efl}
28: EFLFLAGS=${EFLFLAGS:-'system=portable deltastno=10'}
29: F2C=${F2C:-/usr/dmg/bin/f2c}
30: F2CFLAGS=${F2CFLAGS:=-AR}
31: rc=0
32: trap "rm -f $s $t; exit \$rc" 0
33: lib=/lib/num/lib.lo
34: OUTF=a.out
35: cOPT=1
36: set -- `getopt cgmL:N:Oo:pQ:Sw123 "$@"`
37: case $? in 0);; *) exit 1;; esac
38: while
39: test X"$1" != X--
40: do
41: case "$1"
42: in
43: -c)
44: cOPT=0
45: shift
46: ;;
47: -g)
48: CFLAGS="$CFLAGS -g"
49: shift;;
50: -o)
51: OUTF=$2
52: shift 2
53: ;;
54:
55: -O) case $2 in -1) O=-O1;; -2) O=-O2;; -3) O=-O3;; *) O=-O;; esac
56: case $O in -O);; *) shift;; esac
57: # lcc ignores -O...
58: shift
59: ;;
60:
61: -w)
62: F2CFLAGS="$F2CFLAGS -w"
63: shift;
64: ;;
65:
66: -N) F2CFLAGS="$F2CFLAGS $1""$2"
67: shift 2
68: ;;
69:
70: -S)
71: CFLAGS="$CFLAGS -S"
72: cOPT=0
73: shift
74: ;;
75:
76: -[123])
77: echo "invalid parameter $1" 1>&2
78: shift
79: ;;
80: *)
81: echo "invalid parameter $1" 1>&2
82: shift
83: ;;
84: esac
85: done
86: shift
87: while
88: test -n "$1"
89: do
90: case "$1"
91: in
92: *.f)
93: b=`basename $1 .f`
94: $F2C $F2CFLAGS $1
95: case $? in 0);; *) exit;; esac
96: $CC -c $CFLAGS $b.c
97: case $? in 0);; *) exit;; esac
98: OFILES="$OFILES $b.o"
99: rm $b.c
100: case $cOPT in 1) cOPT=2;; esac
101: shift
102: ;;
103: *.e)
104: b=`basename $1 .e`
105: $EFL $EFLFLAGS $1 >$b.f
106: case $? in 0);; *) exit;; esac
107: $F2C $F2CFLAGS $b.f
108: case $? in 0);; *) exit;; esac
109: $CC -c $CFLAGS $b.c
110: case $? in 0);; *) exit;; esac
111: OFILES="$OFILES $b.o"
112: rm $b.[ce]
113: case $cOPT in 1) cOPT=2;; esac
114: shift
115: ;;
116: *.s)
117: echo $1: 1>&2
118: OFILE=`basename $1 .s`.o
119: ${AS:-/bin/as} -o $OFILE $AFLAGS $1
120: case $? in 0);; *) exit;; esac
121: OFILES="$OFILES $OFILE"
122: case $cOPT in 1) cOPT=2;; esac
123: shift
124: ;;
125: *.c)
126: echo $1: 1>&2
127: OFILE=`basename $1 .c`.o
128: $CC -c $CFLAGS $1
129: rc=$?; case $rc in 0);; *) exit;; esac
130: OFILES="$OFILES $OFILE"
131: case $cOPT in 1) cOPT=2;; esac
132: shift
133: ;;
134: *.o)
135: OFILES="$OFILES $1"
136: case $cOPT in 1) cOPT=2;; esac
137: shift
138: ;;
139: -l)
140: OFILES="$OFILES -l$2"
141: shift 2
142: case $cOPT in 1) cOPT=2;; esac
143: ;;
144: -l*)
145: OFILES="$OFILES $1"
146: shift
147: case $cOPT in 1) cOPT=2;; esac
148: ;;
149: -o)
150: OUTF=$2; shift 2;;
151: *)
152: OFILES="$OFILES $1"
153: shift
154: ;;
155: esac
156: done
157:
158: case $cOPT in 2) $CC -o $OUTF -u MAIN__ $OFILES $F77 $I77 -lm -lc;; esac
159: rc=$?
160: exit $rc
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.