11f5207b7SJohn Levon#!/bin/bash
21f5207b7SJohn Levon
31f5207b7SJohn Levonif echo $1 | grep -q '^-p' ; then
41f5207b7SJohn Levon    PROJ=$(echo $1 | cut -d = -f 2)
51f5207b7SJohn Levon    shift
61f5207b7SJohn Levonfi
71f5207b7SJohn Levon
81f5207b7SJohn Levoninfo_file=$1
91f5207b7SJohn Levon
101f5207b7SJohn Levonif [[ "$info_file" = "" ]] ; then
111f5207b7SJohn Levon    echo "Usage:  $0 -p=<project> <file with smatch messages>"
121f5207b7SJohn Levon    exit 1
131f5207b7SJohn Levonfi
141f5207b7SJohn Levon
151f5207b7SJohn Levonbin_dir=$(dirname $0)
161f5207b7SJohn Levondb_file=smatch_db.sqlite.new
171f5207b7SJohn Levon
181f5207b7SJohn Levonrm -f $db_file
191f5207b7SJohn Levon
201f5207b7SJohn Levonfor i in ${bin_dir}/*.schema ; do
211f5207b7SJohn Levon    cat $i | sqlite3 $db_file
221f5207b7SJohn Levondone
231f5207b7SJohn Levon
241f5207b7SJohn Levon${bin_dir}/init_constraints.pl "$PROJ" $info_file $db_file
251f5207b7SJohn Levon${bin_dir}/init_constraints_required.pl "$PROJ" $info_file $db_file
261f5207b7SJohn Levon${bin_dir}/fill_db_sql.pl "$PROJ" $info_file $db_file
271f5207b7SJohn Levonif [ -e ${info_file}.sql ] ; then
281f5207b7SJohn Levon    ${bin_dir}/fill_db_sql.pl "$PROJ" ${info_file}.sql $db_file
291f5207b7SJohn Levonfi
301f5207b7SJohn Levon${bin_dir}/fill_db_caller_info.pl "$PROJ" $info_file $db_file
311f5207b7SJohn Levonif [ -e ${info_file}.caller_info ] ; then
321f5207b7SJohn Levon    ${bin_dir}/fill_db_caller_info.pl "$PROJ" ${info_file}.caller_info $db_file
331f5207b7SJohn Levonfi
341f5207b7SJohn Levon${bin_dir}/build_early_index.sh $db_file
351f5207b7SJohn Levon
361f5207b7SJohn Levon${bin_dir}/fill_db_type_value.pl "$PROJ" $info_file $db_file
371f5207b7SJohn Levon${bin_dir}/fill_db_type_size.pl "$PROJ" $info_file $db_file
381f5207b7SJohn Levon${bin_dir}/copy_required_constraints.pl "$PROJ" $info_file $db_file
391f5207b7SJohn Levon${bin_dir}/build_late_index.sh $db_file
401f5207b7SJohn Levon
411f5207b7SJohn Levon${bin_dir}/fixup_all.sh $db_file
421f5207b7SJohn Levonif [ "$PROJ" != "" ] ; then
431f5207b7SJohn Levon    ${bin_dir}/fixup_${PROJ}.sh $db_file
441f5207b7SJohn Levonfi
451f5207b7SJohn Levon
46c85f09ccSJohn Levon${bin_dir}/copy_function_pointers.pl $db_file
471f5207b7SJohn Levon${bin_dir}/remove_mixed_up_pointer_params.pl $db_file
48efe51d0cSJohn Levon${bin_dir}/delete_too_common_fn_ptr.sh $db_file
491f5207b7SJohn Levon${bin_dir}/mark_function_ptrs_searchable.pl $db_file
501f5207b7SJohn Levon
511f5207b7SJohn Levon# delete duplicate entrees and speed things up
521f5207b7SJohn Levonecho "delete from function_ptr where rowid not in (select min(rowid) from function_ptr group by file, function, ptr, searchable);" | sqlite3 $db_file
531f5207b7SJohn Levon
54efe51d0cSJohn Levon${bin_dir}/apply_return_fixes.sh -p=${PROJ} $db_file
55*6523a3aaSJohn Levonif [ "$PROJ" != "" ] ; then
56*6523a3aaSJohn Levon    ${bin_dir}/insert_manual_states.pl ${PROJ} $db_file
57*6523a3aaSJohn Levonfi
581f5207b7SJohn Levon
591f5207b7SJohn Levonmv $db_file smatch_db.sqlite
60