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