$NetBSD: patch-ac,v 1.4 1999/01/14 13:56:04 frueauf Exp $

Much cleanup of the script.  Added various options such as
-O for optimization
-fPIC for PIC support
-Wall for gcc warnings
-Wl,  for additional linker arguments

--- fc.orig	Tue May 16 17:37:49 1995
+++ fc	Tue Jan 12 20:31:32 1999
@@ -1,26 +1,54 @@
 #!/bin/sh
-PATH=/v/bin:/bin:/usr/bin
+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]
-
+#
 #	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
-
+#
+#		-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
+#
+#		-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
+#
+#		-Ntnnn		allow nnn entries in table t
+#
+#		-o objfile	Override default executable name a.out.
+#
+#		-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
+#
+#		-S		leave assembler output on file.s
+#
 #		-u		complain about undeclared variables
-
+#
 #		-w		omit all warning messages
-
+#
 #		-w66		omit Fortran 66 compatibility warning messages
-
+#
+#		-Wall		turn on the -Wall 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
@@ -30,21 +58,18 @@
 #				efl source files ending in .e .
 #				RATFOR files ending in .r .
-
+#
 #				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
+# 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
 
-#		-Ntnnn		allow nnn entries in table t
-
-#		-P		emit .P files
 
 s=/tmp/stderr_$$
 t=/tmp/f77_$$.o
-CC=${CC_f2c:-'cc -common'}
+CC=${CC_f2c:-'cc '}
 EFL=${EFL:-efl}
 EFLFLAGS=${EFLFLAGS:-'system=portable deltastno=10'}
@@ -58,25 +83,29 @@
 OUTF=a.out
 cOPT=1
-set -- `getopt cCD:gI:N:Oo:Suw6 "$@"`
-case $? in 0);; *) rc=$?; exit;; esac
+ARGS=
 CPPFLAGS=
+CFLAGS=-IPREFIX/include 
+LIBS=
 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;;
 
@@ -86,11 +115,37 @@
 		;;
 
+        -I*)    CFLAGS="$CFLAGS $1"
+                shift 1
+                ;;
+
+        -l*)    LIBS="$LIBS $1"
+                shift 1
+                ;;
+
+        -L*)    LIBS="$LIBS $1"
+                shift 1
+                ;;
+
 	-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
-		CFLAGS="$CFLAGS $O"
+#	-N)	F2CFLAGS="$F2CFLAGS $1""$2"
+#		shift 2
+#		;;
+# can't seem to find out what -N is supposed to do.
+
+	-O|-O1|-O2|-O3)	
+		CFLAGS="$CFLAGS $1"
+		shift
+		;;
+
+	-P)	F2CFLAGS="$F2CFLAGS $1"
+		shift
+		;;
+
+
+	-S)	CFLAGS="$CFLAGS -S"
+		cOPT=0
 		shift
 		;;
@@ -101,30 +156,38 @@
 
 	-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
+	-w66)	F2CFLAGS="$F2CFLAGS -w66"
+		shift
 		;;
 
-	-P)	F2CFLAGS="$F2CFLAGS $1"
+	-Wall)	CFLAGS="$CFLAGS -Wall"
 		shift
 		;;
 
-
-	-S)	CFLAGS="$CFLAGS -S"
-		cOPT=0
+	-Wl*)	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
+
+if test $cOPT = 0; then
+  if test "$OUTF" != "a.out"; then
+    CFLAGS="$CFLAGS -o $OUTF"
+  fi
+fi
+set -- $ARGS
+
+
 while
 	test -n "$1"
@@ -232,5 +295,20 @@
 done
 
-case $cOPT in 2) $CC -o $OUTF -u MAIN__ $OFILES -lf2c -lm;; esac
+case $cOPT 
+in 
+  2) $CC $CFLAGS -o $OUTF -u _MAIN__ $OFILES $LIBS -LPREFIX/lib -lf2c -lm
+     ;; 
+esac
+
 rc=$?
 exit $rc
+
+
+
+
+
+
+
+
+
+
