diff options
author | Thomas Petazzoni <thomas.petazzoni@free-electrons.com> | 2013-11-11 17:47:25 +0100 |
---|---|---|
committer | Peter Korsgaard <peter@korsgaard.com> | 2013-12-01 23:30:58 +0100 |
commit | 0e4bc50210028736d86aa34dbe6da8655b2999da (patch) | |
tree | 828328cdb0dd216b966fc6b2a299f9aa12adb439 | |
parent | 971795f55ac4dd1e363762e5b2ef4e1c5f7d4952 (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.in | 6 | ||||
-rwxr-xr-x | support/dependencies/dependencies.sh | 9 |
2 files changed, 15 insertions, 0 deletions
@@ -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 |