summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>2013-11-11 17:47:25 +0100
committerPeter Korsgaard <peter@korsgaard.com>2013-12-01 23:30:58 +0100
commit0e4bc50210028736d86aa34dbe6da8655b2999da (patch)
tree828328cdb0dd216b966fc6b2a299f9aa12adb439
parent971795f55ac4dd1e363762e5b2ef4e1c5f7d4952 (diff)
core: add BR2_HOSTARCH_NEEDS_IA32_COMPILER option
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@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
-rw-r--r--Config.in6
-rwxr-xr-xsupport/dependencies/dependencies.sh9
2 files changed, 15 insertions, 0 deletions
diff --git a/Config.in b/Config.in
index d87e0f0c5..677fff620 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 b563f6096..32b8feac5 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