1#!/bin/sh 2# 3# GCC compatible C compiler based on Sparse LLVM 4 5set +e 6 7SPARSEOPTS="" 8DIRNAME=`dirname $0` 9 10NEED_LINK=1 11 12if [ $# -eq 0 ]; then 13 echo "`basename $0`: no input files" 14 exit 1 15fi 16 17while [ $# -gt 0 ]; do 18 case $1 in 19 '-o') 20 OUTFILE=$2 21 shift 22 ;; 23 '-c') 24 NEED_LINK=0 25 ;; 26 *) 27 SPARSEOPTS="$SPARSEOPTS $1 " ;; 28 esac 29 shift 30done 31 32TMPLLVM=`mktemp -t tmp.XXXXXX`".llvm" 33TMPFILE=`mktemp -t tmp.XXXXXX`".o" 34 35$DIRNAME/sparse-llvm $SPARSEOPTS > $TMPLLVM 36 37LLC=`"${LLVM_CONFIG:-llvm-config}" --bindir`/llc 38 39$LLC -o - $TMPLLVM | as -o $TMPFILE 40 41if [ $NEED_LINK -eq 1 ]; then 42 if [ -z $OUTFILE ]; then 43 OUTFILE=a.out 44 fi 45 gcc $TMPFILE -o $OUTFILE 46else 47 if [ -z $OUTFILE ]; then 48 echo "`basename $0`: no output file" 49 exit 1 50 fi 51 mv $TMPFILE $OUTFILE 52fi 53 54rm -f $TMPLLVM 55