about summary refs log tree commit diff
path: root/misc/sys/cdefs.h
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>1995-02-18 01:27:10 +0000
committerRoland McGrath <roland@gnu.org>1995-02-18 01:27:10 +0000
commit28f540f45bbacd939bfd07f213bcad2bf730b1bf (patch)
tree15f07c4c43d635959c6afee96bde71fb1b3614ee /misc/sys/cdefs.h
downloadglibc-28f540f45bbacd939bfd07f213bcad2bf730b1bf.tar.gz
glibc-28f540f45bbacd939bfd07f213bcad2bf730b1bf.tar.xz
glibc-28f540f45bbacd939bfd07f213bcad2bf730b1bf.zip
initial import
Diffstat (limited to 'misc/sys/cdefs.h')
-rw-r--r--misc/sys/cdefs.h104
1 files changed, 104 insertions, 0 deletions
diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h
new file mode 100644
index 0000000000..8336aa4038
--- /dev/null
+++ b/misc/sys/cdefs.h
@@ -0,0 +1,104 @@
+/* Copyright (C) 1992, 1993, 1994, 1995 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	_SYS_CDEFS_H
+
+#define	_SYS_CDEFS_H	1
+#include <features.h>
+
+/* Some user header file might have defined this before.  */
+#undef	__P
+
+#ifdef __GNUC__
+
+#define	__P(args)	args	/* GCC can always grok prototypes.  */
+#define	__DOTS		, ...
+
+#else	/* Not GCC.  */
+
+#define	__inline		/* No inline functions.  */
+
+#if (defined (__STDC__) && __STDC__) || defined (__cplusplus)
+
+#define	__P(args)	args
+#define	__const		const
+#define	__signed	signed
+#define	__volatile	volatile
+#define	__DOTS		, ...
+
+#else	/* Not ANSI C or C++.  */
+
+#define	__P(args)	()	/* No prototypes.  */
+#define	__const			/* No ANSI C keywords.  */
+#define	__signed
+#define	__volatile
+#define	__DOTS
+
+#endif	/* ANSI C or C++.  */
+
+#endif	/* GCC.  */
+
+/* For these things, GCC behaves the ANSI way normally,
+   and the non-ANSI way under -traditional.  */
+
+#if defined (__STDC__) && __STDC__
+
+#define	__CONCAT(x,y)	x ## y
+#define	__STRING(x)	#x
+
+/* This is not a typedef so `const __ptr_t' does the right thing.  */
+#define __ptr_t void *
+typedef long double __long_double_t;
+
+#else
+
+#define	__CONCAT(x,y)	x/**/y
+#define	__STRING(x)	"x"
+
+#define __ptr_t char *
+typedef double __long_double_t;
+
+#endif
+
+/* The BSD header files use the ANSI keywords unmodified.  (This means that
+   old programs may lose if they use the new keywords as identifiers.)  We
+   define them to their __ versions, which are taken care of above.  */
+
+#ifdef	__USE_BSD
+#define	const		__const
+#define	signed		__signed
+#define	volatile	__volatile
+#endif
+
+/* C++ needs to know that types and declarations are C, not C++.  */
+#ifdef	__cplusplus
+#define	__BEGIN_DECLS	extern "C" {
+#define	__END_DECLS	}
+#else
+#define	__BEGIN_DECLS
+#define	__END_DECLS
+#endif
+
+/* GCC2 has various useful declarations that can be made with the
+   `__attribute__' syntax.  All of the ways we use this do fine if
+   they are omitted for compilers that don't understand it.  */
+#if !defined (__GNUC__) || __GNUC__ < 2
+#define __attribute__(xyz)	/* Ignore.  */
+#endif
+
+#endif	 /* sys/cdefs.h */