aboutsummaryrefslogtreecommitdiff
path: root/gnu/usr.bin/cc25/usr.bin.f77/f77.script
blob: f218a03d9625a298cc4c5eff390adb4cefb449d4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#!/bin/sh
# Compile Fortran code, adding -lf2c.
# This is a slightly modified g++ script.

: || exec /bin/sh -f $0 $argv:q

# The compiler name might be different when doing cross-compilation
# (this should be configured)
gcc_name=gcc
speclang=-xnone

# replace the command name by the name of the new command
progname=`basename $0`
case "$0" in
  */*)
    gcc=`echo $0 | sed -e "s;/[^/]*$;;"`/$gcc_name
    ;;
  *)
    gcc=$gcc_name
    ;;
esac

# $first is yes for first arg, no afterwards.
first=yes
# If next arg is the argument of an option, $quote is non-empty.
# More precisely, it is the option that wants an argument.
quote=
# $library is made empty to disable use of libf2c.
#library=-lF77 -lI77 -lm
library="-lf2c -lm"
numargs=$#

# ash requires the newline before `do'.
for arg
do
  if [ $first = yes ]
  then
    # Need some 1st arg to `set' which does not begin with `-'.
    # We get rid of it after the loop ends.
    set gcc
    first=no
  fi
  # If you have to ask what this does, you should not edit this file. :-)
  # The ``S'' at the start is so that echo -nostdinc does not eat the
  # -nostdinc.
  arg=`echo "S$arg" | sed "s/^S//; s/'/'\\\\\\\\''/g"`
  if [ x$quote != x ]
  then
    quote=
  else
    quote=
    case $arg in
      -nostdlib)
	# Inhibit linking with -lf2c.
	library=
	;;
      -lm | -lmath)
 	# Because libf2c uses things from the math library, make sure it
	# always comes before the math library.  We recognize both -lm
	# and -lmath, since on some systems (e.g. m88k SVR3), it
	# doesn't call it libm.a for some reason.
	#set "$@" $library
	#library=""
	;;
      -[bBVDUoeTuIYmLiA] | -Tdata)
	# these switches take following word as argument,
	# so don't treat it as a file name.
	quote=$arg
	;;
      -[cSEM] | -MM)
	# Don't specify libraries if we won't link,
	# since that would cause a warning.
	library=
	;;
      -x*)
	speclang=$arg
	;;
      -v)
	# catch `f77 -v'
	if [ $numargs = 1 ] ; then library="" ; fi
	;;
      -*)
	# Pass other options through; they don't need -x and aren't inputs.
	;;
      *)
	# If file ends in .i, put options around it.
	# But not if a specified -x option is currently active.
	case "$speclang $arg" in -xnone\ *.i)
	  set "$@" -xf2c "'$arg'" -xnone
	  continue
	esac
	;;
    esac
  fi
  set "$@" "'$arg'"
done

# Get rid of that initial 1st arg
if [ $first = no ]; then
  shift
else
  echo "$0: No input files specified."
  exit 1
fi

if [ x$quote != x ]
then
  echo "$0: argument to \`$quote' missing"
  exit 1
fi

eval $gcc "$@" $library