Sweden-Number/tools/make_debug

165 lines
2.5 KiB
Bash
Executable File

#!/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_ */*.c | 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