Files
buildroot/package/gcc-bare-metal/gcc-bare-metal.mk
Neal Frager f2c9457819 toolchain/toolchain-bare-metal-buildroot: add multilib option
Sometimes the default GCC and newlib libraries built for a given
architecture tuple are not based on the desired ABI. Since ABI definitions are
different between architectures, the simplest solution is to allow users to
build bare-metal toolchains with --enable-multilib. This way, the libraries
for every available ABI will be built and users will be able to select the
desired library for their user applications.

This patch adds the option BR2_TOOLCHAIN_BARE_METAL_BUILDROOT_MULTILIB to give
users the choice to enable multilib, if desired.

Please note that when using a string of architecture tuples, this option will
apply to all architectures in the string, so it can significantly increase
build time.

Signed-off-by: Neal Frager <neal.frager@amd.com>
Reviewed-by: Jesse Taube <Mr.Bossman075@gmail.com>
Signed-off-by: Julien Olivain <ju.o@free.fr>
2025-09-24 21:45:03 +02:00

97 lines
2.7 KiB
Makefile

################################################################################
#
# gcc-bare-metal
#
################################################################################
GCC_BARE_METAL_VERSION = 15.2.0
GCC_BARE_METAL_SITE = $(BR2_GNU_MIRROR)/gcc/gcc-$(GCC_BARE_METAL_VERSION)
GCC_BARE_METAL_SOURCE = gcc-$(GCC_BARE_METAL_VERSION).tar.xz
GCC_BARE_METAL_LICENSE = GPL-2.0, GPL-3.0, LGPL-2.1, LGPL-3.0
GCC_BARE_METAL_LICENSE_FILES = COPYING COPYING3 COPYING.LIB COPYING3.LIB
GCC_BARE_METAL_CPE_ID_VENDOR = gnu
GCC_BARE_METAL_CPE_ID_PRODUCT = gcc
HOST_GCC_BARE_METAL_DEPENDENCIES = \
host-binutils-bare-metal \
host-gmp \
host-mpc \
host-mpfr \
host-isl
# Don't build documentation. It takes up extra space / build time,
# and sometimes needs specific makeinfo versions to work
HOST_GCC_BARE_METAL_CONF_ENV = MAKEINFO=missing
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
ifeq ($(BR2_TOOLCHAIN_BARE_METAL_BUILDROOT_MULTILIB),y)
HOST_GCC_BARE_METAL_MULTILIB = "--enable-multilib"
else
HOST_GCC_BARE_METAL_MULTILIB = "--disable-multilib"
endif
HOST_GCC_BARE_METAL_CONF_OPTS = \
--prefix=$(HOST_DIR) \
--sysconfdir=$(HOST_DIR)/etc \
--localstatedir=$(HOST_DIR)/var \
$(if $$($$(PKG)_OVERRIDE_SRCDIR),,--disable-dependency-tracking) \
$(QUIET) \
--disable-shared \
--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 \
$(HOST_GCC_BARE_METAL_MULTILIB) \
--with-gmp=$(HOST_DIR) \
--with-mpc=$(HOST_DIR) \
--with-mpfr=$(HOST_DIR) \
--with-isl=$(HOST_DIR)
define HOST_GCC_BARE_METAL_CONFIGURE_CMDS
$(foreach arch_tuple, $(TOOLCHAIN_BARE_METAL_BUILDROOT_ARCH_TUPLE), \
mkdir -p $(@D)/build-$(arch_tuple) && \
cd $(@D)/build-$(arch_tuple) && \
$(HOST_CONFIGURE_OPTS) \
$(HOST_GCC_BARE_METAL_CONF_ENV) \
CONFIG_SITE=/dev/null \
$(@D)/configure \
$(HOST_GCC_BARE_METAL_CONF_OPTS) \
--target=$(arch_tuple) \
--with-sysroot=$(HOST_DIR)/$(arch_tuple)/sysroot \
AR_FOR_TARGET=$(HOST_DIR)/bin/$(arch_tuple)-ar \
RANLIB_FOR_TARGET=$(HOST_DIR)/bin/$(arch_tuple)-ranlib
)
endef
define HOST_GCC_BARE_METAL_BUILD_CMDS
$(foreach arch_tuple, $(TOOLCHAIN_BARE_METAL_BUILDROOT_ARCH_TUPLE), \
$(HOST_MAKE_ENV) $(MAKE) \
$(HOST_GCC_BARE_METAL_MAKE_OPTS) \
-C $(@D)/build-$(arch_tuple)
)
endef
define HOST_GCC_BARE_METAL_INSTALL_CMDS
$(foreach arch_tuple, $(TOOLCHAIN_BARE_METAL_BUILDROOT_ARCH_TUPLE), \
$(HOST_MAKE_ENV) $(MAKE) \
$(HOST_GCC_BARE_METAL_INSTALL_OPTS) \
-C $(@D)/build-$(arch_tuple)
)
endef
$(eval $(host-autotools-package))