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