From 7b7a4be0e1d59b9218b6145331c700ac8199e24e Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sat, 22 Aug 2009 01:12:02 +0200 Subject: external toolchains: take into account architecture variant Until now, many TARGET_CFLAGS where missing when using an external toolchain, due to how package/Makefile.in was written. Now, a lot more definitions are common between the Buildroot toolchain case and the external toolchain case. Signed-off-by: Thomas Petazzoni --- package/Makefile.in | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'package') diff --git a/package/Makefile.in b/package/Makefile.in index 983caf38e..3dfc712da 100644 --- a/package/Makefile.in +++ b/package/Makefile.in @@ -34,16 +34,7 @@ ifeq ($(BR2_DEBUG_3),y) TARGET_DEBUGGING=-g3 endif - -######################################################################### -ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y) -TARGET_CFLAGS=$(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING) \ - -I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include -TARGET_LDFLAGS+=-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib -ifeq ($(BR2_TOOLCHAIN_SYSROOT),y) -TARGET_CFLAGS+= $(BR2_SYSROOT) $(BR2_ISYSROOT) -TARGET_LDFLAGS+= $(BR2_SYSROOT) -endif +TARGET_CFLAGS=$(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING) CC_TARGET_TUNE_:=$(call qstrip,$(BR2_GCC_TARGET_TUNE)) CC_TARGET_ARCH_:=$(call qstrip,$(BR2_GCC_TARGET_ARCH)) @@ -86,11 +77,20 @@ ifeq ($(BR2_LARGEFILE),y) TARGET_CFLAGS+=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 endif + +######################################################################### +ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y) +TARGET_CFLAGS+=-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include +TARGET_LDFLAGS+=-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib TARGET_CXXFLAGS=$(TARGET_CFLAGS) +ifeq ($(BR2_TOOLCHAIN_SYSROOT),y) +TARGET_CFLAGS+= $(BR2_SYSROOT) $(BR2_ISYSROOT) +TARGET_LDFLAGS+= $(BR2_SYSROOT) +endif ######################################################################### else ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y) -TARGET_CFLAGS=$(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING) --sysroot $(STAGING_DIR)/ +TARGET_CFLAGS+=--sysroot $(STAGING_DIR)/ TARGET_CXXFLAGS=$(TARGET_CFLAGS) TARGET_LDFLAGS=--sysroot $(STAGING_DIR)/ endif -- cgit v1.2.3 From 55098e50488eeb163af8f63445bd3e7c52850410 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Thu, 17 Dec 2009 20:57:13 +0100 Subject: busybox: make sure architecture flags are used at link time 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 --- package/busybox/busybox-1.13.x.config | 1 + package/busybox/busybox.mk | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) (limited to 'package') diff --git a/package/busybox/busybox-1.13.x.config b/package/busybox/busybox-1.13.x.config index ee591627b..059a0b3a3 100644 --- a/package/busybox/busybox-1.13.x.config +++ b/package/busybox/busybox-1.13.x.config @@ -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 diff --git a/package/busybox/busybox.mk b/package/busybox/busybox.mk index c93f33a01..05a6d941c 100644 --- a/package/busybox/busybox.mk +++ b/package/busybox/busybox.mk @@ -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 -- cgit v1.2.3