automake issue

Ken Brown kbrown@cornell.edu
Wed Oct 20 20:58:41 GMT 2021


I was debugging with what I thought was an unoptimized build of cygwin1.dll 
(with -O0 in CXXFLAGS), but then I discovered that malloc.cc was actually 
compiled with -O3.  This is because of the following snippet from 
winsup/cygwin/Makefile.am:

# If an optimization level is explicitly set in CXXFLAGS, set -O3 for these files
# XXX: this seems to assume it's not -O0?
#
# (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

but this didn't work.  After running winsup/autogen.sh, 
winsup/cygwin/Makefile.in contained

malloc_CFLAGS = -O3
sync_CFLAGS = -O3

unconditionally.

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?

Ken


More information about the Cygwin-developers mailing list