[libcxx-commits] [libcxx] [libcxx] Define _LIBCPP_HAS_C8RTOMB_MBRTOC8 for picolibc (PR #158648)
Victor Campos via libcxx-commits
libcxx-commits at lists.llvm.org
Mon Sep 15 07:32:32 PDT 2025
https://github.com/vhscampos created https://github.com/llvm/llvm-project/pull/158648
Starting from picolibc 1.8.9, the `char8_t` related functions are provided.
This patch adds logic to detect the underlying picolibc version and define the `_LIBCPP_HAS_C8RTOMB_MBRTOC8 macro` accordingly.
>From ecd3753b95f33d4f2becc2d043a597cb004f6cc4 Mon Sep 17 00:00:00 2001
From: Victor Campos <victor.campos at arm.com>
Date: Thu, 7 Aug 2025 16:03:44 +0100
Subject: [PATCH] [libcxx] Define _LIBCPP_HAS_C8RTOMB_MBRTOC8 for picolibc
Starting from picolibc 1.8.9, the `char8_t` related functions are
provided.
This patch adds logic to detect the underlying picolibc version and
define the `_LIBCPP_HAS_C8RTOMB_MBRTOC8 macro` accordingly.
---
libcxx/include/__config | 4 +++-
libcxx/utils/ci/build-picolibc.sh | 2 +-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/libcxx/include/__config b/libcxx/include/__config
index b4c081dcdff1b..7b6fc43ad24ae 100644
--- a/libcxx/include/__config
+++ b/libcxx/include/__config
@@ -1022,11 +1022,13 @@ typedef __char32_t char32_t;
// to depend on here, so any declarations present when __cpp_char8_t is not
// defined are ignored.
# if defined(_LIBCPP_GLIBC_PREREQ)
-# if _LIBCPP_GLIBC_PREREQ(2, 36) && defined(__cpp_char8_t)
+# if defined(__cpp_char8_t) && _LIBCPP_GLIBC_PREREQ(2, 36)
# define _LIBCPP_HAS_C8RTOMB_MBRTOC8 1
# else
# define _LIBCPP_HAS_C8RTOMB_MBRTOC8 0
# endif
+# elif defined(__clang__)
+# define _LIBCPP_HAS_C8RTOMB_MBRTOC8 1
# else
# define _LIBCPP_HAS_C8RTOMB_MBRTOC8 0
# endif
diff --git a/libcxx/utils/ci/build-picolibc.sh b/libcxx/utils/ci/build-picolibc.sh
index a25a588cb8d2e..ea9ae0165b67c 100755
--- a/libcxx/utils/ci/build-picolibc.sh
+++ b/libcxx/utils/ci/build-picolibc.sh
@@ -70,7 +70,7 @@ picolibc_build_dir="${build_dir}/picolibc-build"
mkdir -p "${picolibc_source_dir}"
mkdir -p "${picolibc_build_dir}"
# Download a known good version of picolibc.
-picolibc_commit="48fbc2009c6473293d03d5ec6f190565c6223a5c"
+picolibc_commit="51a8b32857e75345c37652a80b5cda98b28d69e5"
curl -L "https://github.com/picolibc/picolibc/archive/${picolibc_commit}.zip" --output "${picolibc_source_dir}/picolibc.zip"
unzip -q "${picolibc_source_dir}/picolibc.zip" -d "${picolibc_source_dir}"
mv "${picolibc_source_dir}/picolibc-${picolibc_commit}"/* "${picolibc_source_dir}"
More information about the libcxx-commits
mailing list