All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH v3 1/8] package/pkg-cmake.mk: fix build type and optimization flags
Date: Sat, 15 Oct 2016 12:25:57 +0200	[thread overview]
Message-ID: <20161015122557.25fd074f@free-electrons.com> (raw)
In-Reply-To: <20161015094437.6989-2-s.martin49@gmail.com>

Hello,

On Sat, 15 Oct 2016 11:44:30 +0200, Samuel Martin wrote:

> Before applying this patch, CMake packages are built with the following
> options:
>   * if BR2_ENABLE_DEBUG is set:
>     The CMake build type is set to RelWithDebInfo, which means:
>     - Optimization level is forced to: -O2;
>     - no log nor assert due to -DNDEBUG;
>     - BR2_DEBUG_{1..3} effect is unchanged;
>   * otherwise:
>     The CMake build type is set to Release, which means:
>     - Optimization level is forced to: -O3;
>     - no log nor assert due to -DNDEBUG (as expected).
>   In any case, the optimization WRT the binary size is always ignored and
>   forced.
> 
> This change chooses the build type doing the closest thing to what
> Buildroot attempts to do.
> 
> Long version:
> 
> Flags set by Buildroot depending on the configuration:
> 
>   BR2_ENABLE_DEBUG | Optim. level   | Buildroot {C,CXX}FLAGS
>   =================+================+=======================
>           y        | BR2_OPTIMIZE_S | -Os -gx
>           y        | BR2_OPTIMIZE_G | -Og -gx
>           y        | BR2_OPTIMIZE_n | -On -gx
>           n        | BR2_OPTIMIZE_S | -Os
>           n        | BR2_OPTIMIZE_G | -Og
>           n        | BR2_OPTIMIZE_n | -On
> 
> Default flags appended by CMake depending on the build type:
> 
>   Build type     | Flags           | Effects on {C,CXX}FLAGS
>   ===============+=================+===========================================
>   Debug          | -g              | Force -g, compatible with BR2_ENABLE_DEBUG
>   MinSizeRel     | -Os -DNDEBUG    | Set -Os, compatible with BR2_OPTIMIZE_S
>   Release        | -O3 -DNDEBUG    | Set -O3, closest to the others cases,
>                  |                 | though the optimization level is forced.
>   RelWithDebInfo | -O2 -g -DNDEBUG | Force -g and set -O2, not friendly with BR
> 
> Since CMake appends its own build type flags and because of the gcc
> option parser, the CMake flags takes precedence over the Buildroot
> flags.
> 
> So, this change sets the correct build type depending on the
> BR2_ENABLE_DEBUG and BR2_OPTIMIZE_* options.

Can't we tell CMake to not do all this crap, and simply not add
-g/-O<x> options by itself ?

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

  reply	other threads:[~2016-10-15 10:25 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-15  9:44 [Buildroot] [PATCH v3 0/8] Misc. CMake fixes Samuel Martin
2016-10-15  9:44 ` [Buildroot] [PATCH v3 1/8] package/pkg-cmake.mk: fix build type and optimization flags Samuel Martin
2016-10-15 10:25   ` Thomas Petazzoni [this message]
2016-10-15 10:34     ` Samuel Martin
2016-10-15 10:44       ` Thomas Petazzoni
2016-10-15 15:17         ` Arnout Vandecappelle
2016-10-15  9:44 ` [Buildroot] [PATCH v3 2/8] package/assimp: wrap long lines Samuel Martin
2016-10-15 10:26   ` Thomas Petazzoni
2016-10-15  9:44 ` [Buildroot] [PATCH v3 3/8] package/gflags: includes TARGET_CXXFLAGS to the overloaded CXXFLAGS Samuel Martin
2016-10-15 15:25   ` Arnout Vandecappelle
2016-10-15  9:44 ` [Buildroot] [PATCH v3 4/8] package/gnuradio: includes TARGET_CFLAGS to the overloaded CFLAGS Samuel Martin
2016-10-15 15:25   ` Arnout Vandecappelle
2016-10-15  9:44 ` [Buildroot] [PATCH v3 5/8] package/libcec: includes TARGET_{C, CXX}FLAGS to the overloaded {C, CXX}FLAGS Samuel Martin
2016-10-15 15:30   ` Arnout Vandecappelle
2016-10-15  9:44 ` [Buildroot] [PATCH v3 6/8] package/opencv3: fix CMAKE_CXX_FLAGS Samuel Martin
2016-10-15 15:35   ` Arnout Vandecappelle
2016-10-15  9:44 ` [Buildroot] [PATCH v3 7/8] package/rpi-userland: includes TARGET_CFLAGS to the overloaded CFLAGS Samuel Martin
2016-10-15 15:37   ` Arnout Vandecappelle
2016-10-15  9:44 ` [Buildroot] [PATCH v3 8/8] toochainfile.cmake: rework the way Buildroot sets flags Samuel Martin
2016-10-15 15:52   ` Arnout Vandecappelle

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=20161015122557.25fd074f@free-electrons.com \
    --to=thomas.petazzoni@free-electrons.com \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.