[Buildroot] [PATCH 01/15] core: add BR2_HOSTARCH_NEEDS_IA32_COMPILER option

Thomas Petazzoni thomas.petazzoni at free-electrons.com
Mon Nov 11 16:47:25 UTC 2013


Some bootloaders (such as Grub) need to be built for x86 (i.e IA32)
even if the target architecture is x86-64. However, when the target
architecture is x86-64, the cross-compiler generated by Buildroot is
not able to generate 32 bits code.

To solve this, we will rely on the host compiler being a x86 + x86-64
compiler. Therefore, this commit introduces the
BR2_HOSTARCH_NEEDS_IA32_COMPILER option, which tells the dependency
checking logic to verify that the host compiler is indeed capable of
building x86 32 bits code.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
---
 Config.in                            | 6 ++++++
 support/dependencies/dependencies.sh | 9 +++++++++
 2 files changed, 15 insertions(+)

diff --git a/Config.in b/Config.in
index af720ec..8716687 100644
--- a/Config.in
+++ b/Config.in
@@ -20,6 +20,12 @@ config BR2_HOSTARCH
 config BR2_HOSTARCH_NEEDS_IA32_LIBS
 	bool
 
+# Hidden boolean selected by packages that need to build 32 bits
+# binaries with the host compiler, even on 64 bits build machines (e.g
+# bootloaders).
+config BR2_HOSTARCH_NEEDS_IA32_COMPILER
+	bool
+
 source "arch/Config.in"
 
 menu "Build options"
diff --git a/support/dependencies/dependencies.sh b/support/dependencies/dependencies.sh
index b563f60..32b8fea 100755
--- a/support/dependencies/dependencies.sh
+++ b/support/dependencies/dependencies.sh
@@ -186,6 +186,15 @@ if grep -q ^BR2_HOSTARCH_NEEDS_IA32_LIBS=y $BUILDROOT_CONFIG ; then
     fi
 fi
 
+if grep -q ^BR2_HOSTARCH_NEEDS_IA32_COMPILER=y $BUILDROOT_CONFIG ; then
+    if ! echo "int main(void) {}" | gcc -m32 -x c - ; then
+	/bin/echo -e "\nYour Buildroot configuration needs a compiler capable of building 32 bits binaries."
+	/bin/echo -e "If you're running a Debian/Ubuntu distribution, install the gcc-multilib package."
+	/bin/echo -e "For other distributions, refer to their documentation."
+	exit 1
+    fi
+fi
+
 # Check that the Perl installation is complete enough to build
 # host-autoconf.
 if ! perl  -e "require Data::Dumper" > /dev/null 2>&1 ; then
-- 
1.8.1.2




More information about the buildroot mailing list