[Zeek-Dev] CFLAGS/CXXFLAGS bug with configure

Jim Mellander jmellander at lbl.gov
Wed May 29 10:23:32 PDT 2019


Hi all:

I've been tinkering with optimizing zeek for performance, and came across a
problem with CFLAGS/CXXFLAGS specified to the configure script.  Lets say I
want to try the -O3 flag for more aggressive optimization than the default
-O2:

$ CFLAGS='-O3' CXXFLAGS='-O3' ./configure
...
====================|  Bro Build Summary  |=====================
...
CFLAGS:            -O3 -Wall -Wno-unused -O2 -g -DNDEBUG
...
CXXFLAGS:          -O3 -Wall -Wno-unused -std=c++11 -O2 -g -DNDEBUG
...
================================================================

Note that the supplied CFLAGS/CXXFLAGS is before the default options for
the build.  From the GCC man page:
*If you use multiple -O options, with or without level numbers, the last
such option is the one that is effective.*
This, of course, means that the -O3 specified will not take effect.
Running make -in confirms that those flags are being passed to the compiler.

There appear to be several alternatives to allow supplied flags to override
the defaults, the most reasonable appearing to be modifying the build
commands to apply CFLAGS/CXXFLAGS after the defaults.

I'm not a cmake maven, but it seems likely that lines like:
set(CMAKE_C_FLAGS   "${CMAKE_C_FLAGS}   ${bro_cache_CMAKE_C_FLAGS}")

could be reversed ala:

set(CMAKE_C_FLAGS   "${bro_cache_CMAKE_C_FLAGS}   ${CMAKE_C_FLAGS}")

to achieve that effect.

(Yes, I know --build-type=Release compiles with -O3, but the point remains
that overriding flags via environment variables is generally expected to be
operative)

Comments?

Jim
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.icsi.berkeley.edu/pipermail/zeek-dev/attachments/20190529/0b75ff2c/attachment.html 


More information about the zeek-dev mailing list