diff --git a/package/binutils-bare-metal/binutils-bare-metal.mk b/package/binutils-bare-metal/binutils-bare-metal.mk index 709d072765..bb04b79c2f 100644 --- a/package/binutils-bare-metal/binutils-bare-metal.mk +++ b/package/binutils-bare-metal/binutils-bare-metal.mk @@ -21,6 +21,12 @@ HOST_BINUTILS_BARE_METAL_CONF_ENV += MAKEINFO=true HOST_BINUTILS_BARE_METAL_MAKE_OPTS += MAKEINFO=true HOST_BINUTILS_BARE_METAL_INSTALL_OPTS += MAKEINFO=true install +ifeq ($(BR2_TOOLCHAIN_BARE_METAL_BUILDROOT_MULTILIB),y) +HOST_BINUTILS_BARE_METAL_MULTILIB = "--enable-multilib" +else +HOST_BINUTILS_BARE_METAL_MULTILIB = "--disable-multilib" +endif + HOST_BINUTILS_BARE_METAL_CONF_OPTS = \ --prefix=$(HOST_DIR) \ --sysconfdir=$(HOST_DIR)/etc \ @@ -31,7 +37,7 @@ HOST_BINUTILS_BARE_METAL_CONF_OPTS = \ --disable-shared \ --enable-lto \ --disable-initfini-array \ - --disable-multilib \ + $(HOST_BINUTILS_BARE_METAL_MULTILIB) \ --disable-werror define HOST_BINUTILS_BARE_METAL_CONFIGURE_CMDS diff --git a/package/gcc-bare-metal/gcc-bare-metal.mk b/package/gcc-bare-metal/gcc-bare-metal.mk index 88fc56ac09..6c2c8a5e26 100644 --- a/package/gcc-bare-metal/gcc-bare-metal.mk +++ b/package/gcc-bare-metal/gcc-bare-metal.mk @@ -31,6 +31,12 @@ HOST_GCC_BARE_METAL_MAKE_OPTS = \ 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 \ @@ -49,7 +55,7 @@ HOST_GCC_BARE_METAL_CONF_OPTS = \ --without-long-double-128 \ --without-headers \ --enable-languages=c \ - --disable-multilib \ + $(HOST_GCC_BARE_METAL_MULTILIB) \ --with-gmp=$(HOST_DIR) \ --with-mpc=$(HOST_DIR) \ --with-mpfr=$(HOST_DIR) \ diff --git a/package/newlib-bare-metal/newlib-bare-metal.mk b/package/newlib-bare-metal/newlib-bare-metal.mk index bd740046c9..f1e54d6f9e 100644 --- a/package/newlib-bare-metal/newlib-bare-metal.mk +++ b/package/newlib-bare-metal/newlib-bare-metal.mk @@ -22,6 +22,12 @@ NEWLIB_BARE_METAL_INSTALL_STAGING = YES NEWLIB_BARE_METAL_INSTALL_TARGET = NO NEWLIB_BARE_METAL_MAKE_OPTS = MAKEINFO=true +ifeq ($(BR2_TOOLCHAIN_BARE_METAL_BUILDROOT_MULTILIB),y) +NEWLIB_BARE_METAL_MULTILIB = "--enable-multilib" +else +NEWLIB_BARE_METAL_MULTILIB = "--disable-multilib" +endif + NEWLIB_BARE_METAL_CONF_OPTS = \ --build=$(GNU_HOST_NAME) \ --prefix=/usr \ @@ -35,7 +41,7 @@ NEWLIB_BARE_METAL_CONF_OPTS = \ --enable-newlib-io-long-long \ --enable-newlib-io-float \ --enable-newlib-io-long-double \ - --disable-multilib \ + $(NEWLIB_BARE_METAL_MULTILIB) \ --with-tooldir=/usr define NEWLIB_BARE_METAL_CONFIGURE_CMDS diff --git a/toolchain/toolchain-bare-metal-buildroot/Config.in b/toolchain/toolchain-bare-metal-buildroot/Config.in index 19c97410c6..7ba579b570 100644 --- a/toolchain/toolchain-bare-metal-buildroot/Config.in +++ b/toolchain/toolchain-bare-metal-buildroot/Config.in @@ -12,6 +12,20 @@ config BR2_TOOLCHAIN_BARE_METAL_BUILDROOT_ARCH metal toolchain, use the following definition: "microblazeel-buildroot-elf riscv32-buildroot-elf" +config BR2_TOOLCHAIN_BARE_METAL_BUILDROOT_MULTILIB + bool "Enable multilib" + help + Sometimes the default GCC and newlib libraries for a given + architecture are not the desired ABI. Since ABI + definitions are different for each architecture, this + option will enable multilib configuration, so that all + available ABI libraries are built which will guarantee + that the desired version will be available for user + applications. + + When enabled, this option will apply to all architecture + tuples in the list. + source "package/newlib-bare-metal/Config.in" endif # BR2_TOOLCHAIN_BARE_METAL_BUILDROOT