* [Buildroot] [RFC, PATCH] toolchain: separate c++ compiler from libstdc++ presence
@ 2014-07-03 3:57 Jeremy Kerr
2014-07-29 22:45 ` Yann E. MORIN
0 siblings, 1 reply; 2+ messages in thread
From: Jeremy Kerr @ 2014-07-03 3:57 UTC (permalink / raw)
To: buildroot
We may want a c++ compiler, but no libstdc++ on the system. For example,
firmware that isn't linked with the system libstdc++. These packages can
depend on BR2_CPP instead of BR2_INSTALL_LIBSTDCPP.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
---
package/Makefile.in | 2 +-
package/gcc/Config.in.host | 14 +++++++++++---
package/gcc/gcc-final/gcc-final.mk | 2 +-
toolchain/toolchain-common.in | 4 ++++
4 files changed, 17 insertions(+), 5 deletions(-)
diff --git a/package/Makefile.in b/package/Makefile.in
index 0233506..e8de29f 100644
--- a/package/Makefile.in
+++ b/package/Makefile.in
@@ -361,7 +361,7 @@ else
DISABLE_IPV6= --disable-ipv6
endif
-ifneq ($(BR2_INSTALL_LIBSTDCPP),y)
+ifneq ($(BR2_CPP),y)
TARGET_CONFIGURE_OPTS+=CXX=false
endif
diff --git a/package/gcc/Config.in.host b/package/gcc/Config.in.host
index fde1b90..693ff5f 100644
--- a/package/gcc/Config.in.host
+++ b/package/gcc/Config.in.host
@@ -126,13 +126,21 @@ config BR2_EXTRA_GCC_CONFIG_OPTIONS
initial, gcc intermediate and gcc final passes.
config BR2_TOOLCHAIN_BUILDROOT_CXX
- bool "Enable C++ support"
- select BR2_INSTALL_LIBSTDCPP
+ bool "Enable C++ compiler support"
+ select BR2_CPP
depends on !(BR2_GCC_VERSION_4_2_2_AVR32_2_1_5 && \
BR2_TOOLCHAIN_BUILDROOT_LOCALE)
help
Enable this option if you want your toolchain to support the
- C++ language and you want C++ libraries to be installed on
+ C++ language.
+
+config BR2_TOOLCHAIN_BUILDROOT_LIBSTDCPP
+ bool "Install C++ libraries"
+ default y
+ select BR2_INSTALL_LIBSTDCPP
+ depends on BR2_TOOLCHAIN_BUILDROOT_CXX
+ help
+ Enable this option if you want C++ libraries to be installed on
your target system.
comment "C++ support broken in uClibc with locale enabled with gcc 4.2"
diff --git a/package/gcc/gcc-final/gcc-final.mk b/package/gcc/gcc-final/gcc-final.mk
index 622dcf2..d277064 100644
--- a/package/gcc/gcc-final/gcc-final.mk
+++ b/package/gcc/gcc-final/gcc-final.mk
@@ -43,7 +43,7 @@ endef
# Languages supported by the cross-compiler
GCC_FINAL_CROSS_LANGUAGES-y = c
-GCC_FINAL_CROSS_LANGUAGES-$(BR2_INSTALL_LIBSTDCPP) += c++
+GCC_FINAL_CROSS_LANGUAGES-$(BR2_CPP) += c++
GCC_FINAL_CROSS_LANGUAGES-$(BR2_INSTALL_FORTRAN) += fortran
GCC_FINAL_CROSS_LANGUAGES-$(BR2_INSTALL_OBJC) += objc
GCC_FINAL_CROSS_LANGUAGES = $(subst $(space),$(comma),$(GCC_FINAL_CROSS_LANGUAGES-y))
diff --git a/toolchain/toolchain-common.in b/toolchain/toolchain-common.in
index a91d247..24edce3 100644
--- a/toolchain/toolchain-common.in
+++ b/toolchain/toolchain-common.in
@@ -26,8 +26,12 @@ config BR2_USE_WCHAR
config BR2_ENABLE_LOCALE
bool
+config BR2_CPP
+ bool
+
config BR2_INSTALL_LIBSTDCPP
bool
+ select BR2_CPP
config BR2_TOOLCHAIN_HAS_THREADS
bool
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [Buildroot] [RFC, PATCH] toolchain: separate c++ compiler from libstdc++ presence
2014-07-03 3:57 [Buildroot] [RFC, PATCH] toolchain: separate c++ compiler from libstdc++ presence Jeremy Kerr
@ 2014-07-29 22:45 ` Yann E. MORIN
0 siblings, 0 replies; 2+ messages in thread
From: Yann E. MORIN @ 2014-07-29 22:45 UTC (permalink / raw)
To: buildroot
Jeremy,All,
On 2014-07-03 11:57 +0800, Jeremy Kerr spake thusly:
> We may want a c++ compiler, but no libstdc++ on the system. For example,
> firmware that isn't linked with the system libstdc++. These packages can
> depend on BR2_CPP instead of BR2_INSTALL_LIBSTDCPP.
We've discussed this at length with Thoms P., and we came to the
following conclusions.
First, there are two cases: internal toolchains, and external toolchains.
Your patch only addresses the case for internal toolchains.
For internal toolchains, we consider this is better served by using a
post-build script that will remove the unneeded libs. It's much easier
to write than this non-trivial patch.
For external toolchains, the same script can be used in the state, too.
However, this has prompted the case for how we handle C++ detection in
the external toolchains. Currently, the selection in the menuconfig must
match exactly whether the toolchain has or does not have C++.
We pondered whether to change the check to require g++ if the user
answered 'Y' to "toolchain has c++", but do no check if the user
answered "N" to that question (currently the check is to test for g++ to
be missing.)
This does not solve your issue at hand, but we do believe the easiest
way is to just use a post-build script to remove the libstdc++.
Therefore, I've marked your patch as Rejected in the Patchwork. Should
you have a strong case for this patch, please do not hesitate to discuss
this resolution, we can always re-open the patch later.
Regards,
Yann E. MORIN.
> Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
>
> ---
> package/Makefile.in | 2 +-
> package/gcc/Config.in.host | 14 +++++++++++---
> package/gcc/gcc-final/gcc-final.mk | 2 +-
> toolchain/toolchain-common.in | 4 ++++
> 4 files changed, 17 insertions(+), 5 deletions(-)
>
> diff --git a/package/Makefile.in b/package/Makefile.in
> index 0233506..e8de29f 100644
> --- a/package/Makefile.in
> +++ b/package/Makefile.in
> @@ -361,7 +361,7 @@ else
> DISABLE_IPV6= --disable-ipv6
> endif
>
> -ifneq ($(BR2_INSTALL_LIBSTDCPP),y)
> +ifneq ($(BR2_CPP),y)
> TARGET_CONFIGURE_OPTS+=CXX=false
> endif
>
> diff --git a/package/gcc/Config.in.host b/package/gcc/Config.in.host
> index fde1b90..693ff5f 100644
> --- a/package/gcc/Config.in.host
> +++ b/package/gcc/Config.in.host
> @@ -126,13 +126,21 @@ config BR2_EXTRA_GCC_CONFIG_OPTIONS
> initial, gcc intermediate and gcc final passes.
>
> config BR2_TOOLCHAIN_BUILDROOT_CXX
> - bool "Enable C++ support"
> - select BR2_INSTALL_LIBSTDCPP
> + bool "Enable C++ compiler support"
> + select BR2_CPP
> depends on !(BR2_GCC_VERSION_4_2_2_AVR32_2_1_5 && \
> BR2_TOOLCHAIN_BUILDROOT_LOCALE)
> help
> Enable this option if you want your toolchain to support the
> - C++ language and you want C++ libraries to be installed on
> + C++ language.
> +
> +config BR2_TOOLCHAIN_BUILDROOT_LIBSTDCPP
> + bool "Install C++ libraries"
> + default y
> + select BR2_INSTALL_LIBSTDCPP
> + depends on BR2_TOOLCHAIN_BUILDROOT_CXX
> + help
> + Enable this option if you want C++ libraries to be installed on
> your target system.
>
> comment "C++ support broken in uClibc with locale enabled with gcc 4.2"
> diff --git a/package/gcc/gcc-final/gcc-final.mk b/package/gcc/gcc-final/gcc-final.mk
> index 622dcf2..d277064 100644
> --- a/package/gcc/gcc-final/gcc-final.mk
> +++ b/package/gcc/gcc-final/gcc-final.mk
> @@ -43,7 +43,7 @@ endef
>
> # Languages supported by the cross-compiler
> GCC_FINAL_CROSS_LANGUAGES-y = c
> -GCC_FINAL_CROSS_LANGUAGES-$(BR2_INSTALL_LIBSTDCPP) += c++
> +GCC_FINAL_CROSS_LANGUAGES-$(BR2_CPP) += c++
> GCC_FINAL_CROSS_LANGUAGES-$(BR2_INSTALL_FORTRAN) += fortran
> GCC_FINAL_CROSS_LANGUAGES-$(BR2_INSTALL_OBJC) += objc
> GCC_FINAL_CROSS_LANGUAGES = $(subst $(space),$(comma),$(GCC_FINAL_CROSS_LANGUAGES-y))
> diff --git a/toolchain/toolchain-common.in b/toolchain/toolchain-common.in
> index a91d247..24edce3 100644
> --- a/toolchain/toolchain-common.in
> +++ b/toolchain/toolchain-common.in
> @@ -26,8 +26,12 @@ config BR2_USE_WCHAR
> config BR2_ENABLE_LOCALE
> bool
>
> +config BR2_CPP
> + bool
> +
> config BR2_INSTALL_LIBSTDCPP
> bool
> + select BR2_CPP
>
> config BR2_TOOLCHAIN_HAS_THREADS
> bool
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
--
.-----------------.--------------------.------------------.--------------------.
| 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. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2014-07-29 22:45 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-07-03 3:57 [Buildroot] [RFC, PATCH] toolchain: separate c++ compiler from libstdc++ presence Jeremy Kerr
2014-07-29 22:45 ` Yann E. MORIN
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.