xref: /illumos-gate/usr/src/tools/smatch/src/sparsec (revision cadd68ea0014761eda6a293664086dfa80686d85)
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