#!/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

#ifdef DEBUG_RUNTIME

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

EOF

chno=0
for ch in $DEBUG_CHANNELS
do
    echo "const int dbch_$ch = $chno;"
    chno=`expr $chno + 1`
done
echo
echo "#define DEBUG_CHANNEL_COUNT $chno"

count=1
echo
echo 'char __debug_msg_enabled[DEBUG_CHANNEL_COUNT][DEBUG_CLASS_COUNT] = {'
for ch in $DEBUG_CHANNELS
do
    if [ "${count}" != "${chno}" ]; then
	echo "{1, 1, 0, 0},"
    else
	echo "{1, 1, 0, 0}"
    fi
    count=`expr $count + 1`
done
echo '};'

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

cat <<EOF

#endif /*DEBUG_RUNTIME*/

/* end of automatically generated debug.h */
EOF
