summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>2011-12-31 11:09:33 (GMT)
committer Thomas Petazzoni <thomas.petazzoni@free-electrons.com>2012-03-01 19:26:37 (GMT)
commitb95e436ee0c9e4638dc79766da0d17927c6641ce (patch)
tree0ad278d70c3d9b1d7c0c6eab6cab749dbf78080c
parent50ac5f9a573d3918cc5257a30a7c85db7841ac42 (diff)
downloadbuildroot-b95e436ee0c9e4638dc79766da0d17927c6641ce.tar.gz
buildroot-b95e436ee0c9e4638dc79766da0d17927c6641ce.tar.bz2
Expand external toolchain wrapper to custom flags
The BR2_TARGET_OPTIMIZATION flags were not used by the external toolchain wrapper, which broke the multilib selection logic of multilib external toolchains. It also simplifies the compilation of external programs since all flags are properly passed automatically by the toolchain wrapper. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-rw-r--r--toolchain/toolchain-external/ext-tool.mk8
-rw-r--r--toolchain/toolchain-external/ext-toolchain-wrapper.c3
2 files changed, 11 insertions, 0 deletions
diff --git a/toolchain/toolchain-external/ext-tool.mk b/toolchain/toolchain-external/ext-tool.mk
index eb8ed4f..dde6f22 100644
--- a/toolchain/toolchain-external/ext-tool.mk
+++ b/toolchain/toolchain-external/ext-tool.mk
@@ -150,6 +150,14 @@ TOOLCHAIN_EXTERNAL_CFLAGS += -mabi=$(CC_TARGET_ABI_)
TOOLCHAIN_EXTERNAL_WRAPPER_ARGS += -DBR_ABI='"$(CC_TARGET_ABI_)"'
endif
+ifneq ($(BR2_TARGET_OPTIMIZATION),)
+TOOLCHAIN_EXTERNAL_CFLAGS += $(call qstrip,$(BR2_TARGET_OPTIMIZATION))
+# We create a list like '"-mfoo", "-mbar", "-mbarfoo"' so that each
+# flag is a separate argument when used in execv() by the external
+# toolchain wrapper.
+TOOLCHAIN_EXTERNAL_WRAPPER_ARGS += -DBR_ADDITIONAL_CFLAGS='$(foreach f,$(call qstrip,$(BR2_TARGET_OPTIMIZATION)),"$(f)",)'
+endif
+
ifeq ($(BR2_SOFT_FLOAT),y)
TOOLCHAIN_EXTERNAL_CFLAGS += -msoft-float
TOOLCHAIN_EXTERNAL_WRAPPER_ARGS += -DBR_SOFTFLOAT=1
diff --git a/toolchain/toolchain-external/ext-toolchain-wrapper.c b/toolchain/toolchain-external/ext-toolchain-wrapper.c
index cc404f3..719f13b 100644
--- a/toolchain/toolchain-external/ext-toolchain-wrapper.c
+++ b/toolchain/toolchain-external/ext-toolchain-wrapper.c
@@ -40,6 +40,9 @@ static char *predef_args[] = {
#ifdef BR_VFPFLOAT
"-mfpu=vfp",
#endif /* BR_VFPFLOAT */
+#ifdef BR_ADDITIONAL_CFLAGS
+ BR_ADDITIONAL_CFLAGS
+#endif
};
static const char *get_basename(const char *name)