aboutsummaryrefslogtreecommitdiff
path: root/gcc/ch/chill.in
blob: 62b73d5f961b660a3145b06c9d8fb33ef7a7c281 (plain)
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#!/bin/sh
# Compile GNU Chill programs.
: || exec /bin/sh -f $0 $argv:q

# The compiler name might be different when doing cross-compilation
# (this should be configured)
gcc_name=gcc
whatgcc=gcc
speclang=-xnone
startfile=chillrt0
gnuchill_script_flags=
gnuchill_version=unknown
extraflags=

# 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 libchill.
library="-lchill"
libpath=chillrt
numargs=$#

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 -lchill.
	library=
	libpath=
	startfile=
	;;
      -B*)
	gcc=`echo $arg | sed -e "s/^-B//"`$gcc_name
	;;
      -[bBVDUoeTuIYmLiA] | -Tdata | -Xlinker)
	# 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=
	libpath=
	startfile=
	;;
      -x*)
	speclang=$arg
	;;
      -v)
	# catch `chill -v'
	if [ $numargs = 1 ] ; then
	  library=
	  libpath=
	  startfile=
	fi
	echo "GNUCHILL version $gnuchill_version"
	;;
      -fgrant-only | -fchill-grant-only)
        #inhibit production of an object file
        extraflags="-S -o /dev/null"
	library=
	libpath=
	startfile=
        ;;
      -*)
	# 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 "$@" -xchill "'$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

# The '-ansi' flag prevents cpp from changing this:
#  NEWMODE x = SET (sun, mon, thu, wed, thu, fri, sat);
#to this:
#  NEWMODE x = SET (1, mon, thu, wed, thu, fri, sat);
#which is a CHILL syntax error.
eval $whatgcc -ansi $gnuchill_script_flags $startfile "$@" $libpath $library $extraflags