[Buildroot] [PATCH v8 02/10] package/gcc-bare-metal: new package
Neal Frager
neal.frager at amd.com
Mon Dec 4 07:34:34 UTC 2023
This patch adds a new package for building gcc 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 <ibai.erkiaga-elorza at amd.com>
Signed-off-by: Neal Frager <neal.frager at amd.com>
---
V1->V2:
- removed default enable to be replaced with toolchain select config
V2->V3:
- no changes
V3->V4:
- split tar instruction into multiple lines
- replaced unnecessary =? with = for assignments
- changed xlnx-rel-v2023.1.tar.gz hash to sha256
- improved menuconfig help comment
V4->V5:
- moved to upstream gcc without any xilinx patches
- reduced all lines to <80 chars
- added license files
V5->V6:
- migrated to toolchain-bare-metal-buildroot
V6->V7:
- removed Config.in and hard-coded version
- added sysroot for newlib install
V7->V8:
- no changes
---
DEVELOPERS | 2 +
package/gcc-bare-metal/13.2.0 | 1 +
package/gcc-bare-metal/gcc-bare-metal.hash | 1 +
package/gcc-bare-metal/gcc-bare-metal.mk | 67 ++++++++++++++++++++++
4 files changed, 71 insertions(+)
create mode 120000 package/gcc-bare-metal/13.2.0
create mode 120000 package/gcc-bare-metal/gcc-bare-metal.hash
create mode 100644 package/gcc-bare-metal/gcc-bare-metal.mk
diff --git a/DEVELOPERS b/DEVELOPERS
index d06b280500..fdfd30fb6f 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -1383,6 +1383,7 @@ F: package/python-rpi-gpio/
N: Ibai Erkiaga <ibai.erkiaga-elorza at amd.com>
F: package/binutils-bare-metal/
+F: package/gcc-bare-metal/
N: Ignacy Gawędzki <ignacy.gawedzki at green-communications.fr>
F: package/angularjs/
@@ -2219,6 +2220,7 @@ F: configs/zynqmp_zcu102_defconfig
F: configs/zynqmp_zcu106_defconfig
F: package/binutils-bare-metal/
F: package/bootgen/
+F: package/gcc-bare-metal/
F: package/versal-firmware/
N: Nicola Di Lieto <nicola.dilieto at gmail.com>
diff --git a/package/gcc-bare-metal/13.2.0 b/package/gcc-bare-metal/13.2.0
new file mode 120000
index 0000000000..b7a75dc7dd
--- /dev/null
+++ b/package/gcc-bare-metal/13.2.0
@@ -0,0 +1 @@
+../gcc/13.2.0/
\ No newline at end of file
diff --git a/package/gcc-bare-metal/gcc-bare-metal.hash b/package/gcc-bare-metal/gcc-bare-metal.hash
new file mode 120000
index 0000000000..d417b0dc77
--- /dev/null
+++ b/package/gcc-bare-metal/gcc-bare-metal.hash
@@ -0,0 +1 @@
+../gcc/gcc.hash
\ No newline at end of file
diff --git a/package/gcc-bare-metal/gcc-bare-metal.mk b/package/gcc-bare-metal/gcc-bare-metal.mk
new file mode 100644
index 0000000000..28baacdaaa
--- /dev/null
+++ b/package/gcc-bare-metal/gcc-bare-metal.mk
@@ -0,0 +1,67 @@
+################################################################################
+#
+# gcc-bare-metal
+#
+################################################################################
+
+HOST_GCC_BARE_METAL_VERSION = 13.2.0
+
+HOST_GCC_BARE_METAL_SITE = \
+ https://ftp.gnu.org/gnu/gcc/gcc-$(HOST_GCC_BARE_METAL_VERSION)
+HOST_GCC_BARE_METAL_SOURCE = gcc-$(HOST_GCC_BARE_METAL_VERSION).tar.xz
+
+HOST_GCC_BARE_METAL_LICENSE = GPL-2.0, GPL-3.0, LGPL-2.1, LGPL-3.0
+HOST_GCC_BARE_METAL_LICENSE_FILES = COPYING COPYING3 COPYING.LIB COPYING3.LIB
+
+HOST_GCC_BARE_METAL_DEPENDENCIES = \
+ host-binutils-bare-metal \
+ host-gmp \
+ host-mpc \
+ host-mpfr \
+ host-isl
+
+# gcc doesn't support in-tree build, so we create a 'build'
+# subdirectory in the gcc sources, and build from there.
+define GCC_BARE_METAL_CONFIGURE_SYMLINK
+ mkdir -p $(@D)/build
+ ln -sf ../configure $(@D)/build/configure
+endef
+
+HOST_GCC_BARE_METAL_PRE_CONFIGURE_HOOKS += GCC_BARE_METAL_CONFIGURE_SYMLINK
+HOST_GCC_BARE_METAL_SUBDIR = build
+
+HOST_GCC_BARE_METAL_MAKE_OPTS = \
+ $(HOST_GCC_COMMON_MAKE_OPTS) \
+ all-gcc \
+ all-target-libgcc
+
+HOST_GCC_BARE_METAL_INSTALL_OPTS = install-gcc install-target-libgcc
+
+HOST_GCC_BARE_METAL_ARCH = \
+ $(call qstrip,$(BR2_TOOLCHAIN_BARE_METAL_BUILDROOT_ARCH))
+
+HOST_GCC_BARE_METAL_SYSROOT = $(HOST_DIR)/$(HOST_GCC_BARE_METAL_ARCH)/sysroot
+
+HOST_GCC_BARE_METAL_CONF_OPTS = \
+ --target=$(HOST_GCC_BARE_METAL_ARCH) \
+ --disable-initfini_array \
+ --disable-__cxa_atexit \
+ --disable-libstdcxx-pch \
+ --with-newlib \
+ --disable-threads \
+ --enable-plugins \
+ --with-gnu-as \
+ --disable-libitm \
+ --without-long-double-128 \
+ --without-headers \
+ --enable-languages=c \
+ --disable-multilib \
+ --with-gmp=$(HOST_DIR) \
+ --with-mpc=$(HOST_DIR) \
+ --with-mpfr=$(HOST_DIR) \
+ --with-isl=$(HOST_DIR) \
+ --with-sysroot=$(HOST_GCC_BARE_METAL_SYSROOT) \
+ AR_FOR_TARGET=$(HOST_DIR)/bin/$(HOST_GCC_BARE_METAL_ARCH)-ar \
+ RANLIB_FOR_TARGET=$(HOST_DIR)/bin/$(HOST_GCC_BARE_METAL_ARCH)-ranlib
+
+$(eval $(host-autotools-package))
--
2.25.1
More information about the buildroot
mailing list