123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- #!/bin/sh
- PATH=/v/bin:/bin:/usr/bin
- # f77-style shell script to compile and load fortran, C, and assembly codes
- # usage: f77 [-O] [-o absfile] [-c] files [-l library]
- # -o objfile Override default executable name a.out.
- # -c Do not call linker, leave relocatables in *.o.
- # -S leave assembler output on file.s
- # -l library (passed to ld).
- # -u complain about undeclared variables
- # -w omit all warning messages
- # -w66 omit Fortran 66 compatibility warning messages
- # files FORTRAN source files ending in .f .
- # C source files ending in .c .
- # Assembly language files ending in .s .
- # efl source files ending in .e .
- # -D def passed to C compiler (for .c files)
- # -I includepath passed to C compiler (for .c files)
- # -Ntnnn allow nnn entries in table t
- s=/tmp/stderr_$$
- t=/tmp/f77_$$.o
- CC=${CC_f2c:-'/v/bin/lcc -Wfdouble=8,4,1'}
- EFL=${EFL:-/v/bin/efl}
- EFLFLAGS=${EFLFLAGS:-'system=portable deltastno=10'}
- F2C=${F2C:-/v/bin/f2c}
- F2CFLAGS=${F2CFLAGS:='-ARw8'}
- rc=0
- trap "rm -f $s $t; exit \$rc" 0
- lib=/lib/num/lib.lo
- OUTF=a.out
- cOPT=1
- set -- `getopt cD:gI:N:Oo:Suw6 "$@"`
- case $? in 0);; *) exit 1;; esac
- CCFLAGS=
- while
- test X"$1" != X--
- do
- case "$1"
- in
- -c) cOPT=0
- shift
- ;;
- -D) CCFLAGS="$CCFLAGS -D$2"
- shift 2
- ;;
- -g) CFLAGS="$CFLAGS -g"
- shift;;
- -I) CCFLAGS="$CCFLAGS -I$2"
- shift 2
- ;;
- -o) OUTF=$2
- shift 2
- ;;
- -O) case $2 in -1) O=-O1;; -2) O=-O2;; -3) O=-O3;; *) O=-O;; esac
- case $O in -O);; *) shift;; esac
- # lcc ignores -O...
- shift
- ;;
- -u) F2CFLAGS="$F2CFLAGS -u"
- shift
- ;;
- -w) F2CFLAGS="$F2CFLAGS -w"
- case $2 in -6) F2CFLAGS="$F2CFLAGS"66; shift
- case $2 in -6) shift;; esac;; esac
- shift
- ;;
- -N) F2CFLAGS="$F2CFLAGS $1""$2"
- shift 2
- ;;
- -S) CFLAGS="$CFLAGS -S"
- cOPT=0
- shift
- ;;
- *)
- echo "invalid parameter $1" 1>&2
- shift
- ;;
- esac
- done
- shift
- while
- test -n "$1"
- do
- case "$1"
- in
- *.[fF])
- case "$1" in *.f) f=".f";; *.F) f=".F";; esac
- b=`basename $1 $f`
- $F2C $F2CFLAGS $1
- case $? in 0);; *) exit;; esac
- $CC -c $CFLAGS $b.c 2>$s
- rc=$?
- sed '/parameter .* is not referenced/d;/warning: too many parameters/d' $s 1>&2
- case $rc in 0);; *) exit;; esac
- OFILES="$OFILES $b.o"
- rm $b.c
- case $cOPT in 1) cOPT=2;; esac
- shift
- ;;
- *.e)
- b=`basename $1 .e`
- $EFL $EFLFLAGS $1 >$b.f
- case $? in 0);; *) exit;; esac
- $F2C $F2CFLAGS $b.f
- case $? in 0);; *) exit;; esac
- $CC -c $CFLAGS $b.c
- case $? in 0);; *) exit;; esac
- OFILES="$OFILES $b.o"
- rm $b.[cf]
- case $cOPT in 1) cOPT=2;; esac
- shift
- ;;
- *.s)
- echo $1: 1>&2
- OFILE=`basename $1 .s`.o
- ${AS:-/usr/bin/as} -o $OFILE $AFLAGS $1
- case $? in 0);; *) exit;; esac
- OFILES="$OFILES $OFILE"
- case $cOPT in 1) cOPT=2;; esac
- shift
- ;;
- *.c)
- echo $1: 1>&2
- OFILE=`basename $1 .c`.o
- $CC -c $CFLAGS $CCFLAGS $1
- rc=$?; case $rc in 0);; *) exit;; esac
- OFILES="$OFILES $OFILE"
- case $cOPT in 1) cOPT=2;; esac
- shift
- ;;
- *.o)
- OFILES="$OFILES $1"
- case $cOPT in 1) cOPT=2;; esac
- shift
- ;;
- -l)
- OFILES="$OFILES -l$2"
- shift 2
- case $cOPT in 1) cOPT=2;; esac
- ;;
- -l*)
- OFILES="$OFILES $1"
- shift
- case $cOPT in 1) cOPT=2;; esac
- ;;
- -o)
- OUTF=$2; shift 2;;
- *)
- OFILES="$OFILES $1"
- shift
- case $cOPT in 1) cOPT=2;; esac
- ;;
- esac
- done
- case $cOPT in 2) $CC -o $OUTF -u MAIN__ $OFILES -lf2c -lm;; esac
- rc=$?
- exit $rc
|