1#!/bin/bash 2 3function usage { 4 echo "Usage: $0 [--sparse][--valgrind][--debug] path/to/file.c" 5 exit 1 6} 7 8SCRIPT_DIR=$(dirname $0) 9if [ -e $SCRIPT_DIR/../smatch ] ; then 10 CMD=$SCRIPT_DIR/../smatch 11elif which smatch | grep smatch > /dev/null ; then 12 CMD=smatch 13else 14 echo "Smatch binary not found." 15 exit 1 16fi 17 18POST="" 19WINE_ARGS="-p=wine --full-path -D__i386__" 20 21while true ; do 22 if [[ "$1" == "--sparse" ]] ; then 23 CMD="sparse" 24 shift 25 elif [[ "$1" == "--valgrind" ]] ; then 26 PRE="valgrind" 27 shift 28 elif [[ "$1" == "" ]] ; then 29 break 30 else 31 if [[ "$1" == "--help" ]] ; then 32 $CMD --help 33 exit 1 34 fi 35 if echo $1 | grep -q ^- ; then 36 POST="$POST $1" 37 else 38 break 39 fi 40 shift 41 fi 42done 43 44cname=$1 45cname=$(echo ${cname/.o/.c}) 46if [[ "$cname" == "" ]] ; then 47 usege 48fi 49if ! test -e $cname ; then 50 usege 51fi 52 53oname=$(echo ${cname/.c/.o}) 54if ! echo $oname | grep .o$ > /dev/null ; then 55 usege 56fi 57rm -f $oname 58 59cur=$(pwd) 60file_dir=$(dirname $oname) 61o_short_name=$(basename $oname) 62cd $file_dir 63make CC="$PRE $CMD $POST $WINE_ARGS" $o_short_name 64make $o_short_name 65cd $cur 66