blob: 3b575fa5b48d705373d23e4712a0285f2037078c [file] [log] [blame]
/**
* 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;
enum __USE_XOPEN2K = _XOPEN_SOURCE >= 600;
enum __USE_XOPEN2KXSI = _XOPEN_SOURCE >= 600;
enum __USE_XOPEN2K8 = _XOPEN_SOURCE >= 700;
enum __USE_XOPEN2K8XSI = _XOPEN_SOURCE >= 700;
enum __USE_MISC = _DEFAULT_SOURCE;
enum __USE_ATFILE = _ATFILE_SOURCE;
enum __USE_GNU = _GNU_SOURCE;
enum __USE_REENTRANT = _REENTRANT;
version (D_LP64)
enum __WORDSIZE = 64;
else
enum __WORDSIZE = 32;
}
else version (CRuntime_Musl)
{
// 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;
enum __USE_XOPEN2K = _XOPEN_SOURCE >= 600;
enum __USE_XOPEN2KXSI = _XOPEN_SOURCE >= 600;
enum __USE_XOPEN2K8 = _XOPEN_SOURCE >= 700;
enum __USE_XOPEN2K8XSI = _XOPEN_SOURCE >= 700;
enum __USE_MISC = _DEFAULT_SOURCE;
enum __USE_ATFILE = _ATFILE_SOURCE;
enum __USE_GNU = _GNU_SOURCE;
enum __USE_REENTRANT = _REENTRANT;
version (D_LP64)
enum __WORDSIZE = 64;
else
enum __WORDSIZE = 32;
}
else version (CRuntime_Bionic)
{
enum _GNU_SOURCE = false;
enum __USE_FILE_OFFSET64 = false; // see https://android.googlesource.com/platform/bionic/+/master/docs/32-bit-abi.md
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;
enum __USE_XOPEN2K = _XOPEN_SOURCE >= 600;
enum __USE_XOPEN2KXSI = _XOPEN_SOURCE >= 600;
enum __USE_XOPEN2K8 = _XOPEN_SOURCE >= 700;
enum __USE_XOPEN2K8XSI = _XOPEN_SOURCE >= 700;
version (D_LP64)
enum __WORDSIZE = 64;
else
enum __WORDSIZE = 32;
}