Initial revision
authorroland <roland>
Wed, 17 Jul 1991 18:59:01 +0000 (18:59 +0000)
committerroland <roland>
Wed, 17 Jul 1991 18:59:01 +0000 (18:59 +0000)
features.h [new file with mode: 0644]

diff --git a/features.h b/features.h
new file mode 100644 (file)
index 0000000..d00c1b8
--- /dev/null
@@ -0,0 +1,140 @@
+/* Copyright (C) 1991 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB.  If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA.  */
+
+#ifndef        _FEATURES_H
+
+#define        _FEATURES_H     1
+
+/* These are defined by the user (or the compiler)
+   to specify the desired environment:
+
+   __STRICT_ANSI__     ANSI Standard C.
+   _POSIX_SOURCE       IEEE Std 1003.1.
+   _POSIX_C_SOURCE     If ==1, like _POSIX_SOURCE; if ==2 add IEEE Std 1003.2.
+   _BSD_SOURCE         ANSI, POSIX, and 4.3BSD things.
+   _SVID_SOURCE                ANSI, POSIX, and SVID things.
+   _GNU_SOURCE         All of the above, plus GNU extensions.
+
+   The `-ansi' switch to the GNU C compiler defines __STRICT_ANSI__.
+   If none of these are defined, the default is _GNU_SOURCE.
+   If more than one of these are defined, they accumulate.
+   For example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE
+   together give you ANSI C, 1003.1, and 1003.2, but nothing else.
+
+   These are defined by this file and are used by the
+   header files to decide what to declare or define:
+
+   __USE_POSIX         Define IEEE Std 1003.1 things.
+   __USE_POSIX2                Define IEEE Std 1003.2 things.
+   __USE_BSD           Define 4.3BSD things.
+   __USE_SVID          Define SVID things.
+   __USE_MISC          Define things common to BSD and System V Unix.
+   __USE_GNU           Define GNU extensions.
+   __FAVOR_BSD         Favor 4.3BSD things in cases of conflict.
+
+   The macro `__GNU_LIBRARY__' is defined by this file unconditionally.
+
+   All macros defined by this file are defined as 1.
+   All macros listed above as possibly being defined by this file are
+   explicitly undefined if they are not explicitly defined.
+   Feature-test macros that are not defined by the user or compiler
+   but are implied by the other feature-test macros defined (or by the
+   lack of any definitions) are defined by the file.  */
+
+
+/* Undefine everything, so we get a clean slate.  */
+#undef __USE_POSIX
+#undef __USE_POSIX2
+#undef __USE_BSD
+#undef __USE_SVID
+#undef __USE_MISC
+#undef __USE_GNU
+#undef __FAVOR_BSD
+
+
+/* If nothing is defined, define _GNU_SOURCE.  */
+#if (!defined(_GNU_SOURCE) && !defined(__STRICT_ANSI__) && \
+     !defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE) && \
+     !defined(_BSD_SOURCE) && !defined(_SVID_SOURCE))
+#define        _GNU_SOURCE     1
+#endif
+
+
+/* Always use ANSI things.  */
+#define        __USE_ANSI      1
+
+
+/* If _BSD_SOURCE was defined by the user, favor BSD over POSIX.  */
+#ifdef _BSD_SOURCE
+#define        __FAVOR_BSD     1
+#endif
+
+
+/* If nothing (other than _GNU_SOURCE) is defined,
+   define _BSD_SOURCE and _SVID_SOURCE.  */
+#if (!defined(__STRICT_ANSI__) && !defined(_POSIX_SOURCE) && \
+     !defined(_POSIX_C_SOURCE) && !defined(_BSD_SOURCE) && \
+     !defined(_SVID_SOURCE))
+#define        _BSD_SOURCE     1
+#define        _SVID_SOURCE    1
+#endif
+
+/* If none of the ANSI/POSIX macros are defined, use POSIX.1 and POSIX.2.  */
+#if (!defined(__STRICT_ANSI__) && !defined(_POSIX_SOURCE) && \
+     !defined(_POSIX_C_SOURCE))
+#define        _POSIX_SOURCE   1
+#define        _POSIX_C_SOURCE 2
+#endif
+
+#if    defined(_POSIX_SOURCE) || _POSIX_C_SOURCE >= 1
+#define        __USE_POSIX     1
+#endif
+
+#if    defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 2
+#define        __USE_POSIX2    1
+#endif
+
+#if defined(_BSD_SOURCE) || defined(_SVID_SOURCE)
+#define        __USE_MISC      1
+#endif
+
+#ifdef _BSD_SOURCE
+#define        __USE_BSD       1
+#endif
+
+#ifdef _SVID_SOURCE
+#define        __USE_SVID      1
+#endif
+
+#ifdef _GNU_SOURCE
+#define        __USE_GNU       1
+#endif
+
+
+#undef __GNU_LIBRARY__
+#define        __GNU_LIBRARY__ 1
+
+
+#if    !defined(__GNUC__) || __GNUC__ < 2
+/* In GCC version 2, (__extension__ EXPR) will not complain
+   about GCC extensions used in EXPR under -ansi or -pedantic.  */
+#define        __extension__
+#endif
+
+
+#endif /* __features.h  */