From dbcb9f3598b51be317618a854294f07eff935673 Mon Sep 17 00:00:00 2001 From: Christopher Friedt Date: Mon, 19 Feb 2024 06:27:40 -0500 Subject: [PATCH] libc: add option for c11 threads Add a config option for C11 threads. Signed-off-by: Christopher Friedt --- config/libc.in | 10 ++++++++++ config/libc/newlib.in | 4 ++++ scripts/build/cc/gcc.sh | 23 ++++++++++++++--------- 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/config/libc.in b/config/libc.in index c132fc6928..c556bd2fe4 100644 --- a/config/libc.in +++ b/config/libc.in @@ -19,6 +19,10 @@ config LIBC_SUPPORT_THREADS_POSIX bool select LIBC_SUPPORT_THREADS_ANY +config LIBC_SUPPORT_THREADS_C11 + bool + select LIBC_SUPPORT_THREADS_ANY + config LIBC_SUPPORT_THREADS_NONE bool @@ -40,6 +44,7 @@ choice default THREADS_NATIVE if LIBC_SUPPORT_THREADS_NATIVE default THREADS_LT if LIBC_SUPPORT_THREADS_LT default THREADS_POSIX if LIBC_SUPPORT_THREADS_POSIX + default THREADS_C11 if LIBC_SUPPORT_THREADS_C11 default THREADS_NONE config THREADS_NATIVE @@ -63,6 +68,11 @@ config THREADS_POSIX prompt "posix" depends on LIBC_SUPPORT_THREADS_POSIX +config THREADS_C11 + bool + prompt "c11" + depends on LIBC_SUPPORT_THREADS_C11 + config THREADS_NONE bool prompt "none" diff --git a/config/libc/newlib.in b/config/libc/newlib.in index f1cb29be52..2c5af409fc 100644 --- a/config/libc/newlib.in +++ b/config/libc/newlib.in @@ -2,6 +2,7 @@ ## depends on BARE_METAL ## select LIBC_PROVIDES_CXA_ATEXIT +## select LIBC_SUPPORT_THREADS_C11 ## select LIBC_SUPPORT_THREADS_NONE ## select CC_CORE_NEEDED @@ -12,6 +13,9 @@ ## help array of processors, and will usually work on any architecture with ## help the addition of a few low-level routines. +config THREADS + default "c11" if THREADS_C11 + config LIBC_NEWLIB_TARGET_CFLAGS string prompt "Target CFLAGS for newlib" diff --git a/scripts/build/cc/gcc.sh b/scripts/build/cc/gcc.sh index a8fd42b9cd..0601c59f50 100644 --- a/scripts/build/cc/gcc.sh +++ b/scripts/build/cc/gcc.sh @@ -1073,16 +1073,21 @@ do_gcc_backend() { extra_config+=("--with-host-libstdcxx=${host_libstdcxx_flags[*]}") fi - if [ "${CT_THREADS}" = "none" ]; then + case "${CT_THREADS}" in + none) extra_config+=("--disable-threads") - else - if [ "${CT_THREADS}" = "win32" ]; then - extra_config+=("--enable-threads=win32") - extra_config+=("--disable-win32-registry") - else - extra_config+=("--enable-threads=posix") - fi - fi + ;; + win32) + extra_config+=("--enable-threads=win32") + extra_config+=("--disable-win32-registry") + ;; + c11) + extra_config+=("--enable-threads=c11") + ;; + *) + extra_config+=("--enable-threads=posix") + ;; + esac if [ "${CT_CC_GCC_ENABLE_TARGET_OPTSPACE}" = "y" ] || \ [ "${enable_optspace}" = "yes" ]; then