mirror of
https://git.FreeBSD.org/ports.git
synced 2024-11-04 22:33:27 +00:00
51e78bed9c
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>
175 lines
4.6 KiB
Bash
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
|