automake issue

Jon Turney
Thu Oct 21 13:08:02 GMT 2021

On 21/10/2021 11:48, Corinna Vinschen wrote:
> On Oct 20 16:58, Ken Brown wrote:
>> I was debugging with what I thought was an unoptimized build of cygwin1.dll
>> (with -O0 in CXXFLAGS), but then I discovered that was actually
>> compiled with -O3.  This is because of the following snippet from
>> winsup/cygwin/
>> # If an optimization level is explicitly set in CXXFLAGS, set -O3 for these files
>> # XXX: this seems to assume it's not -O0?

Note that this is my observation of a pre-existing issue, not something 
that's introduced by the automake conversion.

>> #
>> # (the indentation here prevents automake trying to process this as an automake
>> # conditional)
>>   ifneq "${filter -O%,$(CXXFLAGS)}" ""
>>    malloc_CFLAGS=-O3
>>    sync_CFLAGS=-O3
>>   endif
>> I thought I could fix this by changing the snippet to
>>   ifneq "${filter -O%,$(CXXFLAGS)}" ""
>>    ifeq "${filter -O0,$(CXXFLAGS)}" ""
>>     malloc_CFLAGS=-O3
>>     sync_CFLAGS=-O3
>>    endif
>>   endif

Clever.  It didn't occur to me to write something like this.

>> but this didn't work.  After running winsup/,
>> winsup/cygwin/ contained
>> malloc_CFLAGS = -O3
>> sync_CFLAGS = -O3
>> unconditionally.

Hmm.. yes.  That's disappointing.  I think it was working at some stage, 
so idk if this is a automake change?

>> So in spite of the comment above about indentation, it seems that the
>> conditional is being treated as an automake conditional.
>> Does anyone know how to fix this so that -O0 really produces an unoptimized build?
> I workaround this by setting CFLAGS=-g on the command line.  There's no
> -O then and it should work as desired.  The save thing would probably
> be something like this, though:

Using an automake conditional isn't good, because that can't  consider 
the value of CXXFLAGS if it's overriden on the 'make' command line.

Really, I'm not sure if this block is a good idea at all.  I did 
consider removing it when converting to automake.

I couldn't find any history which suggests these flags are here due to 
evidence ('using -O3 makes this benchmark faster'), rather than 
guesswork ('these files probably contain hotspots, so use -O3 to make it 
go faster!').

More information about the Cygwin-developers mailing list