11f5207b7SJohn Levon#!/bin/sh 21f5207b7SJohn Levon# 31f5207b7SJohn Levon# GCC compatible C compiler based on Sparse LLVM 41f5207b7SJohn Levon 51f5207b7SJohn Levonset +e 61f5207b7SJohn Levon 71f5207b7SJohn LevonSPARSEOPTS="" 81f5207b7SJohn LevonDIRNAME=`dirname $0` 91f5207b7SJohn Levon 101f5207b7SJohn LevonNEED_LINK=1 111f5207b7SJohn Levon 121f5207b7SJohn Levonif [ $# -eq 0 ]; then 131f5207b7SJohn Levon echo "`basename $0`: no input files" 141f5207b7SJohn Levon exit 1 151f5207b7SJohn Levonfi 161f5207b7SJohn Levon 171f5207b7SJohn Levonwhile [ $# -gt 0 ]; do 181f5207b7SJohn Levon case $1 in 191f5207b7SJohn Levon '-o') 201f5207b7SJohn Levon OUTFILE=$2 211f5207b7SJohn Levon shift 221f5207b7SJohn Levon ;; 231f5207b7SJohn Levon '-c') 241f5207b7SJohn Levon NEED_LINK=0 251f5207b7SJohn Levon ;; 261f5207b7SJohn Levon *) 271f5207b7SJohn Levon SPARSEOPTS="$SPARSEOPTS $1 " ;; 281f5207b7SJohn Levon esac 291f5207b7SJohn Levon shift 301f5207b7SJohn Levondone 311f5207b7SJohn Levon 32*c85f09ccSJohn LevonTMPFILE=`mktemp -t tmp.XXXXXX` 331f5207b7SJohn Levon 341f5207b7SJohn Levon 351f5207b7SJohn LevonLLC=`"${LLVM_CONFIG:-llvm-config}" --bindir`/llc 361f5207b7SJohn Levon 37*c85f09ccSJohn LevonLLC_ARCH_OPTS= 38*c85f09ccSJohn Levoncase "$(uname -s)" in 39*c85f09ccSJohn Levon*CYGWIN*) 40*c85f09ccSJohn Levon # cygwin uses the sjlj (setjmp-longjmp) exception model 41*c85f09ccSJohn Levon LLC_ARCH_OPTS="-exception-model=sjlj" 42*c85f09ccSJohn Levon ;; 43*c85f09ccSJohn Levon*) 44*c85f09ccSJohn Levon ;; 45*c85f09ccSJohn Levonesac 46*c85f09ccSJohn Levon 47*c85f09ccSJohn Levon$DIRNAME/sparse-llvm $SPARSEOPTS | $LLC ${LLC_ARCH_OPTS} | as -o $TMPFILE 481f5207b7SJohn Levon 491f5207b7SJohn Levonif [ $NEED_LINK -eq 1 ]; then 501f5207b7SJohn Levon if [ -z $OUTFILE ]; then 511f5207b7SJohn Levon OUTFILE=a.out 521f5207b7SJohn Levon fi 531f5207b7SJohn Levon gcc $TMPFILE -o $OUTFILE 54*c85f09ccSJohn Levon rm -f $TMPFILE 551f5207b7SJohn Levonelse 561f5207b7SJohn Levon if [ -z $OUTFILE ]; then 571f5207b7SJohn Levon echo "`basename $0`: no output file" 581f5207b7SJohn Levon exit 1 591f5207b7SJohn Levon fi 601f5207b7SJohn Levon mv $TMPFILE $OUTFILE 611f5207b7SJohn Levonfi 62