summaryrefslogtreecommitdiff
path: root/mk
diff options
context:
space:
mode:
authorAbdoulaye Walsimou Gaye <awg@embtoolkit.org>2012-12-15 14:38:41 +0100
committerAbdoulaye Walsimou Gaye <awg@embtoolkit.org>2012-12-15 14:38:41 +0100
commitafeb13da5a449d9f1d6d4f08fafe258dd9cac889 (patch)
treeddff4bf0672b50aeee263c3562c15616e9ca7a13 /mk
parent33f62c67ca267d94c421d03183122549edba1fa0 (diff)
downloadembtoolkit-afeb13da5a449d9f1d6d4f08fafe258dd9cac889.tar.gz
embtoolkit-afeb13da5a449d9f1d6d4f08fafe258dd9cac889.tar.bz2
embtoolkit-afeb13da5a449d9f1d6d4f08fafe258dd9cac889.tar.xz
Toolchain: build components based use of llvm/clang
Signed-off-by: Abdoulaye Walsimou Gaye <awg@embtoolkit.org>
Diffstat (limited to 'mk')
-rw-r--r--mk/toolchain.mk46
1 files changed, 42 insertions, 4 deletions
diff --git a/mk/toolchain.mk b/mk/toolchain.mk
index a8061ed..d1534d4 100644
--- a/mk/toolchain.mk
+++ b/mk/toolchain.mk
@@ -27,8 +27,25 @@ TARGETGCXX := $(embtk_tools)/bin/$(STRICT_GNU_TARGET)-g++
TARGETCLANG := $(embtk_tools)/bin/$(STRICT_GNU_TARGET)-clang
TARGETCLANGXX := $(embtk_tools)/bin/$(STRICT_GNU_TARGET)-clang++
-TARGETCC := $(TARGETGCC)
-TARGETCXX := $(TARGETGCXX)
+#
+# Default compilers to use for packages.
+#
+__TARGETCC-$(CONFIG_EMBTK_GCC_ONLY_TOOLCHAIN) := $(TARGETGCC)
+__TARGETCC-$(CONFIG_EMBTK_GCC_DEFAULT_TOOLCHAIN) := $(TARGETGCC)
+__TARGETCXX-$(CONFIG_EMBTK_GCC_ONLY_TOOLCHAIN) := $(TARGETGCXX)
+__TARGETCXX-$(CONFIG_EMBTK_GCC_DEFAULT_TOOLCHAIN) := $(TARGETGCXX)
+
+__TARGETCC-$(CONFIG_EMBTK_LLVM_ONLY_TOOLCHAIN) := $(TARGETCLANG)
+__TARGETCC-$(CONFIG_EMBTK_LLVM_DEFAULT_TOOLCHAIN) := $(TARGETCLANG)
+__TARGETCXX-$(CONFIG_EMBTK_LLVM_ONLY_TOOLCHAIN) := $(TARGETCLANGXX)
+__TARGETCXX-$(CONFIG_EMBTK_LLVM_DEFAULT_TOOLCHAIN) := $(TARGETCLANGXX)
+
+TARGETCC := $(__TARGETCC-y)
+TARGETCXX := $(__TARGETCXX-y)
+
+#
+# Some binutils components.
+#
TARGETAR := $(embtk_tools)/bin/$(STRICT_GNU_TARGET)-ar
TARGETRANLIB := $(embtk_tools)/bin/$(STRICT_GNU_TARGET)-ranlib
TARGETLD := $(embtk_tools)/bin/$(STRICT_GNU_TARGET)-ld
@@ -36,12 +53,24 @@ TARGETNM := $(embtk_tools)/bin/$(STRICT_GNU_TARGET)-nm
TARGETSTRIP := $(embtk_tools)/bin/$(STRICT_GNU_TARGET)-strip
TARGETOBJDUMP := $(embtk_tools)/bin/$(STRICT_GNU_TARGET)-objdump
TARGETOBJCOPY := $(embtk_tools)/bin/$(STRICT_GNU_TARGET)-objcopy
+
+#
+# TARGET cflags
+#
__kconfig-cflags := $(strip $(CONFIG_EMBTK_TARGET_COMPILER_CFLAGS))
__TARGET_CFLAGS := $(subst ",,$(__kconfig-cflags))
__TARGET_CFLAGS += $(if $(CONFIG_EMBTK_TARGET_NONE_OPTIMIZED),-O0)
__TARGET_CFLAGS += $(if $(CONFIG_EMBTK_TARGET_SIZE_OPTIMIZED),-Os)
__TARGET_CFLAGS += $(if $(CONFIG_EMBTK_TARGET_SPEED_OPTIMIZED),-O3)
__TARGET_CFLAGS += $(if $(CONFIG_EMBTK_TARGET_WITH_DEBUG_DATA),-g)
+
+# cflags for clang
+__clang_cflags := $(EMBTK_TARGET_MCPU)
+__clang_cflags += $(if $(CONFIG_EMBTK_SOFTFLOAT),-mfloat-abi=soft)
+__clang_cflags += $(if $(CONFIG_EMBTK_HARDFLOAT),-mfloat-abi=hard)
+__TARGET_CFLAGS += $(if $(CONFIG_EMBTK_LLVM_ONLY_TOOLCHAIN),$(__clang_cflags))
+__TARGET_CFLAGS += $(if $(CONFIG_EMBTK_LLVM_DEFAULT_TOOLCHAIN),$(__clang_cflags))
+
TARGET_CFLAGS := $(strip $(__TARGET_CFLAGS))
CROSS_COMPILE := $(embtk_tools)/bin/$(STRICT_GNU_TARGET)-
@@ -114,11 +143,20 @@ TOOLCHAIN_PRE_DEPS-y := ccache_install $(AUTOTOOLS_INSTALL)
TOOLCHAIN_PRE_DEPS-y += $(if $(CONFIG_EMBTK_TOOLCHAIN_PREDEP_GPERF_HOST), \
gperf_host_install)
+__gcc3_toolchain-$(CONFIG_EMBTK_GCC_ONLY_TOOLCHAIN) := gcc3_install
+__gcc3_toolchain-$(CONFIG_EMBTK_GCC_DEFAULT_TOOLCHAIN) := gcc3_install
+
+__llvm_toolchain-$(CONFIG_EMBTK_LLVM_ONLY_TOOLCHAIN) := clang_install
+__llvm_toolchain-$(CONFIG_EMBTK_LLVM_ONLY_TOOLCHAIN) += llvm_install
+__llvm_toolchain-$(CONFIG_EMBTK_LLVM_DEFAULT_TOOLCHAIN) := clang_install
+__llvm_toolchain-$(CONFIG_EMBTK_LLVM_DEFAULT_TOOLCHAIN) += llvm_install
+
TOOLCHAIN_DEPS := linux_headers_install gmp_host_install
TOOLCHAIN_DEPS += mpfr_host_install mpc_host_install binutils_install
-TOOLCHAIN_DEPS += clang_install llvm_install
+TOOLCHAIN_DEPS += $(__llvm_toolchain-y)
TOOLCHAIN_DEPS += gcc1_install $(embtk_clib)_headers_install
-TOOLCHAIN_DEPS += gcc2_install $(embtk_clib)_install gcc3_install
+TOOLCHAIN_DEPS += gcc2_install $(embtk_clib)_install
+TOOLCHAIN_DEPS += $(__gcc3_toolchain-y)
TOOLCHAIN_ADDONS_NAME := toolchain-addons
TOOLCHAIN_ADDONS_DEPS := $(TOOLCHAIN_ADDONS-y)