323e131bd7
adding -mieee to CFLAGS and FFLAGS for alpha. bump rev to f2c-20001205nb5
458 lines
10 KiB
Text
458 lines
10 KiB
Text
$NetBSD: patch-ac,v 1.13 2002/01/22 16:47:23 dmcmahill Exp $
|
|
|
|
Much cleanup of the script. Added various options such as
|
|
-O for optimization
|
|
-fPIC for PIC support
|
|
-Wxxx for gcc warnings
|
|
-Wl, for additional linker arguments
|
|
-pg for profiled code
|
|
-r8 promote REAL and COMPLEX to DOUBLE REAL and DOUBLE COMPLEX
|
|
-s to strip executible
|
|
-v for verbose output
|
|
|
|
Also only pass -m* to the C compiler not f2c.
|
|
|
|
--- fc.orig Fri Jul 7 17:47:06 2000
|
|
+++ fc Tue Jan 22 11:39:39 2002
|
|
@@ -1,178 +1,262 @@
|
|
-#! /bin/sh
|
|
-
|
|
-# NOTE: you may need to adjust the references to /usr/local/... below
|
|
-# (or remove them if they're not needed on your system).
|
|
-# You may need to remove "-Olimit 2000" in the -O processing
|
|
-# below or change it to something more suitable for your system.
|
|
-# See also the comments starting with ### below.
|
|
-
|
|
-# Note that with some shells, invocations of the form
|
|
-# CFLAGS='system-specific stuff' fc ...
|
|
-# may be useful as way to pass system-specific stuff to the C compiler.
|
|
-# The script below simply appends to the initial CFLAGS value.
|
|
-
|
|
-PATH=/usr/local/bin:/bin:/usr/bin
|
|
-
|
|
+#!/bin/sh
|
|
+PATH=/bin:/usr/bin:@PREFIX@/bin
|
|
+#USAGESTART
|
|
# f77-style shell script to compile and load fortran, C, and assembly codes
|
|
-
|
|
-# usage: f77 [options] files [-l library]
|
|
-
|
|
+#
|
|
+# usage: f2c-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.
|
|
-
|
|
+#
|
|
+# -D def passed to C compiler (for .c files)
|
|
+# or to cpp (for .F files)
|
|
+#
|
|
+# -fPIC turn on the -fPIC flag to the c compiler
|
|
+#
|
|
+# -g produce debugging information.
|
|
+#
|
|
+# -I includepath passed to C compiler (for .c files)
|
|
+# or to cpp (for .F files), and to f2c
|
|
+#
|
|
+# -l library (passed to ld).
|
|
+#
|
|
+# -L includepath passed to ld. Library include path
|
|
+#
|
|
+# -m xxx passed to the C compiler as -mxxx
|
|
+#
|
|
+# -Ntnnn allow nnn entries in table t
|
|
+#
|
|
+# -o objfile Override default executable name a.out.
|
|
+#
|
|
+# -pg pass -pg (generate profile information) to the c
|
|
+# compiler.
|
|
+#
|
|
+# -O turn on the -O flag to the c compiler
|
|
+#
|
|
+# -O1 turn on the -O1 flag to the c compiler
|
|
+#
|
|
+# -O2 turn on the -O2 flag to the c compiler
|
|
+#
|
|
+# -O3 turn on the -O3 flag to the c compiler
|
|
+#
|
|
+# -P emit .P files
|
|
+#
|
|
+# -r8 promote REAL to DOUBLE PRECISION,
|
|
+# COMPLEX to DOUBLE COMPLEX
|
|
+#
|
|
+# -s Strip the symbol table from the executable file
|
|
+#
|
|
# -S leave assembler output on file.s
|
|
-
|
|
-# -L libdir (passed to ld)
|
|
-
|
|
-# -l library (passed to ld)
|
|
-
|
|
+#
|
|
# -u complain about undeclared variables
|
|
-
|
|
+#
|
|
+# -U def passed to C compiler (for .c files) or to
|
|
+# cpp (for .F files) to remove def
|
|
+#
|
|
+# -v be verbose. Output is produced on the standard
|
|
+# error output.
|
|
+#
|
|
# -w omit all warning messages
|
|
-
|
|
+#
|
|
# -w66 omit Fortran 66 compatibility warning messages
|
|
-
|
|
-# files FORTRAN source files ending in .f .
|
|
+#
|
|
+# -Wxxx turn on the -Wxxx flag to the c compiler
|
|
+#
|
|
+# -Wl, Pass options to the linker. For example,
|
|
+# -Wl,-R/usr/X11R6/lib
|
|
+# passes "-R/usr/X11R6/lib" to the linker
|
|
+#
|
|
+# files FORTRAN source files ending in .f
|
|
# FORTRAN with cpp preprocessor directives
|
|
-# ending in .F .
|
|
-# C source files ending in .c .
|
|
-# Assembly language files ending in .s .
|
|
-# efl source files ending in .e .
|
|
-# RATFOR files ending in .r .
|
|
-# Object files ending in .o .
|
|
-# Shared libraries ending in .so .
|
|
-
|
|
+# ending in .F
|
|
+# C source files ending in .c
|
|
+# Assembly language files ending in .s
|
|
+# efl source files ending in .e
|
|
+# RATFOR files ending in .r
|
|
+# Object files ending in .o
|
|
+# Shared libraries ending in .so
|
|
+#
|
|
# f2c prototype files ending in .P ; such
|
|
# files only affect subsequent files.
|
|
|
|
-# -D def passed to C compiler (for .c files)
|
|
-# or to cpp (for .F files)
|
|
-
|
|
-# -I includepath passed to C compiler (for .c files)
|
|
-# or to cpp (for .F files), and to f2c
|
|
-
|
|
-# -m xxx passed to C compiler as -mxxx
|
|
-
|
|
-# -N tnnn allow nnn entries in table t
|
|
-
|
|
-# -P emit .P files
|
|
+# if no input arguments, then spit out the help stuff from the beginning
|
|
+# of this file.
|
|
+if [ $# = 0 ]; then
|
|
+ cat $0 | awk '$1 == "#USAGESTART", $1 == ""' | tail +2 | sed 's/#//g'
|
|
+fi
|
|
|
|
-# -U def passed to C compiler (for .c files)
|
|
-# or to cpp (for .F files) to remove def
|
|
|
|
s=/tmp/stderr_$$
|
|
t=/tmp/f77_$$.o
|
|
-### On some systems (e.g., IRIX), -common prevents complaints
|
|
-### about multiple definitions of COMMON blocks.
|
|
-#CC=${CC_f2c:-'cc -common'}
|
|
-CC=${CC_f2c:-'cc'}
|
|
+CC=${CC_f2c:-'cc '}
|
|
EFL=${EFL:-efl}
|
|
EFLFLAGS=${EFLFLAGS:-'system=portable deltastno=10'}
|
|
RATFOR=${RATFOR:-ratfor}
|
|
RFLAGS=${RFLAGS:-'-6&'}
|
|
-F2C=${F2C:-/usr/local/bin/f2c}
|
|
-F2CFLAGS=${F2CFLAGS:='-ARw8 -Nn802 -Nq300 -Nx400'}
|
|
-CPP=${CPP:-/lib/cpp}
|
|
+F2C=${F2C:-@PREFIX@/bin/f2c}
|
|
+F2CFLAGS=${F2CFLAGS:='-Aw8 -Nn802 -Nx400'}
|
|
+S2DBLFLAG="-R"
|
|
+CPP=${CPP:-/usr/bin/cpp}
|
|
rc=0
|
|
trap "rm -f $s $t; exit \$rc" 0
|
|
OUTF=a.out
|
|
-OUTO=
|
|
cOPT=1
|
|
-set -- `getopt cCD:gI:L:m:N:OU:o:Suw6 "$@"`
|
|
-case $? in 0);; *) rc=$?; exit;; esac
|
|
-CPPFLAGS=${CPPFLAGS:-'-I/usr/local/include'}
|
|
-CFLAGSF2C=${CFLAGSF2C:-'-I/usr/local/include'}
|
|
-OFILES=
|
|
+ARGS=
|
|
+CPPFLAGS=
|
|
+CFLAGS=-I@PREFIX@/include
|
|
+LIBS=
|
|
+FLIBS="-Wl,-R@PREFIX@/lib -L@PREFIX@/lib -lF77 -lI77 -lm"
|
|
+VERBOSE=no
|
|
+
|
|
while
|
|
- test X"$1" != X--
|
|
+ test -n "$1"
|
|
do
|
|
case "$1"
|
|
in
|
|
- -C) F2CFLAGS="$F2CFLAGS -C"
|
|
- shift;;
|
|
-
|
|
-c) cOPT=0
|
|
shift
|
|
;;
|
|
|
|
- -D) CPPFLAGS="$CPPFLAGS -D$2"
|
|
- shift 2
|
|
- ;;
|
|
+ -C) F2CFLAGS="$F2CFLAGS -C"
|
|
+ shift;;
|
|
+
|
|
+ -D*) CPPFLAGS="$CPPFLAGS $1"
|
|
+ shift;;
|
|
+
|
|
+ -fPIC) CFLAGS="$CFLAGS $1"
|
|
+ shift;;
|
|
|
|
-g) CFLAGS="$CFLAGS -g"
|
|
F2CFLAGS="$F2CFLAGS -g"
|
|
+ G="-g"
|
|
shift;;
|
|
|
|
- -I) CPPFLAGS="$CPPFLAGS -I$2"
|
|
+ -I) CFLAGS="$CFLAGS -I$2"
|
|
+ CPPFLAGS="$CPPFLAGS -I$2"
|
|
F2CFLAGS="$F2CFLAGS -I$2"
|
|
shift 2
|
|
;;
|
|
|
|
+ -I*) CFLAGS="$CFLAGS $1"
|
|
+ CPPFLAGS="$CPPFLAGS $1"
|
|
+ F2CFLAGS="$F2CFLAGS $1"
|
|
+ shift 1
|
|
+ ;;
|
|
+
|
|
+ -l*) LIBS="$LIBS $1"
|
|
+ shift 1
|
|
+ ;;
|
|
+
|
|
+ -L*) LIBS="$LIBS $1"
|
|
+ shift 1
|
|
+ ;;
|
|
+
|
|
-m) CFLAGS="$CFLAGS -m$2"
|
|
+ CPPFLAGS="$CPPFLAGS -m$2"
|
|
shift 2
|
|
;;
|
|
|
|
- -U) CPPFLAGS="$CPPFLAGS -U$2"
|
|
+ -m*) CFLAGS="$CFLAGS $1"
|
|
+ CPPFLAGS="$CPPFLAGS $1"
|
|
+ shift 1
|
|
+ ;;
|
|
+
|
|
+ -o) OUTF=$2
|
|
shift 2
|
|
;;
|
|
|
|
- -o) OUTF=$2
|
|
- OUTO=$2
|
|
+ -N) F2CFLAGS="$F2CFLAGS $1""$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 -Olimit 2000"
|
|
+ -O|-O1|-O2|-O3)
|
|
+ CFLAGS="$CFLAGS $1"
|
|
shift
|
|
;;
|
|
|
|
- -u) F2CFLAGS="$F2CFLAGS -u"
|
|
+ -pg) CFLAGS="$CFLAGS $1"
|
|
+ shift;;
|
|
+
|
|
+ -P) F2CFLAGS="$F2CFLAGS $1"
|
|
shift
|
|
;;
|
|
|
|
- -w) F2CFLAGS="$F2CFLAGS -w"
|
|
- case $2 in -6) F2CFLAGS="$F2CFLAGS"66; shift
|
|
- case $2 in -6) shift;; esac;; esac
|
|
+ -r8) S2DBLFLAG="-r8"
|
|
shift
|
|
;;
|
|
|
|
- -L) OFILES="$OFILES $1$2"
|
|
- shift 2
|
|
- case $cOPT in 1) cOPT=2;; esac
|
|
+ -s) CFLAGS="$CFLAGS -s"
|
|
+ shift
|
|
;;
|
|
|
|
- -L*) OFILES="$OFILES $1"
|
|
+ -S) CFLAGS="$CFLAGS -S"
|
|
+ cOPT=0
|
|
shift
|
|
- case $cOPT in 1) cOPT=2;; esac
|
|
;;
|
|
|
|
- -N) F2CFLAGS="$F2CFLAGS $1""$2"
|
|
- shift 2
|
|
+ -u) F2CFLAGS="$F2CFLAGS -u"
|
|
+ shift
|
|
;;
|
|
|
|
- -P) F2CFLAGS="$F2CFLAGS $1"
|
|
+ -U*) CPPFLAGS="$CPPFLAGS $1"
|
|
+ shift;;
|
|
+
|
|
+ -v) VERBOSE=yes
|
|
shift
|
|
;;
|
|
|
|
+ -w) F2CFLAGS="$F2CFLAGS -w"
|
|
+ shift
|
|
+ ;;
|
|
|
|
- -S) CFLAGS="$CFLAGS -S"
|
|
- cOPT=0
|
|
+ -w66) F2CFLAGS="$F2CFLAGS -w66"
|
|
shift
|
|
;;
|
|
|
|
+ -Wl*) CFLAGS="$CFLAGS $1"
|
|
+ shift
|
|
+ ;;
|
|
+
|
|
+ -W*) CFLAGS="$CFLAGS $1"
|
|
+ shift
|
|
+ ;;
|
|
+
|
|
+ -*) echo "ERROR: $1 is not a valid option"
|
|
+ exit 1
|
|
+ ;;
|
|
+
|
|
*)
|
|
- echo "invalid parameter $1" 1>&2
|
|
+ ARGS="$ARGS $1"
|
|
shift
|
|
;;
|
|
esac
|
|
done
|
|
-shift
|
|
-case $cOPT in 0) case $OUTO in '');; *) CFLAGS="$CFLAGS -o $OUTO";; esac;; esac
|
|
+
|
|
+if test $cOPT = 0; then
|
|
+ if test "$OUTF" != "a.out"; then
|
|
+ CFLAGS="$CFLAGS -o $OUTF"
|
|
+ fi
|
|
+fi
|
|
+
|
|
+# set the flag that controls if REAL's are promoted to
|
|
+# DOUBLE PRECISION or not
|
|
+F2CFLAGS="$F2CFLAGS $S2DBLFLAGS"
|
|
+
|
|
+set -- $ARGS
|
|
+
|
|
+if test $VERBOSE = "yes"; then
|
|
+ F2CVER=`$F2C < /dev/null | awk '/.*version/ {print $6" "$7}'`
|
|
+ echo "f2c-f77:"
|
|
+ echo "F2C= $F2C, $F2CVER"
|
|
+ echo "CC= $CC"
|
|
+ echo "CFLAGS= $CFLAGS"
|
|
+ echo "CPPFLAGS= $CPPFLAGS"
|
|
+ echo "FLIBS= $FLIBS"
|
|
+ echo "LD_RUN_PATH= @PREFIX@/lib"
|
|
+fi
|
|
+
|
|
while
|
|
test -n "$1"
|
|
@@ -184,4 +268,7 @@
|
|
case "$1" in
|
|
*.f) b=`basename $1 .f`
|
|
+ if test $VERBOSE = "yes"; then
|
|
+ echo "$F2C $F2CFLAGS $1"
|
|
+ fi
|
|
$F2C $F2CFLAGS $1
|
|
rc=$?
|
|
@@ -191,4 +278,7 @@
|
|
rc=$?
|
|
case $rc in 0)
|
|
+ if test $VERBOSE="yes"; then
|
|
+ echo "$F2C $F2CFLAGS <$b.i >$b.c"
|
|
+ fi
|
|
$F2C $F2CFLAGS <$b.i >$b.c
|
|
rc=$?
|
|
@@ -198,5 +288,5 @@
|
|
esac
|
|
case $rc in 0);; *) exit;; esac
|
|
- $CC -c $CFLAGSF2C $CFLAGS $b.c 2>$s
|
|
+ $CC -c $CFLAGS $b.c 2>$s
|
|
rc=$?
|
|
sed '/parameter .* is not referenced/d;/warning: too many parameters/d' $s 1>&2
|
|
@@ -213,5 +303,5 @@
|
|
$F2C $F2CFLAGS $b.f
|
|
case $? in 0);; *) rc=$?; exit;; esac
|
|
- $CC -c $CFLAGSF2C $CFLAGS $b.c
|
|
+ $CC -c $CFLAGS $b.c
|
|
case $? in 0);; *) rc=$?; exit;; esac
|
|
OFILES="$OFILES $b.o"
|
|
@@ -226,5 +316,5 @@
|
|
$F2C $F2CFLAGS $b.f
|
|
case $? in 0);; *) rc=$?; exit;; esac
|
|
- $CC -c $CFLAGSF2C $CFLAGS $b.c
|
|
+ $CC -c $CFLAGS $b.c
|
|
case $? in 0);; *) rc=$?; exit;; esac
|
|
OFILES="$OFILES $b.o"
|
|
@@ -245,5 +335,5 @@
|
|
echo $1: 1>&2
|
|
OFILE=`basename $1 .c`.o
|
|
- $CC -c $CFLAGSF2C $CPPFLAGS $CFLAGS $1
|
|
+ $CC -c $CPPFLAGS $CFLAGS $1
|
|
rc=$?; case $rc in 0);; *) rc=$?; exit;; esac
|
|
OFILES="$OFILES $OFILE"
|
|
@@ -261,10 +351,10 @@
|
|
shift
|
|
;;
|
|
- -[lL])
|
|
- OFILES="$OFILES $1$2"
|
|
+ -l)
|
|
+ OFILES="$OFILES -l$2"
|
|
shift 2
|
|
case $cOPT in 1) cOPT=2;; esac
|
|
;;
|
|
- -[lL]*)
|
|
+ -l*)
|
|
OFILES="$OFILES $1"
|
|
shift
|
|
@@ -272,6 +362,5 @@
|
|
;;
|
|
-o)
|
|
- case $cOPT in 0) CFLAGS="$CFLAGS -o $2";; *) OUTF=$2;; esac
|
|
- shift 2;;
|
|
+ OUTF=$2; shift 2;;
|
|
*.P)
|
|
F2CFLAGS="$F2CFLAGS $1"
|
|
@@ -286,9 +375,11 @@
|
|
done
|
|
|
|
-### On some (IRIX) systems, -Wl,-dont_warn_unused prevents complaints
|
|
-### about unnecessary -l options.
|
|
+case $cOPT
|
|
+in
|
|
+ 2) $CC $CFLAGS -o $OUTF -u _MAIN__ $OFILES $LIBS $FLIBS
|
|
+ ;;
|
|
+esac
|
|
|
|
-#case $cOPT in 2) $CC -Wl,-dont_warn_unused -o $OUTF -u MAIN__ -L/usr/local/lib $OFILES -lf2c -lm;; esac
|
|
-case $cOPT in 2) $CC -o $OUTF -u MAIN__ -L/usr/local/lib $OFILES -lf2c -lm;; esac
|
|
rc=$?
|
|
exit $rc
|
|
+
|