#!/bin/sh
#
# This script scans the whole source code for symbols of the form dprintf_xxx,
# generates the necessary macro definitions and puts them into the files
# include/stddebug.h and include/debug.h . This script must be started with 
# cwd = rootdir of the Wine-distribution.
#
# Michael Patra  <micky@marie.physik.tu-berlin.de>
#
DEBUG_H=include/debug.h
STDDEBUG_H=include/stddebug.h

mv $DEBUG_H $DEBUG_H.old
mv $STDDEBUG_H $STDDEBUG_H.old

# Build the list of debug identifiers
grep -h dprintf_ `find . -name '*.c' -print` | \
    sed 's/.*dprintf_\([A-Za-z0-9_]*\).*/\1/g' | sort | uniq > temp.$$

# Build debug.h

sed '/^\/\* Do not remove this line or change anything below this line \*\//q'\
      <$DEBUG_H.old >$DEBUG_H
cat <<++EOF++ >> $DEBUG_H

#ifdef DEBUG_NONE_EXT
++EOF++

cat temp.$$ | tr a-z A-Z |
{
while read x
do
	echo "#undef DEBUG_$x" >> $DEBUG_H
done
}

cat <<++EOF++ >>$DEBUG_H
#endif

#ifdef DEBUG_ALL_EXT
++EOF++

cat temp.$$ | tr a-z A-Z |
{
while read x
do
	echo "#define DEBUG_$x" >> $DEBUG_H
done
}

cat <<++EOF++ >>$DEBUG_H
#endif

#ifdef DEBUG_RUNTIME
#ifdef DEBUG_DEFINE_VARIABLES
short debug_msg_enabled[]={
++EOF++

cat temp.$$ | tr a-z A-Z |
{
while read x
do
	cat <<++EOF++ >>$DEBUG_H
#ifdef DEBUG_$x
    1,
#else
    0,
#endif
++EOF++

done
}

cat <<++EOF++ >>$DEBUG_H
    0
};
#else
extern short debug_msg_enabled[];
#endif
#endif

++EOF++

i=0
cat temp.$$ |
{
while read x 
do
	y=`echo $x | tr a-z A-Z`
	cat <<++EOF++ >>$DEBUG_H
#ifdef DEBUG_RUNTIME
#define dprintf_$x if(!debug_msg_enabled[$i]) ; else fprintf
#define debugging_$x debug_msg_enabled[$i]
#else
#ifdef DEBUG_$y
#define dprintf_$x fprintf
#define debugging_$x 1
#else
#define dprintf_$x while(0) fprintf
#define debugging_$x 0
#endif
#endif

++EOF++
	let i=$i+1
done
}

cat <<++EOF++ >>$DEBUG_H

#ifdef DEBUG_RUNTIME
#ifdef DEBUG_DEFINE_VARIABLES
static char *debug_msg_name[] = {
++EOF++

cat temp.$$ | 
{
while read x
do
	echo "    \"$x\"," >> $DEBUG_H
done
}

cat <<++EOF++ >>$DEBUG_H
    ""
};
#endif
#endif
++EOF++

# Build stddebug.h

sed '/^\/\* Do not remove this line or change anything below this line \*\//q'\
      <$STDDEBUG_H.old >$STDDEBUG_H

cat <<++EOF++ >>$STDDEBUG_H

#ifdef DEBUG_NONE
++EOF++

cat temp.$$ | tr a-z A-Z |
{
while read x
do
	echo "#undef DEBUG_$x" >> $STDDEBUG_H
done
}

cat <<++EOF++ >>$STDDEBUG_H
#endif

#ifdef DEBUG_ALL
++EOF++

cat temp.$$ | tr a-z A-Z |
{
while read x
do
	echo "#define DEBUG_$x" >> $STDDEBUG_H
done
}
echo "#endif" >> $STDDEBUG_H

rm temp.$$ $DEBUG_H.old $STDDEBUG_H.old
