Update libxcb to version 1.10. Tested by naddy@ and shadchin@.
This commit is contained in:
parent
bf20c0db57
commit
db5bcd8032
8
dist/libxcb/Makefile.am
vendored
8
dist/libxcb/Makefile.am
vendored
@ -1,3 +1,5 @@
|
||||
ACLOCAL_AMFLAGS=-I m4
|
||||
|
||||
SUBDIRS=src tests doc
|
||||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
@ -16,9 +18,15 @@ endif
|
||||
if BUILD_DRI2
|
||||
pkgconfig_DATA += xcb-dri2.pc
|
||||
endif
|
||||
if BUILD_DRI3
|
||||
pkgconfig_DATA += xcb-dri3.pc
|
||||
endif
|
||||
if BUILD_GLX
|
||||
pkgconfig_DATA += xcb-glx.pc
|
||||
endif
|
||||
if BUILD_PRESENT
|
||||
pkgconfig_DATA += xcb-present.pc
|
||||
endif
|
||||
if BUILD_RANDR
|
||||
pkgconfig_DATA += xcb-randr.pc
|
||||
endif
|
||||
|
35
dist/libxcb/NEWS
vendored
35
dist/libxcb/NEWS
vendored
@ -1,12 +1,43 @@
|
||||
Release 1.10 (2013-12-22)
|
||||
=========================
|
||||
* Bump libxcb-xkb SONAME due to ABI break introduced in 1.9.2
|
||||
* Enable libxcb-xkb by default
|
||||
* Bump libxcb-sync SONAME
|
||||
* c_client.py: Fix _sizeof() functions
|
||||
* c_client.py: Do not create pointers in unions
|
||||
* c_client.py: Always initialize xcb_align_to
|
||||
* Re-introduce xcb_ge_event_t (deprecated, xcb_ge_generic_event_t should be
|
||||
used instead)
|
||||
* Fix alignment issues in FD passing code
|
||||
* Fix poll() if POLLIN == ROLLRDNORM|POLLRDBAND
|
||||
* Use /usr/spool/sockets/X11/ on HP-UX for UNIX sockets
|
||||
* Make xsltproc optional
|
||||
|
||||
Release 1.9.3 (2013-11-07)
|
||||
==========================
|
||||
* Check if we need to define _XOPEN_SOURCE for struct msghdr.msg_control
|
||||
* Add configure option to enable or disable fd passing with sendmsg
|
||||
* Switch to using the CMSG_* macros for FD passing
|
||||
* Initialize automake earlier (bugfix for #66413)
|
||||
|
||||
Release 1.9.2 (2013-11-07)
|
||||
==========================
|
||||
* Add Present extension
|
||||
* Add DRI3 library
|
||||
* Add event queue splitting
|
||||
* Add support for receiving fds in replies
|
||||
* Add xcb_send_fd API
|
||||
* Remove xcb_ge_event_t from xcb.h
|
||||
* c_client.py: Inject full_sequence into GE events
|
||||
* c_client.py: Handle multiple expr. in a bitcase
|
||||
|
||||
Release 1.9.1 (2013-05-30)
|
||||
==========================
|
||||
|
||||
* Fix python code to work with python-3
|
||||
* Security fix for integer overflow in read_packet() [CVE-2013-2064]
|
||||
|
||||
Release 1.9 (2012-10-05)
|
||||
========================
|
||||
|
||||
* Always include "config.h" at the start of all C source files.
|
||||
* Add AC_USE_SYSTEM_EXTENSIONS to allow use of more system functionality
|
||||
* Return connection failure if display string specifies non-existent screen
|
||||
|
347
dist/libxcb/build-aux/compile
vendored
Normal file
347
dist/libxcb/build-aux/compile
vendored
Normal file
@ -0,0 +1,347 @@
|
||||
#! /bin/sh
|
||||
# Wrapper for compilers which do not understand '-c -o'.
|
||||
|
||||
scriptversion=2012-10-14.11; # UTC
|
||||
|
||||
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
||||
# Written by Tom Tromey <tromey@cygnus.com>.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This program 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 General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# This file is maintained in Automake, please report
|
||||
# bugs to <bug-automake@gnu.org> or send patches to
|
||||
# <automake-patches@gnu.org>.
|
||||
|
||||
nl='
|
||||
'
|
||||
|
||||
# We need space, tab and new line, in precisely that order. Quoting is
|
||||
# there to prevent tools from complaining about whitespace usage.
|
||||
IFS=" "" $nl"
|
||||
|
||||
file_conv=
|
||||
|
||||
# func_file_conv build_file lazy
|
||||
# Convert a $build file to $host form and store it in $file
|
||||
# Currently only supports Windows hosts. If the determined conversion
|
||||
# type is listed in (the comma separated) LAZY, no conversion will
|
||||
# take place.
|
||||
func_file_conv ()
|
||||
{
|
||||
file=$1
|
||||
case $file in
|
||||
/ | /[!/]*) # absolute file, and not a UNC file
|
||||
if test -z "$file_conv"; then
|
||||
# lazily determine how to convert abs files
|
||||
case `uname -s` in
|
||||
MINGW*)
|
||||
file_conv=mingw
|
||||
;;
|
||||
CYGWIN*)
|
||||
file_conv=cygwin
|
||||
;;
|
||||
*)
|
||||
file_conv=wine
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
case $file_conv/,$2, in
|
||||
*,$file_conv,*)
|
||||
;;
|
||||
mingw/*)
|
||||
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
|
||||
;;
|
||||
cygwin/*)
|
||||
file=`cygpath -m "$file" || echo "$file"`
|
||||
;;
|
||||
wine/*)
|
||||
file=`winepath -w "$file" || echo "$file"`
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# func_cl_dashL linkdir
|
||||
# Make cl look for libraries in LINKDIR
|
||||
func_cl_dashL ()
|
||||
{
|
||||
func_file_conv "$1"
|
||||
if test -z "$lib_path"; then
|
||||
lib_path=$file
|
||||
else
|
||||
lib_path="$lib_path;$file"
|
||||
fi
|
||||
linker_opts="$linker_opts -LIBPATH:$file"
|
||||
}
|
||||
|
||||
# func_cl_dashl library
|
||||
# Do a library search-path lookup for cl
|
||||
func_cl_dashl ()
|
||||
{
|
||||
lib=$1
|
||||
found=no
|
||||
save_IFS=$IFS
|
||||
IFS=';'
|
||||
for dir in $lib_path $LIB
|
||||
do
|
||||
IFS=$save_IFS
|
||||
if $shared && test -f "$dir/$lib.dll.lib"; then
|
||||
found=yes
|
||||
lib=$dir/$lib.dll.lib
|
||||
break
|
||||
fi
|
||||
if test -f "$dir/$lib.lib"; then
|
||||
found=yes
|
||||
lib=$dir/$lib.lib
|
||||
break
|
||||
fi
|
||||
if test -f "$dir/lib$lib.a"; then
|
||||
found=yes
|
||||
lib=$dir/lib$lib.a
|
||||
break
|
||||
fi
|
||||
done
|
||||
IFS=$save_IFS
|
||||
|
||||
if test "$found" != yes; then
|
||||
lib=$lib.lib
|
||||
fi
|
||||
}
|
||||
|
||||
# func_cl_wrapper cl arg...
|
||||
# Adjust compile command to suit cl
|
||||
func_cl_wrapper ()
|
||||
{
|
||||
# Assume a capable shell
|
||||
lib_path=
|
||||
shared=:
|
||||
linker_opts=
|
||||
for arg
|
||||
do
|
||||
if test -n "$eat"; then
|
||||
eat=
|
||||
else
|
||||
case $1 in
|
||||
-o)
|
||||
# configure might choose to run compile as 'compile cc -o foo foo.c'.
|
||||
eat=1
|
||||
case $2 in
|
||||
*.o | *.[oO][bB][jJ])
|
||||
func_file_conv "$2"
|
||||
set x "$@" -Fo"$file"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
func_file_conv "$2"
|
||||
set x "$@" -Fe"$file"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
-I)
|
||||
eat=1
|
||||
func_file_conv "$2" mingw
|
||||
set x "$@" -I"$file"
|
||||
shift
|
||||
;;
|
||||
-I*)
|
||||
func_file_conv "${1#-I}" mingw
|
||||
set x "$@" -I"$file"
|
||||
shift
|
||||
;;
|
||||
-l)
|
||||
eat=1
|
||||
func_cl_dashl "$2"
|
||||
set x "$@" "$lib"
|
||||
shift
|
||||
;;
|
||||
-l*)
|
||||
func_cl_dashl "${1#-l}"
|
||||
set x "$@" "$lib"
|
||||
shift
|
||||
;;
|
||||
-L)
|
||||
eat=1
|
||||
func_cl_dashL "$2"
|
||||
;;
|
||||
-L*)
|
||||
func_cl_dashL "${1#-L}"
|
||||
;;
|
||||
-static)
|
||||
shared=false
|
||||
;;
|
||||
-Wl,*)
|
||||
arg=${1#-Wl,}
|
||||
save_ifs="$IFS"; IFS=','
|
||||
for flag in $arg; do
|
||||
IFS="$save_ifs"
|
||||
linker_opts="$linker_opts $flag"
|
||||
done
|
||||
IFS="$save_ifs"
|
||||
;;
|
||||
-Xlinker)
|
||||
eat=1
|
||||
linker_opts="$linker_opts $2"
|
||||
;;
|
||||
-*)
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
|
||||
func_file_conv "$1"
|
||||
set x "$@" -Tp"$file"
|
||||
shift
|
||||
;;
|
||||
*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
|
||||
func_file_conv "$1" mingw
|
||||
set x "$@" "$file"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
shift
|
||||
done
|
||||
if test -n "$linker_opts"; then
|
||||
linker_opts="-link$linker_opts"
|
||||
fi
|
||||
exec "$@" $linker_opts
|
||||
exit 1
|
||||
}
|
||||
|
||||
eat=
|
||||
|
||||
case $1 in
|
||||
'')
|
||||
echo "$0: No command. Try '$0 --help' for more information." 1>&2
|
||||
exit 1;
|
||||
;;
|
||||
-h | --h*)
|
||||
cat <<\EOF
|
||||
Usage: compile [--help] [--version] PROGRAM [ARGS]
|
||||
|
||||
Wrapper for compilers which do not understand '-c -o'.
|
||||
Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
|
||||
arguments, and rename the output as expected.
|
||||
|
||||
If you are trying to build a whole package this is not the
|
||||
right script to run: please start by reading the file 'INSTALL'.
|
||||
|
||||
Report bugs to <bug-automake@gnu.org>.
|
||||
EOF
|
||||
exit $?
|
||||
;;
|
||||
-v | --v*)
|
||||
echo "compile $scriptversion"
|
||||
exit $?
|
||||
;;
|
||||
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
|
||||
func_cl_wrapper "$@" # Doesn't return...
|
||||
;;
|
||||
esac
|
||||
|
||||
ofile=
|
||||
cfile=
|
||||
|
||||
for arg
|
||||
do
|
||||
if test -n "$eat"; then
|
||||
eat=
|
||||
else
|
||||
case $1 in
|
||||
-o)
|
||||
# configure might choose to run compile as 'compile cc -o foo foo.c'.
|
||||
# So we strip '-o arg' only if arg is an object.
|
||||
eat=1
|
||||
case $2 in
|
||||
*.o | *.obj)
|
||||
ofile=$2
|
||||
;;
|
||||
*)
|
||||
set x "$@" -o "$2"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*.c)
|
||||
cfile=$1
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
shift
|
||||
done
|
||||
|
||||
if test -z "$ofile" || test -z "$cfile"; then
|
||||
# If no '-o' option was seen then we might have been invoked from a
|
||||
# pattern rule where we don't need one. That is ok -- this is a
|
||||
# normal compilation that the losing compiler can handle. If no
|
||||
# '.c' file was seen then we are probably linking. That is also
|
||||
# ok.
|
||||
exec "$@"
|
||||
fi
|
||||
|
||||
# Name of file we expect compiler to create.
|
||||
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
|
||||
|
||||
# Create the lock directory.
|
||||
# Note: use '[/\\:.-]' here to ensure that we don't use the same name
|
||||
# that we are using for the .o file. Also, base the name on the expected
|
||||
# object file name, since that is what matters with a parallel build.
|
||||
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
|
||||
while true; do
|
||||
if mkdir "$lockdir" >/dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
# FIXME: race condition here if user kills between mkdir and trap.
|
||||
trap "rmdir '$lockdir'; exit 1" 1 2 15
|
||||
|
||||
# Run the compile.
|
||||
"$@"
|
||||
ret=$?
|
||||
|
||||
if test -f "$cofile"; then
|
||||
test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
|
||||
elif test -f "${cofile}bj"; then
|
||||
test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
|
||||
fi
|
||||
|
||||
rmdir "$lockdir"
|
||||
exit $ret
|
||||
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# sh-indentation: 2
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
347
dist/libxcb/compile
vendored
Normal file
347
dist/libxcb/compile
vendored
Normal file
@ -0,0 +1,347 @@
|
||||
#! /bin/sh
|
||||
# Wrapper for compilers which do not understand '-c -o'.
|
||||
|
||||
scriptversion=2012-10-14.11; # UTC
|
||||
|
||||
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
||||
# Written by Tom Tromey <tromey@cygnus.com>.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This program 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 General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# This file is maintained in Automake, please report
|
||||
# bugs to <bug-automake@gnu.org> or send patches to
|
||||
# <automake-patches@gnu.org>.
|
||||
|
||||
nl='
|
||||
'
|
||||
|
||||
# We need space, tab and new line, in precisely that order. Quoting is
|
||||
# there to prevent tools from complaining about whitespace usage.
|
||||
IFS=" "" $nl"
|
||||
|
||||
file_conv=
|
||||
|
||||
# func_file_conv build_file lazy
|
||||
# Convert a $build file to $host form and store it in $file
|
||||
# Currently only supports Windows hosts. If the determined conversion
|
||||
# type is listed in (the comma separated) LAZY, no conversion will
|
||||
# take place.
|
||||
func_file_conv ()
|
||||
{
|
||||
file=$1
|
||||
case $file in
|
||||
/ | /[!/]*) # absolute file, and not a UNC file
|
||||
if test -z "$file_conv"; then
|
||||
# lazily determine how to convert abs files
|
||||
case `uname -s` in
|
||||
MINGW*)
|
||||
file_conv=mingw
|
||||
;;
|
||||
CYGWIN*)
|
||||
file_conv=cygwin
|
||||
;;
|
||||
*)
|
||||
file_conv=wine
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
case $file_conv/,$2, in
|
||||
*,$file_conv,*)
|
||||
;;
|
||||
mingw/*)
|
||||
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
|
||||
;;
|
||||
cygwin/*)
|
||||
file=`cygpath -m "$file" || echo "$file"`
|
||||
;;
|
||||
wine/*)
|
||||
file=`winepath -w "$file" || echo "$file"`
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# func_cl_dashL linkdir
|
||||
# Make cl look for libraries in LINKDIR
|
||||
func_cl_dashL ()
|
||||
{
|
||||
func_file_conv "$1"
|
||||
if test -z "$lib_path"; then
|
||||
lib_path=$file
|
||||
else
|
||||
lib_path="$lib_path;$file"
|
||||
fi
|
||||
linker_opts="$linker_opts -LIBPATH:$file"
|
||||
}
|
||||
|
||||
# func_cl_dashl library
|
||||
# Do a library search-path lookup for cl
|
||||
func_cl_dashl ()
|
||||
{
|
||||
lib=$1
|
||||
found=no
|
||||
save_IFS=$IFS
|
||||
IFS=';'
|
||||
for dir in $lib_path $LIB
|
||||
do
|
||||
IFS=$save_IFS
|
||||
if $shared && test -f "$dir/$lib.dll.lib"; then
|
||||
found=yes
|
||||
lib=$dir/$lib.dll.lib
|
||||
break
|
||||
fi
|
||||
if test -f "$dir/$lib.lib"; then
|
||||
found=yes
|
||||
lib=$dir/$lib.lib
|
||||
break
|
||||
fi
|
||||
if test -f "$dir/lib$lib.a"; then
|
||||
found=yes
|
||||
lib=$dir/lib$lib.a
|
||||
break
|
||||
fi
|
||||
done
|
||||
IFS=$save_IFS
|
||||
|
||||
if test "$found" != yes; then
|
||||
lib=$lib.lib
|
||||
fi
|
||||
}
|
||||
|
||||
# func_cl_wrapper cl arg...
|
||||
# Adjust compile command to suit cl
|
||||
func_cl_wrapper ()
|
||||
{
|
||||
# Assume a capable shell
|
||||
lib_path=
|
||||
shared=:
|
||||
linker_opts=
|
||||
for arg
|
||||
do
|
||||
if test -n "$eat"; then
|
||||
eat=
|
||||
else
|
||||
case $1 in
|
||||
-o)
|
||||
# configure might choose to run compile as 'compile cc -o foo foo.c'.
|
||||
eat=1
|
||||
case $2 in
|
||||
*.o | *.[oO][bB][jJ])
|
||||
func_file_conv "$2"
|
||||
set x "$@" -Fo"$file"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
func_file_conv "$2"
|
||||
set x "$@" -Fe"$file"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
-I)
|
||||
eat=1
|
||||
func_file_conv "$2" mingw
|
||||
set x "$@" -I"$file"
|
||||
shift
|
||||
;;
|
||||
-I*)
|
||||
func_file_conv "${1#-I}" mingw
|
||||
set x "$@" -I"$file"
|
||||
shift
|
||||
;;
|
||||
-l)
|
||||
eat=1
|
||||
func_cl_dashl "$2"
|
||||
set x "$@" "$lib"
|
||||
shift
|
||||
;;
|
||||
-l*)
|
||||
func_cl_dashl "${1#-l}"
|
||||
set x "$@" "$lib"
|
||||
shift
|
||||
;;
|
||||
-L)
|
||||
eat=1
|
||||
func_cl_dashL "$2"
|
||||
;;
|
||||
-L*)
|
||||
func_cl_dashL "${1#-L}"
|
||||
;;
|
||||
-static)
|
||||
shared=false
|
||||
;;
|
||||
-Wl,*)
|
||||
arg=${1#-Wl,}
|
||||
save_ifs="$IFS"; IFS=','
|
||||
for flag in $arg; do
|
||||
IFS="$save_ifs"
|
||||
linker_opts="$linker_opts $flag"
|
||||
done
|
||||
IFS="$save_ifs"
|
||||
;;
|
||||
-Xlinker)
|
||||
eat=1
|
||||
linker_opts="$linker_opts $2"
|
||||
;;
|
||||
-*)
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
|
||||
func_file_conv "$1"
|
||||
set x "$@" -Tp"$file"
|
||||
shift
|
||||
;;
|
||||
*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
|
||||
func_file_conv "$1" mingw
|
||||
set x "$@" "$file"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
shift
|
||||
done
|
||||
if test -n "$linker_opts"; then
|
||||
linker_opts="-link$linker_opts"
|
||||
fi
|
||||
exec "$@" $linker_opts
|
||||
exit 1
|
||||
}
|
||||
|
||||
eat=
|
||||
|
||||
case $1 in
|
||||
'')
|
||||
echo "$0: No command. Try '$0 --help' for more information." 1>&2
|
||||
exit 1;
|
||||
;;
|
||||
-h | --h*)
|
||||
cat <<\EOF
|
||||
Usage: compile [--help] [--version] PROGRAM [ARGS]
|
||||
|
||||
Wrapper for compilers which do not understand '-c -o'.
|
||||
Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
|
||||
arguments, and rename the output as expected.
|
||||
|
||||
If you are trying to build a whole package this is not the
|
||||
right script to run: please start by reading the file 'INSTALL'.
|
||||
|
||||
Report bugs to <bug-automake@gnu.org>.
|
||||
EOF
|
||||
exit $?
|
||||
;;
|
||||
-v | --v*)
|
||||
echo "compile $scriptversion"
|
||||
exit $?
|
||||
;;
|
||||
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
|
||||
func_cl_wrapper "$@" # Doesn't return...
|
||||
;;
|
||||
esac
|
||||
|
||||
ofile=
|
||||
cfile=
|
||||
|
||||
for arg
|
||||
do
|
||||
if test -n "$eat"; then
|
||||
eat=
|
||||
else
|
||||
case $1 in
|
||||
-o)
|
||||
# configure might choose to run compile as 'compile cc -o foo foo.c'.
|
||||
# So we strip '-o arg' only if arg is an object.
|
||||
eat=1
|
||||
case $2 in
|
||||
*.o | *.obj)
|
||||
ofile=$2
|
||||
;;
|
||||
*)
|
||||
set x "$@" -o "$2"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*.c)
|
||||
cfile=$1
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
shift
|
||||
done
|
||||
|
||||
if test -z "$ofile" || test -z "$cfile"; then
|
||||
# If no '-o' option was seen then we might have been invoked from a
|
||||
# pattern rule where we don't need one. That is ok -- this is a
|
||||
# normal compilation that the losing compiler can handle. If no
|
||||
# '.c' file was seen then we are probably linking. That is also
|
||||
# ok.
|
||||
exec "$@"
|
||||
fi
|
||||
|
||||
# Name of file we expect compiler to create.
|
||||
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
|
||||
|
||||
# Create the lock directory.
|
||||
# Note: use '[/\\:.-]' here to ensure that we don't use the same name
|
||||
# that we are using for the .o file. Also, base the name on the expected
|
||||
# object file name, since that is what matters with a parallel build.
|
||||
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
|
||||
while true; do
|
||||
if mkdir "$lockdir" >/dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
# FIXME: race condition here if user kills between mkdir and trap.
|
||||
trap "rmdir '$lockdir'; exit 1" 1 2 15
|
||||
|
||||
# Run the compile.
|
||||
"$@"
|
||||
ret=$?
|
||||
|
||||
if test -f "$cofile"; then
|
||||
test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
|
||||
elif test -f "${cofile}bj"; then
|
||||
test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
|
||||
fi
|
||||
|
||||
rmdir "$lockdir"
|
||||
exit $ret
|
||||
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# sh-indentation: 2
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
97
dist/libxcb/configure.ac
vendored
97
dist/libxcb/configure.ac
vendored
@ -2,20 +2,23 @@
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
|
||||
# Initialize Autoconf
|
||||
AC_PREREQ(2.57)
|
||||
AC_PREREQ([2.60])
|
||||
AC_INIT([libxcb],
|
||||
1.9.1,
|
||||
1.10,
|
||||
[xcb@lists.freedesktop.org])
|
||||
AC_CONFIG_AUX_DIR([build-aux])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
AC_CONFIG_SRCDIR([xcb.pc.in])
|
||||
# Set common system defines for POSIX extensions, such as _GNU_SOURCE
|
||||
# Must be called before any macros that run the compiler (like AC_PROG_LIBTOOL)
|
||||
# to avoid autoconf errors.
|
||||
AC_USE_SYSTEM_EXTENSIONS
|
||||
|
||||
# Initialize Automake
|
||||
AM_INIT_AUTOMAKE([foreign dist-bzip2])
|
||||
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
||||
|
||||
# Set common system defines for POSIX extensions, such as _GNU_SOURCE
|
||||
# Must be called before any macros that run the compiler (like AC_PROG_LIBTOOL)
|
||||
# to avoid autoconf errors.
|
||||
AC_USE_SYSTEM_EXTENSIONS
|
||||
|
||||
AM_PATH_PYTHON([2.6])
|
||||
|
||||
PKG_CHECK_MODULES(CHECK, [check >= 0.9.4], [HAVE_CHECK=yes], [HAVE_CHECK=no])
|
||||
@ -27,21 +30,18 @@ AC_LIBTOOL_WIN32_DLL
|
||||
AC_PROG_LIBTOOL
|
||||
AC_PROG_CC
|
||||
|
||||
AC_PATH_PROG(XSLTPROC, xsltproc, no)
|
||||
if test "$XSLTPROC" = "no"; then
|
||||
AC_MSG_ERROR([XCB requires xsltproc.])
|
||||
fi
|
||||
|
||||
HTML_CHECK_RESULT=false
|
||||
XSLTPROC=no
|
||||
HTML_CHECK_RESULT=no
|
||||
if test x"$HAVE_CHECK" = xyes; then
|
||||
AC_PATH_PROG(XSLTPROC, xsltproc, no)
|
||||
if test x"$XSLTPROC" != xno; then
|
||||
HTML_CHECK_RESULT=true
|
||||
HTML_CHECK_RESULT=yes
|
||||
fi
|
||||
fi
|
||||
AC_SUBST(HTML_CHECK_RESULT)
|
||||
|
||||
# Checks for pkg-config packages
|
||||
PKG_CHECK_MODULES(XCBPROTO, xcb-proto >= 1.7)
|
||||
PKG_CHECK_MODULES(XCBPROTO, xcb-proto >= 1.10)
|
||||
NEEDED="pthread-stubs xau >= 0.99.2"
|
||||
PKG_CHECK_MODULES(NEEDED, $NEEDED)
|
||||
|
||||
@ -81,6 +81,55 @@ AC_HEADER_STDC
|
||||
AC_SEARCH_LIBS(getaddrinfo, socket)
|
||||
AC_SEARCH_LIBS(connect, socket)
|
||||
|
||||
AC_ARG_ENABLE(sendfds, AS_HELP_STRING([--disable-sendfds], [Support FD passing (default: auto)]),
|
||||
[sendfds=$enableval], [sendfds=auto])
|
||||
|
||||
case x$sendfds in
|
||||
xauto)
|
||||
AC_SEARCH_LIBS(sendmsg, socket, [sendfds="yes"], [sendfds="no"])
|
||||
;;
|
||||
esac
|
||||
|
||||
# XPG4v2/UNIX95 added msg_control - check to see if we need to define
|
||||
# _XOPEN_SOURCE to get it (such as on Solaris)
|
||||
AC_CHECK_MEMBER([struct msghdr.msg_control], [], [],
|
||||
[
|
||||
AC_INCLUDES_DEFAULT
|
||||
#include <sys/socket.h>
|
||||
])
|
||||
# First try for Solaris in C99 compliant mode, which requires XPG6/UNIX03
|
||||
if test "x$ac_cv_member_struct_msghdr_msg_control" = xno; then
|
||||
unset ac_cv_member_struct_msghdr_msg_control
|
||||
AC_MSG_NOTICE([trying again with _XOPEN_SOURCE=600])
|
||||
AC_CHECK_MEMBER([struct msghdr.msg_control],
|
||||
[AC_DEFINE([_XOPEN_SOURCE], [600],
|
||||
[Defined if needed to expose struct msghdr.msg_control])
|
||||
], [], [
|
||||
#define _XOPEN_SOURCE 600
|
||||
AC_INCLUDES_DEFAULT
|
||||
#include <sys/socket.h>
|
||||
])
|
||||
fi
|
||||
# If that didn't work, fall back to XPG5/UNIX98 with C89
|
||||
if test "x$ac_cv_member_struct_msghdr_msg_control" = xno; then
|
||||
unset ac_cv_member_struct_msghdr_msg_control
|
||||
AC_MSG_NOTICE([trying again with _XOPEN_SOURCE=500])
|
||||
AC_CHECK_MEMBER([struct msghdr.msg_control],
|
||||
[AC_DEFINE([_XOPEN_SOURCE], [500],
|
||||
[Defined if needed to expose struct msghdr.msg_control])
|
||||
], [sendfds="no"], [
|
||||
#define _XOPEN_SOURCE 500
|
||||
AC_INCLUDES_DEFAULT
|
||||
#include <sys/socket.h>
|
||||
])
|
||||
fi
|
||||
|
||||
case x$sendfds in
|
||||
xyes)
|
||||
AC_DEFINE([HAVE_SENDMSG],1,[Define if your platform supports sendmsg])
|
||||
;;
|
||||
esac
|
||||
|
||||
have_win32="no"
|
||||
lt_enable_auto_import=""
|
||||
case $host_os in
|
||||
@ -128,25 +177,18 @@ xcbincludedir='${includedir}/xcb'
|
||||
AC_SUBST(xcbincludedir)
|
||||
|
||||
if test "x$GCC" = xyes ; then
|
||||
CWARNFLAGS="-Wall -pedantic -Wpointer-arith \
|
||||
CWARNFLAGS="-Wall -Wpointer-arith -Wold-style-definition \
|
||||
-Wstrict-prototypes -Wmissing-declarations -Wnested-externs"
|
||||
else
|
||||
AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
|
||||
if test "x$SUNCC" = "xyes"; then
|
||||
CWARNFLAGS="-v"
|
||||
CWARNFLAGS="-v -fd"
|
||||
fi
|
||||
fi
|
||||
AC_SUBST(CWARNFLAGS)
|
||||
|
||||
XCB_CHECK_VISIBILITY()
|
||||
|
||||
# htmldir is not defined prior to autoconf 2.59c, so on earlier versions
|
||||
# set an equivalent value.
|
||||
AC_PREREQ([2.59c], [], [AC_SUBST([htmldir], [m4_ifset([AC_PACKAGE_TARNAME],
|
||||
['${datadir}/doc/${PACKAGE_TARNAME}'],
|
||||
['${datadir}/doc/${PACKAGE}'])
|
||||
])])
|
||||
|
||||
XCB_CHECK_DOXYGEN()
|
||||
|
||||
AC_CHECK_FUNC(getaddrinfo, [AC_DEFINE(HAVE_GETADDRINFO, 1, [getaddrinfo() function is available])], )
|
||||
@ -178,7 +220,9 @@ XCB_EXTENSION(Composite, "yes")
|
||||
XCB_EXTENSION(Damage, "yes")
|
||||
XCB_EXTENSION(DPMS, "yes")
|
||||
XCB_EXTENSION(DRI2, "yes")
|
||||
XCB_EXTENSION(DRI3, "$sendfds")
|
||||
XCB_EXTENSION(GLX, "yes")
|
||||
XCB_EXTENSION(Present, "yes")
|
||||
XCB_EXTENSION(RandR, "yes")
|
||||
XCB_EXTENSION(Record, "yes")
|
||||
XCB_EXTENSION(Render, "yes")
|
||||
@ -192,7 +236,7 @@ XCB_EXTENSION(XFixes, "yes")
|
||||
XCB_EXTENSION(XFree86-DRI, "yes")
|
||||
XCB_EXTENSION(Xinerama, "yes")
|
||||
XCB_EXTENSION(XInput, "no")
|
||||
XCB_EXTENSION(XKB, "no")
|
||||
XCB_EXTENSION(XKB, "yes")
|
||||
XCB_EXTENSION(Xprint, "yes")
|
||||
XCB_EXTENSION(SELinux, "no")
|
||||
XCB_EXTENSION(XTest, "yes")
|
||||
@ -222,7 +266,9 @@ xcb-composite.pc
|
||||
xcb-damage.pc
|
||||
xcb-dpms.pc
|
||||
xcb-dri2.pc
|
||||
xcb-dri3.pc
|
||||
xcb-glx.pc
|
||||
xcb-present.pc
|
||||
xcb-randr.pc
|
||||
xcb-record.pc
|
||||
xcb-render.pc
|
||||
@ -257,7 +303,9 @@ echo " Package: ${PACKAGE_NAME} ${PACKAGE_VERSION}"
|
||||
echo ""
|
||||
echo " Configuration"
|
||||
echo " XDM support.........: ${have_xdmcp}"
|
||||
echo " sendmsg fd passing..: ${sendfds}"
|
||||
echo " Build unit tests....: ${HAVE_CHECK}"
|
||||
echo " with html results.: ${HTML_CHECK_RESULT}"
|
||||
echo " XCB buffer size.....: ${xcb_queue_buffer_size}"
|
||||
echo ""
|
||||
echo " X11 extensions"
|
||||
@ -265,6 +313,7 @@ echo " Composite...........: ${BUILD_COMPOSITE}"
|
||||
echo " Damage..............: ${BUILD_DAMAGE}"
|
||||
echo " Dpms................: ${BUILD_DPMS}"
|
||||
echo " Dri2................: ${BUILD_DRI2}"
|
||||
echo " Dri3................: ${BUILD_DRI3}"
|
||||
echo " Glx.................: ${BUILD_GLX}"
|
||||
echo " Randr...............: ${BUILD_RANDR}"
|
||||
echo " Record..............: ${BUILD_RECORD}"
|
||||
|
7991
dist/libxcb/m4/libtool.m4
vendored
Normal file
7991
dist/libxcb/m4/libtool.m4
vendored
Normal file
File diff suppressed because it is too large
Load Diff
384
dist/libxcb/m4/ltoptions.m4
vendored
Normal file
384
dist/libxcb/m4/ltoptions.m4
vendored
Normal file
@ -0,0 +1,384 @@
|
||||
# Helper functions for option handling. -*- Autoconf -*-
|
||||
#
|
||||
# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
|
||||
# Inc.
|
||||
# Written by Gary V. Vaughan, 2004
|
||||
#
|
||||
# This file is free software; the Free Software Foundation gives
|
||||
# unlimited permission to copy and/or distribute it, with or without
|
||||
# modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 7 ltoptions.m4
|
||||
|
||||
# This is to help aclocal find these macros, as it can't see m4_define.
|
||||
AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
|
||||
|
||||
|
||||
# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
|
||||
# ------------------------------------------
|
||||
m4_define([_LT_MANGLE_OPTION],
|
||||
[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
|
||||
|
||||
|
||||
# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
|
||||
# ---------------------------------------
|
||||
# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
|
||||
# matching handler defined, dispatch to it. Other OPTION-NAMEs are
|
||||
# saved as a flag.
|
||||
m4_define([_LT_SET_OPTION],
|
||||
[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
|
||||
m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
|
||||
_LT_MANGLE_DEFUN([$1], [$2]),
|
||||
[m4_warning([Unknown $1 option `$2'])])[]dnl
|
||||
])
|
||||
|
||||
|
||||
# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
|
||||
# ------------------------------------------------------------
|
||||
# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
|
||||
m4_define([_LT_IF_OPTION],
|
||||
[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
|
||||
|
||||
|
||||
# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
|
||||
# -------------------------------------------------------
|
||||
# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
|
||||
# are set.
|
||||
m4_define([_LT_UNLESS_OPTIONS],
|
||||
[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
|
||||
[m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
|
||||
[m4_define([$0_found])])])[]dnl
|
||||
m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
|
||||
])[]dnl
|
||||
])
|
||||
|
||||
|
||||
# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
|
||||
# ----------------------------------------
|
||||
# OPTION-LIST is a space-separated list of Libtool options associated
|
||||
# with MACRO-NAME. If any OPTION has a matching handler declared with
|
||||
# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
|
||||
# the unknown option and exit.
|
||||
m4_defun([_LT_SET_OPTIONS],
|
||||
[# Set options
|
||||
m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
|
||||
[_LT_SET_OPTION([$1], _LT_Option)])
|
||||
|
||||
m4_if([$1],[LT_INIT],[
|
||||
dnl
|
||||
dnl Simply set some default values (i.e off) if boolean options were not
|
||||
dnl specified:
|
||||
_LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
|
||||
])
|
||||
_LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
|
||||
])
|
||||
dnl
|
||||
dnl If no reference was made to various pairs of opposing options, then
|
||||
dnl we run the default mode handler for the pair. For example, if neither
|
||||
dnl `shared' nor `disable-shared' was passed, we enable building of shared
|
||||
dnl archives by default:
|
||||
_LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
|
||||
_LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
|
||||
_LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
|
||||
_LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
|
||||
[_LT_ENABLE_FAST_INSTALL])
|
||||
])
|
||||
])# _LT_SET_OPTIONS
|
||||
|
||||
|
||||
## --------------------------------- ##
|
||||
## Macros to handle LT_INIT options. ##
|
||||
## --------------------------------- ##
|
||||
|
||||
# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
|
||||
# -----------------------------------------
|
||||
m4_define([_LT_MANGLE_DEFUN],
|
||||
[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
|
||||
|
||||
|
||||
# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
|
||||
# -----------------------------------------------
|
||||
m4_define([LT_OPTION_DEFINE],
|
||||
[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
|
||||
])# LT_OPTION_DEFINE
|
||||
|
||||
|
||||
# dlopen
|
||||
# ------
|
||||
LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
|
||||
])
|
||||
|
||||
AU_DEFUN([AC_LIBTOOL_DLOPEN],
|
||||
[_LT_SET_OPTION([LT_INIT], [dlopen])
|
||||
AC_DIAGNOSE([obsolete],
|
||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you
|
||||
put the `dlopen' option into LT_INIT's first parameter.])
|
||||
])
|
||||
|
||||
dnl aclocal-1.4 backwards compatibility:
|
||||
dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
|
||||
|
||||
|
||||
# win32-dll
|
||||
# ---------
|
||||
# Declare package support for building win32 dll's.
|
||||
LT_OPTION_DEFINE([LT_INIT], [win32-dll],
|
||||
[enable_win32_dll=yes
|
||||
|
||||
case $host in
|
||||
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
|
||||
AC_CHECK_TOOL(AS, as, false)
|
||||
AC_CHECK_TOOL(DLLTOOL, dlltool, false)
|
||||
AC_CHECK_TOOL(OBJDUMP, objdump, false)
|
||||
;;
|
||||
esac
|
||||
|
||||
test -z "$AS" && AS=as
|
||||
_LT_DECL([], [AS], [1], [Assembler program])dnl
|
||||
|
||||
test -z "$DLLTOOL" && DLLTOOL=dlltool
|
||||
_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
|
||||
|
||||
test -z "$OBJDUMP" && OBJDUMP=objdump
|
||||
_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
|
||||
])# win32-dll
|
||||
|
||||
AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
|
||||
[AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
||||
_LT_SET_OPTION([LT_INIT], [win32-dll])
|
||||
AC_DIAGNOSE([obsolete],
|
||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you
|
||||
put the `win32-dll' option into LT_INIT's first parameter.])
|
||||
])
|
||||
|
||||
dnl aclocal-1.4 backwards compatibility:
|
||||
dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
|
||||
|
||||
|
||||
# _LT_ENABLE_SHARED([DEFAULT])
|
||||
# ----------------------------
|
||||
# implement the --enable-shared flag, and supports the `shared' and
|
||||
# `disable-shared' LT_INIT options.
|
||||
# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
|
||||
m4_define([_LT_ENABLE_SHARED],
|
||||
[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
|
||||
AC_ARG_ENABLE([shared],
|
||||
[AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
|
||||
[build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
|
||||
[p=${PACKAGE-default}
|
||||
case $enableval in
|
||||
yes) enable_shared=yes ;;
|
||||
no) enable_shared=no ;;
|
||||
*)
|
||||
enable_shared=no
|
||||
# Look at the argument we got. We use all the common list separators.
|
||||
lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
|
||||
for pkg in $enableval; do
|
||||
IFS="$lt_save_ifs"
|
||||
if test "X$pkg" = "X$p"; then
|
||||
enable_shared=yes
|
||||
fi
|
||||
done
|
||||
IFS="$lt_save_ifs"
|
||||
;;
|
||||
esac],
|
||||
[enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
|
||||
|
||||
_LT_DECL([build_libtool_libs], [enable_shared], [0],
|
||||
[Whether or not to build shared libraries])
|
||||
])# _LT_ENABLE_SHARED
|
||||
|
||||
LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
|
||||
LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
|
||||
|
||||
# Old names:
|
||||
AC_DEFUN([AC_ENABLE_SHARED],
|
||||
[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
|
||||
])
|
||||
|
||||
AC_DEFUN([AC_DISABLE_SHARED],
|
||||
[_LT_SET_OPTION([LT_INIT], [disable-shared])
|
||||
])
|
||||
|
||||
AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
|
||||
AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
|
||||
|
||||
dnl aclocal-1.4 backwards compatibility:
|
||||
dnl AC_DEFUN([AM_ENABLE_SHARED], [])
|
||||
dnl AC_DEFUN([AM_DISABLE_SHARED], [])
|
||||
|
||||
|
||||
|
||||
# _LT_ENABLE_STATIC([DEFAULT])
|
||||
# ----------------------------
|
||||
# implement the --enable-static flag, and support the `static' and
|
||||
# `disable-static' LT_INIT options.
|
||||
# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
|
||||
m4_define([_LT_ENABLE_STATIC],
|
||||
[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
|
||||
AC_ARG_ENABLE([static],
|
||||
[AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
|
||||
[build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
|
||||
[p=${PACKAGE-default}
|
||||
case $enableval in
|
||||
yes) enable_static=yes ;;
|
||||
no) enable_static=no ;;
|
||||
*)
|
||||
enable_static=no
|
||||
# Look at the argument we got. We use all the common list separators.
|
||||
lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
|
||||
for pkg in $enableval; do
|
||||
IFS="$lt_save_ifs"
|
||||
if test "X$pkg" = "X$p"; then
|
||||
enable_static=yes
|
||||
fi
|
||||
done
|
||||
IFS="$lt_save_ifs"
|
||||
;;
|
||||
esac],
|
||||
[enable_static=]_LT_ENABLE_STATIC_DEFAULT)
|
||||
|
||||
_LT_DECL([build_old_libs], [enable_static], [0],
|
||||
[Whether or not to build static libraries])
|
||||
])# _LT_ENABLE_STATIC
|
||||
|
||||
LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
|
||||
LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
|
||||
|
||||
# Old names:
|
||||
AC_DEFUN([AC_ENABLE_STATIC],
|
||||
[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
|
||||
])
|
||||
|
||||
AC_DEFUN([AC_DISABLE_STATIC],
|
||||
[_LT_SET_OPTION([LT_INIT], [disable-static])
|
||||
])
|
||||
|
||||
AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
|
||||
AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
|
||||
|
||||
dnl aclocal-1.4 backwards compatibility:
|
||||
dnl AC_DEFUN([AM_ENABLE_STATIC], [])
|
||||
dnl AC_DEFUN([AM_DISABLE_STATIC], [])
|
||||
|
||||
|
||||
|
||||
# _LT_ENABLE_FAST_INSTALL([DEFAULT])
|
||||
# ----------------------------------
|
||||
# implement the --enable-fast-install flag, and support the `fast-install'
|
||||
# and `disable-fast-install' LT_INIT options.
|
||||
# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
|
||||
m4_define([_LT_ENABLE_FAST_INSTALL],
|
||||
[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
|
||||
AC_ARG_ENABLE([fast-install],
|
||||
[AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
|
||||
[optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
|
||||
[p=${PACKAGE-default}
|
||||
case $enableval in
|
||||
yes) enable_fast_install=yes ;;
|
||||
no) enable_fast_install=no ;;
|
||||
*)
|
||||
enable_fast_install=no
|
||||
# Look at the argument we got. We use all the common list separators.
|
||||
lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
|
||||
for pkg in $enableval; do
|
||||
IFS="$lt_save_ifs"
|
||||
if test "X$pkg" = "X$p"; then
|
||||
enable_fast_install=yes
|
||||
fi
|
||||
done
|
||||
IFS="$lt_save_ifs"
|
||||
;;
|
||||
esac],
|
||||
[enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
|
||||
|
||||
_LT_DECL([fast_install], [enable_fast_install], [0],
|
||||
[Whether or not to optimize for fast installation])dnl
|
||||
])# _LT_ENABLE_FAST_INSTALL
|
||||
|
||||
LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
|
||||
LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
|
||||
|
||||
# Old names:
|
||||
AU_DEFUN([AC_ENABLE_FAST_INSTALL],
|
||||
[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
|
||||
AC_DIAGNOSE([obsolete],
|
||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you put
|
||||
the `fast-install' option into LT_INIT's first parameter.])
|
||||
])
|
||||
|
||||
AU_DEFUN([AC_DISABLE_FAST_INSTALL],
|
||||
[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
|
||||
AC_DIAGNOSE([obsolete],
|
||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you put
|
||||
the `disable-fast-install' option into LT_INIT's first parameter.])
|
||||
])
|
||||
|
||||
dnl aclocal-1.4 backwards compatibility:
|
||||
dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
|
||||
dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
|
||||
|
||||
|
||||
# _LT_WITH_PIC([MODE])
|
||||
# --------------------
|
||||
# implement the --with-pic flag, and support the `pic-only' and `no-pic'
|
||||
# LT_INIT options.
|
||||
# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
|
||||
m4_define([_LT_WITH_PIC],
|
||||
[AC_ARG_WITH([pic],
|
||||
[AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
|
||||
[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
|
||||
[lt_p=${PACKAGE-default}
|
||||
case $withval in
|
||||
yes|no) pic_mode=$withval ;;
|
||||
*)
|
||||
pic_mode=default
|
||||
# Look at the argument we got. We use all the common list separators.
|
||||
lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
|
||||
for lt_pkg in $withval; do
|
||||
IFS="$lt_save_ifs"
|
||||
if test "X$lt_pkg" = "X$lt_p"; then
|
||||
pic_mode=yes
|
||||
fi
|
||||
done
|
||||
IFS="$lt_save_ifs"
|
||||
;;
|
||||
esac],
|
||||
[pic_mode=default])
|
||||
|
||||
test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
|
||||
|
||||
_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
|
||||
])# _LT_WITH_PIC
|
||||
|
||||
LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
|
||||
LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
|
||||
|
||||
# Old name:
|
||||
AU_DEFUN([AC_LIBTOOL_PICMODE],
|
||||
[_LT_SET_OPTION([LT_INIT], [pic-only])
|
||||
AC_DIAGNOSE([obsolete],
|
||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you
|
||||
put the `pic-only' option into LT_INIT's first parameter.])
|
||||
])
|
||||
|
||||
dnl aclocal-1.4 backwards compatibility:
|
||||
dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
|
||||
|
||||
## ----------------- ##
|
||||
## LTDL_INIT Options ##
|
||||
## ----------------- ##
|
||||
|
||||
m4_define([_LTDL_MODE], [])
|
||||
LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
|
||||
[m4_define([_LTDL_MODE], [nonrecursive])])
|
||||
LT_OPTION_DEFINE([LTDL_INIT], [recursive],
|
||||
[m4_define([_LTDL_MODE], [recursive])])
|
||||
LT_OPTION_DEFINE([LTDL_INIT], [subproject],
|
||||
[m4_define([_LTDL_MODE], [subproject])])
|
||||
|
||||
m4_define([_LTDL_TYPE], [])
|
||||
LT_OPTION_DEFINE([LTDL_INIT], [installable],
|
||||
[m4_define([_LTDL_TYPE], [installable])])
|
||||
LT_OPTION_DEFINE([LTDL_INIT], [convenience],
|
||||
[m4_define([_LTDL_TYPE], [convenience])])
|
123
dist/libxcb/m4/ltsugar.m4
vendored
Normal file
123
dist/libxcb/m4/ltsugar.m4
vendored
Normal file
@ -0,0 +1,123 @@
|
||||
# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*-
|
||||
#
|
||||
# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
|
||||
# Written by Gary V. Vaughan, 2004
|
||||
#
|
||||
# This file is free software; the Free Software Foundation gives
|
||||
# unlimited permission to copy and/or distribute it, with or without
|
||||
# modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 6 ltsugar.m4
|
||||
|
||||
# This is to help aclocal find these macros, as it can't see m4_define.
|
||||
AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
|
||||
|
||||
|
||||
# lt_join(SEP, ARG1, [ARG2...])
|
||||
# -----------------------------
|
||||
# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
|
||||
# associated separator.
|
||||
# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
|
||||
# versions in m4sugar had bugs.
|
||||
m4_define([lt_join],
|
||||
[m4_if([$#], [1], [],
|
||||
[$#], [2], [[$2]],
|
||||
[m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
|
||||
m4_define([_lt_join],
|
||||
[m4_if([$#$2], [2], [],
|
||||
[m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
|
||||
|
||||
|
||||
# lt_car(LIST)
|
||||
# lt_cdr(LIST)
|
||||
# ------------
|
||||
# Manipulate m4 lists.
|
||||
# These macros are necessary as long as will still need to support
|
||||
# Autoconf-2.59 which quotes differently.
|
||||
m4_define([lt_car], [[$1]])
|
||||
m4_define([lt_cdr],
|
||||
[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
|
||||
[$#], 1, [],
|
||||
[m4_dquote(m4_shift($@))])])
|
||||
m4_define([lt_unquote], $1)
|
||||
|
||||
|
||||
# lt_append(MACRO-NAME, STRING, [SEPARATOR])
|
||||
# ------------------------------------------
|
||||
# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
|
||||
# Note that neither SEPARATOR nor STRING are expanded; they are appended
|
||||
# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
|
||||
# No SEPARATOR is output if MACRO-NAME was previously undefined (different
|
||||
# than defined and empty).
|
||||
#
|
||||
# This macro is needed until we can rely on Autoconf 2.62, since earlier
|
||||
# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
|
||||
m4_define([lt_append],
|
||||
[m4_define([$1],
|
||||
m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
|
||||
|
||||
|
||||
|
||||
# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
|
||||
# ----------------------------------------------------------
|
||||
# Produce a SEP delimited list of all paired combinations of elements of
|
||||
# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list
|
||||
# has the form PREFIXmINFIXSUFFIXn.
|
||||
# Needed until we can rely on m4_combine added in Autoconf 2.62.
|
||||
m4_define([lt_combine],
|
||||
[m4_if(m4_eval([$# > 3]), [1],
|
||||
[m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
|
||||
[[m4_foreach([_Lt_prefix], [$2],
|
||||
[m4_foreach([_Lt_suffix],
|
||||
]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
|
||||
[_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
|
||||
|
||||
|
||||
# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
|
||||
# -----------------------------------------------------------------------
|
||||
# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
|
||||
# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
|
||||
m4_define([lt_if_append_uniq],
|
||||
[m4_ifdef([$1],
|
||||
[m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
|
||||
[lt_append([$1], [$2], [$3])$4],
|
||||
[$5])],
|
||||
[lt_append([$1], [$2], [$3])$4])])
|
||||
|
||||
|
||||
# lt_dict_add(DICT, KEY, VALUE)
|
||||
# -----------------------------
|
||||
m4_define([lt_dict_add],
|
||||
[m4_define([$1($2)], [$3])])
|
||||
|
||||
|
||||
# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
|
||||
# --------------------------------------------
|
||||
m4_define([lt_dict_add_subkey],
|
||||
[m4_define([$1($2:$3)], [$4])])
|
||||
|
||||
|
||||
# lt_dict_fetch(DICT, KEY, [SUBKEY])
|
||||
# ----------------------------------
|
||||
m4_define([lt_dict_fetch],
|
||||
[m4_ifval([$3],
|
||||
m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
|
||||
m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
|
||||
|
||||
|
||||
# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
|
||||
# -----------------------------------------------------------------
|
||||
m4_define([lt_if_dict_fetch],
|
||||
[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
|
||||
[$5],
|
||||
[$6])])
|
||||
|
||||
|
||||
# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
|
||||
# --------------------------------------------------------------
|
||||
m4_define([lt_dict_filter],
|
||||
[m4_if([$5], [], [],
|
||||
[lt_join(m4_quote(m4_default([$4], [[, ]])),
|
||||
lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
|
||||
[lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
|
||||
])
|
23
dist/libxcb/m4/ltversion.m4
vendored
Normal file
23
dist/libxcb/m4/ltversion.m4
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
# ltversion.m4 -- version numbers -*- Autoconf -*-
|
||||
#
|
||||
# Copyright (C) 2004 Free Software Foundation, Inc.
|
||||
# Written by Scott James Remnant, 2004
|
||||
#
|
||||
# This file is free software; the Free Software Foundation gives
|
||||
# unlimited permission to copy and/or distribute it, with or without
|
||||
# modifications, as long as this notice is preserved.
|
||||
|
||||
# @configure_input@
|
||||
|
||||
# serial 3337 ltversion.m4
|
||||
# This file is part of GNU Libtool
|
||||
|
||||
m4_define([LT_PACKAGE_VERSION], [2.4.2])
|
||||
m4_define([LT_PACKAGE_REVISION], [1.3337])
|
||||
|
||||
AC_DEFUN([LTVERSION_VERSION],
|
||||
[macro_version='2.4.2'
|
||||
macro_revision='1.3337'
|
||||
_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
|
||||
_LT_DECL(, macro_revision, 0)
|
||||
])
|
98
dist/libxcb/m4/lt~obsolete.m4
vendored
Normal file
98
dist/libxcb/m4/lt~obsolete.m4
vendored
Normal file
@ -0,0 +1,98 @@
|
||||
# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*-
|
||||
#
|
||||
# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
|
||||
# Written by Scott James Remnant, 2004.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation gives
|
||||
# unlimited permission to copy and/or distribute it, with or without
|
||||
# modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 5 lt~obsolete.m4
|
||||
|
||||
# These exist entirely to fool aclocal when bootstrapping libtool.
|
||||
#
|
||||
# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
|
||||
# which have later been changed to m4_define as they aren't part of the
|
||||
# exported API, or moved to Autoconf or Automake where they belong.
|
||||
#
|
||||
# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN
|
||||
# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
|
||||
# using a macro with the same name in our local m4/libtool.m4 it'll
|
||||
# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
|
||||
# and doesn't know about Autoconf macros at all.)
|
||||
#
|
||||
# So we provide this file, which has a silly filename so it's always
|
||||
# included after everything else. This provides aclocal with the
|
||||
# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
|
||||
# because those macros already exist, or will be overwritten later.
|
||||
# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
|
||||
#
|
||||
# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
|
||||
# Yes, that means every name once taken will need to remain here until
|
||||
# we give up compatibility with versions before 1.7, at which point
|
||||
# we need to keep only those names which we still refer to.
|
||||
|
||||
# This is to help aclocal find these macros, as it can't see m4_define.
|
||||
AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
|
||||
|
||||
m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
|
||||
m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])])
|
||||
m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
|
||||
m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])])
|
||||
m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
|
||||
m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])])
|
||||
m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])])
|
||||
m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
|
||||
m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])])
|
||||
m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])])
|
||||
m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])])
|
||||
m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
|
||||
m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
|
||||
m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
|
||||
m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
|
||||
m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])])
|
||||
m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])])
|
||||
m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
|
||||
m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
|
||||
m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])])
|
||||
m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])])
|
||||
m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
|
||||
m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
|
||||
m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
|
||||
m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
|
||||
m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
|
||||
m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
|
||||
m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
|
||||
m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])])
|
||||
m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])])
|
||||
m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])])
|
||||
m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
|
||||
m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])])
|
||||
m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])])
|
||||
m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])])
|
||||
m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])])
|
||||
m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
|
||||
m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])])
|
||||
m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
|
||||
m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])])
|
||||
m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])])
|
||||
m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])])
|
||||
m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
|
||||
m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
|
||||
m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
|
||||
m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
|
||||
m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
|
||||
m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
|
||||
m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
|
||||
m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
|
||||
m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
|
||||
m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
|
||||
m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])])
|
||||
m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
|
||||
m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
|
||||
m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])])
|
||||
m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
|
||||
m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
|
||||
m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])])
|
||||
m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])])
|
||||
m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])])
|
24
dist/libxcb/src/Makefile.am
vendored
24
dist/libxcb/src/Makefile.am
vendored
@ -56,6 +56,22 @@ libxcb_dri2_la_LIBADD = $(XCB_LIBS)
|
||||
nodist_libxcb_dri2_la_SOURCES = dri2.c dri2.h
|
||||
endif
|
||||
|
||||
EXTSOURCES += dri3.c
|
||||
if BUILD_DRI3
|
||||
lib_LTLIBRARIES += libxcb-dri3.la
|
||||
libxcb_dri3_la_LDFLAGS = -version-info 0:0:0 -no-undefined @lt_enable_auto_import@
|
||||
libxcb_dri3_la_LIBADD = $(XCB_LIBS)
|
||||
nodist_libxcb_dri3_la_SOURCES = dri3.c dri3.h
|
||||
endif
|
||||
|
||||
EXTSOURCES += present.c
|
||||
if BUILD_PRESENT
|
||||
lib_LTLIBRARIES += libxcb-present.la
|
||||
libxcb_present_la_LDFLAGS = -version-info 0:0:0 -no-undefined @lt_enable_auto_import@
|
||||
libxcb_present_la_LIBADD = $(XCB_LIBS)
|
||||
nodist_libxcb_present_la_SOURCES = present.c present.h
|
||||
endif
|
||||
|
||||
EXTSOURCES += glx.c
|
||||
if BUILD_GLX
|
||||
lib_LTLIBRARIES += libxcb-glx.la
|
||||
@ -123,7 +139,7 @@ endif
|
||||
EXTSOURCES += sync.c
|
||||
if BUILD_SYNC
|
||||
lib_LTLIBRARIES += libxcb-sync.la
|
||||
libxcb_sync_la_LDFLAGS = -version-info 0:0:0 -no-undefined @lt_enable_auto_import@
|
||||
libxcb_sync_la_LDFLAGS = -version-info 1:0:0 -no-undefined @lt_enable_auto_import@
|
||||
libxcb_sync_la_LIBADD = $(XCB_LIBS)
|
||||
nodist_libxcb_sync_la_SOURCES = sync.c sync.h
|
||||
endif
|
||||
@ -163,7 +179,7 @@ endif
|
||||
EXTSOURCES += xinput.c
|
||||
if BUILD_XINPUT
|
||||
lib_LTLIBRARIES += libxcb-xinput.la
|
||||
libxcb_xinput_la_LDFLAGS = -version-info 0:0:0 -no-undefined @lt_enable_auto_import@
|
||||
libxcb_xinput_la_LDFLAGS = -version-info 1:0:1 -no-undefined @lt_enable_auto_import@
|
||||
libxcb_xinput_la_LIBADD = $(XCB_LIBS)
|
||||
nodist_libxcb_xinput_la_SOURCES = xinput.c xinput.h
|
||||
endif
|
||||
@ -171,7 +187,7 @@ endif
|
||||
EXTSOURCES += xkb.c
|
||||
if BUILD_XKB
|
||||
lib_LTLIBRARIES += libxcb-xkb.la
|
||||
libxcb_xkb_la_LDFLAGS = -version-info 0:0:0 -no-undefined
|
||||
libxcb_xkb_la_LDFLAGS = -version-info 1:0:0 -no-undefined
|
||||
libxcb_xkb_la_LIBADD = $(XCB_LIBS)
|
||||
nodist_libxcb_xkb_la_SOURCES = xkb.c xkb.h
|
||||
endif
|
||||
@ -233,7 +249,7 @@ EXTRA_DIST = $(STATIC_MANS)
|
||||
BUILT_SOURCES = $(EXTSOURCES) $(BUILT_MANS)
|
||||
CLEANFILES = $(EXTSOURCES) $(EXTHEADERS) $(BUILT_MANS)
|
||||
|
||||
$(EXTSOURCES): c_client.py
|
||||
$(EXTSOURCES): c_client.py $(XCBPROTO_XCBINCLUDEDIR)/$(@:.c=.xml)
|
||||
$(PYTHON) $(srcdir)/c_client.py -p $(XCBPROTO_XCBPYTHONDIR) $(XCBPROTO_XCBINCLUDEDIR)/$(@:.c=.xml)
|
||||
|
||||
$(man_MANS): $(EXTSOURCES)
|
||||
|
120
dist/libxcb/src/c_client.py
vendored
120
dist/libxcb/src/c_client.py
vendored
@ -303,6 +303,7 @@ def _c_type_setup(self, name, postfix):
|
||||
self.c_reply_name = _n(name + ('reply',))
|
||||
self.c_reply_type = _t(name + ('reply',))
|
||||
self.c_cookie_type = _t(name + ('cookie',))
|
||||
self.c_reply_fds_name = _n(name + ('reply_fds',))
|
||||
|
||||
self.need_aux = False
|
||||
self.need_serialize = False
|
||||
@ -687,10 +688,20 @@ def _c_serialize_helper_switch(context, self, complex_name,
|
||||
switch_expr = _c_accessor_get_expr(self.expr, None)
|
||||
|
||||
for b in self.bitcases:
|
||||
bitcase_expr = _c_accessor_get_expr(b.type.expr, None)
|
||||
code_lines.append(' if(%s & %s) {' % (switch_expr, bitcase_expr))
|
||||
# code_lines.append(' printf("switch %s: entering bitcase section %s (mask=%%%%d)...\\n", %s);' %
|
||||
# (self.name[-1], b.type.name[-1], bitcase_expr))
|
||||
len_expr = len(b.type.expr)
|
||||
for n, expr in enumerate(b.type.expr):
|
||||
bitcase_expr = _c_accessor_get_expr(expr, None)
|
||||
# only one <enumref> in the <bitcase>
|
||||
if len_expr == 1:
|
||||
code_lines.append(' if(%s & %s) {' % (switch_expr, bitcase_expr))
|
||||
# multiple <enumref> in the <bitcase>
|
||||
elif n == 0: # first
|
||||
code_lines.append(' if((%s & %s) ||' % (switch_expr, bitcase_expr))
|
||||
elif len_expr == (n + 1): # last
|
||||
code_lines.append(' (%s & %s)) {' % (switch_expr, bitcase_expr))
|
||||
else: # between first and last
|
||||
code_lines.append(' (%s & %s) ||' % (switch_expr, bitcase_expr))
|
||||
|
||||
b_prefix = prefix
|
||||
if b.type.has_name:
|
||||
b_prefix = prefix + [(b.c_field_name, '.', b.type)]
|
||||
@ -1050,8 +1061,8 @@ def _c_serialize_helper(context, complex_type,
|
||||
if context in ('unserialize', 'unpack', 'sizeof') and not self.var_followed_by_fixed_fields:
|
||||
code_lines.append('%s xcb_block_len += sizeof(%s);' % (space, self.c_type))
|
||||
code_lines.append('%s xcb_tmp += xcb_block_len;' % space)
|
||||
# probably not needed
|
||||
#_c_serialize_helper_insert_padding(context, code_lines, space, False)
|
||||
code_lines.append('%s xcb_buffer_len += xcb_block_len;' % space)
|
||||
code_lines.append('%s xcb_block_len = 0;' % space)
|
||||
|
||||
count += _c_serialize_helper_fields(context, self,
|
||||
code_lines, temp_vars,
|
||||
@ -1122,11 +1133,11 @@ def _c_serialize(context, self):
|
||||
_c(' %s *xcb_out = *_buffer;', self.c_type)
|
||||
_c(' unsigned int xcb_out_pad = -sizeof(%s) & 3;', self.c_type)
|
||||
_c(' unsigned int xcb_buffer_len = sizeof(%s) + xcb_out_pad;', self.c_type)
|
||||
_c(' unsigned int xcb_align_to;')
|
||||
_c(' unsigned int xcb_align_to = 0;')
|
||||
else:
|
||||
_c(' char *xcb_out = *_buffer;')
|
||||
_c(' unsigned int xcb_buffer_len = 0;')
|
||||
_c(' unsigned int xcb_align_to;')
|
||||
_c(' unsigned int xcb_align_to = 0;')
|
||||
prefix = [('_aux', '->', self)]
|
||||
aux_ptr = 'xcb_out'
|
||||
|
||||
@ -1149,7 +1160,7 @@ def _c_serialize(context, self):
|
||||
_c(' unsigned int xcb_buffer_len = 0;')
|
||||
_c(' unsigned int xcb_block_len = 0;')
|
||||
_c(' unsigned int xcb_pad = 0;')
|
||||
_c(' unsigned int xcb_align_to;')
|
||||
_c(' unsigned int xcb_align_to = 0;')
|
||||
|
||||
elif 'sizeof' == context:
|
||||
param_names = [p[2] for p in params]
|
||||
@ -1194,7 +1205,7 @@ def _c_serialize(context, self):
|
||||
_c(' unsigned int xcb_buffer_len = 0;')
|
||||
_c(' unsigned int xcb_block_len = 0;')
|
||||
_c(' unsigned int xcb_pad = 0;')
|
||||
_c(' unsigned int xcb_align_to;')
|
||||
_c(' unsigned int xcb_align_to = 0;')
|
||||
|
||||
_c('')
|
||||
for t in temp_vars:
|
||||
@ -1777,12 +1788,12 @@ def _c_complex(self):
|
||||
for field in struct_fields:
|
||||
length = len(field.c_field_type)
|
||||
# account for '*' pointer_spec
|
||||
if not field.type.fixed_size():
|
||||
if not field.type.fixed_size() and not self.is_union:
|
||||
length += 1
|
||||
maxtypelen = max(maxtypelen, length)
|
||||
|
||||
def _c_complex_field(self, field, space=''):
|
||||
if (field.type.fixed_size() or
|
||||
if (field.type.fixed_size() or self.is_union or
|
||||
# in case of switch with switch children, don't make the field a pointer
|
||||
# necessary for unserialize to work
|
||||
(self.is_switch and field.type.is_switch)):
|
||||
@ -1825,7 +1836,7 @@ def c_union(self, name):
|
||||
_c_complex(self)
|
||||
_c_iterator(self, name)
|
||||
|
||||
def _c_request_helper(self, name, cookie_type, void, regular, aux=False):
|
||||
def _c_request_helper(self, name, cookie_type, void, regular, aux=False, reply_fds=False):
|
||||
'''
|
||||
Declares a request function.
|
||||
'''
|
||||
@ -1854,6 +1865,12 @@ def _c_request_helper(self, name, cookie_type, void, regular, aux=False):
|
||||
# What flag is passed to xcb_request
|
||||
func_flags = '0' if (void and regular) or (not void and not regular) else 'XCB_REQUEST_CHECKED'
|
||||
|
||||
if reply_fds:
|
||||
if func_flags == '0':
|
||||
func_flags = 'XCB_REQUEST_REPLY_FDS'
|
||||
else:
|
||||
func_flags = func_flags + '|XCB_REQUEST_REPLY_FDS'
|
||||
|
||||
# Global extension id variable or NULL for xproto
|
||||
func_ext_global = '&' + _ns.c_ext_global_name if _ns.is_ext else '0'
|
||||
|
||||
@ -2139,6 +2156,10 @@ def _c_request_helper(self, name, cookie_type, void, regular, aux=False):
|
||||
# no padding necessary - _serialize() keeps track of padding automatically
|
||||
|
||||
_c(' ')
|
||||
for field in param_fields:
|
||||
if field.isfd:
|
||||
_c(' xcb_send_fd(c, %s);', field.c_field_name)
|
||||
|
||||
_c(' xcb_ret.sequence = xcb_send_request(c, %s, xcb_parts + 2, &xcb_req);', func_flags)
|
||||
|
||||
# free dyn. all. data, if any
|
||||
@ -2242,6 +2263,51 @@ def _c_reply(self, name):
|
||||
|
||||
_c('}')
|
||||
|
||||
def _c_reply_has_fds(self):
|
||||
for field in self.fields:
|
||||
if field.isfd:
|
||||
return True
|
||||
return False
|
||||
|
||||
def _c_reply_fds(self, name):
|
||||
'''
|
||||
Declares the function that returns fds related to the reply.
|
||||
'''
|
||||
spacing1 = ' ' * (len(self.c_reply_type) - len('xcb_connection_t'))
|
||||
spacing3 = ' ' * (len(self.c_reply_fds_name) + 2)
|
||||
_h('')
|
||||
_h('/**')
|
||||
_h(' * Return the reply fds')
|
||||
_h(' * @param c The connection')
|
||||
_h(' * @param reply The reply')
|
||||
_h(' *')
|
||||
_h(' * Returns the array of reply fds of the request asked by')
|
||||
_h(' * ')
|
||||
_h(' * The returned value must be freed by the caller using free().')
|
||||
_h(' */')
|
||||
_c('')
|
||||
_hc('')
|
||||
_hc('/*****************************************************************************')
|
||||
_hc(' **')
|
||||
_hc(' ** int * %s', self.c_reply_fds_name)
|
||||
_hc(' ** ')
|
||||
_hc(' ** @param xcb_connection_t%s *c', spacing1)
|
||||
_hc(' ** @param %s *reply', self.c_reply_type)
|
||||
_hc(' ** @returns int *')
|
||||
_hc(' **')
|
||||
_hc(' *****************************************************************************/')
|
||||
_hc(' ')
|
||||
_hc('int *')
|
||||
_hc('%s (xcb_connection_t%s *c /**< */,', self.c_reply_fds_name, spacing1)
|
||||
_h('%s%s *reply /**< */);', spacing3, self.c_reply_type)
|
||||
_c('%s%s *reply /**< */)', spacing3, self.c_reply_type)
|
||||
_c('{')
|
||||
|
||||
_c(' return xcb_get_reply_fds(c, reply, sizeof(%s) + 4 * reply->length);', self.c_reply_type)
|
||||
|
||||
_c('}')
|
||||
|
||||
|
||||
def _c_opcode(name, opcode):
|
||||
'''
|
||||
Declares the opcode define for requests, events, and errors.
|
||||
@ -2802,14 +2868,17 @@ def c_request(self, name):
|
||||
# Reply structure definition
|
||||
_c_complex(self.reply)
|
||||
# Request prototypes
|
||||
_c_request_helper(self, name, self.c_cookie_type, False, True)
|
||||
_c_request_helper(self, name, self.c_cookie_type, False, False)
|
||||
has_fds = _c_reply_has_fds(self.reply)
|
||||
_c_request_helper(self, name, self.c_cookie_type, False, True, False, has_fds)
|
||||
_c_request_helper(self, name, self.c_cookie_type, False, False, False, has_fds)
|
||||
if self.need_aux:
|
||||
_c_request_helper(self, name, self.c_cookie_type, False, True, True)
|
||||
_c_request_helper(self, name, self.c_cookie_type, False, False, True)
|
||||
_c_request_helper(self, name, self.c_cookie_type, False, True, True, has_fds)
|
||||
_c_request_helper(self, name, self.c_cookie_type, False, False, True, has_fds)
|
||||
# Reply accessors
|
||||
_c_accessors(self.reply, name + ('reply',), name)
|
||||
_c_reply(self, name)
|
||||
if has_fds:
|
||||
_c_reply_fds(self, name)
|
||||
else:
|
||||
# Request prototypes
|
||||
_c_request_helper(self, name, 'xcb_void_cookie_t', True, False)
|
||||
@ -2827,6 +2896,23 @@ def c_event(self, name):
|
||||
'''
|
||||
Exported function that handles event declarations.
|
||||
'''
|
||||
|
||||
# The generic event structure xcb_ge_event_t has the full_sequence field
|
||||
# at the 32byte boundary. That's why we've to inject this field into GE
|
||||
# events while generating the structure for them. Otherwise we would read
|
||||
# garbage (the internal full_sequence) when accessing normal event fields
|
||||
# there.
|
||||
if hasattr(self, 'is_ge_event') and self.is_ge_event and self.name == name:
|
||||
event_size = 0
|
||||
for field in self.fields:
|
||||
if field.type.size != None and field.type.nmemb != None:
|
||||
event_size += field.type.size * field.type.nmemb
|
||||
if event_size == 32:
|
||||
full_sequence = Field(tcard32, tcard32.name, 'full_sequence', False, True, True)
|
||||
idx = self.fields.index(field)
|
||||
self.fields.insert(idx + 1, full_sequence)
|
||||
break
|
||||
|
||||
_c_type_setup(self, name, ('event',))
|
||||
|
||||
# Opcode define
|
||||
|
4
dist/libxcb/src/man/xcb-examples.3
vendored
4
dist/libxcb/src/man/xcb-examples.3
vendored
@ -45,11 +45,11 @@ it on xcb@lists.freedesktop.org.
|
||||
|
||||
.SH CODING STYLE
|
||||
|
||||
Every example uses 4 spaces for indention.
|
||||
Every example uses 4 spaces for indentation.
|
||||
|
||||
Comments are in asterisks, like /* this */.
|
||||
|
||||
No line is longer than 80 characters (including indention).
|
||||
No line is longer than 80 characters (including indentation).
|
||||
|
||||
.SH SEE ALSO
|
||||
.BR xcb_connect (3),
|
||||
|
45
dist/libxcb/src/xcb.h
vendored
45
dist/libxcb/src/xcb.h
vendored
@ -87,6 +87,9 @@ extern "C" {
|
||||
/** Connection closed because the server does not have a screen matching the display. */
|
||||
#define XCB_CONN_CLOSED_INVALID_SCREEN 6
|
||||
|
||||
/** Connection closed because some FD passing operation failed */
|
||||
#define XCB_CONN_CLOSED_FDPASSING_FAILED 7
|
||||
|
||||
#define XCB_TYPE_PAD(T,I) (-(I) & (sizeof(T) > 4 ? 3 : sizeof(T) - 1))
|
||||
|
||||
/* Opaque structures */
|
||||
@ -142,6 +145,9 @@ typedef struct {
|
||||
*
|
||||
* An event as sent by the XGE extension. The length field specifies the
|
||||
* number of 4-byte blocks trailing the struct.
|
||||
*
|
||||
* @deprecated Since some fields in this struct have unfortunate names, it is
|
||||
* recommended to use xcb_ge_generic_event_t instead.
|
||||
*/
|
||||
typedef struct {
|
||||
uint8_t response_type; /**< Type of the response */
|
||||
@ -278,7 +284,6 @@ xcb_generic_event_t *xcb_wait_for_event(xcb_connection_t *c);
|
||||
/**
|
||||
* @brief Returns the next event or error from the server.
|
||||
* @param c: The connection to the X server.
|
||||
* error status of the operation.
|
||||
* @return The next event from the server.
|
||||
*
|
||||
* Returns the next event or error from the server, if one is
|
||||
@ -305,6 +310,39 @@ xcb_generic_event_t *xcb_poll_for_event(xcb_connection_t *c);
|
||||
*/
|
||||
xcb_generic_event_t *xcb_poll_for_queued_event(xcb_connection_t *c);
|
||||
|
||||
typedef struct xcb_special_event xcb_special_event_t;
|
||||
|
||||
/**
|
||||
* @brief Returns the next event from a special queue
|
||||
*/
|
||||
xcb_generic_event_t *xcb_poll_for_special_event(xcb_connection_t *c,
|
||||
xcb_special_event_t *se);
|
||||
|
||||
/**
|
||||
* @brief Returns the next event from a special queue, blocking until one arrives
|
||||
*/
|
||||
xcb_generic_event_t *xcb_wait_for_special_event(xcb_connection_t *c,
|
||||
xcb_special_event_t *se);
|
||||
/**
|
||||
* @typedef typedef struct xcb_extension_t xcb_extension_t
|
||||
*/
|
||||
typedef struct xcb_extension_t xcb_extension_t; /**< Opaque structure used as key for xcb_get_extension_data_t. */
|
||||
|
||||
|
||||
/**
|
||||
* @brief Listen for a special event
|
||||
*/
|
||||
xcb_special_event_t *xcb_register_for_special_xge(xcb_connection_t *c,
|
||||
xcb_extension_t *ext,
|
||||
uint32_t eid,
|
||||
uint32_t *stamp);
|
||||
|
||||
/**
|
||||
* @brief Stop listening for a special event
|
||||
*/
|
||||
void xcb_unregister_for_special_event(xcb_connection_t *c,
|
||||
xcb_special_event_t *se);
|
||||
|
||||
/**
|
||||
* @brief Return the error for a request, or NULL if none can ever arrive.
|
||||
* @param c: The connection to the X server.
|
||||
@ -342,11 +380,6 @@ void xcb_discard_reply(xcb_connection_t *c, unsigned int sequence);
|
||||
|
||||
/* xcb_ext.c */
|
||||
|
||||
/**
|
||||
* @typedef typedef struct xcb_extension_t xcb_extension_t
|
||||
*/
|
||||
typedef struct xcb_extension_t xcb_extension_t; /**< Opaque structure used as key for xcb_get_extension_data_t. */
|
||||
|
||||
/**
|
||||
* @brief Caches reply information from QueryExtension requests.
|
||||
* @param c: The connection.
|
||||
|
43
dist/libxcb/src/xcb_conn.c
vendored
43
dist/libxcb/src/xcb_conn.c
vendored
@ -214,9 +214,42 @@ static int write_vec(xcb_connection_t *c, struct iovec **vector, int *count)
|
||||
if (n > IOV_MAX)
|
||||
n = IOV_MAX;
|
||||
|
||||
n = writev(c->fd, *vector, n);
|
||||
if(n < 0 && errno == EAGAIN)
|
||||
return 1;
|
||||
#if HAVE_SENDMSG
|
||||
if (c->out.out_fd.nfd) {
|
||||
union {
|
||||
struct cmsghdr cmsghdr;
|
||||
char buf[CMSG_SPACE(XCB_MAX_PASS_FD * sizeof(int))];
|
||||
} cmsgbuf;
|
||||
struct msghdr msg = {
|
||||
.msg_name = NULL,
|
||||
.msg_namelen = 0,
|
||||
.msg_iov = *vector,
|
||||
.msg_iovlen = n,
|
||||
.msg_control = cmsgbuf.buf,
|
||||
.msg_controllen = CMSG_LEN(c->out.out_fd.nfd * sizeof (int)),
|
||||
};
|
||||
int i;
|
||||
struct cmsghdr *hdr = CMSG_FIRSTHDR(&msg);
|
||||
|
||||
hdr->cmsg_len = msg.msg_controllen;
|
||||
hdr->cmsg_level = SOL_SOCKET;
|
||||
hdr->cmsg_type = SCM_RIGHTS;
|
||||
memcpy(CMSG_DATA(hdr), c->out.out_fd.fd, c->out.out_fd.nfd * sizeof (int));
|
||||
|
||||
n = sendmsg(c->fd, &msg, 0);
|
||||
if(n < 0 && errno == EAGAIN)
|
||||
return 1;
|
||||
for (i = 0; i < c->out.out_fd.nfd; i++)
|
||||
close(c->out.out_fd.fd[i]);
|
||||
c->out.out_fd.nfd = 0;
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
n = writev(c->fd, *vector, n);
|
||||
if(n < 0 && errno == EAGAIN)
|
||||
return 1;
|
||||
}
|
||||
|
||||
#endif /* _WIN32 */
|
||||
|
||||
if(n <= 0)
|
||||
@ -443,14 +476,14 @@ int _xcb_conn_wait(xcb_connection_t *c, pthread_cond_t *cond, struct iovec **vec
|
||||
*/
|
||||
int may_read = c->in.reading == 1 || !count;
|
||||
#if USE_POLL
|
||||
if(may_read && (fd.revents & POLLIN) == POLLIN)
|
||||
if(may_read && (fd.revents & POLLIN) != 0)
|
||||
#else
|
||||
if(may_read && FD_ISSET(c->fd, &rfds))
|
||||
#endif
|
||||
ret = ret && _xcb_in_read(c);
|
||||
|
||||
#if USE_POLL
|
||||
if((fd.revents & POLLOUT) == POLLOUT)
|
||||
if((fd.revents & POLLOUT) != 0)
|
||||
#else
|
||||
if(FD_ISSET(c->fd, &wfds))
|
||||
#endif
|
||||
|
295
dist/libxcb/src/xcb_in.c
vendored
295
dist/libxcb/src/xcb_in.c
vendored
@ -60,6 +60,23 @@ struct event_list {
|
||||
struct event_list *next;
|
||||
};
|
||||
|
||||
struct xcb_special_event {
|
||||
|
||||
struct xcb_special_event *next;
|
||||
|
||||
/* Match XGE events for the specific extension and event ID (the
|
||||
* first 32 bit word after evtype)
|
||||
*/
|
||||
uint8_t extension;
|
||||
uint32_t eid;
|
||||
uint32_t *stamp;
|
||||
|
||||
struct event_list *events;
|
||||
struct event_list **events_tail;
|
||||
|
||||
pthread_cond_t special_event_cond;
|
||||
};
|
||||
|
||||
struct reply_list {
|
||||
void *reply;
|
||||
struct reply_list *next;
|
||||
@ -90,11 +107,66 @@ static void remove_finished_readers(reader_list **prev_reader, uint64_t complete
|
||||
}
|
||||
}
|
||||
|
||||
#if HAVE_SENDMSG
|
||||
static int read_fds(xcb_connection_t *c, int *fds, int nfd)
|
||||
{
|
||||
int *ifds = &c->in.in_fd.fd[c->in.in_fd.ifd];
|
||||
int infd = c->in.in_fd.nfd - c->in.in_fd.ifd;
|
||||
|
||||
if (nfd > infd)
|
||||
return 0;
|
||||
memcpy(fds, ifds, nfd * sizeof (int));
|
||||
c->in.in_fd.ifd += nfd;
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
typedef struct xcb_ge_special_event_t {
|
||||
uint8_t response_type; /**< */
|
||||
uint8_t extension; /**< */
|
||||
uint16_t sequence; /**< */
|
||||
uint32_t length; /**< */
|
||||
uint16_t evtype; /**< */
|
||||
uint8_t pad0[2]; /**< */
|
||||
uint32_t eid; /**< */
|
||||
uint8_t pad1[16]; /**< */
|
||||
} xcb_ge_special_event_t;
|
||||
|
||||
static int event_special(xcb_connection_t *c,
|
||||
struct event_list *event)
|
||||
{
|
||||
struct xcb_special_event *special_event;
|
||||
struct xcb_ge_special_event_t *ges = (void *) event->event;
|
||||
|
||||
/* Special events are always XGE events */
|
||||
if ((ges->response_type & 0x7f) != XCB_XGE_EVENT)
|
||||
return 0;
|
||||
|
||||
for (special_event = c->in.special_events;
|
||||
special_event;
|
||||
special_event = special_event->next)
|
||||
{
|
||||
if (ges->extension == special_event->extension &&
|
||||
ges->eid == special_event->eid)
|
||||
{
|
||||
*special_event->events_tail = event;
|
||||
special_event->events_tail = &event->next;
|
||||
if (special_event->stamp)
|
||||
++(*special_event->stamp);
|
||||
pthread_cond_signal(&special_event->special_event_cond);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int read_packet(xcb_connection_t *c)
|
||||
{
|
||||
xcb_generic_reply_t genrep;
|
||||
uint64_t length = 32;
|
||||
uint64_t eventlength = 0; /* length after first 32 bytes for GenericEvents */
|
||||
int nfd = 0; /* Number of file descriptors attached to the reply */
|
||||
uint64_t bufsize;
|
||||
void *buf;
|
||||
pending_reply *pend = 0;
|
||||
@ -164,13 +236,18 @@ static int read_packet(xcb_connection_t *c)
|
||||
genrep.length = p[2] * p[3] * 2;
|
||||
}
|
||||
length += genrep.length * 4;
|
||||
|
||||
/* XXX a bit of a hack -- we "know" that all FD replys place
|
||||
* the number of fds in the pad0 byte */
|
||||
if (pend && pend->flags & XCB_REQUEST_REPLY_FDS)
|
||||
nfd = genrep.pad0;
|
||||
}
|
||||
|
||||
/* XGE events may have sizes > 32 */
|
||||
if ((genrep.response_type & 0x7f) == XCB_XGE_EVENT)
|
||||
eventlength = genrep.length * 4;
|
||||
|
||||
bufsize = length + eventlength +
|
||||
bufsize = length + eventlength + nfd * sizeof(int) +
|
||||
(genrep.response_type == XCB_REPLY ? 0 : sizeof(uint32_t));
|
||||
if (bufsize < INT32_MAX)
|
||||
buf = malloc((size_t) bufsize);
|
||||
@ -198,6 +275,17 @@ static int read_packet(xcb_connection_t *c)
|
||||
}
|
||||
}
|
||||
|
||||
#if HAVE_SENDMSG
|
||||
if (nfd)
|
||||
{
|
||||
if (!read_fds(c, (int *) &((char *) buf)[length], nfd))
|
||||
{
|
||||
free(buf);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if(pend && (pend->flags & XCB_REQUEST_DISCARD_REPLY))
|
||||
{
|
||||
free(buf);
|
||||
@ -237,9 +325,12 @@ static int read_packet(xcb_connection_t *c)
|
||||
}
|
||||
event->event = buf;
|
||||
event->next = 0;
|
||||
*c->in.events_tail = event;
|
||||
c->in.events_tail = &event->next;
|
||||
pthread_cond_signal(&c->in.event_cond);
|
||||
|
||||
if (!event_special(c, event)) {
|
||||
*c->in.events_tail = event;
|
||||
c->in.events_tail = &event->next;
|
||||
pthread_cond_signal(&c->in.event_cond);
|
||||
}
|
||||
return 1; /* I have something for you... */
|
||||
}
|
||||
|
||||
@ -431,6 +522,11 @@ void *xcb_wait_for_reply(xcb_connection_t *c, unsigned int request, xcb_generic_
|
||||
return ret;
|
||||
}
|
||||
|
||||
int *xcb_get_reply_fds(xcb_connection_t *c, void *reply, size_t reply_size)
|
||||
{
|
||||
return (int *) (&((char *) reply)[reply_size]);
|
||||
}
|
||||
|
||||
static void insert_pending_discard(xcb_connection_t *c, pending_reply **prev_next, uint64_t seq)
|
||||
{
|
||||
pending_reply *pend;
|
||||
@ -577,6 +673,126 @@ xcb_generic_error_t *xcb_request_check(xcb_connection_t *c, xcb_void_cookie_t co
|
||||
return ret;
|
||||
}
|
||||
|
||||
static xcb_generic_event_t *get_special_event(xcb_connection_t *c,
|
||||
xcb_special_event_t *se)
|
||||
{
|
||||
xcb_generic_event_t *event = NULL;
|
||||
struct event_list *events;
|
||||
|
||||
if ((events = se->events) != NULL) {
|
||||
event = events->event;
|
||||
if (!(se->events = events->next))
|
||||
se->events_tail = &se->events;
|
||||
free (events);
|
||||
}
|
||||
return event;
|
||||
}
|
||||
|
||||
xcb_generic_event_t *xcb_poll_for_special_event(xcb_connection_t *c,
|
||||
xcb_special_event_t *se)
|
||||
{
|
||||
xcb_generic_event_t *event;
|
||||
|
||||
if(c->has_error)
|
||||
return 0;
|
||||
pthread_mutex_lock(&c->iolock);
|
||||
event = get_special_event(c, se);
|
||||
pthread_mutex_unlock(&c->iolock);
|
||||
return event;
|
||||
}
|
||||
|
||||
xcb_generic_event_t *xcb_wait_for_special_event(xcb_connection_t *c,
|
||||
xcb_special_event_t *se)
|
||||
{
|
||||
xcb_generic_event_t *event;
|
||||
|
||||
if(c->has_error)
|
||||
return 0;
|
||||
pthread_mutex_lock(&c->iolock);
|
||||
|
||||
/* get_special_event returns 0 on empty list. */
|
||||
while(!(event = get_special_event(c, se)))
|
||||
if(!_xcb_conn_wait(c, &se->special_event_cond, 0, 0))
|
||||
break;
|
||||
|
||||
pthread_mutex_unlock(&c->iolock);
|
||||
return event;
|
||||
}
|
||||
|
||||
xcb_special_event_t *
|
||||
xcb_register_for_special_xge(xcb_connection_t *c,
|
||||
xcb_extension_t *ext,
|
||||
uint32_t eid,
|
||||
uint32_t *stamp)
|
||||
{
|
||||
xcb_special_event_t *se;
|
||||
const xcb_query_extension_reply_t *ext_reply;
|
||||
|
||||
if(c->has_error)
|
||||
return NULL;
|
||||
ext_reply = xcb_get_extension_data(c, ext);
|
||||
if (!ext_reply)
|
||||
return NULL;
|
||||
pthread_mutex_lock(&c->iolock);
|
||||
for (se = c->in.special_events; se; se = se->next) {
|
||||
if (se->extension == ext_reply->major_opcode &&
|
||||
se->eid == eid) {
|
||||
pthread_mutex_unlock(&c->iolock);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
se = calloc(1, sizeof(xcb_special_event_t));
|
||||
if (!se) {
|
||||
pthread_mutex_unlock(&c->iolock);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
se->extension = ext_reply->major_opcode;
|
||||
se->eid = eid;
|
||||
|
||||
se->events = NULL;
|
||||
se->events_tail = &se->events;
|
||||
se->stamp = stamp;
|
||||
|
||||
pthread_cond_init(&se->special_event_cond, 0);
|
||||
|
||||
se->next = c->in.special_events;
|
||||
c->in.special_events = se;
|
||||
pthread_mutex_unlock(&c->iolock);
|
||||
return se;
|
||||
}
|
||||
|
||||
void
|
||||
xcb_unregister_for_special_event(xcb_connection_t *c,
|
||||
xcb_special_event_t *se)
|
||||
{
|
||||
xcb_special_event_t *s, **prev;
|
||||
struct event_list *events, *next;
|
||||
|
||||
if (!se)
|
||||
return;
|
||||
|
||||
if (c->has_error)
|
||||
return;
|
||||
|
||||
pthread_mutex_lock(&c->iolock);
|
||||
|
||||
for (prev = &c->in.special_events; (s = *prev) != NULL; prev = &(s->next)) {
|
||||
if (s == se) {
|
||||
*prev = se->next;
|
||||
for (events = se->events; events; events = next) {
|
||||
next = events->next;
|
||||
free (events->event);
|
||||
free (events);
|
||||
}
|
||||
pthread_cond_destroy(&se->special_event_cond);
|
||||
free (se);
|
||||
break;
|
||||
}
|
||||
}
|
||||
pthread_mutex_unlock(&c->iolock);
|
||||
}
|
||||
|
||||
/* Private interface */
|
||||
|
||||
int _xcb_in_init(_xcb_in *in)
|
||||
@ -665,11 +881,78 @@ void _xcb_in_replies_done(xcb_connection_t *c)
|
||||
|
||||
int _xcb_in_read(xcb_connection_t *c)
|
||||
{
|
||||
int n = recv(c->fd, c->in.queue + c->in.queue_len, sizeof(c->in.queue) - c->in.queue_len, 0);
|
||||
if(n > 0)
|
||||
int n;
|
||||
|
||||
#if HAVE_SENDMSG
|
||||
struct iovec iov = {
|
||||
.iov_base = c->in.queue + c->in.queue_len,
|
||||
.iov_len = sizeof(c->in.queue) - c->in.queue_len,
|
||||
};
|
||||
union {
|
||||
struct cmsghdr cmsghdr;
|
||||
char buf[CMSG_SPACE(XCB_MAX_PASS_FD * sizeof(int))];
|
||||
} cmsgbuf;
|
||||
struct msghdr msg = {
|
||||
.msg_name = NULL,
|
||||
.msg_namelen = 0,
|
||||
.msg_iov = &iov,
|
||||
.msg_iovlen = 1,
|
||||
.msg_control = cmsgbuf.buf,
|
||||
.msg_controllen = CMSG_SPACE(sizeof(int) * (XCB_MAX_PASS_FD - c->in.in_fd.nfd)),
|
||||
};
|
||||
n = recvmsg(c->fd, &msg, 0);
|
||||
|
||||
/* Check for truncation errors. Only MSG_CTRUNC is
|
||||
* probably possible here, which would indicate that
|
||||
* the sender tried to transmit more than XCB_MAX_PASS_FD
|
||||
* file descriptors.
|
||||
*/
|
||||
if (msg.msg_flags & (MSG_TRUNC|MSG_CTRUNC)) {
|
||||
_xcb_conn_shutdown(c, XCB_CONN_CLOSED_FDPASSING_FAILED);
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
n = recv(c->fd, c->in.queue + c->in.queue_len, sizeof(c->in.queue) - c->in.queue_len, 0);
|
||||
#endif
|
||||
if(n > 0) {
|
||||
#if HAVE_SENDMSG
|
||||
struct cmsghdr *hdr;
|
||||
|
||||
if (msg.msg_controllen >= sizeof (struct cmsghdr)) {
|
||||
for (hdr = CMSG_FIRSTHDR(&msg); hdr; hdr = CMSG_NXTHDR(&msg, hdr)) {
|
||||
if (hdr->cmsg_level == SOL_SOCKET && hdr->cmsg_type == SCM_RIGHTS) {
|
||||
int nfd = (hdr->cmsg_len - CMSG_LEN(0)) / sizeof (int);
|
||||
memcpy(&c->in.in_fd.fd[c->in.in_fd.nfd], CMSG_DATA(hdr), nfd * sizeof (int));
|
||||
c->in.in_fd.nfd += nfd;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
c->in.queue_len += n;
|
||||
}
|
||||
while(read_packet(c))
|
||||
/* empty */;
|
||||
#if HAVE_SENDMSG
|
||||
if (c->in.in_fd.nfd) {
|
||||
c->in.in_fd.nfd -= c->in.in_fd.ifd;
|
||||
memmove(&c->in.in_fd.fd[0],
|
||||
&c->in.in_fd.fd[c->in.in_fd.ifd],
|
||||
c->in.in_fd.nfd * sizeof (int));
|
||||
c->in.in_fd.ifd = 0;
|
||||
|
||||
/* If we have any left-over file descriptors after emptying
|
||||
* the input buffer, then the server sent some that we weren't
|
||||
* expecting. Close them and mark the connection as broken;
|
||||
*/
|
||||
if (c->in.queue_len == 0 && c->in.in_fd.nfd != 0) {
|
||||
int i;
|
||||
for (i = 0; i < c->in.in_fd.nfd; i++)
|
||||
close(c->in.in_fd.fd[i]);
|
||||
_xcb_conn_shutdown(c, XCB_CONN_CLOSED_FDPASSING_FAILED);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#ifndef _WIN32
|
||||
if((n > 0) || (n < 0 && errno == EAGAIN))
|
||||
#else
|
||||
|
2
dist/libxcb/src/xcb_list.c
vendored
2
dist/libxcb/src/xcb_list.c
vendored
@ -47,7 +47,7 @@ struct _xcb_map {
|
||||
|
||||
/* Private interface */
|
||||
|
||||
_xcb_map *_xcb_map_new()
|
||||
_xcb_map *_xcb_map_new(void)
|
||||
{
|
||||
_xcb_map *list;
|
||||
list = malloc(sizeof(_xcb_map));
|
||||
|
18
dist/libxcb/src/xcb_out.c
vendored
18
dist/libxcb/src/xcb_out.c
vendored
@ -260,6 +260,24 @@ unsigned int xcb_send_request(xcb_connection_t *c, int flags, struct iovec *vect
|
||||
return request;
|
||||
}
|
||||
|
||||
void
|
||||
xcb_send_fd(xcb_connection_t *c, int fd)
|
||||
{
|
||||
#if HAVE_SENDMSG
|
||||
if (c->has_error)
|
||||
return;
|
||||
pthread_mutex_lock(&c->iolock);
|
||||
while (c->out.out_fd.nfd == XCB_MAX_PASS_FD) {
|
||||
_xcb_out_flush_to(c, c->out.request);
|
||||
if (c->has_error)
|
||||
break;
|
||||
}
|
||||
if (!c->has_error)
|
||||
c->out.out_fd.fd[c->out.out_fd.nfd++] = fd;
|
||||
pthread_mutex_unlock(&c->iolock);
|
||||
#endif
|
||||
}
|
||||
|
||||
int xcb_take_socket(xcb_connection_t *c, void (*return_socket)(void *closure), void *closure, int flags, uint64_t *sent)
|
||||
{
|
||||
int ret;
|
||||
|
4
dist/libxcb/src/xcb_util.c
vendored
4
dist/libxcb/src/xcb_util.c
vendored
@ -168,7 +168,11 @@ static int _xcb_open_abstract(char *protocol, const char *file, size_t filelen);
|
||||
static int _xcb_open(const char *host, char *protocol, const int display)
|
||||
{
|
||||
int fd;
|
||||
#ifdef __hpux
|
||||
static const char unix_base[] = "/usr/spool/sockets/X11/";
|
||||
#else
|
||||
static const char unix_base[] = "/tmp/.X11-unix/X";
|
||||
#endif
|
||||
const char *base = unix_base;
|
||||
size_t filelen;
|
||||
char *file = NULL;
|
||||
|
6
dist/libxcb/src/xcbext.h
vendored
6
dist/libxcb/src/xcbext.h
vendored
@ -54,11 +54,14 @@ typedef struct {
|
||||
enum xcb_send_request_flags_t {
|
||||
XCB_REQUEST_CHECKED = 1 << 0,
|
||||
XCB_REQUEST_RAW = 1 << 1,
|
||||
XCB_REQUEST_DISCARD_REPLY = 1 << 2
|
||||
XCB_REQUEST_DISCARD_REPLY = 1 << 2,
|
||||
XCB_REQUEST_REPLY_FDS = 1 << 3
|
||||
};
|
||||
|
||||
unsigned int xcb_send_request(xcb_connection_t *c, int flags, struct iovec *vector, const xcb_protocol_request_t *request);
|
||||
|
||||
void xcb_send_fd(xcb_connection_t *c, int fd);
|
||||
|
||||
/* xcb_take_socket allows external code to ask XCB for permission to
|
||||
* take over the write side of the socket and send raw data with
|
||||
* xcb_writev. xcb_take_socket provides the sequence number of the last
|
||||
@ -88,6 +91,7 @@ int xcb_writev(xcb_connection_t *c, struct iovec *vector, int count, uint64_t re
|
||||
|
||||
void *xcb_wait_for_reply(xcb_connection_t *c, unsigned int request, xcb_generic_error_t **e);
|
||||
int xcb_poll_for_reply(xcb_connection_t *c, unsigned int request, void **reply, xcb_generic_error_t **error);
|
||||
int *xcb_get_reply_fds(xcb_connection_t *c, void *reply, size_t replylen);
|
||||
|
||||
|
||||
/* xcb_util.c */
|
||||
|
17
dist/libxcb/src/xcbint.h
vendored
17
dist/libxcb/src/xcbint.h
vendored
@ -79,6 +79,16 @@ void *_xcb_map_remove(_xcb_map *q, unsigned int key);
|
||||
|
||||
/* xcb_out.c */
|
||||
|
||||
#if HAVE_SENDMSG
|
||||
#define XCB_MAX_PASS_FD 16
|
||||
|
||||
typedef struct _xcb_fd {
|
||||
int fd[XCB_MAX_PASS_FD];
|
||||
int nfd;
|
||||
int ifd;
|
||||
} _xcb_fd;
|
||||
#endif
|
||||
|
||||
typedef struct _xcb_out {
|
||||
pthread_cond_t cond;
|
||||
int writing;
|
||||
@ -100,6 +110,9 @@ typedef struct _xcb_out {
|
||||
xcb_big_requests_enable_cookie_t cookie;
|
||||
uint32_t value;
|
||||
} maximum_request_length;
|
||||
#if HAVE_SENDMSG
|
||||
_xcb_fd out_fd;
|
||||
#endif
|
||||
} _xcb_out;
|
||||
|
||||
int _xcb_out_init(_xcb_out *out);
|
||||
@ -132,6 +145,10 @@ typedef struct _xcb_in {
|
||||
|
||||
struct pending_reply *pending_replies;
|
||||
struct pending_reply **pending_replies_tail;
|
||||
#if HAVE_SENDMSG
|
||||
_xcb_fd in_fd;
|
||||
#endif
|
||||
struct xcb_special_event *special_events;
|
||||
} _xcb_in;
|
||||
|
||||
int _xcb_in_init(_xcb_in *in);
|
||||
|
5
dist/libxcb/tests/Makefile.am
vendored
5
dist/libxcb/tests/Makefile.am
vendored
@ -12,12 +12,9 @@ TESTS = check_all
|
||||
check_PROGRAMS = check_all
|
||||
check_all_SOURCES = check_all.c check_suites.h check_public.c
|
||||
|
||||
all-local::
|
||||
$(RM) CheckLog*.xml
|
||||
|
||||
check-local: check-TESTS
|
||||
$(RM) CheckLog.html
|
||||
if test x$(HTML_CHECK_RESULT) = xtrue; then \
|
||||
if test x$(HTML_CHECK_RESULT) = xyes; then \
|
||||
$(XSLTPROC) $(srcdir)/CheckLog.xsl CheckLog*.xml > CheckLog.html; \
|
||||
else \
|
||||
touch CheckLog.html; \
|
||||
|
11
dist/libxcb/xcb-dri3.pc.in
vendored
Normal file
11
dist/libxcb/xcb-dri3.pc.in
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
libdir=@libdir@
|
||||
includedir=@includedir@
|
||||
|
||||
Name: XCB DRI3
|
||||
Description: XCB DRI3 Extension
|
||||
Version: @PACKAGE_VERSION@
|
||||
Requires: xcb
|
||||
Libs: -L${libdir} -lxcb-dri3
|
||||
Cflags: -I${includedir}
|
11
dist/libxcb/xcb-present.pc.in
vendored
Normal file
11
dist/libxcb/xcb-present.pc.in
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
libdir=@libdir@
|
||||
includedir=@includedir@
|
||||
|
||||
Name: XCB Present
|
||||
Description: XCB Present Extension
|
||||
Version: @PACKAGE_VERSION@
|
||||
Requires: xcb
|
||||
Libs: -L${libdir} -lxcb-present
|
||||
Cflags: -I${includedir}
|
Loading…
Reference in New Issue
Block a user