| #!/bin/sh |
| # |
| # GCC compatible C compiler based on Sparse LLVM |
| |
| set +e |
| |
| SPARSEOPTS="" |
| DIRNAME=`dirname $0` |
| |
| NEED_LINK=1 |
| |
| if [ $# -eq 0 ]; then |
| echo "`basename $0`: no input files" |
| exit 1 |
| fi |
| |
| while [ $# -gt 0 ]; do |
| case $1 in |
| '-o') |
| OUTFILE=$2 |
| shift |
| ;; |
| '-c') |
| NEED_LINK=0 |
| ;; |
| *) |
| SPARSEOPTS="$SPARSEOPTS $1 " ;; |
| esac |
| shift |
| done |
| |
| TMPFILE=`mktemp -t tmp.XXXXXX` |
| |
| |
| LLC=`"${LLVM_CONFIG:-llvm-config}" --bindir`/llc |
| |
| LLC_ARCH_OPTS= |
| case "$(uname -s)" in |
| *CYGWIN*) |
| # cygwin uses the sjlj (setjmp-longjmp) exception model |
| LLC_ARCH_OPTS="-exception-model=sjlj" |
| ;; |
| *) |
| ;; |
| esac |
| |
| $DIRNAME/sparse-llvm $SPARSEOPTS | $LLC ${LLC_ARCH_OPTS} | as -o $TMPFILE |
| |
| if [ $NEED_LINK -eq 1 ]; then |
| if [ -z $OUTFILE ]; then |
| OUTFILE=a.out |
| fi |
| gcc $TMPFILE -o $OUTFILE |
| rm -f $TMPFILE |
| else |
| if [ -z $OUTFILE ]; then |
| echo "`basename $0`: no output file" |
| exit 1 |
| fi |
| mv $TMPFILE $OUTFILE |
| fi |