* [Buildroot] [PATCH v2 0/3] Add support for the D programming language
@ 2019-10-24 18:16 Eric Le Bihan
2019-10-24 18:16 ` [Buildroot] [PATCH v2 1/3] toolchain: add support for D language Eric Le Bihan
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Eric Le Bihan @ 2019-10-24 18:16 UTC (permalink / raw)
To: buildroot
This small series add supports for the D programming language, available in
GCC since version 9.1.
v1 -> v2:
- restrict support for Buildroot toolchain to some architectures.
- add support for external toolchain.
Eric Le Bihan (3):
toolchain: add support for D language
package/gcc: add support for D language
toolchain-external: add support for D language
package/gcc/Config.in.host | 22 +++++++++++++++++++
package/gcc/gcc-final/gcc-final.mk | 5 +++++
toolchain/Config.in | 3 +++
.../pkg-toolchain-external.mk | 4 ++++
.../Config.in.options | 8 +++++++
5 files changed, 42 insertions(+)
--
2.21.0
^ permalink raw reply [flat|nested] 9+ messages in thread* [Buildroot] [PATCH v2 1/3] toolchain: add support for D language 2019-10-24 18:16 [Buildroot] [PATCH v2 0/3] Add support for the D programming language Eric Le Bihan @ 2019-10-24 18:16 ` Eric Le Bihan 2019-10-25 17:33 ` Thomas Petazzoni 2019-10-24 18:16 ` [Buildroot] [PATCH v2 2/3] package/gcc: " Eric Le Bihan 2019-10-24 18:16 ` [Buildroot] [PATCH v2 3/3] toolchain-external: " Eric Le Bihan 2 siblings, 1 reply; 9+ messages in thread From: Eric Le Bihan @ 2019-10-24 18:16 UTC (permalink / raw) To: buildroot Since version 9.1, GCC provides support for the D programming language [1]. So add an option to indicate the selected toolchain supports this language. [1] https://dlang.org/ Signed-off-by: Eric Le Bihan <eric.le.bihan.dev@free.fr> --- toolchain/Config.in | 3 +++ 1 file changed, 3 insertions(+) diff --git a/toolchain/Config.in b/toolchain/Config.in index 3bc3b1b4b0..c9aa95985f 100644 --- a/toolchain/Config.in +++ b/toolchain/Config.in @@ -171,6 +171,9 @@ config BR2_ENABLE_LOCALE config BR2_INSTALL_LIBSTDCPP bool +config BR2_TOOLCHAIN_HAS_DLANG + bool + config BR2_TOOLCHAIN_HAS_FORTRAN bool -- 2.21.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Buildroot] [PATCH v2 1/3] toolchain: add support for D language 2019-10-24 18:16 ` [Buildroot] [PATCH v2 1/3] toolchain: add support for D language Eric Le Bihan @ 2019-10-25 17:33 ` Thomas Petazzoni 0 siblings, 0 replies; 9+ messages in thread From: Thomas Petazzoni @ 2019-10-25 17:33 UTC (permalink / raw) To: buildroot On Thu, 24 Oct 2019 20:16:19 +0200 Eric Le Bihan <eric.le.bihan.dev@free.fr> wrote: > Since version 9.1, GCC provides support for the D programming language [1]. > > So add an option to indicate the selected toolchain supports this > language. > > [1] https://dlang.org/ > > Signed-off-by: Eric Le Bihan <eric.le.bihan.dev@free.fr> > --- > toolchain/Config.in | 3 +++ > 1 file changed, 3 insertions(+) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Buildroot] [PATCH v2 2/3] package/gcc: add support for D language 2019-10-24 18:16 [Buildroot] [PATCH v2 0/3] Add support for the D programming language Eric Le Bihan 2019-10-24 18:16 ` [Buildroot] [PATCH v2 1/3] toolchain: add support for D language Eric Le Bihan @ 2019-10-24 18:16 ` Eric Le Bihan 2019-10-25 17:33 ` Thomas Petazzoni 2019-10-24 18:16 ` [Buildroot] [PATCH v2 3/3] toolchain-external: " Eric Le Bihan 2 siblings, 1 reply; 9+ messages in thread From: Eric Le Bihan @ 2019-10-24 18:16 UTC (permalink / raw) To: buildroot Since version 9.1, GCC provides support for the D programming language [1]. So add a Kconfig entry to enable support for it. [1] https://dlang.org/ Signed-off-by: Eric Le Bihan <eric.le.bihan.dev@free.fr> --- package/gcc/Config.in.host | 22 ++++++++++++++++++++++ package/gcc/gcc-final/gcc-final.mk | 5 +++++ 2 files changed, 27 insertions(+) diff --git a/package/gcc/Config.in.host b/package/gcc/Config.in.host index 75be7c48cc..aeea21c0fb 100644 --- a/package/gcc/Config.in.host +++ b/package/gcc/Config.in.host @@ -77,6 +77,19 @@ config BR2_GCC_SUPPORTS_LIBCILKRTS bool default y if !BR2_TOOLCHAIN_GCC_AT_LEAST_8 +config BR2_GCC_SUPPORTS_DLANG + bool + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_9 + depends on BR2_TOOLCHAIN_USES_GLIBC + default y if BR2_aarch64 + default y if BR2_arm + default y if BR2_i386 + default y if BR2_mips || BR2_mipsel + default y if BR2_mips64 || BR2_mips64el + default y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le + default y if BR2_x86_64 + default y if BR2_riscv && !BR2_RISCV_64 + config BR2_GCC_VERSION string default "5.5.0" if BR2_GCC_VERSION_5_X @@ -118,6 +131,15 @@ config BR2_TOOLCHAIN_BUILDROOT_FORTRAN Fortran language and you want Fortran libraries to be installed on your target system. +config BR2_TOOLCHAIN_BUILDROOT_DLANG + bool "Enable D language support" + depends on BR2_GCC_SUPPORTS_DLANG + select BR2_TOOLCHAIN_HAS_DLANG + help + Enable this option if you want your toolchain to support the + D language and you want D libraries to be installed on your + target system. + config BR2_GCC_ENABLE_LTO bool "Enable compiler link-time-optimization support" select BR2_BINUTILS_ENABLE_LTO diff --git a/package/gcc/gcc-final/gcc-final.mk b/package/gcc/gcc-final/gcc-final.mk index f478fde0d7..79c88a5d60 100644 --- a/package/gcc/gcc-final/gcc-final.mk +++ b/package/gcc/gcc-final/gcc-final.mk @@ -55,6 +55,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_TOOLCHAIN_BUILDROOT_DLANG) += d GCC_FINAL_CROSS_LANGUAGES-$(BR2_TOOLCHAIN_BUILDROOT_FORTRAN) += fortran GCC_FINAL_CROSS_LANGUAGES = $(subst $(space),$(comma),$(GCC_FINAL_CROSS_LANGUAGES-y)) @@ -172,6 +173,10 @@ ifeq ($(BR2_INSTALL_LIBSTDCPP),y) HOST_GCC_FINAL_USR_LIBS += libstdc++ endif +ifeq ($(BR2_TOOLCHAIN_BUILDROOT_DLANG),y) +HOST_GCC_FINAL_USR_LIBS += libgdruntime libgphobos +endif + ifeq ($(BR2_TOOLCHAIN_BUILDROOT_FORTRAN),y) HOST_GCC_FINAL_USR_LIBS += libgfortran # fortran needs quadmath on x86 and x86_64 -- 2.21.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Buildroot] [PATCH v2 2/3] package/gcc: add support for D language 2019-10-24 18:16 ` [Buildroot] [PATCH v2 2/3] package/gcc: " Eric Le Bihan @ 2019-10-25 17:33 ` Thomas Petazzoni 0 siblings, 0 replies; 9+ messages in thread From: Thomas Petazzoni @ 2019-10-25 17:33 UTC (permalink / raw) To: buildroot On Thu, 24 Oct 2019 20:16:20 +0200 Eric Le Bihan <eric.le.bihan.dev@free.fr> wrote: > Since version 9.1, GCC provides support for the D programming language [1]. > > So add a Kconfig entry to enable support for it. > > [1] https://dlang.org/ > > Signed-off-by: Eric Le Bihan <eric.le.bihan.dev@free.fr> > --- > package/gcc/Config.in.host | 22 ++++++++++++++++++++++ > package/gcc/gcc-final/gcc-final.mk | 5 +++++ > 2 files changed, 27 insertions(+) Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Buildroot] [PATCH v2 3/3] toolchain-external: add support for D language 2019-10-24 18:16 [Buildroot] [PATCH v2 0/3] Add support for the D programming language Eric Le Bihan 2019-10-24 18:16 ` [Buildroot] [PATCH v2 1/3] toolchain: add support for D language Eric Le Bihan 2019-10-24 18:16 ` [Buildroot] [PATCH v2 2/3] package/gcc: " Eric Le Bihan @ 2019-10-24 18:16 ` Eric Le Bihan 2019-10-24 19:21 ` Romain Naour 2019-10-25 17:34 ` Thomas Petazzoni 2 siblings, 2 replies; 9+ messages in thread From: Eric Le Bihan @ 2019-10-24 18:16 UTC (permalink / raw) To: buildroot Signed-off-by: Eric Le Bihan <eric.le.bihan.dev@free.fr> --- toolchain/toolchain-external/pkg-toolchain-external.mk | 4 ++++ .../toolchain-external-custom/Config.in.options | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/toolchain/toolchain-external/pkg-toolchain-external.mk b/toolchain/toolchain-external/pkg-toolchain-external.mk index c00211d59c..9c5321ea36 100644 --- a/toolchain/toolchain-external/pkg-toolchain-external.mk +++ b/toolchain/toolchain-external/pkg-toolchain-external.mk @@ -148,6 +148,10 @@ ifeq ($(BR2_TOOLCHAIN_HAS_OPENMP),y) TOOLCHAIN_EXTERNAL_LIBS += libgomp.so.* endif +ifeq ($(BR2_TOOLCHAIN_HAS_DLANG),y) +TOOLCHAIN_EXTERNAL_LIBS += libgdruntime.so* libgphobos.so* +endif + TOOLCHAIN_EXTERNAL_LIBS += $(call qstrip,$(BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS)) diff --git a/toolchain/toolchain-external/toolchain-external-custom/Config.in.options b/toolchain/toolchain-external/toolchain-external-custom/Config.in.options index 83d9ed61d7..f686cb3305 100644 --- a/toolchain/toolchain-external/toolchain-external-custom/Config.in.options +++ b/toolchain/toolchain-external/toolchain-external-custom/Config.in.options @@ -415,6 +415,14 @@ config BR2_TOOLCHAIN_EXTERNAL_CXX support. If you don't know, leave the default value, Buildroot will tell you if it's correct or not. +config BR2_TOOLCHAIN_EXTERNAL_DLANG + bool "Toolchain has D support?" + select BR2_TOOLCHAIN_HAS_DLANG + help + Select this option if your external toolchain has D + support. If you don't know, leave the default value, + Buildroot will tell you if it's correct or not. + config BR2_TOOLCHAIN_EXTERNAL_FORTRAN bool "Toolchain has Fortran support?" select BR2_TOOLCHAIN_HAS_FORTRAN -- 2.21.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Buildroot] [PATCH v2 3/3] toolchain-external: add support for D language 2019-10-24 18:16 ` [Buildroot] [PATCH v2 3/3] toolchain-external: " Eric Le Bihan @ 2019-10-24 19:21 ` Romain Naour 2019-10-24 21:40 ` Eric Le Bihan 2019-10-25 17:34 ` Thomas Petazzoni 1 sibling, 1 reply; 9+ messages in thread From: Romain Naour @ 2019-10-24 19:21 UTC (permalink / raw) To: buildroot Hi Eric, Le 24/10/2019 ? 20:16, Eric Le Bihan a ?crit?: > Signed-off-by: Eric Le Bihan <eric.le.bihan.dev@free.fr> > --- > toolchain/toolchain-external/pkg-toolchain-external.mk | 4 ++++ > .../toolchain-external-custom/Config.in.options | 8 ++++++++ > 2 files changed, 12 insertions(+) > > diff --git a/toolchain/toolchain-external/pkg-toolchain-external.mk b/toolchain/toolchain-external/pkg-toolchain-external.mk > index c00211d59c..9c5321ea36 100644 > --- a/toolchain/toolchain-external/pkg-toolchain-external.mk > +++ b/toolchain/toolchain-external/pkg-toolchain-external.mk > @@ -148,6 +148,10 @@ ifeq ($(BR2_TOOLCHAIN_HAS_OPENMP),y) > TOOLCHAIN_EXTERNAL_LIBS += libgomp.so.* > endif > > +ifeq ($(BR2_TOOLCHAIN_HAS_DLANG),y) > +TOOLCHAIN_EXTERNAL_LIBS += libgdruntime.so* libgphobos.so* > +endif > + > TOOLCHAIN_EXTERNAL_LIBS += $(call qstrip,$(BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS)) > > > diff --git a/toolchain/toolchain-external/toolchain-external-custom/Config.in.options b/toolchain/toolchain-external/toolchain-external-custom/Config.in.options > index 83d9ed61d7..f686cb3305 100644 > --- a/toolchain/toolchain-external/toolchain-external-custom/Config.in.options > +++ b/toolchain/toolchain-external/toolchain-external-custom/Config.in.options > @@ -415,6 +415,14 @@ config BR2_TOOLCHAIN_EXTERNAL_CXX > support. If you don't know, leave the default value, > Buildroot will tell you if it's correct or not. > > +config BR2_TOOLCHAIN_EXTERNAL_DLANG > + bool "Toolchain has D support?" > + select BR2_TOOLCHAIN_HAS_DLANG > + help > + Select this option if your external toolchain has D > + support. If you don't know, leave the default value, > + Buildroot will tell you if it's correct or not. > + I believe we need to add a check in the toolchain helper to check if D compiler is present and is working (as for other language C++ and Fortran [1]) Also D support should be listed in the manual, at least in the "dependencies target toolchain options" [2]. While adding GCC 9 in Buildroot, I did not add D support because there is currently not package using it. Did you plan to add new packages using this language? [1]: https://git.buildroot.net/buildroot/tree/toolchain/helpers.mk?id=03fb00f2175cdb4565e26fcb9b3da1c1059de1bd#n339 [2] http://nightly.buildroot.org/manual.html#dependencies-target-toolchain-options Best regards, Romain > config BR2_TOOLCHAIN_EXTERNAL_FORTRAN > bool "Toolchain has Fortran support?" > select BR2_TOOLCHAIN_HAS_FORTRAN > ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Buildroot] [PATCH v2 3/3] toolchain-external: add support for D language 2019-10-24 19:21 ` Romain Naour @ 2019-10-24 21:40 ` Eric Le Bihan 0 siblings, 0 replies; 9+ messages in thread From: Eric Le Bihan @ 2019-10-24 21:40 UTC (permalink / raw) To: buildroot Hi! On 2019-10-24 21:21, Romain Naour wrote: > Hi Eric, > > Le 24/10/2019 ? 20:16, Eric Le Bihan a ?crit?: > > Signed-off-by: Eric Le Bihan <eric.le.bihan.dev@free.fr> > > --- > > toolchain/toolchain-external/pkg-toolchain-external.mk | 4 ++++ > > .../toolchain-external-custom/Config.in.options | 8 ++++++++ > > 2 files changed, 12 insertions(+) > > > > diff --git a/toolchain/toolchain-external/pkg-toolchain-external.mk b/toolchain/toolchain-external/pkg-toolchain-external.mk > > index c00211d59c..9c5321ea36 100644 > > --- a/toolchain/toolchain-external/pkg-toolchain-external.mk > > +++ b/toolchain/toolchain-external/pkg-toolchain-external.mk > > @@ -148,6 +148,10 @@ ifeq ($(BR2_TOOLCHAIN_HAS_OPENMP),y) > > TOOLCHAIN_EXTERNAL_LIBS += libgomp.so.* > > endif > > > > +ifeq ($(BR2_TOOLCHAIN_HAS_DLANG),y) > > +TOOLCHAIN_EXTERNAL_LIBS += libgdruntime.so* libgphobos.so* > > +endif > > + > > TOOLCHAIN_EXTERNAL_LIBS += $(call qstrip,$(BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS)) > > > > > > diff --git a/toolchain/toolchain-external/toolchain-external-custom/Config.in.options b/toolchain/toolchain-external/toolchain-external-custom/Config.in.options > > index 83d9ed61d7..f686cb3305 100644 > > --- a/toolchain/toolchain-external/toolchain-external-custom/Config.in.options > > +++ b/toolchain/toolchain-external/toolchain-external-custom/Config.in.options > > @@ -415,6 +415,14 @@ config BR2_TOOLCHAIN_EXTERNAL_CXX > > support. If you don't know, leave the default value, > > Buildroot will tell you if it's correct or not. > > > > +config BR2_TOOLCHAIN_EXTERNAL_DLANG > > + bool "Toolchain has D support?" > > + select BR2_TOOLCHAIN_HAS_DLANG > > + help > > + Select this option if your external toolchain has D > > + support. If you don't know, leave the default value, > > + Buildroot will tell you if it's correct or not. > > + > > I believe we need to add a check in the toolchain helper to check if D compiler > is present and is working (as for other language C++ and Fortran [1]) > > Also D support should be listed in the manual, at least in the "dependencies > target toolchain options" [2]. OK. It will be added in the next version. > While adding GCC 9 in Buildroot, I did not add D support because there is > currently not package using it. Did you plan to add new packages using this > language? The D programming language has no "killer" application and may be considered as a niche programming language given that the reference compiler (DMD) was only targeting x86 and was not fully open-source until recently. But GDC (GCC-based compiler) and LDC (LLVM-based compiler) broaden the scope and may increase interest for this language. DUB [1] the package and build manager is written in D. So adding a package to build it from source would require having a host variant of GDC at hand or providing one (which is kind of cumbersome). It is possible, though, to provide a package of the binary host variant of DUB (host-dub-bin), not unlike host-{rust,cargo}-bin for Rust. Meson also supports D. One popular program written in D is Vibe.d [2], a web and concurrency framework. Unfortunately, it relies on RDMD [3], a front-end to DMD for running D programs like scripts, which is not compatible with GDC. GtkD [4], the binding for Gtk+, on the other hand, uses Make as its build system and is more GDC-friendly. Latest attempt at cross-compiling it ended up with some errors, but these should be fixable. So, no new packages using D on the horizon ATM. I submitted this series because I think one of Buildroot's strengths is its ability to easily provide tools for embedded systems. So having a D cross-compiler at hand may benefit some users for creating new applications. Thanks for the review! [1] https://code.dlang.org/packages/dub [2] https://vibed.org/ [3] https://dlang.org/rdmd.html [4] https://gtkd.org/ Regards, -- ELB ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Buildroot] [PATCH v2 3/3] toolchain-external: add support for D language 2019-10-24 18:16 ` [Buildroot] [PATCH v2 3/3] toolchain-external: " Eric Le Bihan 2019-10-24 19:21 ` Romain Naour @ 2019-10-25 17:34 ` Thomas Petazzoni 1 sibling, 0 replies; 9+ messages in thread From: Thomas Petazzoni @ 2019-10-25 17:34 UTC (permalink / raw) To: buildroot On Thu, 24 Oct 2019 20:16:21 +0200 Eric Le Bihan <eric.le.bihan.dev@free.fr> wrote: > +config BR2_TOOLCHAIN_EXTERNAL_DLANG > + bool "Toolchain has D support?" > + select BR2_TOOLCHAIN_HAS_DLANG > + help > + Select this option if your external toolchain has D > + support. If you don't know, leave the default value, > + Buildroot will tell you if it's correct or not. This last sentence is not actually true: Buildroot doesn't check if there is a really a D compiler in the external toolchain, as Romain pointed out. So I've dropped this last sentence, and applied. Could you send follow-up patches to address the limitations/issues that Romain has raised ? Thanks a lot! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2019-10-25 17:34 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2019-10-24 18:16 [Buildroot] [PATCH v2 0/3] Add support for the D programming language Eric Le Bihan 2019-10-24 18:16 ` [Buildroot] [PATCH v2 1/3] toolchain: add support for D language Eric Le Bihan 2019-10-25 17:33 ` Thomas Petazzoni 2019-10-24 18:16 ` [Buildroot] [PATCH v2 2/3] package/gcc: " Eric Le Bihan 2019-10-25 17:33 ` Thomas Petazzoni 2019-10-24 18:16 ` [Buildroot] [PATCH v2 3/3] toolchain-external: " Eric Le Bihan 2019-10-24 19:21 ` Romain Naour 2019-10-24 21:40 ` Eric Le Bihan 2019-10-25 17:34 ` Thomas Petazzoni
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox