#!/bin/sh
#
# This script generates the required file for supporting the debug
# channels used throught the code.
# The generated file is
#   include/debugdefs.h
# The script must be run in the root directory of the project.
#
# Dimitrie O. Paun <dimi@cs.toronto.edu>
# Patrik Stridvall <ps@leissner.se>
#

DEBUG_CHANNELS=`tools/find_debug_channels`

exec > include/debugdefs.h

cat <<EOF
/* Do not modify this file -- it is automatically generated! */

#include "debugtools.h"

#define DEBUG_CLASS_COUNT __DBCL_COUNT

static const char * const debug_cl_name[] = { "fixme", "err", "warn", "trace" };

EOF

chno=0
for ch in $DEBUG_CHANNELS
do
    echo "char dbch_$ch[] = \"\\003$ch\";"
    chno=`expr $chno + 1`
done
echo
echo "#define DEBUG_CHANNEL_COUNT $chno"

count=1
echo
echo 'static char * const debug_channels[DEBUG_CHANNEL_COUNT] = {'
for ch in $DEBUG_CHANNELS
do
    if [ "${count}" != "${chno}" ]; then
	echo "    dbch_${ch},"
    else
	echo "    dbch_${ch}"
    fi
    count=`expr $count + 1`
done
echo '};'

for cls in err fixme warn trace
do
    cat <<EOF

int dbg_header_$cls( const char *dbg_channel, const char *func )
{
    return dbg_printf( "$cls:%s:%s ", dbg_channel + 1, func );
}
EOF
done
