From f12a07b64ef51d7e34edb8e53bb6426098138b2e Mon Sep 17 00:00:00 2001 From: Abdoulaye Walsimou Gaye Date: Wed, 19 Aug 2009 16:38:06 +0200 Subject: Toolchain: arm: Initial work to support multilib Signed-off-by: Abdoulaye Walsimou Gaye --- kconfig/arch-variant.kconfig | 27 +++++++++++++++++++-------- mk/arm-arch.mk | 17 ++++++++++++++++- mk/eglibc.mk | 6 +++++- mk/gcc.mk | 4 ++-- 4 files changed, 42 insertions(+), 12 deletions(-) diff --git a/kconfig/arch-variant.kconfig b/kconfig/arch-variant.kconfig index 6f4f878..2c810ac 100644 --- a/kconfig/arch-variant.kconfig +++ b/kconfig/arch-variant.kconfig @@ -353,17 +353,28 @@ config EMBTK_ARM_MCU_STRING config EMBTK_TOOLCHAIN_MULTILIB default n - bool "Build multilib toolchain" + bool "Build multilib toolchain (not supported yet)" help - You can say yes here, to specify that multiple target libraries to support - different target variants, calling conventions, etc. should be built. - It is safe to say no here. + You can say yes here, to specify that multiple target libraries to + support different target variants, calling conventions, etc. should be + built. It is safe to say no here. + +choice + prompt "Floating point type" + help + Select the floating point type you want to use. config EMBTK_SOFTFLOAT - default y bool "Soft floating point" help - Select if your CPU has a hardware floating point unit. - If you say no here, your toolchain will be built without - software floating point. + Select if your CPU has a hardware floating point unit. + If you say no here, your toolchain will be built without + software floating point. +config EMBTK_HARDFLOAT + bool "Hard floating point" + help + Select if your CPU has a hardware floating point unit. + If you say no here, your toolchain will be built without + hardware floating point. +endchoice diff --git a/mk/arm-arch.mk b/mk/arm-arch.mk index 419652c..1b9e118 100644 --- a/mk/arm-arch.mk +++ b/mk/arm-arch.mk @@ -27,6 +27,10 @@ LINUX_ARCH := arm GNU_TARGET_ARCH := arm EMBTK_MCU_FLAG := $(subst ",,$(strip $(CONFIG_EMBTK_ARM_MCU_STRING))) +ifeq ($(CONFIG_EMBTK_TOOLCHAIN_MULTILIB),y) +GNU_TARGET := arm-linux +STRICT_GNU_TARGET := arm-unknown-linux-gnueabi +else ifeq ($(CONFIG_EMBTK_ARCH_ARM_BIG_ENDIAN),y) GNU_TARGET := armeb-linux STRICT_GNU_TARGET := armeb-unknown-linux-gnueabi @@ -34,21 +38,32 @@ else GNU_TARGET := armel-linux STRICT_GNU_TARGET := armel-unknown-linux-gnueabi endif +endif #GCC configure options +ifeq ($(CONFIG_EMBTK_TOOLCHAIN_MULTILIB),y) +GCC_WITH_CPU := +else GCC_WITH_CPU := --with-cpu=$(subst ",,$(strip $(CONFIG_EMBTK_ARM_MCU_STRING))) +endif #GCC extra configure options for arm ifeq ($(CONFIG_EMBTK_GCC_LANGUAGE_JAVA),y) GCC3_CONFIGURE_EXTRA_OPTIONS += --enable-sjlj-exceptions endif -#Hard or soft floating point + +#Does multilib selected? +ifeq ($(CONFIG_EMBTK_TOOLCHAIN_MULTILIB),y) +EMBTK_TARGET_FLOAT_CFLAGS := +else +#Hard or soft floating point? ifeq ($(CONFIG_EMBTK_SOFTFLOAT),y) EMBTK_TARGET_FLOAT_CFLAGS := -mfloat-abi=soft else EMBTK_TARGET_FLOAT_CFLAGS := -mfloat-abi=hard endif +endif endif diff --git a/mk/eglibc.mk b/mk/eglibc.mk index fdd9ccb..c192ffd 100644 --- a/mk/eglibc.mk +++ b/mk/eglibc.mk @@ -31,12 +31,16 @@ EGLIBC_PACKAGE := eglibc-$(EGLIBC_VERSION).tar.bz2 EGLIBC_HEADERS_BUILD_DIR := $(TOOLS_BUILD)/eglibc-headers EGLIBC_BUILD_DIR := $(TOOLS_BUILD)/eglibc -#Hard or soft floating point in eglibc +ifeq ($(CONFIG_EMBTK_TOOLCHAIN_MULTILIB),y) +EGLIBC_FLOAT_TYPE := +else +#Hard or soft floating point in eglibc? ifeq ($(CONFIG_EMBTK_SOFTFLOAT),y) EGLIBC_FLOAT_TYPE := --with-fp=no else EGLIBC_FLOAT_TYPE := --with-fp=yes endif +endif #EGLIBC options include $(EMBTK_ROOT)/mk/eglibc-options-parse.mk diff --git a/mk/gcc.mk b/mk/gcc.mk index e49a541..d02f142 100644 --- a/mk/gcc.mk +++ b/mk/gcc.mk @@ -36,16 +36,16 @@ GCC3_BUILD_DIR := $(TOOLS_BUILD)/gcc3 #Multilib or not? ifeq ($(CONFIG_EMBTK_TOOLCHAIN_MULTILIB),y) GCC_MULTILIB := +GCC_WITH_FLOAT := else GCC_MULTILIB := --disable-multilib -endif - #Hard or soft floating point for GCC? ifeq ($(CONFIG_EMBTK_SOFTFLOAT),y) GCC_WITH_FLOAT := --with-float=soft else GCC_WITH_FLOAT := --with-float=hard endif +endif GCC_LANGUAGES =c ifeq ($(CONFIG_EMBTK_GCC_LANGUAGE_CPP),y) -- cgit v1.2.3