Message ID | 20230904100443.1613306-3-neal.frager@amd.com |
---|---|
State | Superseded, archived |
Headers | show |
Series | [v3,1/6] package/binutils-bare-metal: new package | expand |
On Mon, 4 Sep 2023 11:04:40 +0100 Neal Frager <neal.frager@amd.com> wrote: > This patch adds a new package for building newlib for a bare-metal toolchain. > The cpu architecture is defined by a toolchain-bare-metal virtual package. > While any cpu architecture could be used, the default configuration will be a > Xilinx microblaze little endian architecture, so that buildroot will be able > to build the microblaze firmware applications for zynqmp and versal. > > Signed-off-by: Ibai Erkiaga-Elorza <ibai.erkiaga-elorza@amd.com> > Signed-off-by: Neal Frager <neal.frager@amd.com> > --- > V1->V2: > - removed default enable to be replaced with toolchain select config > V2->V3: > - no changes > --- > DEVELOPERS | 2 ++ > package/newlib-bare-metal/Config.in.host | 18 ++++++++++++ > .../newlib-bare-metal/newlib-bare-metal.hash | 8 +++++ > .../newlib-bare-metal/newlib-bare-metal.mk | 29 +++++++++++++++++++ > 4 files changed, 57 insertions(+) > create mode 100644 package/newlib-bare-metal/Config.in.host > create mode 100644 package/newlib-bare-metal/newlib-bare-metal.hash > create mode 100644 package/newlib-bare-metal/newlib-bare-metal.mk > > diff --git a/DEVELOPERS b/DEVELOPERS > index 9fc597da07..b8daa9183a 100644 > --- a/DEVELOPERS > +++ b/DEVELOPERS > @@ -1330,6 +1330,7 @@ F: package/python-rpi-gpio/ > N: Ibai Erkiaga-Elorza <ibai.erkiaga-elorza@amd.com> > F: package/binutils-bare-metal/ > F: package/gcc-bare-metal/ > +F: package/newlib-bare-metal/ > > N: Ignacy Gawędzki <ignacy.gawedzki@green-communications.fr> > F: package/angularjs/ > @@ -2198,6 +2199,7 @@ F: configs/zynqmp_zcu106_defconfig > F: package/binutils-bare-metal/ > F: package/bootgen/ > F: package/gcc-bare-metal/ > +F: package/newlib-bare-metal/ > F: package/versal-firmware/ > > N: Nicola Di Lieto <nicola.dilieto@gmail.com> > diff --git a/package/newlib-bare-metal/Config.in.host b/package/newlib-bare-metal/Config.in.host > new file mode 100644 > index 0000000000..3bbf62e3fc > --- /dev/null > +++ b/package/newlib-bare-metal/Config.in.host > @@ -0,0 +1,18 @@ > +config BR2_PACKAGE_HOST_NEWLIB_BARE_METAL > + bool "host newlib-bare-metal" > + help > + newlib-bare-metal is a host utility for a bare-metal toolchain "Build the newlib C library for a bare-metal toolchain" seems fore accurate. > + > +if BR2_PACKAGE_HOST_NEWLIB_BARE_METAL > + > +config BR2_PACKAGE_HOST_NEWLIB_BARE_METAL_VERSION > + string > + default "4.1.0" > + > +config BR2_PACKAGE_HOST_NEWLIB_BARE_METAL_EXTRA_CONFIG_OPTIONS > + string "Additional newlib options" > + default "" > + help > + Any additional newlib options you may want to include. > + > +endif #BR2_PACKAGE_HOST_NEWLIB_BARE_METAL > diff --git a/package/newlib-bare-metal/newlib-bare-metal.hash b/package/newlib-bare-metal/newlib-bare-metal.hash > new file mode 100644 > index 0000000000..b1966c3055 > --- /dev/null > +++ b/package/newlib-bare-metal/newlib-bare-metal.hash > @@ -0,0 +1,8 @@ > +# Locally calculated (fetched from Github) Github? The download site is sourceware.org. > +sha256 f296e372f51324224d387cc116dc37a6bd397198756746f93a2b02e9a5d40154 newlib-4.1.0.tar.gz > + > +# Hashes for license files > +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING > +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING.LIB > +sha256 f3b7f3e4426b1fa6f60198dae7adfedd94b77b28db2d108adc0253575011e0ff COPYING.LIBGLOSS > +sha256 422aa40293093fb54fc66e692a0d68fd0b24ed5602e5d1d33ad05ba3909057e9 COPYING.NEWLIB > diff --git a/package/newlib-bare-metal/newlib-bare-metal.mk b/package/newlib-bare-metal/newlib-bare-metal.mk > new file mode 100644 > index 0000000000..a0a22bd6d9 > --- /dev/null > +++ b/package/newlib-bare-metal/newlib-bare-metal.mk > @@ -0,0 +1,29 @@ > +################################################################################ > +# > +# newlib-bare-metal > +# > +################################################################################ > + > +HOST_NEWLIB_BARE_METAL_VERSION = $(call qstrip,$(BR2_PACKAGE_HOST_NEWLIB_BARE_METAL_VERSION)) > +ifeq ($(HOST_NEWLIB_BARE_METAL_VERSION),) > +HOST_NEWLIB_BARE_METAL_VERSION = 4.1.0 > +endif > + > +HOST_NEWLIB_BARE_METAL_SITE ?= ftp://sourceware.org/pub/newlib > +HOST_NEWLIB_BARE_METAL_SOURCE ?= newlib-$(HOST_NEWLIB_BARE_METAL_VERSION).tar.gz Using '?=' in these two lines seems useless, you should use '='. > +HOST_NEWLIB_BARE_METAL_EXTRA_CONFIG_OPTIONS = $(call qstrip,$(BR2_PACKAGE_HOST_NEWLIB_BARE_METAL_EXTRA_CONFIG_OPTIONS)) > +HOST_NEWLIB_BARE_METAL_DEPENDENCIES = host-gcc-bare-metal > + > +HOST_NEWLIB_BARE_METAL_CONF_OPTS = \ > + --target=$(BR2_PACKAGE_HOST_TOOLCHAIN_BARE_METAL_ARCH)-elf \ > + CC_FOR_TARGET=$(HOST_DIR)/bin/$(BR2_PACKAGE_HOST_TOOLCHAIN_BARE_METAL_ARCH)-elf-gcc \ > + AR_FOR_TARGET=$(HOST_DIR)/bin/$(BR2_PACKAGE_HOST_TOOLCHAIN_BARE_METAL_ARCH)-elf-ar \ > + RANLIB_FOR_TARGET=$(HOST_DIR)/bin/$(BR2_PACKAGE_HOST_TOOLCHAIN_BARE_METAL_ARCH)-elf-ranlib \ > + --enable-newlib-io-c99-formats \ > + --enable-newlib-io-long-long \ > + --enable-newlib-io-float \ > + --enable-newlib-io-long-double \ > + --disable-multilib \ > + $(NEWLIB_BARE_METAL_EXTRA_CONFIG_OPTIONS) > + > +$(eval $(host-autotools-package))
diff --git a/DEVELOPERS b/DEVELOPERS index 9fc597da07..b8daa9183a 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -1330,6 +1330,7 @@ F: package/python-rpi-gpio/ N: Ibai Erkiaga-Elorza <ibai.erkiaga-elorza@amd.com> F: package/binutils-bare-metal/ F: package/gcc-bare-metal/ +F: package/newlib-bare-metal/ N: Ignacy Gawędzki <ignacy.gawedzki@green-communications.fr> F: package/angularjs/ @@ -2198,6 +2199,7 @@ F: configs/zynqmp_zcu106_defconfig F: package/binutils-bare-metal/ F: package/bootgen/ F: package/gcc-bare-metal/ +F: package/newlib-bare-metal/ F: package/versal-firmware/ N: Nicola Di Lieto <nicola.dilieto@gmail.com> diff --git a/package/newlib-bare-metal/Config.in.host b/package/newlib-bare-metal/Config.in.host new file mode 100644 index 0000000000..3bbf62e3fc --- /dev/null +++ b/package/newlib-bare-metal/Config.in.host @@ -0,0 +1,18 @@ +config BR2_PACKAGE_HOST_NEWLIB_BARE_METAL + bool "host newlib-bare-metal" + help + newlib-bare-metal is a host utility for a bare-metal toolchain + +if BR2_PACKAGE_HOST_NEWLIB_BARE_METAL + +config BR2_PACKAGE_HOST_NEWLIB_BARE_METAL_VERSION + string + default "4.1.0" + +config BR2_PACKAGE_HOST_NEWLIB_BARE_METAL_EXTRA_CONFIG_OPTIONS + string "Additional newlib options" + default "" + help + Any additional newlib options you may want to include. + +endif #BR2_PACKAGE_HOST_NEWLIB_BARE_METAL diff --git a/package/newlib-bare-metal/newlib-bare-metal.hash b/package/newlib-bare-metal/newlib-bare-metal.hash new file mode 100644 index 0000000000..b1966c3055 --- /dev/null +++ b/package/newlib-bare-metal/newlib-bare-metal.hash @@ -0,0 +1,8 @@ +# Locally calculated (fetched from Github) +sha256 f296e372f51324224d387cc116dc37a6bd397198756746f93a2b02e9a5d40154 newlib-4.1.0.tar.gz + +# Hashes for license files +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING.LIB +sha256 f3b7f3e4426b1fa6f60198dae7adfedd94b77b28db2d108adc0253575011e0ff COPYING.LIBGLOSS +sha256 422aa40293093fb54fc66e692a0d68fd0b24ed5602e5d1d33ad05ba3909057e9 COPYING.NEWLIB diff --git a/package/newlib-bare-metal/newlib-bare-metal.mk b/package/newlib-bare-metal/newlib-bare-metal.mk new file mode 100644 index 0000000000..a0a22bd6d9 --- /dev/null +++ b/package/newlib-bare-metal/newlib-bare-metal.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# newlib-bare-metal +# +################################################################################ + +HOST_NEWLIB_BARE_METAL_VERSION = $(call qstrip,$(BR2_PACKAGE_HOST_NEWLIB_BARE_METAL_VERSION)) +ifeq ($(HOST_NEWLIB_BARE_METAL_VERSION),) +HOST_NEWLIB_BARE_METAL_VERSION = 4.1.0 +endif + +HOST_NEWLIB_BARE_METAL_SITE ?= ftp://sourceware.org/pub/newlib +HOST_NEWLIB_BARE_METAL_SOURCE ?= newlib-$(HOST_NEWLIB_BARE_METAL_VERSION).tar.gz +HOST_NEWLIB_BARE_METAL_EXTRA_CONFIG_OPTIONS = $(call qstrip,$(BR2_PACKAGE_HOST_NEWLIB_BARE_METAL_EXTRA_CONFIG_OPTIONS)) +HOST_NEWLIB_BARE_METAL_DEPENDENCIES = host-gcc-bare-metal + +HOST_NEWLIB_BARE_METAL_CONF_OPTS = \ + --target=$(BR2_PACKAGE_HOST_TOOLCHAIN_BARE_METAL_ARCH)-elf \ + CC_FOR_TARGET=$(HOST_DIR)/bin/$(BR2_PACKAGE_HOST_TOOLCHAIN_BARE_METAL_ARCH)-elf-gcc \ + AR_FOR_TARGET=$(HOST_DIR)/bin/$(BR2_PACKAGE_HOST_TOOLCHAIN_BARE_METAL_ARCH)-elf-ar \ + RANLIB_FOR_TARGET=$(HOST_DIR)/bin/$(BR2_PACKAGE_HOST_TOOLCHAIN_BARE_METAL_ARCH)-elf-ranlib \ + --enable-newlib-io-c99-formats \ + --enable-newlib-io-long-long \ + --enable-newlib-io-float \ + --enable-newlib-io-long-double \ + --disable-multilib \ + $(NEWLIB_BARE_METAL_EXTRA_CONFIG_OPTIONS) + +$(eval $(host-autotools-package))