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