<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
  <META NAME="GENERATOR" CONTENT="GtkHTML/3.26.0">
</HEAD>
<BODY>
On Wed, 2010-04-21 at 11:22 +1000, Peter Hutterer wrote:
<BLOCKQUOTE TYPE=CITE>
<PRE>
On Tue, Apr 20, 2010 at 08:32:46PM -0400, Gaetan Nadon wrote:
&gt; Provides a common configure option for all x.org modules.
&gt; Script friendly for turning on debug in several modules.
&gt; Integrates easily into existing modules debug code.
&gt; For both source code and makefiles
&gt; Configurable on/off default setting.
&gt; 
&gt; Signed-off-by: Gaetan Nadon &lt;<A HREF="mailto:memsize@videotron.ca">memsize@videotron.ca</A>&gt;
&gt; ---
&gt;  xorg-macros.m4.in |   32 ++++++++++++++++++++++++++++++++
&gt;  1 files changed, 32 insertions(+), 0 deletions(-)
&gt; 
&gt; diff --git a/xorg-macros.m4.in b/xorg-macros.m4.in
&gt; index 66c8e98..112db89 100644
&gt; --- a/xorg-macros.m4.in
&gt; +++ b/xorg-macros.m4.in
&gt; @@ -1029,3 +1029,35 @@ test -e \&quot;\$\$OUTFILE\&quot; || echo \&quot;\$\$OUTSTR\&quot; &gt; \&quot;\$\$OUTFILE\&quot;; \
&gt;  CONTENT=\`cat \$\$OUTFILE\` &amp;&amp; test \&quot;\$\$CONTENT\&quot; = \&quot;\$\$OUTSTR\&quot; || echo \$\$OUTSTR &gt; \$\$OUTFILE;&quot;
&gt;  AC_SUBST([GIT_MODULE_VERSION_CMD])
&gt;  ]) # XORG_GIT_MODULE_VERSION
&gt; +
&gt; +# XORG_ENABLE_DEBUG (enable_debug=no)
&gt; +# -----------------------------------
&gt; +# Minimum version: 1.8.0
&gt; +#
&gt; +# This macro defines a C preprocessor macro and a makefile conditional
&gt; +# to compile code for debugging purpose. (Not related to compiler options)
&gt; +#
&gt; +# Interface to module:
&gt; +# HAVE_DEBUG:          used in makefiles to conditionally build targets
&gt; +#                  used in source code to conditionally debug code
&gt; +# --enable-debug: 'yes' user instructs the module to compile debug code
&gt; +#                 'no' user instructs the module not to compile debug code
&gt; +# parm1:        specify the default value, yes or no.
&gt; +#
&gt; +AC_DEFUN([XORG_ENABLE_DEBUG],[
&gt; +default=$1
&gt; +if test &quot;x$default&quot; = x ; then
&gt; +  default=&quot;no&quot;
&gt; +fi
&gt; +AC_ARG_ENABLE([debug],
&gt; +        AS_HELP_STRING([--enable-debug],
&gt; +           [Enable debugging code (default: no)]),
&gt; +           [enable_debug=$enableval], [enable_debug=$default])
&gt; +
&gt; +if test x$enable_debug = xyes; then
&gt; +    AC_DEFINE([HAVE_DEBUG], [1], [Enable debugging code])
&gt; +fi
&gt; +AM_CONDITIONAL([HAVE_DEBUG], [test x$enable_debug = xyes])
&gt; +AC_MSG_CHECKING([whether to enable debug code])
&gt; +AC_MSG_RESULT([$enable_debug])
&gt; +]) # XORG_ENABLE_DEBUG
&gt; -- 
&gt; 1.6.0.4

&gt; There are 4 modules with --enable-debug configure option but many more modules (44) do
&gt; have something like #define DEBUG with a wide variety of names. One has to dig in the code
&gt; to figure out how each module does it.
&gt; 
&gt; This macro will give the opportunity for modules to have a common configure option where
&gt; debug can be turned on without having to read all the code and to change it.
&gt; 
&gt; It was tempting to use DEBUG as the #define name, but there were already conflicts.

can you specify what those conflicts were? 
</PRE>
</BLOCKQUOTE>
<BLOCKQUOTE>
<PRE>
Existing definitions in various drivers
#define DEBUG(str,param1) (void)screen
#define DEBUG(x) 
#define DEBUG
#undef DEBUG
</PRE>
</BLOCKQUOTE>
<BR>
<BLOCKQUOTE TYPE=CITE>
<PRE>
the use of ifdef DEBUG is quite common and having it turned on/off by a
configure option isn't really a conflict if the package didn't do it before.
</PRE>
</BLOCKQUOTE>
No conflict from a configure.ac perspective.
<BLOCKQUOTE TYPE=CITE>
<PRE>
I'd even argue that this macro should go into the XORG_DEFAULT_OPTIONS.
</PRE>
</BLOCKQUOTE>
Sure. 
<BLOCKQUOTE TYPE=CITE>
<PRE>

&gt; I checked HAVE_DEBUG was not already used so it's easy to wrap whatever #define is there
&gt; without changing much code.
</PRE>
</BLOCKQUOTE>
Except for the 4 modules having a configure options, others edit the c file to turn debug on.<BR>
<BR>
For example, aiptek has:
<BLOCKQUOTE>
<PRE>
#define DEBUG 1
#if DEBUG
#&nbsp;&nbsp; define&nbsp;&nbsp;&nbsp;&nbsp; DBG(lvl, f)&nbsp;&nbsp;&nbsp;&nbsp; {if ((lvl) &lt;= debug_level) f;}
#else
#&nbsp;&nbsp; define&nbsp;&nbsp;&nbsp;&nbsp; DBG(lvl, f)
#endif
</PRE>
</BLOCKQUOTE>
which can be changed to:
<BLOCKQUOTE>
<PRE>
#ifdef HAVE_DEBUG
#define DEBUG 1
#endif
#if DEBUG
#&nbsp;&nbsp; define&nbsp;&nbsp;&nbsp;&nbsp; DBG(lvl, f)&nbsp;&nbsp;&nbsp;&nbsp; {if ((lvl) &lt;= debug_level) f;}
#else
#&nbsp;&nbsp; define&nbsp;&nbsp;&nbsp;&nbsp; DBG(lvl, f)
#endif
</PRE>
</BLOCKQUOTE>
which does not change the rest of the code and prevents conversion errors. <BR>
<BR>
<BLOCKQUOTE TYPE=CITE>
<PRE>

Cheers,
  Peter

</PRE>
</BLOCKQUOTE>
</BODY>
</HTML>