summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/cc/gcc.in7
-rw-r--r--config/comp_libs/newlib-nano.in8
-rw-r--r--packages/gcc/package.desc2
-rw-r--r--scripts/build/cc/gcc.sh53
-rw-r--r--scripts/build/companion_libs/350-newlib_nano.sh3
5 files changed, 67 insertions, 6 deletions
diff --git a/config/cc/gcc.in b/config/cc/gcc.in
index 01d7253..8180b2a 100644
--- a/config/cc/gcc.in
+++ b/config/cc/gcc.in
@@ -279,6 +279,13 @@ config CC_CXA_ATEXIT
If you get the missing symbol "__cxa_atexit" when building C++ programs,
you might want to try disabling this option.
+config CC_GCC_TM_CLONE_REGISTRY
+ bool
+ prompt "Use TM clone registry"
+ depends on GCC_10_or_later
+ help
+ Enable GCC transactional memory clone registry in libgcc.
+
config CC_GCC_DISABLE_PCH
bool
prompt "Do not build PCH"
diff --git a/config/comp_libs/newlib-nano.in b/config/comp_libs/newlib-nano.in
index 0d80c89..5a81fde 100644
--- a/config/comp_libs/newlib-nano.in
+++ b/config/comp_libs/newlib-nano.in
@@ -18,6 +18,14 @@ config NEWLIB_NANO_GCC_LIBSTDCXX
This option compiles an additional target libstdc++ for use with
newlib-nano.
+config NEWLIB_NANO_GCC_LIBSTDCXX_TARGET_CXXFLAGS
+ string
+ prompt "Target CXXFLAGS for libstdc++ newlib-nano variant"
+ default "-fno-exceptions"
+ help
+ Used to add extra CXXFLAGS when compiling the target libstdc++
+ newlib-nano library (e.g. -fno-exceptions).
+
config NEWLIB_NANO_INSTALL_IN_TARGET
bool
prompt "Additionally install newlib-nano libs into TARGET dir"
diff --git a/packages/gcc/package.desc b/packages/gcc/package.desc
index 0ee344e..186f1a3 100644
--- a/packages/gcc/package.desc
+++ b/packages/gcc/package.desc
@@ -2,5 +2,5 @@ repository='svn svn://gcc.gnu.org/svn/gcc'
mirrors='$(CT_Mirrors GNU gcc/gcc-${CT_GCC_VERSION}) $(CT_Mirrors sourceware gcc/releases/gcc-${CT_GCC_VERSION})'
relevantpattern='4.*|. *|.'
origin='GNU'
-milestones='4.8 4.9 5 6 7 8 11'
+milestones='4.8 4.9 5 6 7 8 9 10 11'
archive_formats='.tar.xz .tar.gz'
diff --git a/scripts/build/cc/gcc.sh b/scripts/build/cc/gcc.sh
index cccd654..8aa7eeb 100644
--- a/scripts/build/cc/gcc.sh
+++ b/scripts/build/cc/gcc.sh
@@ -295,7 +295,8 @@ do_gcc_core_backend() {
local enable_optspace
local complibs
local lang_list
- local cflags cflags_for_build cflags_for_target
+ local cflags cflags_for_build cflags_for_target cxxflags_for_target
+ local extra_cxxflags_for_target
local ldflags
local build_step
local log_txt
@@ -396,6 +397,12 @@ do_gcc_core_backend() {
extra_config+=("--disable-__cxa_atexit")
fi
+ if [ "${CT_CC_GCC_TM_CLONE_REGISTRY}" = "y" ]; then
+ extra_config+=("--enable-tm-clone-registry")
+ else
+ extra_config+=("--disable-tm-clone-registry")
+ fi
+
if [ -n "${CT_CC_GCC_ENABLE_CXX_FLAGS}" \
-a "${mode}" = "baremetal" ]; then
extra_config+=("--enable-cxx-flags=${CT_CC_GCC_ENABLE_CXX_FLAGS}")
@@ -608,6 +615,19 @@ do_gcc_core_backend() {
cflags_for_target="${cflags_for_target} -idirafter ${CT_HEADERS_DIR}"
fi
+ # Assume '-O2' by default for building target libraries.
+ cflags_for_target="-g -O2 ${cflags_for_target}"
+
+ # Set target CXXFLAGS to CFLAGS if none is provided.
+ if [ -z "${cxxflags_for_target}" ]; then
+ cxxflags_for_target="${cflags_for_target}"
+ fi
+
+ # Append extra CXXFLAGS if provided.
+ if [ -n "${extra_cxxflags_for_target}" ]; then
+ cxxflags_for_target="${cxxflags_for_target} ${extra_cxxflags_for_target}"
+ fi
+
# Use --with-local-prefix so older gccs don't look in /usr/local (http://gcc.gnu.org/PR10532).
# Pass only user-specified CFLAGS/LDFLAGS in CFLAGS_FOR_TARGET/LDFLAGS_FOR_TARGET: during
# the build of, for example, libatomic, GCC tried to compile multiple variants for runtime
@@ -621,7 +641,7 @@ do_gcc_core_backend() {
CXXFLAGS_FOR_BUILD="${cflags_for_build}" \
LDFLAGS="${core_LDFLAGS[*]}" \
CFLAGS_FOR_TARGET="${cflags_for_target}" \
- CXXFLAGS_FOR_TARGET="${cflags_for_target}" \
+ CXXFLAGS_FOR_TARGET="${cxxflags_for_target}" \
LDFLAGS_FOR_TARGET="${CT_TARGET_LDFLAGS}" \
${CONFIG_SHELL} \
"${CT_SRC_DIR}/gcc/configure" \
@@ -936,6 +956,9 @@ do_gcc_backend() {
local lang_list
local cflags
local cflags_for_build
+ local cflags_for_target
+ local cxxflags_for_target
+ local extra_cxxflags_for_target
local ldflags
local build_manuals
local exec_prefix
@@ -998,6 +1021,12 @@ do_gcc_backend() {
extra_config+=("--disable-__cxa_atexit")
fi
+ if [ "${CT_CC_GCC_TM_CLONE_REGISTRY}" = "y" ]; then
+ extra_config+=("--enable-tm-clone-registry")
+ else
+ extra_config+=("--disable-tm-clone-registry")
+ fi
+
if [ -n "${CT_CC_GCC_ENABLE_CXX_FLAGS}" ]; then
extra_config+=("--enable-cxx-flags=${CT_CC_GCC_ENABLE_CXX_FLAGS}")
fi
@@ -1200,8 +1229,9 @@ do_gcc_backend() {
CT_DoLog DEBUG "Extra config passed: '${extra_config[*]}'"
- # We may need to modify host/build CFLAGS separately below
+ # We may need to modify host/build/target CFLAGS separately below
cflags_for_build="${cflags}"
+ cflags_for_target="${CT_TARGET_CFLAGS}"
# Clang's default bracket-depth is 256, and building GCC
# requires somewhere between 257 and 512.
@@ -1217,6 +1247,19 @@ do_gcc_backend() {
fi
fi
+ # Assume '-O2' by default for building target libraries.
+ cflags_for_target="-g -O2 ${cflags_for_target}"
+
+ # Set target CXXFLAGS to CFLAGS if none is provided.
+ if [ -z "${cxxflags_for_target}" ]; then
+ cxxflags_for_target="${cflags_for_target}"
+ fi
+
+ # Append extra CXXFLAGS if provided.
+ if [ -n "${extra_cxxflags_for_target}" ]; then
+ cxxflags_for_target="${cxxflags_for_target} ${extra_cxxflags_for_target}"
+ fi
+
# NB: not using CT_ALL_TARGET_CFLAGS/CT_ALL_TARGET_LDFLAGS here!
# See do_gcc_core_backend for explanation.
CT_DoExecLog CFG \
@@ -1226,8 +1269,8 @@ do_gcc_backend() {
CXXFLAGS="${cflags}" \
CXXFLAGS_FOR_BUILD="${cflags_for_build}" \
LDFLAGS="${final_LDFLAGS[*]}" \
- CFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}" \
- CXXFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}" \
+ CFLAGS_FOR_TARGET="${cflags_for_target}" \
+ CXXFLAGS_FOR_TARGET="${cxxflags_for_target}" \
LDFLAGS_FOR_TARGET="${CT_TARGET_LDFLAGS}" \
${CONFIG_SHELL} \
"${CT_SRC_DIR}/gcc/configure" \
diff --git a/scripts/build/companion_libs/350-newlib_nano.sh b/scripts/build/companion_libs/350-newlib_nano.sh
index d109070..2d9de1b 100644
--- a/scripts/build/companion_libs/350-newlib_nano.sh
+++ b/scripts/build/companion_libs/350-newlib_nano.sh
@@ -67,6 +67,9 @@ do_cc_libstdcxx_newlib_nano()
if [ "${CT_LIBC_NEWLIB_NANO_ENABLE_TARGET_OPTSPACE}" = "y" ]; then
final_opts+=( "enable_optspace=yes" )
fi
+ if [ -n "${CT_NEWLIB_NANO_GCC_LIBSTDCXX_TARGET_CXXFLAGS}" ]; then
+ final_opts+=( "extra_cxxflags_for_target=${CT_NEWLIB_NANO_GCC_LIBSTDCXX_TARGET_CXXFLAGS}" )
+ fi
if [ "${CT_BARE_METAL}" = "y" ]; then
final_opts+=( "mode=baremetal" )