From: Yann E. MORIN <yann.morin.1998@free.fr>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH v2 1/5] package/gdb: rework dependency for C++11
Date: Wed, 7 Feb 2018 10:58:28 +0100 [thread overview]
Message-ID: <20180207095828.GA2464@scaer> (raw)
In-Reply-To: <20180205211015.26819-2-thomas.petazzoni@bootlin.com>
Thomas, All,
On 2018-02-05 22:10 +0100, Thomas Petazzoni spake thusly:
> As we are about to switch to 8.0 as the default gdb dependency, we
> need to adjust how the gdb dependencies are handled. Indeed, from 8.0
> onwards, gdb needs a C++11 capable compiler, i.e at least gcc 4.8.
>
> Until now, Config.in.host was making sure that gdb 8.0 was not
> selectable if the cross-compilation toolchain did not have C++ support
> with gcc >= 4.8. This worked fine because the default version of gdb,
> used as the target gdb version when no host gdb is built, was 7.11,
> and did not require C++11.
>
> With the switch to 8.0 as the default version, when target gdb is
> enabled but not host gdb, 8.0 is used, which means we need a C++11
> capable compiler. The dependencies in Config.in.host are no longer
> sufficient.
>
> So instead, we remove the target-related dependencies from
> Config.in.host and move them properly to Config.in. The overall logic
> is the following:
>
> - In Config.in.host, BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS ensures that
> we have at least host gcc 4.8 if we're on ARC, because the ARC gdb
> needs C++11. We remove the target toolchain related dependencies
> from here.
>
> - In Config.in.host, the version selection ensures that 8.0 cannot be
> selected if the host toolchain does not have at least gcc 4.8. We
> remove the target toolchain related dependencies from here.
>
> - In Config.in, we handle gdb more like a regular target package,
> with a Config.in comment when its dependencies are not met. A
> hidden boolean BR2_PACKAGE_GDB_NEEDS_CXX11 indicates when the
> currently selected version requires C++11. Based on that, we show
> the Config.in comment, and add the proper dependencies to
> BR2_PACKAGE_GDB. It is worth mentioning that
> BR2_PACKAGE_GDB_NEEDS_CXX11 is intentionally created to be !7.10 &&
> !7.11 && !7.12 instead of 8.0, because we will gradually add more
> C++11-requiring versions, and remove non-C++11-requiring versions.
Nice refactoring. :-)
Yet, a comment below...
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> ---
> package/gdb/Config.in | 15 +++++++++++++++
> package/gdb/Config.in.host | 3 ---
> 2 files changed, 15 insertions(+), 3 deletions(-)
>
> diff --git a/package/gdb/Config.in b/package/gdb/Config.in
> index af020f40c5..b7f0565b92 100644
> --- a/package/gdb/Config.in
> +++ b/package/gdb/Config.in
> @@ -11,15 +11,30 @@ comment "gdb/gdbserver needs a toolchain w/ threads, threads debug"
> depends on BR2_PACKAGE_GDB_ARCH_SUPPORTS
> depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_HAS_THREADS_DEBUG
>
> +config BR2_PACKAGE_GDB_NEEDS_CXX11
> + bool
> + default y
> + depends on !BR2_GDB_VERSION_7_10
> + depends on !BR2_GDB_VERSION_7_11
> + depends on !BR2_GDB_VERSION_7_12
I would have expected that the various versions would select this,
i.e. something like:
config BR2_PACKAGE_GDB_NEEDS_CXX11
bool
config BR2_GDB_VERSION_7_10
bool "7.10"
config BR2_GDB_VERSION_8_0
bool "8.0"
select BR2_PACKAGE_GDB_NEEDS_CXX11
Otherwise, I'm OK with the patch.
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Regards,
Yann E. MORIN.
> +comment "gdb/gdbserver >= 8.x needs a toolchain w/ C++, gcc >= 4.8"
> + depends on BR2_PACKAGE_GDB_NEEDS_CXX11
> + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
> +
> config BR2_PACKAGE_GDB
> bool "gdb"
> depends on BR2_TOOLCHAIN_HAS_THREADS && BR2_TOOLCHAIN_HAS_THREADS_DEBUG
> depends on BR2_PACKAGE_GDB_ARCH_SUPPORTS
> + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || !BR2_PACKAGE_GDB_NEEDS_CXX11
> + depends on BR2_INSTALL_LIBSTDCPP || !BR2_PACKAGE_GDB_NEEDS_CXX11
> # When the external toolchain gdbserver is copied to the
> # target, we don't allow building a separate gdbserver. The
> # one from the external toolchain should be used.
> select BR2_PACKAGE_GDB_SERVER if \
> (!BR2_PACKAGE_GDB_DEBUGGER && !BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY)
> + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || !BR2_PACKAGE_GDB_NEEDS_CXX11
> + depends on BR2_INSTALL_LIBSTDCPP || !BR2_PACKAGE_GDB_NEEDS_CXX11
> help
> GDB, the GNU Project debugger, allows you to see what is
> going on `inside' another program while it executes -- or
> diff --git a/package/gdb/Config.in.host b/package/gdb/Config.in.host
> index 99e1cae5ba..8676c6f01b 100644
> --- a/package/gdb/Config.in.host
> +++ b/package/gdb/Config.in.host
> @@ -3,7 +3,6 @@ config BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS
> default y
> # The ARC version needs C++11, thus gcc >= 4.8, like gdb-8.0.x
> depends on BR2_HOST_GCC_AT_LEAST_4_8 || !BR2_arc
> - depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || !BR2_arc
> depends on !((BR2_arm || BR2_armeb) && BR2_BINFMT_FLAT)
> depends on !BR2_microblaze
> depends on !BR2_nios2
> @@ -63,9 +62,7 @@ config BR2_GDB_VERSION_7_12
> config BR2_GDB_VERSION_8_0
> bool "gdb 8.0.x"
> # Needs a C++11 compiler
> - depends on BR2_INSTALL_LIBSTDCPP
> depends on BR2_HOST_GCC_AT_LEAST_4_8
> - depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
>
> endchoice
>
> --
> 2.14.3
>
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
next prev parent reply other threads:[~2018-02-07 9:58 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-05 21:10 [Buildroot] [PATCH v2 0/5] Add gdb 8.1 support, switch to 8.0 as default, drop old versions Thomas Petazzoni
2018-02-05 21:10 ` [Buildroot] [PATCH v2 1/5] package/gdb: rework dependency for C++11 Thomas Petazzoni
2018-02-07 9:58 ` Yann E. MORIN [this message]
2018-02-07 12:36 ` Thomas Petazzoni
2018-02-07 17:34 ` Yann E. MORIN
2018-02-08 0:22 ` Arnout Vandecappelle
2018-02-08 8:05 ` Thomas Petazzoni
2018-02-05 21:10 ` [Buildroot] [PATCH v2 2/5] package/gdb: bump to version 8.1 Thomas Petazzoni
2018-02-07 10:02 ` Yann E. MORIN
2018-02-07 12:36 ` Thomas Petazzoni
2018-02-05 21:10 ` [Buildroot] [PATCH v2 3/5] package/gdb: switch to 8.0 as the default version Thomas Petazzoni
2018-02-07 10:10 ` Yann E. MORIN
2018-02-05 21:10 ` [Buildroot] [PATCH v2 4/5] package/gdb: remove 7.10 Thomas Petazzoni
2018-02-07 10:12 ` Yann E. MORIN
2018-02-05 21:10 ` [Buildroot] [PATCH v2 5/5] package/gdb: remove 7.11 Thomas Petazzoni
2018-02-07 10:13 ` Yann E. MORIN
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=20180207095828.GA2464@scaer \
--to=yann.morin.1998@free.fr \
--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.