busybox: make sure architecture flags are used at link time
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Thu, 17 Dec 2009 19:57:13 +0000 (20:57 +0100)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Sat, 17 Apr 2010 00:10:58 +0000 (02:10 +0200)
When compiling Busybox, according to readelf -A, all object files were
properly compiled according to the select architecture (-march=armv4t
for example), but the final busybox binary could be of a different
architecture (ARMv5t even if ARMv4t was selected).

This patch changes the way we configure/compile Busybox so that our
CFLAGS aren't anymore passed through the make EXTRA_CFLAGS variable,
but through the .config CONFIG_EXTRA_CFLAGS variable. Unfortunately,
those variables don't have exactly the same semantic for the Busybox
build system.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
package/busybox/busybox-1.13.x.config
package/busybox/busybox.mk

index ee591627b228b0866bad69a1000e5f18f280224d..059a0b3a303a9d0abefd1049f7d2e76848ca9066 100644 (file)
@@ -47,6 +47,7 @@ CONFIG_FEATURE_SYSLOG=y
 # CONFIG_FEATURE_SHARED_BUSYBOX is not set
 # CONFIG_LFS is not set
 CONFIG_CROSS_COMPILER_PREFIX=""
+CONFIG_EXTRA_CFLAGS=""
 
 #
 # Debugging Options
index c93f33a01e06d7ce61474bfaefb7f0767f1bc3a6..05a6d941c123c232b3c020a0b6567e48b267b4d7 100644 (file)
@@ -45,6 +45,8 @@ $(BUSYBOX_DIR)/.config: $(BUSYBOX_DIR)/.unpacked $(BUSYBOX_CONFIG_FILE)
        cp -f $(BUSYBOX_CONFIG_FILE) $(BUSYBOX_DIR)/.config
        $(SED) s,^CONFIG_PREFIX=.*,CONFIG_PREFIX=\"$(TARGET_DIR)\", \
                $(BUSYBOX_DIR)/.config
+       $(SED) 's,^CONFIG_EXTRA_CFLAGS=.*,CONFIG_EXTRA_CFLAGS=\"$(BUSYBOX_CFLAGS)\",' \
+               $(BUSYBOX_DIR)/.config
 # id applet breaks on >=1.13.0 with old uclibc unless the bb pwd routines are used
 ifeq ($(BR2_BUSYBOX_VERSION_1_13_X)$(BR2_BUSYBOX_VERSION_1_14_X)$(BR2_UCLIBC_VERSION_0_9_28_3)$(BR2_UCLIBC_VERSION_0_9_29),yy)
        if grep -q 'CONFIG_ID=y' $(BUSYBOX_DIR)/.config; \
@@ -105,15 +107,13 @@ endif
 $(BUSYBOX_DIR)/busybox: $(BUSYBOX_DIR)/.config
        $(MAKE) CC=$(TARGET_CC) CROSS_COMPILE="$(TARGET_CROSS)" \
                CROSS="$(TARGET_CROSS)" PREFIX="$(TARGET_DIR)" \
-               ARCH=$(KERNEL_ARCH) \
-               EXTRA_CFLAGS="$(BUSYBOX_CFLAGS)" -C $(BUSYBOX_DIR)
+               ARCH=$(KERNEL_ARCH) -C $(BUSYBOX_DIR)
 
 $(TARGET_DIR)/bin/busybox: $(BUSYBOX_DIR)/busybox
 ifeq ($(BR2_PACKAGE_BUSYBOX_FULLINSTALL),y)
        $(MAKE) CC=$(TARGET_CC) CROSS_COMPILE="$(TARGET_CROSS)" \
                CROSS="$(TARGET_CROSS)" PREFIX="$(TARGET_DIR)" \
-               ARCH=$(KERNEL_ARCH) \
-               EXTRA_CFLAGS="$(BUSYBOX_CFLAGS)" -C $(BUSYBOX_DIR) install
+               ARCH=$(KERNEL_ARCH) -C $(BUSYBOX_DIR) install
 else
        install -D -m 0755 $(BUSYBOX_DIR)/busybox $(TARGET_DIR)/bin/busybox
 endif