234 lines
6.4 KiB
D
234 lines
6.4 KiB
D
/**
|
|
* D header file for POSIX.
|
|
*
|
|
* Copyright: Copyright Sean Kelly 2005 - 2009.
|
|
* License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0).
|
|
* Authors: Sean Kelly,
|
|
Alex Rønne Petersen
|
|
* Standards: The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition
|
|
*/
|
|
|
|
/* Copyright Sean Kelly 2005 - 2009.
|
|
* Distributed under the Boost Software License, Version 1.0.
|
|
* (See accompanying file LICENSE or copy at
|
|
* http://www.boost.org/LICENSE_1_0.txt)
|
|
*/
|
|
module core.sys.posix.config;
|
|
|
|
public import core.stdc.config;
|
|
|
|
version (Posix):
|
|
extern (C) nothrow @nogc:
|
|
@system:
|
|
|
|
enum _XOPEN_SOURCE = 600;
|
|
enum _POSIX_SOURCE = true;
|
|
enum _POSIX_C_SOURCE = 200112L;
|
|
|
|
version (CRuntime_Glibc)
|
|
{
|
|
// man 7 feature_test_macros
|
|
// http://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html
|
|
enum _GNU_SOURCE = false;
|
|
enum _DEFAULT_SOURCE = false;
|
|
enum _ATFILE_SOURCE = false;
|
|
|
|
// _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for _DEFAULT_SOURCE.
|
|
deprecated("use _DEFAULT_SOURCE")
|
|
{
|
|
enum _BSD_SOURCE = false;
|
|
enum _SVID_SOURCE = false;
|
|
}
|
|
|
|
enum _FILE_OFFSET_BITS = 64;
|
|
// <sys/cdefs.h>
|
|
enum __REDIRECT = false;
|
|
|
|
enum _REENTRANT = true; // set by compiler when linking -pthread
|
|
|
|
// deduced <features.h>
|
|
enum __USE_FILE_OFFSET64 = _FILE_OFFSET_BITS == 64;
|
|
enum __USE_LARGEFILE = __USE_FILE_OFFSET64 && !__REDIRECT;
|
|
enum __USE_LARGEFILE64 = __USE_FILE_OFFSET64 && !__REDIRECT;
|
|
|
|
deprecated("use _XOPEN_SOURCE >= 600")
|
|
{
|
|
enum __USE_XOPEN2K = _XOPEN_SOURCE >= 600;
|
|
enum __USE_XOPEN2KXSI = _XOPEN_SOURCE >= 600;
|
|
}
|
|
deprecated("use _XOPEN_SOURCE >= 700")
|
|
{
|
|
enum __USE_XOPEN2K8 = _XOPEN_SOURCE >= 700;
|
|
enum __USE_XOPEN2K8XSI = _XOPEN_SOURCE >= 700;
|
|
}
|
|
|
|
deprecated("use _DEFAULT_SOURCE")
|
|
enum __USE_MISC = _DEFAULT_SOURCE;
|
|
deprecated("use _ATFILE_SOURCE")
|
|
enum __USE_ATFILE = _ATFILE_SOURCE;
|
|
deprecated("use _GNU_SOURCE")
|
|
enum __USE_GNU = _GNU_SOURCE;
|
|
deprecated("use _REENTRANT")
|
|
enum __USE_REENTRANT = _REENTRANT;
|
|
|
|
version (D_LP64)
|
|
enum __WORDSIZE = 64;
|
|
else
|
|
enum __WORDSIZE = 32;
|
|
}
|
|
else version (CRuntime_Musl)
|
|
{
|
|
enum _GNU_SOURCE = false;
|
|
enum _DEFAULT_SOURCE = false;
|
|
enum _ATFILE_SOURCE = false;
|
|
|
|
// off_t is always 64 bits on Musl
|
|
enum _FILE_OFFSET_BITS = 64;
|
|
|
|
// Not present in Musl sources
|
|
enum __REDIRECT = false;
|
|
|
|
// Those three are irrelevant for Musl as it always uses 64 bits off_t
|
|
enum __USE_FILE_OFFSET64 = _FILE_OFFSET_BITS == 64;
|
|
enum __USE_LARGEFILE = __USE_FILE_OFFSET64 && !__REDIRECT;
|
|
enum __USE_LARGEFILE64 = __USE_FILE_OFFSET64 && !__REDIRECT;
|
|
|
|
version (D_LP64)
|
|
enum __WORDSIZE = 64;
|
|
else
|
|
enum __WORDSIZE = 32;
|
|
}
|
|
else version (CRuntime_UClibc)
|
|
{
|
|
enum _GNU_SOURCE = false;
|
|
enum _DEFAULT_SOURCE = false;
|
|
enum _ATFILE_SOURCE = false;
|
|
|
|
enum _FILE_OFFSET_BITS = 64;
|
|
enum __REDIRECT = false;
|
|
|
|
enum _REENTRANT = true;
|
|
|
|
enum __USE_FILE_OFFSET64 = _FILE_OFFSET_BITS == 64;
|
|
enum __USE_LARGEFILE = __USE_FILE_OFFSET64 && !__REDIRECT;
|
|
enum __USE_LARGEFILE64 = __USE_FILE_OFFSET64 && !__REDIRECT;
|
|
|
|
deprecated("use _XOPEN_SOURCE >= 600")
|
|
{
|
|
enum __USE_XOPEN2K = _XOPEN_SOURCE >= 600;
|
|
enum __USE_XOPEN2KXSI = _XOPEN_SOURCE >= 600;
|
|
}
|
|
deprecated("use _XOPEN_SOURCE >= 700")
|
|
{
|
|
enum __USE_XOPEN2K8 = _XOPEN_SOURCE >= 700;
|
|
enum __USE_XOPEN2K8XSI = _XOPEN_SOURCE >= 700;
|
|
}
|
|
|
|
deprecated("use _DEFAULT_SOURCE")
|
|
enum __USE_MISC = _DEFAULT_SOURCE;
|
|
deprecated("use _ATFILE_SOURCE")
|
|
enum __USE_ATFILE = _ATFILE_SOURCE;
|
|
deprecated("use _GNU_SOURCE")
|
|
enum __USE_GNU = _GNU_SOURCE;
|
|
deprecated("use _REENTRANT")
|
|
enum __USE_REENTRANT = _REENTRANT;
|
|
|
|
version (D_LP64)
|
|
enum __WORDSIZE = 64;
|
|
else
|
|
enum __WORDSIZE = 32;
|
|
}
|
|
else version (CRuntime_Bionic)
|
|
{
|
|
enum _GNU_SOURCE = false;
|
|
enum _DEFAULT_SOURCE = false;
|
|
enum _ATFILE_SOURCE = false;
|
|
|
|
enum __USE_FILE_OFFSET64 = false; // see https://android.googlesource.com/platform/bionic/+/master/docs/32-bit-abi.md
|
|
deprecated("use _GNU_SOURCE")
|
|
enum __USE_GNU = _GNU_SOURCE;
|
|
|
|
version (D_LP64)
|
|
enum __WORDSIZE = 64;
|
|
else
|
|
enum __WORDSIZE = 32;
|
|
}
|
|
else version (OpenBSD)
|
|
{
|
|
version (Alpha)
|
|
{
|
|
enum _ALIGNBYTES = 7;
|
|
enum _STACKALIGNBYTES = 7;
|
|
enum _MAX_PAGE_SHIFT = 13;
|
|
}
|
|
else version (X86_64)
|
|
{
|
|
enum _ALIGNBYTES = c_long.sizeof - 1;
|
|
enum _STACKALIGNBYTES = 15;
|
|
enum _MAX_PAGE_SHIFT = 12;
|
|
}
|
|
else version (AArch64)
|
|
{
|
|
enum _ALIGNBYTES = c_long.sizeof - 1;
|
|
enum _STACKALIGNBYTES = 15;
|
|
enum _MAX_PAGE_SHIFT = 12;
|
|
}
|
|
else version (ARM)
|
|
{
|
|
enum _ALIGNBYTES = 7;
|
|
enum _STACKALIGNBYTES = 7;
|
|
enum _MAX_PAGE_SHIFT = 12;
|
|
}
|
|
else version (HPPA)
|
|
{
|
|
enum _ALIGNBYTES = 7;
|
|
enum _STACKALIGNBYTES = 7;
|
|
enum _MAX_PAGE_SHIFT = 12;
|
|
}
|
|
else version (X86)
|
|
{
|
|
enum _ALIGNBYTES = 3;
|
|
enum _STACKALIGNBYTES = 15;
|
|
enum _MAX_PAGE_SHIFT = 12;
|
|
}
|
|
else version (PPC)
|
|
{
|
|
enum _ALIGNBYTES = 7;
|
|
enum _STACKALIGNBYTES = 15;
|
|
enum _MAX_PAGE_SHIFT = 12;
|
|
}
|
|
else version (SPARC64)
|
|
{
|
|
enum _ALIGNBYTES = 15;
|
|
enum _STACKALIGNBYTES = 15;
|
|
enum _MAX_PAGE_SHIFT = 13;
|
|
}
|
|
else
|
|
static assert(false, "Architecture not supported.");
|
|
}
|
|
else version (Solaris)
|
|
{
|
|
enum _FILE_OFFSET_BITS = 64;
|
|
enum __REDIRECT = false;
|
|
|
|
enum __USE_FILE_OFFSET64 = _FILE_OFFSET_BITS == 64;
|
|
enum __USE_LARGEFILE = __USE_FILE_OFFSET64 && !__REDIRECT;
|
|
enum __USE_LARGEFILE64 = __USE_FILE_OFFSET64 && !__REDIRECT;
|
|
|
|
deprecated("use _XOPEN_SOURCE >= 600")
|
|
{
|
|
enum __USE_XOPEN2K = _XOPEN_SOURCE >= 600;
|
|
enum __USE_XOPEN2KXSI = _XOPEN_SOURCE >= 600;
|
|
}
|
|
deprecated("use _XOPEN_SOURCE >= 700")
|
|
{
|
|
enum __USE_XOPEN2K8 = _XOPEN_SOURCE >= 700;
|
|
enum __USE_XOPEN2K8XSI = _XOPEN_SOURCE >= 700;
|
|
}
|
|
|
|
version (D_LP64)
|
|
enum __WORDSIZE = 64;
|
|
else
|
|
enum __WORDSIZE = 32;
|
|
}
|