11f5207b7SJohn Levon#!/bin/bash
21f5207b7SJohn Levon
31f5207b7SJohn LevonPROJECT=kernel
41f5207b7SJohn Levon
51f5207b7SJohn Levonfunction usage {
61f5207b7SJohn Levon    echo
71f5207b7SJohn Levon    echo "Usage:  $0"
81f5207b7SJohn Levon    echo "Updates the smatch_data/ directory and builds the smatch database"
91f5207b7SJohn Levon    echo
101f5207b7SJohn Levon    exit 1
111f5207b7SJohn Levon}
121f5207b7SJohn Levon
131f5207b7SJohn Levonif [ "$1" = "-h" ] || [ "$1" = "--help" ] ; then
141f5207b7SJohn Levon	usage;
151f5207b7SJohn Levonfi
161f5207b7SJohn Levon
171f5207b7SJohn LevonSCRIPT_DIR=$(dirname $0)
181f5207b7SJohn Levonif [ -e $SCRIPT_DIR/../smatch -a -d kernel -a -d fs ] ; then
191f5207b7SJohn Levon    CMD=$SCRIPT_DIR/../smatch
201f5207b7SJohn Levon    DATA_DIR=$SCRIPT_DIR/../smatch_data
211f5207b7SJohn Levonelse
221f5207b7SJohn Levon    echo "This script should be located in the smatch_scripts/ subdirectory of the smatch source."
231f5207b7SJohn Levon    echo "It should be run from the root of a kernel source tree."
241f5207b7SJohn Levon    exit 1
251f5207b7SJohn Levonfi
261f5207b7SJohn Levon
271f5207b7SJohn Levon# If someone is building the database for the first time then make sure all the
281f5207b7SJohn Levon# required packages are installed
291f5207b7SJohn Levonif [ ! -e smatch_db.sqlite ] ; then
301f5207b7SJohn Levon    [ -e smatch_warns.txt ] || touch smatch_warns.txt
311f5207b7SJohn Levon    if ! $DATA_DIR/db/create_db.sh -p=kernel smatch_warns.txt ; then
321f5207b7SJohn Levon        echo "Hm... Not working.  Make sure you have all the sqlite3 packages"
331f5207b7SJohn Levon        echo "And the sqlite3 libraries for Perl and Python"
341f5207b7SJohn Levon        exit 1
351f5207b7SJohn Levon    fi
361f5207b7SJohn Levonfi
371f5207b7SJohn Levon
38efe51d0cSJohn LevonBUILD_STATUS=0
395a0e240fSJohn Levon$SCRIPT_DIR/test_kernel.sh --call-tree --info --spammy --data=$DATA_DIR || BUILD_STATUS=$?
40*6523a3aaSJohn Levonecho "smatch_warns.txt built."
411f5207b7SJohn Levon
421f5207b7SJohn Levonfor i in $SCRIPT_DIR/gen_* ; do
431f5207b7SJohn Levon	$i smatch_warns.txt -p=kernel
441f5207b7SJohn Levondone
451f5207b7SJohn Levon
461f5207b7SJohn Levonmv ${PROJECT}.* $DATA_DIR
471f5207b7SJohn Levon
481f5207b7SJohn Levon$DATA_DIR/db/create_db.sh -p=kernel smatch_warns.txt
491f5207b7SJohn Levon
50efe51d0cSJohn Levonexit $BUILD_STATUS
51