#!/bin/bash

function usage {
    echo "Usage:  $(basename $0) [--sparse][--valgrind][--debug] path/to/file.c"
    exit 1
}

SCRIPT_DIR=$(dirname $0)
if [ -e $SCRIPT_DIR/../smatch ] ; then
    CMD=$SCRIPT_DIR/../smatch
elif which smatch | grep smatch > /dev/null ; then
    CMD=smatch
else
    echo "Smatch binary not found."
    exit 1
fi

POST=""
WINE_ARGS="-p=wine --full-path -D__i386__"

while true ; do
    if [[ "$1" == "--sparse" ]] ; then
	CMD="sparse"
	shift
    elif [[ "$1" == "--valgrind" ]] ; then
	PRE="valgrind"
	shift
    elif [[ "$1" == "" ]] ; then
	break
    else
	if [[ "$1" == "--help" ]] ; then
		$CMD --help
		exit 1
	fi
	if echo $1 | grep -q ^- ; then
		POST="$POST $1"
	else
		break
	fi
	shift
    fi
done

cname=$1
cname=$(echo ${cname/.o/.c})
if [[ "$cname" == "" ]] ; then
    usege
fi
if ! test -e $cname ; then
    usege
fi

oname=$(echo ${cname/.c/.o})
if ! echo $oname | grep .o$ > /dev/null ; then
    usege
fi
rm -f $oname

cur=$(pwd)
file_dir=$(dirname $oname)
o_short_name=$(basename $oname)
cd $file_dir
make CC="$PRE $CMD $POST $WINE_ARGS" $o_short_name
make $o_short_name
cd $cur
