Skip to content

Commit dad9c9a

Browse files
committed
Address review comments
- Use _LIBCXX_... reserved namespace macro names. - Move library definition code closer to the rest of __config_site definitions in CMake. - Remove unused LIBCXX_LIBC_NEWLIB definition. - Use #cmakedefine01 and thus avoid defined() in conditional statements. - Remove deprecation check.
1 parent a876988 commit dad9c9a

File tree

20 files changed

+33
-48
lines changed

20 files changed

+33
-48
lines changed

libcxx/CMakeLists.txt

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -481,21 +481,6 @@ include(config-ix)
481481
include(HandleLibC) # Setup the C library flags
482482
include(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-
499484
# FIXME(EricWF): See the FIXME on LIBCXX_ENABLE_PEDANTIC.
500485
# Remove the -pedantic flag and -Wno-pedantic and -pedantic-errors
501486
# so they don't get transformed into -Wno and -errors respectively.
@@ -766,6 +751,18 @@ config_define(${LIBCXX_ENABLE_WIDE_CHARACTERS} _LIBCPP_HAS_WIDE_CHARACTERS)
766751
config_define(${LIBCXX_ENABLE_TIME_ZONE_DATABASE} _LIBCPP_HAS_TIME_ZONE_DATABASE)
767752
config_define(${LIBCXX_ENABLE_VENDOR_AVAILABILITY_ANNOTATIONS} _LIBCPP_HAS_VENDOR_AVAILABILITY_ANNOTATIONS)
768753

754+
# Set C library in use
755+
if (RUNTIMES_USE_LIBC STREQUAL "picolibc")
756+
config_define(1 _LIBCXX_LIBC_PICOLIBC)
757+
# picolibc is derived from newlib and behaves the same in regards to libc++
758+
# so setting both here:
759+
# * _LIBCXX_LIBC_NEWLIB is used now
760+
# * _LIBCXX_LIBC_PICOLIBC can be used for further customizations later
761+
config_define(1 _LIBCXX_LIBC_NEWLIB)
762+
elseif (RUNTIMES_USE_LIBC STREQUAL "newlib")
763+
config_define(1 _LIBCXX_LIBC_NEWLIB)
764+
endif()
765+
769766
# TODO: Remove in LLVM 21. We're leaving an error to make this fail explicitly.
770767
if (LIBCXX_ENABLE_ASSERTIONS)
771768
message(FATAL_ERROR "LIBCXX_ENABLE_ASSERTIONS has been removed. Please use LIBCXX_HARDENING_MODE instead.")

libcxx/include/__config_site.in

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,8 @@
4343
#cmakedefine _LIBCPP_HARDENING_MODE_DEFAULT @_LIBCPP_HARDENING_MODE_DEFAULT@
4444

4545
// C libraries
46-
#cmakedefine LIBCXX_LIBC_LLVMLIBC
47-
#cmakedefine LIBCXX_LIBC_PICOLIBC
48-
#cmakedefine LIBCXX_LIBC_NEWLIB
46+
#cmakedefine01 _LIBCXX_LIBC_PICOLIBC
47+
#cmakedefine01 _LIBCXX_LIBC_NEWLIB
4948

5049
// __USE_MINGW_ANSI_STDIO gets redefined on MinGW
5150
#ifdef __clang__

libcxx/include/__configuration/platform.h

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -42,17 +42,6 @@
4242
# endif
4343
#endif
4444

45-
// TODO: Remove this deprecated behavior after LLVM 22 release
46-
#if __has_include(<picolibc.h>) && !defined(LIBCXX_LIBC_NEWLIB)
47-
# define LIBCXX_LIBC_NEWLIB
48-
49-
# if defined(__clang__) || defined(__GNUC__)
50-
# warning "To build libc++ with picolibc provide RUNTIMES_USE_LIBC=picolibc"
51-
# else
52-
# pragma message("To build libc++ with picolibc provide RUNTIMES_USE_LIBC=picolibc")
53-
# endif
54-
#endif
55-
5645
#ifndef __BYTE_ORDER__
5746
# error \
5847
"Your compiler doesn't seem to define __BYTE_ORDER__, which is required by libc++ to know the endianness of your target platform"

libcxx/include/__cxx03/__fwd/ios.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ using wios = basic_ios<wchar_t>;
3131
template <class _CharT, class _Traits>
3232
class _LIBCPP_PREFERRED_NAME(ios) _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wios)) basic_ios;
3333

34-
#if defined(LIBCXX_LIBC_NEWLIB)
34+
#if _LIBCXX_LIBC_NEWLIB
3535
// On newlib, off_t is 'long int'
3636
using streamoff = long int; // for char_traits in <string>
3737
#else

libcxx/include/__cxx03/__locale

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff 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(LIBCXX_LIBC_NEWLIB)
387+
#elif _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

libcxx/include/__cxx03/__locale_dir/locale_base_api.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
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(LIBCXX_LIBC_NEWLIB)
20+
#elif _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>

libcxx/include/__cxx03/fstream

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff 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(LIBCXX_LIBC_NEWLIB)
212+
#if defined(_LIBCPP_MSVCRT) || _LIBCXX_LIBC_NEWLIB
213213
# define _LIBCPP_HAS_NO_OFF_T_FUNCTIONS
214214
#endif
215215

libcxx/include/__cxx03/locale

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff 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(LIBCXX_LIBC_NEWLIB) && !defined(__EMSCRIPTEN__)
223+
# if !defined(__BIONIC__) && !_LIBCXX_LIBC_NEWLIB && !defined(__EMSCRIPTEN__)
224224
# define _LIBCPP_HAS_CATOPEN 1
225225
# include <nl_types.h>
226226
# endif

libcxx/include/__cxx03/regex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff 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(LIBCXX_LIBC_NEWLIB)
987+
#if defined(__BIONIC__) || _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

libcxx/include/__fwd/ios.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ using wios = basic_ios<wchar_t>;
3131
template <class _CharT, class _Traits>
3232
class _LIBCPP_PREFERRED_NAME(ios) _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wios)) basic_ios;
3333

34-
#if defined(LIBCXX_LIBC_NEWLIB)
34+
#if _LIBCXX_LIBC_NEWLIB
3535
// On newlib, off_t is 'long int'
3636
using streamoff = long int; // for char_traits in <string>
3737
#else

0 commit comments

Comments
 (0)