expressions: make assign_expression() take an op argument
[smatch.git] / smatch_scripts / build_generic_data.sh
blob27ad013bf55bd68d7059cdda9b3f1e02bc28db52
1 #!/bin/bash
3 # This is a generic script to parse --info output. For the kernel, don't use
4 # this script, use build_kernel_data.sh instead.
6 NR_CPU=$(cat /proc/cpuinfo | grep ^processor | wc -l)
7 SCRIPT_DIR=$(dirname $0)
8 DATA_DIR=smatch_data
9 PROJECT=smatch_generic
10 TARGET=""
12 function usage {
13 echo
14 echo "Usage: $0"
15 echo "Updates the smatch_data/ directory and builds the smatch database"
16 echo " -p <project> (default = $PROJECT)"
17 echo
18 exit 1
21 while true ; do
22 if [[ "$1" == "--target" ]] ; then
23 shift
24 TARGET="$1"
25 shift
26 elif [ "$1" == "-p" ] || [ "$1" == "--project" ] ; then
27 shift
28 PROJECT="$1"
29 shift
30 elif [ "$1" == "--help" ] || [ "$1" = "-h" ] ; then
31 usage
32 else
33 break
35 done
37 if [ -e $SCRIPT_DIR/../smatch ] ; then
38 BIN_DIR=$SCRIPT_DIR/../
39 else
40 echo "This script should be located in the smatch_scripts/ subdirectory of the smatch source."
41 exit 1
44 # If someone is building the database for the first time then make sure all the
45 # required packages are installed
46 if [ ! -e smatch_db.sqlite ] ; then
47 [ -e smatch_warns.txt ] || touch smatch_warns.txt
48 if ! $SCRIPT_DIR/../smatch_data/db/create_db.sh -p=$PROJECT smatch_warns.txt ; then
49 echo "Hm... Not working. Make sure you have all the sqlite3 packages"
50 echo "And the sqlite3 libraries for Perl and Python"
51 exit 1
55 make -j${NR_CPU} CHECK="$BIN_DIR/smatch --call-tree --info --param-mapper --spammy --file-output" $TARGET
57 find -name \*.c.smatch -exec cat \{\} \; -exec rm \{\} \; > smatch_warns.txt
59 for i in $SCRIPT_DIR/gen_* ; do
60 $i smatch_warns.txt -p=${PROJECT}
61 done
63 mkdir -p $DATA_DIR
64 mv $PROJECT.* $DATA_DIR
66 $SCRIPT_DIR/../smatch_data/db/create_db.sh -p=$PROJECT smatch_warns.txt