Revert "[libc++] Remove workarounds for systems that used to require __need_XXX macros"

This reverts commit 119cef40d1.

The change broke multiple builders.
This commit is contained in:
Yi Kong 2022-11-22 20:11:42 +09:00
parent f50423c1a4
commit 3f65c8fcbe
7 changed files with 45 additions and 40 deletions

View File

@ -14,7 +14,6 @@
#include <__config>
#include <cstring>
#include <stddef.h>
#include <string>
namespace __gnu_cxx {

View File

@ -75,12 +75,14 @@ module std [system] {
export Darwin.C.stdint
}
module stdio_h {
header "stdio.h"
// <stdio.h>'s __need_* macros require textual inclusion.
textual header "stdio.h"
export *
export Darwin.C.stdio
}
module stdlib_h {
header "stdlib.h"
// <stdlib.h>'s __need_* macros require textual inclusion.
textual header "stdlib.h"
export *
}
module string_h {
@ -94,7 +96,8 @@ module std [system] {
// <time.h> provided by C library.
module wchar_h {
@requires_LIBCXX_ENABLE_WIDE_CHARACTERS@
header "wchar.h"
// <wchar.h>'s __need_* macros require textual inclusion.
textual header "wchar.h"
export *
}
module wctype_h {

View File

@ -6,7 +6,6 @@
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#ifndef _LIBCPP_STDBOOL_H
#define _LIBCPP_STDBOOL_H

View File

@ -7,7 +7,16 @@
//
//===----------------------------------------------------------------------===//
#ifndef _LIBCPP_STDDEF_H
#if defined(__need_ptrdiff_t) || defined(__need_size_t) || \
defined(__need_wchar_t) || defined(__need_NULL) || defined(__need_wint_t)
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#endif
#include_next <stddef.h>
#elif !defined(_LIBCPP_STDDEF_H)
#define _LIBCPP_STDDEF_H
/*
@ -33,38 +42,9 @@ Types:
# pragma GCC system_header
#endif
#if __has_include_next(<stddef.h>)
// The Clang builtin headers only define the types we need when we request it explicitly.
// TODO: We should fix that in Clang and drop these defines.
# ifndef __need_ptrdiff_t
# define __need_ptrdiff_t
# if __has_include_next(<stddef.h>)
# include_next <stddef.h>
# endif
# ifndef __need_size_t
# define __need_size_t
# endif
# ifndef __need_wchar_t
# define __need_wchar_t
# endif
# ifndef __need_NULL
# define __need_NULL
# endif
# ifndef __need_STDDEF_H_misc
# define __need_STDDEF_H_misc
# endif
# include_next <stddef.h>
// Now re-include the header without requesting any specific types, so as to get
// any other remaining types from stddef.h. This can all go away once the Clang
// buitin headers stop using these macros.
# undef __need_ptrdiff_t
# undef __need_size_t
# undef __need_wchar_t
# undef __need_NULL
# undef __need_STDDEF_H_misc
# include_next <stddef.h>
#endif
#ifdef __cplusplus
typedef decltype(nullptr) nullptr_t;

View File

@ -7,7 +7,15 @@
//
//===----------------------------------------------------------------------===//
#ifndef _LIBCPP_STDIO_H
#if defined(__need_FILE) || defined(__need___FILE)
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#endif
#include_next <stdio.h>
#elif !defined(_LIBCPP_STDIO_H)
#define _LIBCPP_STDIO_H
/*

View File

@ -7,7 +7,15 @@
//
//===----------------------------------------------------------------------===//
#ifndef _LIBCPP_STDLIB_H
#if defined(__need_malloc_and_calloc)
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#endif
#include_next <stdlib.h>
#elif !defined(_LIBCPP_STDLIB_H)
#define _LIBCPP_STDLIB_H
/*

View File

@ -7,7 +7,15 @@
//
//===----------------------------------------------------------------------===//
#ifndef _LIBCPP_WCHAR_H
#if defined(__need_wint_t) || defined(__need_mbstate_t)
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#endif
#include_next <wchar.h>
#elif !defined(_LIBCPP_WCHAR_H)
#define _LIBCPP_WCHAR_H
/*