Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Michael Nosthoff <buildroot@heine.tech>
To: buildroot@busybox.net
Subject: [Buildroot] package/boost: Optimization is always -O3
Date: Tue, 04 Aug 2020 15:47:59 +0200	[thread overview]
Message-ID: <52-5f296700-1-3f60f940@29255497> (raw)

Hi,

while doing some debugging on code which uses boost_program_options I stumbled upon a possible issue
with the boost package.

It seems that the boost object files are always built with the -O3 option.

I'm building for an arm32 system using gcc 9.2.1.
My Buildroot 2020.05.1 config contains:

BR2_OPTIMIZE_S
BR2_SHARED_LIBS
BR2_TOOLCHAIN_EXTERNAL
BR2_TOOLCHAIN_EXTERNAL_ARM_ARM
BR2_PACKAGE_BOOST
BR2_PACKAGE_BOOST_LAYOUT_SYSTEM
BR2_PACKAGE_BOOST_PROGRAM_OPTIONS


I adjusted the boost.mk with '-d+2' to get the used build commands.

So when building I see the following:

"/build/build/host/bin/arm-none-linux-gnueabihf-g++"   -fvisibility-inlines-hidden -D_LARGEFILE_SOURCE \
-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -Os   -fPIC -pthread -O3 -finline-functions -Wno-inline \
-Wall -fvisibility=hidden  -DBOOST_ALL_NO_LIB=1 -DBOOST_PROGRAM_OPTIONS_DYN_LINK=1 -DNDEBUG  -I"." -c -o \
"bin.v2/libs/program_options/build/gcc-9.2.1/release/threading-multi/visibility-hidden/positional_options.o" \
"libs/program_options/src/positional_options.cpp"

Notice how there is -Os followed by an -O3 flag.

The part up to the -Os is the <cxxflags> from the buildroot generated user-config.jam file. 
Everything after is generated while compiling.

I tinkered around a bit more. When I set "variant=debug" the second -O changes to -O0.
So this seems depend on the variant and basically ignores the value from the flags.

This jam stuff is pretty complicated to grasp, but I think this basically is defined in [0].
This is actually documented at [1].

Nevertheless the boost build system knows another parameter: <optimization>

So maybe this would be the way to go to configure the optimization level.

Available values are:

off, speed and space. which translate to -O0, -03 and -Os. (from [2])

So this wouldn't be mappable cleanly to all optimization levels Buildroot knows.
I didn't find a senseable way to set the -O level manually so it is not overwritten by boost, 
but maybe somebody has an idea...

If there is interest I could come up with a patch mapping the optimization values.

Regards,
Michael


[0] https://github.com/boostorg/build/blob/develop/src/tools/builtin.jam#L48
[1] https://boostorg.github.io/build/manual/master/index.html#bbv2.overview.builtins.features
[2] https://github.com/boostorg/build/blob/master/src/tools/gcc.jam#L707

             reply	other threads:[~2020-08-04 13:47 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-04 13:47 Michael Nosthoff [this message]
2020-08-04 21:31 ` [Buildroot] package/boost: Optimization is always -O3 Thomas Petazzoni
2020-08-05 12:29   ` Michael Nosthoff
2020-08-05 12:42     ` Thomas Petazzoni

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=52-5f296700-1-3f60f940@29255497 \
    --to=buildroot@heine.tech \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox