File tree Expand file tree Collapse file tree 22 files changed +47
-31
lines changed
std/diagnostics/syserr/syserr.errcat/syserr.errcat.objects Expand file tree Collapse file tree 22 files changed +47
-31
lines changed Original file line number Diff line number Diff line change @@ -481,6 +481,21 @@ include(config-ix)
481481include (HandleLibC) # Setup the C library flags
482482include (HandleLibCXXABI) # Setup the ABI library flags
483483
484+ # Set C library in use to define respective macro in __config_site
485+ # RUNTIMES_USE_LIBC was checked in HandleLibC to be one of accepted values
486+ if (RUNTIMES_USE_LIBC STREQUAL "llvm-libc" )
487+ set (LIBCXX_LIBC_LLVMLIBC 1)
488+ elseif (RUNTIMES_USE_LIBC STREQUAL "picolibc" )
489+ set (LIBCXX_LIBC_PICOLIBC 1)
490+ # picolibc is derived from newlib and behaves the same in regards to libc++
491+ # so setting both here:
492+ # * LIBCXX_LIBC_NEWLIB is used now
493+ # * LIBCXX_LIBC_PICOLIBC can be used for further customizations later
494+ set (LIBCXX_LIBC_NEWLIB 1)
495+ elseif (RUNTIMES_USE_LIBC STREQUAL "newlib" )
496+ set (LIBCXX_LIBC_NEWLIB 1)
497+ endif ()
498+
484499# FIXME(EricWF): See the FIXME on LIBCXX_ENABLE_PEDANTIC.
485500# Remove the -pedantic flag and -Wno-pedantic and -pedantic-errors
486501# so they don't get transformed into -Wno and -errors respectively.
Original file line number Diff line number Diff line change 4242// Hardening.
4343#cmakedefine _LIBCPP_HARDENING_MODE_DEFAULT @_LIBCPP_HARDENING_MODE_DEFAULT@
4444
45+ // C libraries
46+ #cmakedefine LIBCXX_LIBC_LLVMLIBC
47+ #cmakedefine LIBCXX_LIBC_PICOLIBC
48+ #cmakedefine LIBCXX_LIBC_NEWLIB
49+
4550// __USE_MINGW_ANSI_STDIO gets redefined on MinGW
4651#ifdef __clang__
4752# pragma clang diagnostic push
Original file line number Diff line number Diff line change 4242# endif
4343#endif
4444
45- // This is required in order for _NEWLIB_VERSION to be defined in places where we use it.
46- // TODO: We shouldn't be including arbitrarily-named headers from libc++ since this can break valid
47- // user code. Move code paths that need _NEWLIB_VERSION to another customization mechanism.
45+ // TODO: Remove this deprecated behavior after LLVM 22 release
46+ // To build libc++ with picolibc provide RUNTIMES_USE_LIBC=picolibc
4847#if __has_include(<picolibc.h>)
49- # include < picolibc.h >
48+ # define LIBCXX_LIBC_NEWLIB
5049#endif
5150
5251#ifndef __BYTE_ORDER__
Original file line number Diff line number Diff line change @@ -31,7 +31,7 @@ using wios = basic_ios<wchar_t>;
3131template <class _CharT , class _Traits >
3232class _LIBCPP_PREFERRED_NAME (ios) _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wios)) basic_ios;
3333
34- #if defined(_NEWLIB_VERSION )
34+ #if defined(LIBCXX_LIBC_NEWLIB )
3535// On newlib, off_t is 'long int'
3636using streamoff = long int ; // for char_traits in <string>
3737#else
Original file line number Diff line number Diff line change @@ -384,7 +384,7 @@ public:
384384 static const mask xdigit = _ISXDIGIT;
385385 static const mask blank = _ISBLANK;
386386 static const mask __regex_word = 0x8000 ;
387- #elif defined(_NEWLIB_VERSION )
387+ #elif defined(LIBCXX_LIBC_NEWLIB )
388388 // Same type as Newlib's _ctype_ array in newlib/libc/include/ctype.h.
389389 typedef char mask;
390390 // In case char is signed, static_cast is needed to avoid warning on
Original file line number Diff line number Diff line change 1717# include <__cxx03/__locale_dir/locale_base_api/android.h>
1818#elif defined(__sun__ )
1919# include <__cxx03/__locale_dir/locale_base_api/solaris.h>
20- #elif defined(_NEWLIB_VERSION )
20+ #elif defined(LIBCXX_LIBC_NEWLIB )
2121# include <__cxx03/__locale_dir/locale_base_api/newlib.h>
2222#elif defined(__OpenBSD__ )
2323# include <__cxx03/__locale_dir/locale_base_api/openbsd.h>
Original file line number Diff line number Diff line change @@ -209,7 +209,7 @@ typedef basic_fstream<wchar_t> wfstream;
209209_LIBCPP_PUSH_MACROS
210210#include < __cxx03/__undef_macros>
211211
212- #if defined(_LIBCPP_MSVCRT) || defined(_NEWLIB_VERSION )
212+ #if defined(_LIBCPP_MSVCRT) || defined(LIBCXX_LIBC_NEWLIB )
213213# define _LIBCPP_HAS_NO_OFF_T_FUNCTIONS
214214#endif
215215
Original file line number Diff line number Diff line change @@ -220,7 +220,7 @@ template <class charT> class messages_byname;
220220
221221# if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
222222// Most unix variants have catopen. These are the specific ones that don't.
223- # if !defined(__BIONIC__) && !defined(_NEWLIB_VERSION ) && !defined(__EMSCRIPTEN__)
223+ # if !defined(__BIONIC__) && !defined(LIBCXX_LIBC_NEWLIB ) && !defined(__EMSCRIPTEN__)
224224# define _LIBCPP_HAS_CATOPEN 1
225225# include < nl_types.h>
226226# endif
Original file line number Diff line number Diff line change @@ -984,7 +984,7 @@ public:
984984 typedef _CharT char_type;
985985 typedef basic_string<char_type> string_type;
986986 typedef locale locale_type;
987- #if defined(__BIONIC__) || defined(_NEWLIB_VERSION )
987+ #if defined(__BIONIC__) || defined(LIBCXX_LIBC_NEWLIB )
988988 // Originally bionic's ctype_base used its own ctype masks because the
989989 // builtin ctype implementation wasn't in libc++ yet. Bionic's ctype mask
990990 // was only 8 bits wide and already saturated, so it used a wider type here
@@ -993,9 +993,7 @@ public:
993993 // implementation, but this was not updated to match. Since then Android has
994994 // needed to maintain a stable libc++ ABI, and this can't be changed without
995995 // an ABI break.
996- // We also need this workaround for newlib since _NEWLIB_VERSION is not
997- // defined yet inside __config, so we can't set the
998- // _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE macro. Additionally, newlib is
996+ // We also need this workaround for newlib since newlib is
999997 // often used for space constrained environments, so it makes sense not to
1000998 // duplicate the ctype table.
1001999 typedef uint16_t char_class_type;
Original file line number Diff line number Diff line change @@ -31,7 +31,7 @@ using wios = basic_ios<wchar_t>;
3131template <class _CharT , class _Traits >
3232class _LIBCPP_PREFERRED_NAME (ios) _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wios)) basic_ios;
3333
34- #if defined(_NEWLIB_VERSION )
34+ #if defined(LIBCXX_LIBC_NEWLIB )
3535// On newlib, off_t is 'long int'
3636using streamoff = long int ; // for char_traits in <string>
3737#else
You can’t perform that action at this time.
0 commit comments