1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-11-04 22:33:27 +00:00
freebsd-ports/cad/pisces/files/fc1
Ade Lovett 51e78bed9c Add PISCES, a two-dimensional device simulator which includes
models for surface mobility, impact ionization and photo-generation.
Quasi-three-dimensional simulation of cylindrically-symmetric devices is
also supported.

PR:		14686
Submitted by:	Gianlorenzo Masini <masini@uniroma3.it>
2000-05-03 14:59:53 +00:00

175 lines
4.6 KiB
Bash

#!/bin/sh
# This fc1 script invoke f2c and pass the output to cc
# it includes the undocumented -Nn option of f2c
# adapted from the netlib distribution 'fc' by G. Masini 04-18-00
#
# f77-style shell script to compile and load fortran, C, and assembly codes
# usage: f77 [options] files [-l library]
# Options:
# -o objfile Override default executable name a.out.
# -c Do not call linker, leave relocatables in *.o.
# -C Check that subscripts are in bounds.
# -S leave assembler output on file.s
# -L libdir (passed to ld)
# -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 .
# Object files ending in .o .
# f2c prototype files ending in .P ; such
# files only affect subsequent files.
# -D def passed to C compiler (for .f files)
# -I includepath passed to C compiler (for .c files)
# and to f2c
# -Ntnnn allow nnn entries in table t
# -P emit .P files
# -U def passed to C compiler (for .c files)
# to remove def
s=/tmp/stderr_$$
t=/tmp/f77_$$.o
CC=${CC_f2c:-'cc'}
F2C=${F2C:-/usr/local/bin/f2c}
F2CFLAGS=${F2CFLAGS:='-ARw8 -Nn802 -Nq300 -Nx400'}
rc=0
trap "rm -f $s $t; exit \$rc" 0
OUTF=a.out
OUTO=
cOPT=1
set -- `getopt cCD:gI:L:N:OU:o:Suw6 "$@"`
case $? in 0);; *) rc=$?; exit;; esac
CFLAGSF2C=${CFLAGSF2C:-'-I/usr/local/include'}
OFILES=
while
test X"$1" != X--
do
case "$1"
in
-C) F2CFLAGS="$F2CFLAGS -C"
shift;;
-c) cOPT=0
shift
;;
-D) CFLAGS="$CFLAGS -D$2"
shift 2
;;
-g) CFLAGS="$CFLAGS -g"
F2CFLAGS="$F2CFLAGS -g"
shift;;
-I) F2CFLAGS="$F2CFLAGS -I$2"
shift 2
;;
-o) OUTF=$2
OUTO=$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
CFLAGS="$CFLAGS $O -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
;;
-L) OFILES="$OFILES $1$2"
shift 2
case $cOPT in 1) cOPT=2;; esac
;;
-L*) OFILES="$OFILES $1"
shift
case $cOPT in 1) cOPT=2;; esac
;;
-N) F2CFLAGS="$F2CFLAGS $1""$2"
shift 2
;;
-P) F2CFLAGS="$F2CFLAGS $1"
shift
;;
-S) CFLAGS="$CFLAGS -S"
cOPT=0
shift
;;
*)
echo "invalid parameter $1" 1>&2
shift
;;
esac
done
shift
case $cOPT in 0) case $OUTO in '');; *) CFLAGS="$CFLAGS -o $OUTO";; esac;; esac
while
test -n "$1"
do
case "$1"
in
*.[f])
f=".f"
b=`basename $1 .f`
$F2C $F2CFLAGS $1
rc=$?
case $rc in 0);; *) exit;; esac
$CC -c $CFLAGSF2C $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
;;
-o)
case $cOPT in 0) CFLAGS="$CFLAGS -o $2";; *) OUTF=$2;; esac
shift 2;;
*)
OFILES="$OFILES $1"
shift
case $cOPT in 1) cOPT=2;; esac
;;
esac
done
case $cOPT in 2) $CC -o $OUTF -u MAIN__ -L/usr/local/lib $OFILES -lf2c -lm;; esac
rc=$?
exit $rc