[PD-dev] win32 build farm 'msys.exe' (WAS: symlinks render pdstring unbuildable on MinGW/Windows)

Bryan Jurish moocow at ling.uni-potsdam.de
Sat Apr 25 22:08:22 CEST 2009

moin all,

Good call, Martin: thanks!

In case anyone else runs into this or something similar, here are some
gory details:

It turns out that both single and double quotes cause ./configure to
spit, and my initial inability to reproduce the error here was just me
being dense, sleepy, etc.  It seems that since autoconf's CFLAGS
variable (and its value) has to do double-duty as both a shell (as
called by ./configure) and a make variable, *any* kind of quotes are
"graphema non grata", unless you do something horrid like setting
CC="eval gcc" ;-)

Contrast the shell script:
| #!/bin/sh
| CFLAGS="-g -D'UglyQuotedMacro=1'"
| gcc $CFLAGS conftest.c

with the Makefile:
| CFLAGS=-g -D'UglyQuotedMacro=1'
| a.out: ; gcc $(CFLAGS) conftest.c

for a dummy C file "conftest.c":
| int main (void) { return 0; }

... the shell script pukes, but make runs fine, since the make variable
gets passed through an additional shell evaluation.  So the problem was
indeed the -D'whatever' macros getting passed into ./configure by make.

Not sure how to fix this the "right" way (or even if that's possible):
for now I'm just assuming that all relevant flags don't contain any
spaces or other characters needing escapes, and that seems to work well
on the build farm machine (tested locale and pdstring only so far).


On 2009-04-25 03:13:24, Martin Peach <martin.peach at sympatico.ca> appears
to have written:
> Bryan Jurish wrote:
>> This is still stumping me.  The win32 build farm machine's config.log is
>> showing me (for externals/moocow/locale):
>> configure:2701: gcc \
>>   -DPD -O2 -mcpu=i586 -mtune=pentium3 \
>>   -I/home/pd/auto-build/pd-extended/pd/src \
>>   -Wall -W -ggdb \
>>   -I/home/pd/auto-build/pd-extended/Gem/src \
>>   -mms-bitfields \
>>   -DMSW -DNT -D'O_NONBLOCK=1' -D'srand48(n)=srand((n))' \
>>   -D'drand48()=((double)rand()/RAND_MAX)' -D'bzero(p,n)=memset(p,0,n)' \
>>   -L/home/pd/auto-build/pd-extended/pd/bin \
>>   conftest.c >&5
>> <command line>:4:1: macro names must be identifiers
>> <command line>:5:1: macro names must be identifiers
>> <command line>:6:1: macro names must be identifiers
>> <command line>:7:1: macro names must be identifiers
> I'm guessing here but it looks like the 4th, 5th 6th and 7th defines in
> the command line are causing trouble. Indeed they are not identifiers as
> such, they are just strings. One thing that looks odd is the single
> quote '' instead of the more commonly used "". Without knowing what that
> particular combo of gcc and shell most enjoys, I would change that and
> see what happens next.

Bryan Jurish                           "There is *always* one more bug."
jurish at ling.uni-potsdam.de      -Lubarsky's Law of Cybernetic Entomology

More information about the Pd-dev mailing list