Added
This commit is contained in:
180
lang/fortran/fc
Normal file
180
lang/fortran/fc
Normal file
@@ -0,0 +1,180 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user