1/* Handle POSIX compilation environments that may or may not be present. 2 Copyright (C) 2012-2022 Free Software Foundation, Inc. 3 This file is part of the GNU C Library. 4 5 The GNU C Library is free software; you can redistribute it and/or 6 modify it under the terms of the GNU Lesser General Public 7 License as published by the Free Software Foundation; either 8 version 2.1 of the License, or (at your option) any later version. 9 10 The GNU C Library is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 Lesser General Public License for more details. 14 15 You should have received a copy of the GNU Lesser General Public 16 License along with the GNU C Library; if not, see 17 <https://www.gnu.org/licenses/>. */ 18 19/* Before including this file, the including file must have included 20 <bits/environments.h> (generally via <unistd.h>) and must have 21 defined the following macros, exactly one of which will be called 22 for each POSIX environment: 23 24 KNOWN_PRESENT_ENVIRONMENT, for POSIX environments that are known to 25 be supported in this libc. 26 27 KNOWN_ABSENT_ENVIRONMENT, for POSIX environments that are known not 28 to be supported on this system. 29 30 UNKNOWN_ENVIRONMENT, for POSIX environments not supported in this 31 libc but possibly supported by another libc on the same system, 32 that can be selected using the same compiler but different 33 compilation options. 34 35 Each macro has arguments (SC_PREFIX, ENV_PREFIX, SUFFIX). The 36 corresponding argument to sysconf is _SC_##SC_PREFIX##_##SUFFIX. 37 The environment name, as used with getconf, is 38 ENV_PREFIX##_##SUFFIX, and the corresponding macro is the same with 39 a leading "_". 40 41 In addition, the macros START_ENV_GROUP and END_ENV_GROUP must be 42 defined. These are called with arguments V5, V6, V7 before and 43 after the relevant groups of environments. */ 44 45#define NEED_SPEC_ARRAY 0 46#include <posix-conf-vars.h> 47 48START_ENV_GROUP (V7) 49 50#if CONF_IS_DEFINED_SET (_POSIX_V7_ILP32_OFF32) 51KNOWN_PRESENT_ENVIRONMENT (V7, POSIX_V7, ILP32_OFF32) 52#elif CONF_IS_DEFINED (_POSIX_V7_ILP32_OFF32) 53KNOWN_ABSENT_ENVIRONMENT (V7, POSIX_V7, ILP32_OFF32) 54#else 55UNKNOWN_ENVIRONMENT (V7, POSIX_V7, ILP32_OFF32) 56#endif 57 58#if CONF_IS_DEFINED_SET (_POSIX_V7_ILP32_OFFBIG) 59KNOWN_PRESENT_ENVIRONMENT (V7, POSIX_V7, ILP32_OFFBIG) 60#elif CONF_IS_DEFINED (_POSIX_V7_ILP32_OFFBIG) 61KNOWN_ABSENT_ENVIRONMENT (V7, POSIX_V7, ILP32_OFFBIG) 62#else 63UNKNOWN_ENVIRONMENT (V7, POSIX_V7, ILP32_OFFBIG) 64#endif 65 66#if CONF_IS_DEFINED_SET (_POSIX_V7_LP64_OFF64) 67KNOWN_PRESENT_ENVIRONMENT (V7, POSIX_V7, LP64_OFF64) 68#elif CONF_IS_DEFINED (_POSIX_V7_LP64_OFF64) 69KNOWN_ABSENT_ENVIRONMENT (V7, POSIX_V7, LP64_OFF64) 70#else 71UNKNOWN_ENVIRONMENT (V7, POSIX_V7, LP64_OFF64) 72#endif 73 74#if CONF_IS_DEFINED_SET (_POSIX_V7_LPBIG_OFFBIG) 75KNOWN_PRESENT_ENVIRONMENT (V7, POSIX_V7, LPBIG_OFFBIG) 76#elif CONF_IS_DEFINED (_POSIX_V7_LPBIG_OFFBIG) 77KNOWN_ABSENT_ENVIRONMENT (V7, POSIX_V7, LPBIG_OFFBIG) 78#else 79UNKNOWN_ENVIRONMENT (V7, POSIX_V7, LPBIG_OFFBIG) 80#endif 81 82END_ENV_GROUP (V7) 83 84START_ENV_GROUP (V6) 85 86#if CONF_IS_DEFINED_SET (_POSIX_V6_ILP32_OFF32) 87KNOWN_PRESENT_ENVIRONMENT (V6, POSIX_V6, ILP32_OFF32) 88#elif CONF_IS_DEFINED (_POSIX_V6_ILP32_OFF32) 89KNOWN_ABSENT_ENVIRONMENT (V6, POSIX_V6, ILP32_OFF32) 90#else 91UNKNOWN_ENVIRONMENT (V6, POSIX_V6, ILP32_OFF32) 92#endif 93 94#if CONF_IS_DEFINED_SET (_POSIX_V6_ILP32_OFFBIG) 95KNOWN_PRESENT_ENVIRONMENT (V6, POSIX_V6, ILP32_OFFBIG) 96#elif CONF_IS_DEFINED (_POSIX_V6_ILP32_OFFBIG) 97KNOWN_ABSENT_ENVIRONMENT (V6, POSIX_V6, ILP32_OFFBIG) 98#else 99UNKNOWN_ENVIRONMENT (V6, POSIX_V6, ILP32_OFFBIG) 100#endif 101 102#if CONF_IS_DEFINED_SET (_POSIX_V6_LP64_OFF64) 103KNOWN_PRESENT_ENVIRONMENT (V6, POSIX_V6, LP64_OFF64) 104#elif CONF_IS_DEFINED (_POSIX_V6_LP64_OFF64) 105KNOWN_ABSENT_ENVIRONMENT (V6, POSIX_V6, LP64_OFF64) 106#else 107UNKNOWN_ENVIRONMENT (V6, POSIX_V6, LP64_OFF64) 108#endif 109 110#if CONF_IS_DEFINED_SET (_POSIX_V6_LPBIG_OFFBIG) 111KNOWN_PRESENT_ENVIRONMENT (V6, POSIX_V6, LPBIG_OFFBIG) 112#elif CONF_IS_DEFINED (_POSIX_V6_LPBIG_OFFBIG) 113KNOWN_ABSENT_ENVIRONMENT (V6, POSIX_V6, LPBIG_OFFBIG) 114#else 115UNKNOWN_ENVIRONMENT (V6, POSIX_V6, LPBIG_OFFBIG) 116#endif 117 118END_ENV_GROUP (V6) 119 120START_ENV_GROUP (V5) 121 122#if CONF_IS_DEFINED_SET (_XBS5_ILP32_OFF32) 123KNOWN_PRESENT_ENVIRONMENT (XBS5, XBS5, ILP32_OFF32) 124#elif CONF_IS_DEFINED (_XBS5_ILP32_OFF32) 125KNOWN_ABSENT_ENVIRONMENT (XBS5, XBS5, ILP32_OFF32) 126#else 127UNKNOWN_ENVIRONMENT (XBS5, XBS5, ILP32_OFF32) 128#endif 129 130#if CONF_IS_DEFINED_SET (_XBS5_ILP32_OFFBIG) 131KNOWN_PRESENT_ENVIRONMENT (XBS5, XBS5, ILP32_OFFBIG) 132#elif CONF_IS_DEFINED (_XBS5_ILP32_OFFBIG) 133KNOWN_ABSENT_ENVIRONMENT (XBS5, XBS5, ILP32_OFFBIG) 134#else 135UNKNOWN_ENVIRONMENT (XBS5, XBS5, ILP32_OFFBIG) 136#endif 137 138#if CONF_IS_DEFINED_SET (_XBS5_LP64_OFF64) 139KNOWN_PRESENT_ENVIRONMENT (XBS5, XBS5, LP64_OFF64) 140#elif CONF_IS_DEFINED (_XBS5_LP64_OFF64) 141KNOWN_ABSENT_ENVIRONMENT (XBS5, XBS5, LP64_OFF64) 142#else 143UNKNOWN_ENVIRONMENT (XBS5, XBS5, LP64_OFF64) 144#endif 145 146#if CONF_IS_DEFINED_SET (_XBS5_LPBIG_OFFBIG) 147KNOWN_PRESENT_ENVIRONMENT (XBS5, XBS5, LPBIG_OFFBIG) 148#elif CONF_IS_DEFINED (_XBS5_LPBIG_OFFBIG) 149KNOWN_ABSENT_ENVIRONMENT (XBS5, XBS5, LPBIG_OFFBIG) 150#else 151UNKNOWN_ENVIRONMENT (XBS5, XBS5, LPBIG_OFFBIG) 152#endif 153 154END_ENV_GROUP (V5) 155