summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/libc/newlib.in14
-rw-r--r--scripts/build/libc/newlib.sh5
2 files changed, 18 insertions, 1 deletions
diff --git a/config/libc/newlib.in b/config/libc/newlib.in
index f32e4b3..8351fab 100644
--- a/config/libc/newlib.in
+++ b/config/libc/newlib.in
@@ -144,6 +144,20 @@ config LIBC_VERSION
Enter the tag you want to use.
Leave empty to use the 'head' of the repository.
+config LIBC_NEWLIB_TARGET_CFLAGS
+ string
+ prompt "Target CFLAGS for newlib"
+ default ""
+ help
+ Used to add specific options when compiling the target libraries
+ (eg. -ffunction-sections -fdata-sections), which can't be defined
+ in global TARGET_CFLAGS, because they shall be not used for the
+ gcc target libraries.
+ Note: Both TARGET_CFLAGS and LIBC_NEWLIB_TARGET_CFLAGS are used
+ to compile the libraries.
+
+ Leave blank if you don't know better.
+
comment "Architecture specific options"
config ATMEL_AVR32_HEADERS
diff --git a/scripts/build/libc/newlib.sh b/scripts/build/libc/newlib.sh
index 744c291..ca00a3f 100644
--- a/scripts/build/libc/newlib.sh
+++ b/scripts/build/libc/newlib.sh
@@ -72,6 +72,7 @@ do_libc_start_files() {
do_libc() {
local -a newlib_opts
+ local cflags_for_target
CT_DoStep INFO "Installing C library"
@@ -109,6 +110,8 @@ do_libc() {
[ "${CT_LIBC_NEWLIB_ENABLE_TARGET_OPTSPACE}" = "y" ] && newlib_opts+=("--enable-target-optspace")
+ cflags_for_target="${CT_TARGET_CFLAGS} ${CT_LIBC_NEWLIB_TARGET_CFLAGS}"
+
# Note: newlib handles the build/host/target a little bit differently
# than one would expect:
# build : not used
@@ -116,7 +119,7 @@ do_libc() {
# target : the machine newlib runs on
CT_DoExecLog CFG \
CC_FOR_BUILD="${CT_BUILD}-gcc" \
- CFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}" \
+ CFLAGS_FOR_TARGET="${cflags_for_target}" \
AR=${CT_TARGET}-ar \
RANLIB=${CT_TARGET}-ranlib \
"${CT_SRC_DIR}/newlib-${CT_LIBC_VERSION}/configure" \