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