1 /** 2 * D header file for POSIX. 3 * 4 * Copyright: Copyright Sean Kelly 2005 - 2009. 5 * License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0). 6 * Authors: Sean Kelly, 7 Alex Rønne Petersen 8 * Standards: The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition 9 */ 10 11 /* Copyright Sean Kelly 2005 - 2009. 12 * Distributed under the Boost Software License, Version 1.0. 13 * (See accompanying file LICENSE or copy at 14 * http://www.boost.org/LICENSE_1_0.txt) 15 */ 16 module core.sys.posix.config; 17 18 public import core.stdc.config; 19 20 version (Posix): 21 extern (C) nothrow @nogc: 22 23 enum _XOPEN_SOURCE = 600; 24 enum _POSIX_SOURCE = true; 25 enum _POSIX_C_SOURCE = 200112L; 26 27 version (CRuntime_Glibc) 28 { 29 // man 7 feature_test_macros 30 // http://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html 31 enum _GNU_SOURCE = false; 32 enum _DEFAULT_SOURCE = false; 33 enum _ATFILE_SOURCE = false; 34 35 // _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for _DEFAULT_SOURCE. 36 deprecated("use _DEFAULT_SOURCE") 37 { 38 enum _BSD_SOURCE = false; 39 enum _SVID_SOURCE = false; 40 } 41 42 enum _FILE_OFFSET_BITS = 64; 43 // <sys/cdefs.h> 44 enum __REDIRECT = false; 45 46 enum _REENTRANT = true; // set by compiler when linking -pthread 47 48 // deduced <features.h> 49 enum __USE_FILE_OFFSET64 = _FILE_OFFSET_BITS == 64; 50 enum __USE_LARGEFILE = __USE_FILE_OFFSET64 && !__REDIRECT; 51 enum __USE_LARGEFILE64 = __USE_FILE_OFFSET64 && !__REDIRECT; 52 53 deprecated("use _XOPEN_SOURCE >= 600") 54 { 55 enum __USE_XOPEN2K = _XOPEN_SOURCE >= 600; 56 enum __USE_XOPEN2KXSI = _XOPEN_SOURCE >= 600; 57 } 58 deprecated("use _XOPEN_SOURCE >= 700") 59 { 60 enum __USE_XOPEN2K8 = _XOPEN_SOURCE >= 700; 61 enum __USE_XOPEN2K8XSI = _XOPEN_SOURCE >= 700; 62 } 63 64 deprecated("use _DEFAULT_SOURCE") 65 enum __USE_MISC = _DEFAULT_SOURCE; 66 deprecated("use _ATFILE_SOURCE") 67 enum __USE_ATFILE = _ATFILE_SOURCE; 68 deprecated("use _GNU_SOURCE") 69 enum __USE_GNU = _GNU_SOURCE; 70 deprecated("use _REENTRANT") 71 enum __USE_REENTRANT = _REENTRANT; 72 73 version (D_LP64) 74 enum __WORDSIZE = 64; 75 else 76 enum __WORDSIZE = 32; 77 } 78 else version (CRuntime_Musl) 79 { 80 enum _GNU_SOURCE = false; 81 enum _DEFAULT_SOURCE = false; 82 enum _ATFILE_SOURCE = false; 83 84 // off_t is always 64 bits on Musl 85 enum _FILE_OFFSET_BITS = 64; 86 enum __USE_FILE_OFFSET64 = true; 87 88 version (D_LP64) 89 enum __WORDSIZE = 64; 90 else 91 enum __WORDSIZE = 32; 92 } 93 else version (CRuntime_UClibc) 94 { 95 enum _GNU_SOURCE = false; 96 enum _DEFAULT_SOURCE = false; 97 enum _ATFILE_SOURCE = false; 98 99 enum _FILE_OFFSET_BITS = 64; 100 enum __REDIRECT = false; 101 102 enum _REENTRANT = true; 103 104 enum __USE_FILE_OFFSET64 = _FILE_OFFSET_BITS == 64; 105 enum __USE_LARGEFILE = __USE_FILE_OFFSET64 && !__REDIRECT; 106 enum __USE_LARGEFILE64 = __USE_FILE_OFFSET64 && !__REDIRECT; 107 108 deprecated("use _XOPEN_SOURCE >= 600") 109 { 110 enum __USE_XOPEN2K = _XOPEN_SOURCE >= 600; 111 enum __USE_XOPEN2KXSI = _XOPEN_SOURCE >= 600; 112 } 113 deprecated("use _XOPEN_SOURCE >= 700") 114 { 115 enum __USE_XOPEN2K8 = _XOPEN_SOURCE >= 700; 116 enum __USE_XOPEN2K8XSI = _XOPEN_SOURCE >= 700; 117 } 118 119 deprecated("use _DEFAULT_SOURCE") 120 enum __USE_MISC = _DEFAULT_SOURCE; 121 deprecated("use _ATFILE_SOURCE") 122 enum __USE_ATFILE = _ATFILE_SOURCE; 123 deprecated("use _GNU_SOURCE") 124 enum __USE_GNU = _GNU_SOURCE; 125 deprecated("use _REENTRANT") 126 enum __USE_REENTRANT = _REENTRANT; 127 128 version (D_LP64) 129 enum __WORDSIZE = 64; 130 else 131 enum __WORDSIZE = 32; 132 } 133 else version (CRuntime_Bionic) 134 { 135 enum _GNU_SOURCE = false; 136 enum _DEFAULT_SOURCE = false; 137 enum _ATFILE_SOURCE = false; 138 139 enum __USE_FILE_OFFSET64 = false; // see https://android.googlesource.com/platform/bionic/+/master/docs/32-bit-abi.md 140 deprecated("use _GNU_SOURCE") 141 enum __USE_GNU = _GNU_SOURCE; 142 143 version (D_LP64) 144 enum __WORDSIZE = 64; 145 else 146 enum __WORDSIZE = 32; 147 } 148 else version (OpenBSD) 149 { 150 version (Alpha) 151 { 152 enum _ALIGNBYTES = 7; 153 enum _STACKALIGNBYTES = 7; 154 enum _MAX_PAGE_SHIFT = 13; 155 } 156 else version (X86_64) 157 { 158 enum _ALIGNBYTES = c_long.sizeof - 1; 159 enum _STACKALIGNBYTES = 15; 160 enum _MAX_PAGE_SHIFT = 12; 161 } 162 else version (AArch64) 163 { 164 enum _ALIGNBYTES = c_long.sizeof - 1; 165 enum _STACKALIGNBYTES = 15; 166 enum _MAX_PAGE_SHIFT = 12; 167 } 168 else version (ARM) 169 { 170 enum _ALIGNBYTES = 7; 171 enum _STACKALIGNBYTES = 7; 172 enum _MAX_PAGE_SHIFT = 12; 173 } 174 else version (HPPA) 175 { 176 enum _ALIGNBYTES = 7; 177 enum _STACKALIGNBYTES = 7; 178 enum _MAX_PAGE_SHIFT = 12; 179 } 180 else version (X86) 181 { 182 enum _ALIGNBYTES = 3; 183 enum _STACKALIGNBYTES = 15; 184 enum _MAX_PAGE_SHIFT = 12; 185 } 186 else version (PPC) 187 { 188 enum _ALIGNBYTES = 7; 189 enum _STACKALIGNBYTES = 15; 190 enum _MAX_PAGE_SHIFT = 12; 191 } 192 else version (SPARC64) 193 { 194 enum _ALIGNBYTES = 15; 195 enum _STACKALIGNBYTES = 15; 196 enum _MAX_PAGE_SHIFT = 13; 197 } 198 else 199 static assert(false, "Architecture not supported."); 200 } 201 else version (Solaris) 202 { 203 enum _FILE_OFFSET_BITS = 64; 204 enum __REDIRECT = false; 205 206 enum __USE_FILE_OFFSET64 = _FILE_OFFSET_BITS == 64; 207 enum __USE_LARGEFILE = __USE_FILE_OFFSET64 && !__REDIRECT; 208 enum __USE_LARGEFILE64 = __USE_FILE_OFFSET64 && !__REDIRECT; 209 210 deprecated("use _XOPEN_SOURCE >= 600") 211 { 212 enum __USE_XOPEN2K = _XOPEN_SOURCE >= 600; 213 enum __USE_XOPEN2KXSI = _XOPEN_SOURCE >= 600; 214 } 215 deprecated("use _XOPEN_SOURCE >= 700") 216 { 217 enum __USE_XOPEN2K8 = _XOPEN_SOURCE >= 700; 218 enum __USE_XOPEN2K8XSI = _XOPEN_SOURCE >= 700; 219 } 220 221 version (D_LP64) 222 enum __WORDSIZE = 64; 223 else 224 enum __WORDSIZE = 32; 225 }