mirror of
https://gitlab.freedesktop.org/xorg/proto/xorgproto.git
synced 2026-05-05 04:08:00 +02:00
Add includex11dir as a path to the includes, sans X11/.
Turn Xpoll.h into a generated file. In the modular tree, substitute in
whichever of fds_bits or __fds_bits is being used for the member of
fd_set on the system; in the monolithic tree, substitute in fds_bits
unconditionally, as that's the way it was before thanks to
_XOPEN_SOURCE being defined.
This commit is contained in:
parent
7a9ce57163
commit
f97e34e65e
3 changed files with 271 additions and 22 deletions
255
Xpoll.h.in
Normal file
255
Xpoll.h.in
Normal file
|
|
@ -0,0 +1,255 @@
|
|||
/* $Xorg: Xpoll.h,v 1.4 2001/02/09 02:03:23 xorgcvs Exp $ */
|
||||
|
||||
/*
|
||||
|
||||
Copyright 1994, 1998 The Open Group
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this software and its
|
||||
documentation for any purpose is hereby granted without fee, provided that
|
||||
the above copyright notice appear in all copies and that both that
|
||||
copyright notice and this permission notice appear in supporting
|
||||
documentation.
|
||||
|
||||
The above copyright notice and this permission notice shall be included
|
||||
in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
Except as contained in this notice, the name of The Open Group shall
|
||||
not be used in advertising or otherwise to promote the sale, use or
|
||||
other dealings in this Software without prior written authorization
|
||||
from The Open Group.
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright © 2005 Daniel Stone
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||
* documentation for any purpose is hereby granted without fee, provided that
|
||||
* the above copyright notice appear in all copies and that both that
|
||||
* copyright notice and this permission notice appear in supporting
|
||||
* documentation, and that the name of Daniel Stone not be used in advertising
|
||||
* or publicity pertaining to distribution of the software without specific,
|
||||
* written prior permission. Daniel Stone makes no representations about the
|
||||
* suitability of this software for any purpose. It is provided "as is"
|
||||
* without express or implied warranty.
|
||||
*
|
||||
* DANIEL STONE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
|
||||
* ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
|
||||
* DANIEL STONE BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
|
||||
* ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $XFree86: xc/include/Xpoll.h,v 3.8 2001/01/17 17:53:11 dawes Exp $ */
|
||||
|
||||
#ifndef _XPOLL_H_
|
||||
#define _XPOLL_H_
|
||||
|
||||
#ifndef WIN32
|
||||
|
||||
#ifndef USE_POLL
|
||||
|
||||
#include <X11/Xos.h>
|
||||
|
||||
/* Below is the monster branch from hell. Basically, most systems will drop to
|
||||
* 'the branch below is the fallthrough for halfway modern systems', and include
|
||||
* <sys/select.h>, so we get the FD_* macros. */
|
||||
#if !defined(DGUX)
|
||||
# if (defined(SVR4) || defined(CRAY) || defined(AIXV3)) && !defined(FD_SETSIZE)
|
||||
# include <sys/select.h>
|
||||
# ifdef luna
|
||||
# include <sysent.h>
|
||||
# endif
|
||||
# else /* not SVR4/CRAY/AIXv3 */
|
||||
# if defined(AIXV4) /* AIX 4.2 fubar-ed <sys/select.h>, so try really hard. */
|
||||
# if !defined(NFDBITS)
|
||||
# include <sys/select.h>
|
||||
# endif
|
||||
# else /* the branch below is the fallthrough for halfway modern systems */
|
||||
# ifdef __QNX__ /* Make sure we get 256 bit select masks */
|
||||
# define FD_SETSIZE 256
|
||||
# endif
|
||||
# include <sys/select.h>
|
||||
# endif
|
||||
# endif
|
||||
#else /* DGUX -- No sys/select in Intel DG/ux */
|
||||
# include <sys/time.h>
|
||||
# include <sys/types.h>
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
|
||||
#include <X11/Xmd.h>
|
||||
|
||||
#ifdef CSRG_BASED
|
||||
#include <sys/param.h>
|
||||
# if BSD < 199103
|
||||
typedef long fd_mask;
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#define XFD_SETSIZE 256
|
||||
|
||||
#ifndef FD_SETSIZE
|
||||
#define FD_SETSIZE XFD_SETSIZE
|
||||
#endif
|
||||
|
||||
#ifndef NBBY
|
||||
#define NBBY 8 /* number of bits in a byte */
|
||||
#endif
|
||||
|
||||
#ifndef NFDBITS
|
||||
#define NFDBITS (sizeof(fd_mask) * NBBY) /* bits per mask */
|
||||
#endif
|
||||
|
||||
#ifndef howmany
|
||||
#define howmany(x,y) (((x)+((y)-1))/(y))
|
||||
#endif
|
||||
|
||||
#if defined(BSD) && BSD < 198911 && !defined(luna)
|
||||
typedef struct fd_set {
|
||||
fd_mask fds_bits[howmany(FD_SETSIZE, NFDBITS)];
|
||||
} fd_set;
|
||||
#endif
|
||||
|
||||
#ifndef hpux /* and perhaps old BSD ??? */
|
||||
# define Select(n,r,w,e,t) select(n,(fd_set*)r,(fd_set*)w,(fd_set*)e,(struct timeval*)t)
|
||||
#else
|
||||
# ifndef _XPG4_EXTENDED /* HPUX 9.x and earlier */
|
||||
# define Select(n,r,w,e,t) select(n,(int*)r,(int*)w,(int*)e,(struct timeval*)t)
|
||||
# else
|
||||
# define Select(n,r,w,e,t) select(n,(fd_set*)r,(fd_set*)w,(fd_set*)e,(struct timeval*)t)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#define __X_FDS_BITS @USE_FDS_BITS@
|
||||
|
||||
#ifndef __FDS_BITS
|
||||
# define __FDS_BITS(p) ((p)->__X_FDS_BITS)
|
||||
#endif
|
||||
|
||||
#define __XFDS_BITS(p, n) (__FDS_BITS(p))[n]
|
||||
|
||||
#ifndef FD_SET
|
||||
#define FD_SET(n, p) (__XFDS_BITS(p, ((n)/NFDBITS)) |= ((fd_mask)1 << ((n) % NFDBITS)))
|
||||
#endif
|
||||
#ifndef FD_CLR
|
||||
#define FD_CLR(n, p) (__XFDS_BITS((p), ((n)/NFDBITS)) &= ~((fd_mask)1 << ((n) % NFDBITS)))
|
||||
#endif
|
||||
#ifndef FD_ISSET
|
||||
#define FD_ISSET(n, p) ((__XFDS_BITS((p), ((n)/NFDBITS))) & ((fd_mask)1 << ((n) % NFDBITS)))
|
||||
#endif
|
||||
#ifndef FD_ZERO
|
||||
#define FD_ZERO(p) bzero((char *)(p), sizeof(*(p)))
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The howmany(FD_SETSIZE, NFDBITS) computes the number of elements in the
|
||||
* array. before accessing an element in the array we check it exists.
|
||||
* If it does not exist then the compiler discards the code to access it.
|
||||
*/
|
||||
#define XFD_ANYSET(p) \
|
||||
((howmany(FD_SETSIZE, NFDBITS) > 0 && (__XFDS_BITS(p, 0))) || \
|
||||
(howmany(FD_SETSIZE, NFDBITS) > 1 && (__XFDS_BITS(p, 1))) || \
|
||||
(howmany(FD_SETSIZE, NFDBITS) > 2 && (__XFDS_BITS(p, 2))) || \
|
||||
(howmany(FD_SETSIZE, NFDBITS) > 3 && (__XFDS_BITS(p, 3))) || \
|
||||
(howmany(FD_SETSIZE, NFDBITS) > 4 && (__XFDS_BITS(p, 4))) || \
|
||||
(howmany(FD_SETSIZE, NFDBITS) > 5 && (__XFDS_BITS(p, 5))) || \
|
||||
(howmany(FD_SETSIZE, NFDBITS) > 6 && (__XFDS_BITS(p, 6))) || \
|
||||
(howmany(FD_SETSIZE, NFDBITS) > 7 && (__XFDS_BITS(p, 7))))
|
||||
|
||||
#define XFD_COPYSET(src,dst) { \
|
||||
int __i__; \
|
||||
for (__i__ = 0; __i__ < howmany(FD_SETSIZE, NFDBITS); __i__++) \
|
||||
__XFDS_BITS((dst), __i__) = __XFDS_BITS((src), __i__); \
|
||||
}
|
||||
#define XFD_ANDSET(dst,b1,b2) { \
|
||||
int __i__; \
|
||||
for (__i__ = 0; __i__ < howmany(FD_SETSIZE, NFDBITS); __i__++) \
|
||||
__XFDS_BITS((dst), __i__) = ((__XFDS_BITS((b1), __i__)) & (__XFDS_BITS((b2), __i__))); \
|
||||
}
|
||||
#define XFD_ORSET(dst,b1,b2) { \
|
||||
int __i__; \
|
||||
for (__i__ = 0; __i__ < howmany(FD_SETSIZE, NFDBITS); __i__++) \
|
||||
__XFDS_BITS((dst), __i__) = ((__XFDS_BITS((b1), __i__)) | (__XFDS_BITS((b2), __i__))); \
|
||||
}
|
||||
#define XFD_UNSET(dst,b1) { \
|
||||
int __i__; \
|
||||
for (__i__ = 0; __i__ < howmany(FD_SETSIZE, NFDBITS); __i__++) \
|
||||
__XFDS_BITS((dst), __i__) &= ~(__XFDS_BITS((b1), __i__)); \
|
||||
}
|
||||
|
||||
#else /* USE_POLL */
|
||||
#include <sys/poll.h>
|
||||
#endif /* USE_POLL */
|
||||
|
||||
#else /* WIN32 */
|
||||
|
||||
#define XFD_SETSIZE 256
|
||||
#ifndef FD_SETSIZE
|
||||
#define FD_SETSIZE XFD_SETSIZE
|
||||
#endif
|
||||
#include <X11/Xwinsock.h>
|
||||
|
||||
#define Select(n,r,w,e,t) select(0,(fd_set*)r,(fd_set*)w,(fd_set*)e,(struct timeval*)t)
|
||||
|
||||
#define XFD_SETCOUNT(p) (((fd_set FAR *)(p))->fd_count)
|
||||
#define XFD_FD(p,i) (((fd_set FAR *)(p))->fd_array[i])
|
||||
#define XFD_ANYSET(p) XFD_SETCOUNT(p)
|
||||
|
||||
#define XFD_COPYSET(src,dst) { \
|
||||
u_int __i; \
|
||||
FD_ZERO(dst); \
|
||||
for (__i = 0; __i < XFD_SETCOUNT(src) ; __i++) { \
|
||||
XFD_FD(dst,__i) = XFD_FD(src,__i); \
|
||||
} \
|
||||
XFD_SETCOUNT(dst) = XFD_SETCOUNT(src); \
|
||||
}
|
||||
|
||||
#define XFD_ANDSET(dst,b1,b2) { \
|
||||
u_int __i; \
|
||||
FD_ZERO(dst); \
|
||||
for (__i = 0; __i < XFD_SETCOUNT(b1) ; __i++) { \
|
||||
if (FD_ISSET(XFD_FD(b1,__i), b2)) \
|
||||
FD_SET(XFD_FD(b1,__i), dst); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define XFD_ORSET(dst,b1,b2) { \
|
||||
u_int __i; \
|
||||
if (dst != b1) XFD_COPYSET(b1,dst); \
|
||||
for (__i = 0; __i < XFD_SETCOUNT(b2) ; __i++) { \
|
||||
if (!FD_ISSET(XFD_FD(b2,__i), dst)) \
|
||||
FD_SET(XFD_FD(b2,__i), dst); \
|
||||
} \
|
||||
}
|
||||
|
||||
/* this one is really sub-optimal */
|
||||
#define XFD_UNSET(dst,b1) { \
|
||||
u_int __i; \
|
||||
for (__i = 0; __i < XFD_SETCOUNT(b1) ; __i++) { \
|
||||
FD_CLR(XFD_FD(b1,__i), dst); \
|
||||
} \
|
||||
}
|
||||
|
||||
/* we have to pay the price of having an array here, unlike with bitmasks
|
||||
calling twice FD_SET with the same fd is not transparent, so be careful */
|
||||
#undef FD_SET
|
||||
#define FD_SET(fd,set) do { \
|
||||
if (XFD_SETCOUNT(set) < FD_SETSIZE && !FD_ISSET(fd,set)) \
|
||||
XFD_FD(set,XFD_SETCOUNT(set)++)=(fd); \
|
||||
} while(0)
|
||||
|
||||
#define getdtablesize() FD_SETSIZE
|
||||
|
||||
#endif /* WIN32 */
|
||||
|
||||
#endif /* _XPOLL_H_ */
|
||||
35
configure.ac
35
configure.ac
|
|
@ -1,45 +1,38 @@
|
|||
AC_PREREQ([2.57])
|
||||
AC_INIT([Xproto], [7.0], [xorg@lists.freedesktop.org])
|
||||
AM_INIT_AUTOMAKE([foreign dist-bzip2])
|
||||
#
|
||||
|
||||
PROTO_DEFINES=
|
||||
|
||||
|
||||
# Find out what defines are necessary to make struct fd_set contain
|
||||
# fds_bits
|
||||
#
|
||||
|
||||
fds_bits_found=false;
|
||||
|
||||
# No defines necessary?
|
||||
if test x$fds_bits_found = xfalse ; then
|
||||
if test "x$fds_bits_found" = xfalse ; then
|
||||
AC_CHECK_MEMBER(fd_set.fds_bits,
|
||||
[
|
||||
fds_bits_found=true
|
||||
fds_bits_found=plain
|
||||
USE_FDS_BITS="fds_bits"
|
||||
],,
|
||||
[
|
||||
#include <sys/select.h>
|
||||
])
|
||||
fi
|
||||
|
||||
# With _XOPEN_SOURCE?
|
||||
|
||||
unset ac_cv_member_fd_set_fds_bits
|
||||
|
||||
if test x$fds_bits_found = xfalse ; then
|
||||
AC_CHECK_MEMBER(fd_set.fds_bits,
|
||||
if test "x$fds_bits_found" = xfalse ; then
|
||||
AC_CHECK_MEMBER(fd_set.__fds_bits,
|
||||
[
|
||||
fds_bits_found=true
|
||||
PROTO_DEFINES="$PROTO_DEFINES -D_XOPEN_SOURCE"
|
||||
fds_bits_found=underscores
|
||||
USE_FDS_BITS="__fds_bits"
|
||||
],,
|
||||
[
|
||||
#define _XOPEN_SOURCE
|
||||
#include <sys/select.h>
|
||||
])
|
||||
fi
|
||||
|
||||
AC_SUBST(PROTO_DEFINES)
|
||||
if test "x$fds_bits_found" = xfalse ; then
|
||||
AC_MSG_ERROR([Could not determine how to access the fds_bits or equivalent
|
||||
structure in fd_set on your platform.])
|
||||
fi
|
||||
|
||||
AC_SUBST([USE_FDS_BITS])
|
||||
|
||||
AC_OUTPUT([Makefile
|
||||
Xpoll.h
|
||||
xproto.pc])
|
||||
|
|
|
|||
|
|
@ -2,8 +2,9 @@ prefix=@prefix@
|
|||
exec_prefix=@exec_prefix@
|
||||
libdir=@libdir@
|
||||
includedir=@includedir@
|
||||
includex11dir=@includedir@/X11
|
||||
|
||||
Name: Xproto
|
||||
Description: Xproto headers
|
||||
Version: @PACKAGE_VERSION@
|
||||
Cflags: -I${includedir} @PROTO_DEFINES@
|
||||
Cflags: -I${includedir}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue