Begin forwarded message:
> From: Gary Bilkus <m...@gary.bilkus.com> > Subject: Re: Building on Windows from scratch - guile problem SOLVED > Date: January 10, 2014 at 2:21:54 PM PST > To: John Ralls <jra...@ceridwen.us> > > On 10/01/2014 17:41, Gary Bilkus wrote: >> On 10/01/2014 15:03, John Ralls wrote: >>> On Jan 9, 2014, at 11:13 PM, Gary Bilkus <m...@gary.bilkus.com> wrote: >>> >>>> Well, interestingly enough, the problem is not directly with the compiler >>>> optimizer. It's with the configure test for strncasecmp. This test fails >>>> on mingw in its current incarnation because guile uses a standard test for >>>> the function, but on mingw strncasecmp is actually a cpp definition. As a >>>> result, guile is compiled with #HAVE_STRNCASECMP unset, and so guile tries >>>> to create its own version in read.c >>>> Now if you compile with no optimization, the compiler notices that read.c >>>> is attempting to create this with a different signature and bombs out. >>>> However, with optimisation on, the code compiles for some reason, and then >>>> fails to run properly. >>>> >>>> So there seem to be two problems: one in configure for guile and/or the >>>> standard configure macros on mingw, the other in the compiler. >>>> Fortunately, there's a very easy although ugly workaround, which is to add >>>> an >>>> echo "#define HAVE_STRNCASECMP" >>config.h >>> Would adding -DHAVE_STRNCASECMP to $CFLAGS work? It's a bit cleaner than >>> echoing a #define into the config header. >>> Better yet, sometimes there's a variable that can be defined on the >>> configure command line -- perhaps $ac_have_strncasecmp -- to force >>> configure to do the right thing. >>> >>>> in install-impl.sh >>>> just after the guile configure and before the make >>>> >>>> I've incorporated this fix into my downloadable file of fixes as referred >>>> to on the wiki page I updated. >>>> More as and when I find any further issues. As always, feedback or other >>>> experiences welcome. >>> Regards, >>> John Ralls >>> >> I agree that the configure commandline change would be cleaner, and if I can >> find out what to do I'll change my fix. >> >> I disagree that a CFLAGS define is cleaner. With my solution the define is >> in the right file, even if it gets there for the wrong reason. That way, it >> guarantees not to affect any compilation which doesn't involve including >> config.h, which saves having to check for any unexpected consequenses >> elsewhere. >> Gary > OK. I've found the cleaner fix. You add ac_cv_func_strncasecmp=yes as a > command line argument to guile configure and then all seems good. > Have updated my patch accordingly. > _______________________________________________ gnucash-devel mailing list gnucash-devel@gnucash.org https://lists.gnucash.org/mailman/listinfo/gnucash-devel