Paul Burba wrote:
> On Mon, Nov 23, 2009 at 11:42 AM, Branko Čibej <br...@xbc.nu> wrote:
>   
>> Paul Burba wrote:
>>     
>>> On Mon, Nov 23, 2009 at 10:00 AM, Branko Čibej <br...@xbc.nu> wrote:
>>>
>>>       
>>>> Paul Burba wrote:
>>>>
>>>>         
>>>>> On Sun, Nov 22, 2009 at 9:49 PM, Arfrever Frehtes Taifersar Arahesis
>>>>> <arfrever....@gmail.com> wrote:
>>>>>
>>>>>
>>>>>           
>>>>>> 2009-11-19 16:41:43 Paul Burba napisał(a):
>>>>>>
>>>>>>
>>>>>>             
>>>>>>> On Mon, Nov 16, 2009 at 2:16 PM, Paul Burba <ptbu...@gmail.com> wrote:
>>>>>>>
>>>>>>>
>>>>>>>               
>>>>>>>> On Sat, Nov 14, 2009 at 2:42 PM, Arfrever Frehtes Taifersar Arahesis
>>>>>>>> <arfrever....@gmail.com> wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>                 
>>>>>>>>> Author: arfrever
>>>>>>>>> Date: Sat Nov 14 11:42:26 2009
>>>>>>>>> New Revision: 40510
>>>>>>>>>
>>>>>>>>> Log:
>>>>>>>>> Move inclusion of svn_debug.h from svn_types.h to 
>>>>>>>>> svn_private_config.h.
>>>>>>>>>
>>>>>>>>> * subversion/include/svn_types.h: Don't include "private/svn_debug.h".
>>>>>>>>>
>>>>>>>>> * configure.ac: Include "private/svn_debug.h" in generated 
>>>>>>>>> svn_private_config.h.in
>>>>>>>>>   file.
>>>>>>>>>
>>>>>>>>> * subversion/svn_private_config.hw: Include "private/svn_debug.h".
>>>>>>>>>
>>>>>>>>> Review by: gstein
>>>>>>>>>
>>>>>>>>> Modified:
>>>>>>>>>   trunk/configure.ac
>>>>>>>>>   trunk/subversion/include/svn_types.h
>>>>>>>>>   trunk/subversion/svn_private_config.hw
>>>>>>>>>
>>>>>>>>> Modified: trunk/configure.ac
>>>>>>>>> URL: 
>>>>>>>>> http://svn.collab.net/viewvc/svn/trunk/configure.ac?pathrev=40510&r1=40509&r2=40510
>>>>>>>>> ==============================================================================
>>>>>>>>> --- trunk/configure.ac  Sat Nov 14 00:02:24 2009        (r40509)
>>>>>>>>> +++ trunk/configure.ac  Sat Nov 14 11:42:26 2009        (r40510)
>>>>>>>>> @@ -615,7 +615,15 @@ if test "$enable_nls" = "yes"; then
>>>>>>>>>   fi
>>>>>>>>>  fi
>>>>>>>>>
>>>>>>>>> -AH_BOTTOM(
>>>>>>>>> +AH_BOTTOM([/*
>>>>>>>>> + * Subversion developers may want to use some additional debugging 
>>>>>>>>> facilities
>>>>>>>>> + * while working on the code. We'll pull that in here, so individual 
>>>>>>>>> source
>>>>>>>>> + * files don't have to include this header manually.
>>>>>>>>> + */
>>>>>>>>> +#ifdef SVN_DEBUG
>>>>>>>>> +#include "private/svn_debug.h"
>>>>>>>>> +#endif
>>>>>>>>> +
>>>>>>>>>  #define N_(x) x
>>>>>>>>>  #define U_(x) x
>>>>>>>>>  #ifdef ENABLE_NLS
>>>>>>>>> @@ -629,7 +637,7 @@ AH_BOTTOM(
>>>>>>>>>  #define gettext(x) (x)
>>>>>>>>>  #define dgettext(domain, x) (x)
>>>>>>>>>  #endif
>>>>>>>>> -)
>>>>>>>>> +])
>>>>>>>>>
>>>>>>>>>  dnl Used to simulate makefile conditionals.
>>>>>>>>>  GETTEXT_CODESET=\#
>>>>>>>>>
>>>>>>>>> Modified: trunk/subversion/include/svn_types.h
>>>>>>>>> URL: 
>>>>>>>>> http://svn.collab.net/viewvc/svn/trunk/subversion/include/svn_types.h?pathrev=40510&r1=40509&r2=40510
>>>>>>>>> ==============================================================================
>>>>>>>>> --- trunk/subversion/include/svn_types.h        Sat Nov 14 00:02:24 
>>>>>>>>> 2009        (r40509)
>>>>>>>>> +++ trunk/subversion/include/svn_types.h        Sat Nov 14 11:42:26 
>>>>>>>>> 2009        (r40510)
>>>>>>>>> @@ -1144,14 +1144,4 @@ typedef unsigned long svn_linenum_t;
>>>>>>>>>  #include "svn_error.h"
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> -/*
>>>>>>>>> - * Subversion developers may want to use some additional debugging 
>>>>>>>>> facilities
>>>>>>>>> - * while working on the code. We'll pull that in here, so individual 
>>>>>>>>> source
>>>>>>>>> - * files don't have to include this header manually.
>>>>>>>>> - */
>>>>>>>>> -#ifdef SVN_DEBUG
>>>>>>>>> -#include "private/svn_debug.h"
>>>>>>>>> -#endif
>>>>>>>>> -
>>>>>>>>> -
>>>>>>>>>  #endif /* SVN_TYPES_H */
>>>>>>>>>
>>>>>>>>> Modified: trunk/subversion/svn_private_config.hw
>>>>>>>>> URL: 
>>>>>>>>> http://svn.collab.net/viewvc/svn/trunk/subversion/svn_private_config.hw?pathrev=40510&r1=40509&r2=40510
>>>>>>>>> ==============================================================================
>>>>>>>>> --- trunk/subversion/svn_private_config.hw      Sat Nov 14 00:02:24 
>>>>>>>>> 2009        (r40509)
>>>>>>>>> +++ trunk/subversion/svn_private_config.hw      Sat Nov 14 11:42:26 
>>>>>>>>> 2009        (r40510)
>>>>>>>>> @@ -91,3 +91,12 @@
>>>>>>>>>  #define APU_WANT_DB
>>>>>>>>>  #include <apu_want.h>
>>>>>>>>>  #endif
>>>>>>>>> +
>>>>>>>>> +/*
>>>>>>>>> + * Subversion developers may want to use some additional debugging 
>>>>>>>>> facilities
>>>>>>>>> + * while working on the code. We'll pull that in here, so individual 
>>>>>>>>> source
>>>>>>>>> + * files don't have to include this header manually.
>>>>>>>>> + */
>>>>>>>>> +#ifdef SVN_DEBUG
>>>>>>>>> +#include "private/svn_debug.h"
>>>>>>>>> +#endif
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>>>>>>>> Hi Arfrever,
>>>>>>>>
>>>>>>>> This change breaks the debug build on Windows since __attribute__ is
>>>>>>>> not longer defined, see __attribute__no.longer.defined.txt.
>>>>>>>>
>>>>>>>> I thought that simply adding #include <apr.h> to svn_debug.h would fix
>>>>>>>> this, but I end up with even more weirdness, see include.apr.h.txt.
>>>>>>>>
>>>>>>>> I hate to admit I can't quite figure this out.  I've reverted this
>>>>>>>> change locally so I can build, but please look into this when you can.
>>>>>>>>
>>>>>>>>
>>>>>>>>                 
>>>>>>> Hi Arfrever,
>>>>>>>
>>>>>>> I've been unable to fix the broken Windows debug build and it doesn't
>>>>>>> appear anyone else is working on this.  Edmund has confirmed the
>>>>>>> breakage on a his machine.  So, per our rules in HACKING, I
>>>>>>> regrettably reverted this change in r882182.
>>>>>>>
>>>>>>> I'm more than happy to test a new version of r40510(r880584) or assist
>>>>>>> in any way I can.
>>>>>>>
>>>>>>>
>>>>>>>               
>>>>>> Please test the attached patch.
>>>>>>
>>>>>>
>>>>>>             
>>>>> Hi Arfrever,
>>>>>
>>>>> That works.  I still don't understand why we can't use __attribute__
>>>>> in svn_debug.h.  It is used in svn_cmdline.h, svn_io.h, svn_string.h,
>>>>> and various other places without any problems.
>>>>>
>>>>>
>>>>>           
>>>> Perhaps svn_debug.h doesn't include apr.h, where __attribute__ is
>>>> defined for compilers other than GCC?
>>>>
>>>>         
>>> Hi Brane,
>>>
>>> That was my initial thought too and I tried it, but received some very
>>> odd results.  See the start of this thread:
>>> http://mail-archives.apache.org/mod_mbox/subversion-dev/200911.mbox/browser.
>>>
>>>       
>> Hmm, curious ... I'd suggest producing a preprocessed source to see
>> where apr.h is first included.
>>     
>
> Brane,
>
> A disclaimer: I haven't generated preprocessed source in an age and
> even then it was with much simpler code than ours...so maybe I'm doing
> this all wrong.
>
> I updated my WC back to r882181, right before I reverted r880584.
> Recall that the first place the problem with __attribute__ no being
> defined arises in in libsvn_subr/config_win.c.  So from within the
> VS2008 IDE I changed the Configuration
> Properties:C/C++"Preprocessor:Generate Preprocessed File setting for
> the libsvn_subr project to 'With Line Numbers (/P)' from the default
> of 'No'.  Then I rebuilt just the libsvn_subr project.  Quite
> unexpectedly (at least to me) config_win.c now compiles, even though
> config_win.i shows that apr.h is not included till well after
> svn_debug.h.  All the files in libsvn_subr compile, but no object
> files are created so the build fails.  Consider me confused.
>   

I can at least explain the last bit -- MSC doesn't generate object files
when also generating preprocessed source. I've always been frustrated by
that.

Which implicitly explains why config_win.c now "compiles" -- it doesn't
compile, it's just preprocessed, and the preprocessor doesn't worry
about seeing tokens it can't understand.
 
But really -- the /correct/ answer is to include apr.h (or svn_config.h)
from svn_debug.h, if you want to use the __attribute__ macro in that
header. Headers should always explicitly include their dependencies.

-- Brane

Reply via email to