| #!/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 |