[Buildroot] [PATCH] Reduce need for BR2_HOSTARCH_NEEDS_IA32_COMPILER
Chris Lesiak
chris.lesiak at licor.com
Fri May 9 13:51:55 UTC 2014
Reduce need for BR2_HOSTARCH_NEEDS_IA32_COMPILER
When building grub and syslinux, the 32-bit host compiler is only
needed when building for 64-bit target. For 32-bit targets, the
target compiler will work.
This change makes it less likely that a mulilib host is needed.
Signed-off-by: Chris Lesiak <chris.lesiak at licor.com>
---
boot/grub/Config.in | 2 +-
boot/grub/grub.mk | 6 ++++++
boot/syslinux/Config.in | 2 +-
boot/syslinux/syslinux.mk | 18 ++++++++++++++----
4 files changed, 22 insertions(+), 6 deletions(-)
diff --git a/boot/grub/Config.in b/boot/grub/Config.in
index 4db8642..86e1753 100644
--- a/boot/grub/Config.in
+++ b/boot/grub/Config.in
@@ -1,7 +1,7 @@
config BR2_TARGET_GRUB
bool "grub"
depends on BR2_i386 || BR2_x86_64
- select BR2_HOSTARCH_NEEDS_IA32_COMPILER
+ select BR2_HOSTARCH_NEEDS_IA32_COMPILER if BR2_ARCH_IS_64
help
The GRand Unified Bootloader for x86 systems.
diff --git a/boot/grub/grub.mk b/boot/grub/grub.mk
index dc11307..8c02fe3 100644
--- a/boot/grub/grub.mk
+++ b/boot/grub/grub.mk
@@ -71,9 +71,15 @@ endef
GRUB_POST_PATCH_HOOKS += GRUB_DEBIAN_PATCHES
+ifeq ($(BR2_HOSTARCH_NEEDS_IA32_COMPILER),y)
GRUB_CONF_ENV = \
$(HOST_CONFIGURE_OPTS) \
CFLAGS="$(HOST_CFLAGS) $(GRUB_CFLAGS) -m32"
+else
+GRUB_CONF_ENV = \
+ $(TARGET_CONFIGURE_OPTS) \
+ CFLAGS="$(TARGET_CFLAGS) $(GRUB_CFLAGS)"
+endif
GRUB_CONF_OPT = \
--disable-auto-linux-mem-opt \
diff --git a/boot/syslinux/Config.in b/boot/syslinux/Config.in
index f4b9870..8d32214 100644
--- a/boot/syslinux/Config.in
+++ b/boot/syslinux/Config.in
@@ -1,7 +1,7 @@
config BR2_TARGET_SYSLINUX
bool "syslinux"
depends on BR2_i386 || BR2_x86_64
- select BR2_HOSTARCH_NEEDS_IA32_COMPILER
+ select BR2_HOSTARCH_NEEDS_IA32_COMPILER if BR2_ARCH_IS_64
help
The syslinux bootloader for x86 systems.
This includes: syslinux, pxelinux, extlinux.
diff --git a/boot/syslinux/syslinux.mk b/boot/syslinux/syslinux.mk
index 51b6417..c20a817 100644
--- a/boot/syslinux/syslinux.mk
+++ b/boot/syslinux/syslinux.mk
@@ -39,12 +39,22 @@ define SYSLINUX_CLEANUP
endef
SYSLINUX_POST_PATCH_HOOKS += SYSLINUX_CLEANUP
+ifeq ($(BR2_HOSTARCH_NEEDS_IA32_COMPILER),y)
+ SYSLINUX_CC = $(HOSTCC)
+ SYSLINUX_LDFLAGS = $(HOST_LDFLAGS)
+ SYSLINUX_AR = $(HOSTAR)
+else
+ SYSLINUX_CC = $(TARGET_CC)
+ SYSLINUX_LDFLAGS = $(TARGET_LDFLAGS)
+ SYSLINUX_AR = $(TARGET_AR)
+endif
+
# syslinux build system has no convenient way to pass CFLAGS,
# and the internal zlib should take precedence so -I shouldn't
# be used.
define SYSLINUX_BUILD_CMDS
- $(TARGET_MAKE_ENV) $(MAKE1) CC="$(HOSTCC) -idirafter $(HOST_DIR)/usr/include $(HOST_LDFLAGS)" \
- AR="$(HOSTAR)" SYSROOT=$(STAGING_DIR) -C $(@D) $(SYSLINUX_TARGET)
+ $(TARGET_MAKE_ENV) $(MAKE1) CC="$(SYSLINUX_CC) -idirafter $(HOST_DIR)/usr/include $(SYSLINUX_LDFLAGS)" \
+ AR="$(SYSLINUX_AR)" SYSROOT=$(STAGING_DIR) -C $(@D) $(SYSLINUX_TARGET)
endef
# While the actual bootloader is compiled for the target, several
@@ -53,8 +63,8 @@ endef
# Repeat CC and AR, since syslinux really wants to check them at
# install time
define SYSLINUX_INSTALL_TARGET_CMDS
- $(TARGET_MAKE_ENV) $(MAKE1) CC="$(HOSTCC) -idirafter $(HOST_DIR)/usr/include $(HOST_LDFLAGS)" \
- AR="$(HOSTAR)" SYSROOT=$(STAGING_DIR) INSTALLROOT=$(HOST_DIR) \
+ $(TARGET_MAKE_ENV) $(MAKE1) CC="$(SYSLINUX_CC) -idirafter $(HOST_DIR)/usr/include $(SYSLINUX_LDFLAGS)" \
+ AR="$(SYSLINUX_AR)" SYSROOT=$(STAGING_DIR) INSTALLROOT=$(HOST_DIR) \
-C $(@D) $(SYSLINUX_TARGET) install
endef
--
1.9.0
More information about the buildroot
mailing list