#!/bin/bash
#
# This script generates the required files for supporting the debug
# channels used throught the code.
# The generated files are 
#   include/debugdefs.h
#   include/debug.h
# The script must be run in the root directory of the project.
#
# Dimitrie O. Paun <dimi@cs.toronto.edu>
#
DEBUG_H="include/debug.h"
DEBUG_DEFS_H="include/debugdefs.h"

DEBUG_CHANNELS="$( tools/find_debug_channels )"
DEBUG_CLASSES="fixme err warn trace"

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

#ifndef __WINE_DEBUGTOOLS_H
#include "debugtools.h"
#endif

EOF
    echo "/* Definitions for channels identifiers */"

    chno=0
    for ch in $DEBUG_CHANNELS
    do
	echo "#define dbch_${ch} $chno"
	let chno=$chno+1
    done

    echo "/* Definitions for classes identifiers */"
    clno=0
    for cl in $DEBUG_CLASSES
    do
	echo "#define dbcl_${cl} $clno"
	let clno=$clno+1
    done
} > $DEBUG_H

# Now, on the last step, we proceed to construct
# the definitions to be used by the main function.
# These will be stored in include/debugdefs.h
{
    cat <<EOF
/* Do not modify this file -- it is automatically generated! */

#ifndef __WINE_DEBUGTOOLS_H
#include "debugtools.h"
#endif

#define DEBUG_CHANNEL_COUNT $chno
#ifdef DEBUG_RUNTIME
short debug_msg_enabled[][DEBUG_CLASS_COUNT] = {
EOF

    for ch in $DEBUG_CHANNELS
    do
	echo "{1, 1, 0, 0},"
    done
    echo '};'

    echo 'const char* debug_ch_name[] = {'
    for ch in $DEBUG_CHANNELS
    do
	echo "\"${ch}\","
    done
    echo '};'
    
    echo 'const char* debug_cl_name[] = {'
    for ch in $DEBUG_CLASSES
    do
	echo "\"${ch}\","
    done
    echo '};'

    cat <<EOF

#endif /*DEBUG_RUNTIME*/

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

} > $DEBUG_DEFS_H