summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kconfig/arch-variant.kconfig27
-rw-r--r--mk/arm-arch.mk17
-rw-r--r--mk/eglibc.mk6
-rw-r--r--mk/gcc.mk4
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)