mirror of
https://git.freebsd.org/ports.git
synced 2025-04-30 10:36:38 -04:00
devel/wasi-libc is now flavourised per supported LLVM version. Each flavour includes/copies the corresponding clang's stdarg.h and stddef.h instead of simply using the latest clang release. Technically upstream dropped support for LLVM < 18, but the commit doing so admittedly operated under an uncertain assumption. LLVM 17 is still supported in these ports for the benefit of Rust and gecko@ ports, which specify LLVM 17 minimum, and to facilitate LTO with that version. LLVM 19 is also supported in this version, with the corresponding ports to be committed separately. Bump PORTREVISION of consumers
139 lines
4.9 KiB
C++
139 lines
4.9 KiB
C++
/*===---- stddef.h - Basic type definitions --------------------------------===
|
|
*
|
|
* Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
* See https://llvm.org/LICENSE.txt for license information.
|
|
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
*
|
|
*===-----------------------------------------------------------------------===
|
|
*/
|
|
|
|
/*
|
|
* This header is designed to be included multiple times. If any of the __need_
|
|
* macros are defined, then only that subset of interfaces are provided. This
|
|
* can be useful for POSIX headers that need to not expose all of stddef.h, but
|
|
* need to use some of its interfaces. Otherwise this header provides all of
|
|
* the expected interfaces.
|
|
*
|
|
* When clang modules are enabled, this header is a textual header to support
|
|
* the multiple include behavior. As such, it doesn't directly declare anything
|
|
* so that it doesn't add duplicate declarations to all of its includers'
|
|
* modules.
|
|
*/
|
|
#if defined(__MVS__) && __has_include_next(<stddef.h>)
|
|
#undef __need_ptrdiff_t
|
|
#undef __need_size_t
|
|
#undef __need_rsize_t
|
|
#undef __need_wchar_t
|
|
#undef __need_NULL
|
|
#undef __need_nullptr_t
|
|
#undef __need_unreachable
|
|
#undef __need_max_align_t
|
|
#undef __need_offsetof
|
|
#undef __need_wint_t
|
|
#include <__stddef_header_macro.h>
|
|
#include_next <stddef.h>
|
|
|
|
#else
|
|
|
|
#if !defined(__need_ptrdiff_t) && !defined(__need_size_t) && \
|
|
!defined(__need_rsize_t) && !defined(__need_wchar_t) && \
|
|
!defined(__need_NULL) && !defined(__need_nullptr_t) && \
|
|
!defined(__need_unreachable) && !defined(__need_max_align_t) && \
|
|
!defined(__need_offsetof) && !defined(__need_wint_t)
|
|
#define __need_ptrdiff_t
|
|
#define __need_size_t
|
|
/* ISO9899:2011 7.20 (C11 Annex K): Define rsize_t if __STDC_WANT_LIB_EXT1__ is
|
|
* enabled. */
|
|
#if defined(__STDC_WANT_LIB_EXT1__) && __STDC_WANT_LIB_EXT1__ >= 1
|
|
#define __need_rsize_t
|
|
#endif
|
|
#define __need_wchar_t
|
|
#if !defined(__STDDEF_H) || __has_feature(modules)
|
|
/*
|
|
* __stddef_null.h is special when building without modules: if __need_NULL is
|
|
* set, then it will unconditionally redefine NULL. To avoid stepping on client
|
|
* definitions of NULL, __need_NULL should only be set the first time this
|
|
* header is included, that is when __STDDEF_H is not defined. However, when
|
|
* building with modules, this header is a textual header and needs to
|
|
* unconditionally include __stdef_null.h to support multiple submodules
|
|
* exporting _Builtin_stddef.null. Take module SM with submodules A and B, whose
|
|
* headers both include stddef.h When SM.A builds, __STDDEF_H will be defined.
|
|
* When SM.B builds, the definition from SM.A will leak when building without
|
|
* local submodule visibility. stddef.h wouldn't include __stddef_null.h, and
|
|
* SM.B wouldn't import _Builtin_stddef.null, and SM.B's `export *` wouldn't
|
|
* export NULL as expected. When building with modules, always include
|
|
* __stddef_null.h so that everything works as expected.
|
|
*/
|
|
#define __need_NULL
|
|
#endif
|
|
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L) || \
|
|
defined(__cplusplus)
|
|
#define __need_nullptr_t
|
|
#endif
|
|
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L
|
|
#define __need_unreachable
|
|
#endif
|
|
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || \
|
|
(defined(__cplusplus) && __cplusplus >= 201103L)
|
|
#define __need_max_align_t
|
|
#endif
|
|
#define __need_offsetof
|
|
/* wint_t is provided by <wchar.h> and not <stddef.h>. It's here
|
|
* for compatibility, but must be explicitly requested. Therefore
|
|
* __need_wint_t is intentionally not defined here. */
|
|
#include <__stddef_header_macro.h>
|
|
#endif
|
|
|
|
#if defined(__need_ptrdiff_t)
|
|
#include <__stddef_ptrdiff_t.h>
|
|
#undef __need_ptrdiff_t
|
|
#endif /* defined(__need_ptrdiff_t) */
|
|
|
|
#if defined(__need_size_t)
|
|
#include <__stddef_size_t.h>
|
|
#undef __need_size_t
|
|
#endif /*defined(__need_size_t) */
|
|
|
|
#if defined(__need_rsize_t)
|
|
#include <__stddef_rsize_t.h>
|
|
#undef __need_rsize_t
|
|
#endif /* defined(__need_rsize_t) */
|
|
|
|
#if defined(__need_wchar_t)
|
|
#include <__stddef_wchar_t.h>
|
|
#undef __need_wchar_t
|
|
#endif /* defined(__need_wchar_t) */
|
|
|
|
#if defined(__need_NULL)
|
|
#include <__stddef_null.h>
|
|
#undef __need_NULL
|
|
#endif /* defined(__need_NULL) */
|
|
|
|
#if defined(__need_nullptr_t)
|
|
#include <__stddef_nullptr_t.h>
|
|
#undef __need_nullptr_t
|
|
#endif /* defined(__need_nullptr_t) */
|
|
|
|
#if defined(__need_unreachable)
|
|
#include <__stddef_unreachable.h>
|
|
#undef __need_unreachable
|
|
#endif /* defined(__need_unreachable) */
|
|
|
|
#if defined(__need_max_align_t)
|
|
#include <__stddef_max_align_t.h>
|
|
#undef __need_max_align_t
|
|
#endif /* defined(__need_max_align_t) */
|
|
|
|
#if defined(__need_offsetof)
|
|
#include <__stddef_offsetof.h>
|
|
#undef __need_offsetof
|
|
#endif /* defined(__need_offsetof) */
|
|
|
|
/* Some C libraries expect to see a wint_t here. Others (notably MinGW) will use
|
|
__WINT_TYPE__ directly; accommodate both by requiring __need_wint_t */
|
|
#if defined(__need_wint_t)
|
|
#include <__stddef_wint_t.h>
|
|
#undef __need_wint_t
|
|
#endif /* __need_wint_t */
|
|
|
|
#endif /* __MVS__ */
|