Avoid undefined behavior due to strict aliasing
This does not make XCB conform to the C99+ strict aliasing rules, but it does use attributes to prevent GCC and Clang from assuming the rules are followed in the cases where XCB does violate them. Signed-off-by: Demi Marie Obenour <demiobenour@gmail.com>
This commit is contained in:
parent
8adb5068af
commit
48dbb5b6ca
21
configure.ac
21
configure.ac
|
@ -15,7 +15,7 @@ AM_INIT_AUTOMAKE([foreign dist-xz])
|
||||||
AM_PATH_PYTHON([3.0])
|
AM_PATH_PYTHON([3.0])
|
||||||
|
|
||||||
# Set common system defines for POSIX extensions, such as _GNU_SOURCE
|
# 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)
|
# Must be called before any macros that run the compiler (like LT_INIT)
|
||||||
# to avoid autoconf errors.
|
# to avoid autoconf errors.
|
||||||
AC_USE_SYSTEM_EXTENSIONS
|
AC_USE_SYSTEM_EXTENSIONS
|
||||||
AC_SYS_LARGEFILE
|
AC_SYS_LARGEFILE
|
||||||
|
@ -27,6 +27,8 @@ LT_INIT([win32-dll])
|
||||||
# Require xorg-macros minimum of 1.18 - Initial version
|
# Require xorg-macros minimum of 1.18 - Initial version
|
||||||
m4_ifndef([XORG_MACROS_VERSION],
|
m4_ifndef([XORG_MACROS_VERSION],
|
||||||
[m4_fatal([must install xorg-macros 1.18 or later before running autoconf/autogen])])
|
[m4_fatal([must install xorg-macros 1.18 or later before running autoconf/autogen])])
|
||||||
|
XORG_TESTSET_CFLAG([XCB_CFLAGS], [-fno-strict-aliasing])
|
||||||
|
AC_SUBST([XCB_CFLAGS])
|
||||||
XORG_MACROS_VERSION(1.18)
|
XORG_MACROS_VERSION(1.18)
|
||||||
XORG_DEFAULT_OPTIONS
|
XORG_DEFAULT_OPTIONS
|
||||||
XORG_ENABLE_DEVEL_DOCS
|
XORG_ENABLE_DEVEL_DOCS
|
||||||
|
@ -248,6 +250,23 @@ XCB_EXTENSION(XTest, yes)
|
||||||
XCB_EXTENSION(Xv, yes)
|
XCB_EXTENSION(Xv, yes)
|
||||||
XCB_EXTENSION(XvMC, yes)
|
XCB_EXTENSION(XvMC, yes)
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([[if __attribute__((may_alias)) is supported]])
|
||||||
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||||
|
typedef struct x { int a; } __attribute__((may_alias)) x;
|
||||||
|
]])],[
|
||||||
|
AC_DEFINE([[XCB_MAY_ALIAS]], [[__attribute__((may_alias))]], [Define if __attribute__((may_alias)) works])
|
||||||
|
AC_MSG_RESULT([[yes]])
|
||||||
|
],[
|
||||||
|
AC_MSG_RESULT([[no]])
|
||||||
|
AC_MSG_CHECKING([[if -fno-strict-aliasing works]])[
|
||||||
|
case $XCB_CFLAGS in
|
||||||
|
*-fno-strict-aliasing*)]
|
||||||
|
AC_MSG_RESULT([[yes]])
|
||||||
|
AC_MSG_WARN([[may_alias not supported, programs must use -fno-strict-aliasing]]);;
|
||||||
|
*)
|
||||||
|
AC_MSG_RESULT([[no (flags are $XCB_CFLAGS)]])
|
||||||
|
AC_MSG_FAILURE([[No method of suppressing strict-aliasing found]]);;
|
||||||
|
[esac]])
|
||||||
AC_ARG_WITH(serverside-support, AS_HELP_STRING([--with-serverside-support], [Build with support for server-side usage of xcb. This is still EXPERIMENTAL! ABI/API may change! (default: no)]), [XCB_SERVERSIDE_SUPPORT=$withval], [XCB_SERVERSIDE_SUPPORT=no])
|
AC_ARG_WITH(serverside-support, AS_HELP_STRING([--with-serverside-support], [Build with support for server-side usage of xcb. This is still EXPERIMENTAL! ABI/API may change! (default: no)]), [XCB_SERVERSIDE_SUPPORT=$withval], [XCB_SERVERSIDE_SUPPORT=no])
|
||||||
|
|
||||||
AM_CONDITIONAL(XCB_SERVERSIDE_SUPPORT, test "x$XCB_SERVERSIDE_SUPPORT" = "xyes")
|
AM_CONDITIONAL(XCB_SERVERSIDE_SUPPORT, test "x$XCB_SERVERSIDE_SUPPORT" = "xyes")
|
||||||
|
|
|
@ -4,7 +4,7 @@ EXTSOURCES = xproto.c \
|
||||||
bigreq.c \
|
bigreq.c \
|
||||||
xc_misc.c
|
xc_misc.c
|
||||||
|
|
||||||
AM_CFLAGS = $(BASE_CFLAGS) $(NEEDED_CFLAGS) $(XDMCP_CFLAGS)
|
AM_CFLAGS = $(BASE_CFLAGS) $(NEEDED_CFLAGS) $(XDMCP_CFLAGS) $(XCB_CFLAGS)
|
||||||
libxcb_la_LIBADD = $(NEEDED_LIBS) $(XDMCP_LIBS)
|
libxcb_la_LIBADD = $(NEEDED_LIBS) $(XDMCP_LIBS)
|
||||||
libxcb_la_SOURCES = \
|
libxcb_la_SOURCES = \
|
||||||
xcb_conn.c xcb_out.c xcb_in.c xcb_ext.c xcb_xid.c \
|
xcb_conn.c xcb_out.c xcb_in.c xcb_ext.c xcb_xid.c \
|
||||||
|
@ -249,7 +249,7 @@ nodist_libxcb_ge_la_SOURCES = ge.c ge.h
|
||||||
endif
|
endif
|
||||||
|
|
||||||
EXTHEADERS=$(EXTSOURCES:.c=.h)
|
EXTHEADERS=$(EXTSOURCES:.c=.h)
|
||||||
xcbinclude_HEADERS = xcb.h xcbext.h
|
xcbinclude_HEADERS = xcb.h xcbext.h config.h
|
||||||
if XCB_HAVE_WIN32
|
if XCB_HAVE_WIN32
|
||||||
xcbinclude_HEADERS += xcb_windefs.h
|
xcbinclude_HEADERS += xcb_windefs.h
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -279,7 +279,7 @@ def c_open(self):
|
||||||
_h('#include "xcb.h"')
|
_h('#include "xcb.h"')
|
||||||
|
|
||||||
_c('#ifdef HAVE_CONFIG_H')
|
_c('#ifdef HAVE_CONFIG_H')
|
||||||
_c('#include "config.h"')
|
_hc('#include "config.h"')
|
||||||
_c('#endif')
|
_c('#endif')
|
||||||
_c('#include <stdlib.h>')
|
_c('#include <stdlib.h>')
|
||||||
_c('#include <stdalign.h>')
|
_c('#include <stdalign.h>')
|
||||||
|
@ -1642,7 +1642,7 @@ def _c_iterator(self, name):
|
||||||
param[0],
|
param[0],
|
||||||
' ' * (len(self.c_type) + 1 - len(param[0])),
|
' ' * (len(self.c_type) + 1 - len(param[0])),
|
||||||
param[2])
|
param[2])
|
||||||
_h('} %s;', self.c_iterator_type)
|
_h('} XCB_MAY_ALIAS %s;', self.c_iterator_type)
|
||||||
|
|
||||||
_h_setlevel(1)
|
_h_setlevel(1)
|
||||||
_c_setlevel(1)
|
_c_setlevel(1)
|
||||||
|
@ -2254,7 +2254,7 @@ def _c_complex(self, force_packed = False):
|
||||||
if b.type.has_name:
|
if b.type.has_name:
|
||||||
_h(' } %s;', b.c_field_name)
|
_h(' } %s;', b.c_field_name)
|
||||||
|
|
||||||
_h('} %s%s;', 'XCB_PACKED ' if force_packed else '', self.c_type)
|
_h('} %sXCB_MAY_ALIAS %s;', 'XCB_PACKED ' if force_packed else '', self.c_type)
|
||||||
|
|
||||||
def c_struct(self, name):
|
def c_struct(self, name):
|
||||||
'''
|
'''
|
||||||
|
@ -2756,7 +2756,7 @@ def _c_cookie(self, name):
|
||||||
_h(' **/')
|
_h(' **/')
|
||||||
_h('typedef struct %s {', self.c_cookie_type)
|
_h('typedef struct %s {', self.c_cookie_type)
|
||||||
_h(' unsigned int sequence;')
|
_h(' unsigned int sequence;')
|
||||||
_h('} %s;', self.c_cookie_type)
|
_h('} XCB_MAY_ALIAS %s;', self.c_cookie_type)
|
||||||
|
|
||||||
def _man_request(self, name, void, aux):
|
def _man_request(self, name, void, aux):
|
||||||
param_fields = [f for f in self.fields if f.visible]
|
param_fields = [f for f in self.fields if f.visible]
|
||||||
|
@ -2812,7 +2812,7 @@ def _man_request(self, name, void, aux):
|
||||||
f.write('.SS Reply datastructure\n')
|
f.write('.SS Reply datastructure\n')
|
||||||
f.write('.nf\n')
|
f.write('.nf\n')
|
||||||
f.write('.sp\n')
|
f.write('.sp\n')
|
||||||
f.write('typedef %s %s {\n' % (self.reply.c_container, self.reply.c_type))
|
f.write('typedef XCB_MAY_ALIAS %s %s {\n' % (self.reply.c_container, self.reply.c_type))
|
||||||
struct_fields = []
|
struct_fields = []
|
||||||
maxtypelen = 0
|
maxtypelen = 0
|
||||||
|
|
||||||
|
@ -3389,7 +3389,7 @@ def c_event(self, name):
|
||||||
else:
|
else:
|
||||||
# Typedef
|
# Typedef
|
||||||
_h('')
|
_h('')
|
||||||
_h('typedef %s %s;', _t(self.name + ('event',)), _t(name + ('event',)))
|
_h('typedef XCB_MAY_ALIAS %s %s;', _t(self.name + ('event',)), _t(name + ('event',)))
|
||||||
|
|
||||||
# Create sizeof-function for eventcopies for compatibility reasons
|
# Create sizeof-function for eventcopies for compatibility reasons
|
||||||
if self.c_need_sizeof:
|
if self.c_need_sizeof:
|
||||||
|
@ -3424,7 +3424,7 @@ def c_error(self, name):
|
||||||
else:
|
else:
|
||||||
# Typedef
|
# Typedef
|
||||||
_h('')
|
_h('')
|
||||||
_h('typedef %s %s;', _t(self.name + ('error',)), _t(name + ('error',)))
|
_h('typedef XCB_MAY_ALIAS %s %s;', _t(self.name + ('error',)), _t(name + ('error',)))
|
||||||
|
|
||||||
|
|
||||||
# Main routine starts here
|
# Main routine starts here
|
||||||
|
|
|
@ -53,8 +53,14 @@ extern "C" {
|
||||||
|
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
#define XCB_PACKED __attribute__((__packed__))
|
#define XCB_PACKED __attribute__((__packed__))
|
||||||
|
#ifndef XCB_MAY_ALIAS
|
||||||
|
#define XCB_MAY_ALIAS __attribute__((may_alias))
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
#define XCB_PACKED
|
#define XCB_PACKED
|
||||||
|
#ifndef XCB_MAY_ALIAS
|
||||||
|
#define XCB_MAY_ALIAS
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -8,4 +8,4 @@ Description: XCB Composite Extension
|
||||||
Version: @PACKAGE_VERSION@
|
Version: @PACKAGE_VERSION@
|
||||||
Requires.private: xcb xcb-xfixes
|
Requires.private: xcb xcb-xfixes
|
||||||
Libs: -L${libdir} -lxcb-composite
|
Libs: -L${libdir} -lxcb-composite
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir} @XCB_CFLAGS@
|
||||||
|
|
|
@ -8,4 +8,4 @@ Description: XCB Damage Extension
|
||||||
Version: @PACKAGE_VERSION@
|
Version: @PACKAGE_VERSION@
|
||||||
Requires.private: xcb xcb-xfixes
|
Requires.private: xcb xcb-xfixes
|
||||||
Libs: -L${libdir} -lxcb-damage
|
Libs: -L${libdir} -lxcb-damage
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir} @XCB_CFLAGS@
|
||||||
|
|
|
@ -8,4 +8,4 @@ Description: XCB Double Buffer Extension
|
||||||
Version: @PACKAGE_VERSION@
|
Version: @PACKAGE_VERSION@
|
||||||
Requires.private: xcb
|
Requires.private: xcb
|
||||||
Libs: -L${libdir} -lxcb-dbe
|
Libs: -L${libdir} -lxcb-dbe
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir} @XCB_CFLAGS@
|
||||||
|
|
|
@ -8,4 +8,4 @@ Description: XCB DPMS Extension
|
||||||
Version: @PACKAGE_VERSION@
|
Version: @PACKAGE_VERSION@
|
||||||
Requires.private: xcb
|
Requires.private: xcb
|
||||||
Libs: -L${libdir} -lxcb-dpms
|
Libs: -L${libdir} -lxcb-dpms
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir} @XCB_CFLAGS@
|
||||||
|
|
|
@ -8,4 +8,4 @@ Description: XCB DRI2 Extension
|
||||||
Version: @PACKAGE_VERSION@
|
Version: @PACKAGE_VERSION@
|
||||||
Requires.private: xcb
|
Requires.private: xcb
|
||||||
Libs: -L${libdir} -lxcb-dri2
|
Libs: -L${libdir} -lxcb-dri2
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir} @XCB_CFLAGS@
|
||||||
|
|
|
@ -8,4 +8,4 @@ Description: XCB DRI3 Extension
|
||||||
Version: @PACKAGE_VERSION@
|
Version: @PACKAGE_VERSION@
|
||||||
Requires.private: xcb
|
Requires.private: xcb
|
||||||
Libs: -L${libdir} -lxcb-dri3
|
Libs: -L${libdir} -lxcb-dri3
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir} @XCB_CFLAGS@
|
||||||
|
|
|
@ -8,4 +8,4 @@ Description: XCB GenericEvent Extension
|
||||||
Version: @PACKAGE_VERSION@
|
Version: @PACKAGE_VERSION@
|
||||||
Requires.private: xcb
|
Requires.private: xcb
|
||||||
Libs: -L${libdir} -lxcb-ge
|
Libs: -L${libdir} -lxcb-ge
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir} @XCB_CFLAGS@
|
||||||
|
|
|
@ -8,4 +8,4 @@ Description: XCB GLX Extension
|
||||||
Version: @PACKAGE_VERSION@
|
Version: @PACKAGE_VERSION@
|
||||||
Requires.private: xcb
|
Requires.private: xcb
|
||||||
Libs: -L${libdir} -lxcb-glx
|
Libs: -L${libdir} -lxcb-glx
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir} @XCB_CFLAGS@
|
||||||
|
|
|
@ -8,4 +8,4 @@ Description: XCB Present Extension
|
||||||
Version: @PACKAGE_VERSION@
|
Version: @PACKAGE_VERSION@
|
||||||
Requires.private: xcb xcb-randr xcb-xfixes xcb-sync xcb-dri3
|
Requires.private: xcb xcb-randr xcb-xfixes xcb-sync xcb-dri3
|
||||||
Libs: -L${libdir} -lxcb-present
|
Libs: -L${libdir} -lxcb-present
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir} @XCB_CFLAGS@
|
||||||
|
|
|
@ -8,4 +8,4 @@ Description: XCB RandR Extension
|
||||||
Version: @PACKAGE_VERSION@
|
Version: @PACKAGE_VERSION@
|
||||||
Requires.private: xcb xcb-render
|
Requires.private: xcb xcb-render
|
||||||
Libs: -L${libdir} -lxcb-randr
|
Libs: -L${libdir} -lxcb-randr
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir} @XCB_CFLAGS@
|
||||||
|
|
|
@ -8,4 +8,4 @@ Description: XCB Record Extension
|
||||||
Version: @PACKAGE_VERSION@
|
Version: @PACKAGE_VERSION@
|
||||||
Requires.private: xcb
|
Requires.private: xcb
|
||||||
Libs: -L${libdir} -lxcb-record
|
Libs: -L${libdir} -lxcb-record
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir} @XCB_CFLAGS@
|
||||||
|
|
|
@ -8,4 +8,4 @@ Description: XCB Render Extension
|
||||||
Version: @PACKAGE_VERSION@
|
Version: @PACKAGE_VERSION@
|
||||||
Requires.private: xcb
|
Requires.private: xcb
|
||||||
Libs: -L${libdir} -lxcb-render
|
Libs: -L${libdir} -lxcb-render
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir} @XCB_CFLAGS@
|
||||||
|
|
|
@ -8,4 +8,4 @@ Description: XCB X-Resource Extension
|
||||||
Version: @PACKAGE_VERSION@
|
Version: @PACKAGE_VERSION@
|
||||||
Requires.private: xcb
|
Requires.private: xcb
|
||||||
Libs: -L${libdir} -lxcb-res
|
Libs: -L${libdir} -lxcb-res
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir} @XCB_CFLAGS@
|
||||||
|
|
|
@ -8,4 +8,4 @@ Description: XCB Screensaver Extension
|
||||||
Version: @PACKAGE_VERSION@
|
Version: @PACKAGE_VERSION@
|
||||||
Requires.private: xcb
|
Requires.private: xcb
|
||||||
Libs: -L${libdir} -lxcb-screensaver
|
Libs: -L${libdir} -lxcb-screensaver
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir} @XCB_CFLAGS@
|
||||||
|
|
|
@ -8,4 +8,4 @@ Description: XCB Shape Extension
|
||||||
Version: @PACKAGE_VERSION@
|
Version: @PACKAGE_VERSION@
|
||||||
Requires.private: xcb
|
Requires.private: xcb
|
||||||
Libs: -L${libdir} -lxcb-shape
|
Libs: -L${libdir} -lxcb-shape
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir} @XCB_CFLAGS@
|
||||||
|
|
|
@ -8,4 +8,4 @@ Description: XCB Shm Extension
|
||||||
Version: @PACKAGE_VERSION@
|
Version: @PACKAGE_VERSION@
|
||||||
Requires.private: xcb
|
Requires.private: xcb
|
||||||
Libs: -L${libdir} -lxcb-shm
|
Libs: -L${libdir} -lxcb-shm
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir} @XCB_CFLAGS@
|
||||||
|
|
|
@ -8,4 +8,4 @@ Description: XCB Sync Extension
|
||||||
Version: @PACKAGE_VERSION@
|
Version: @PACKAGE_VERSION@
|
||||||
Requires.private: xcb
|
Requires.private: xcb
|
||||||
Libs: -L${libdir} -lxcb-sync
|
Libs: -L${libdir} -lxcb-sync
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir} @XCB_CFLAGS@
|
||||||
|
|
|
@ -8,4 +8,4 @@ Description: XCB Xevie Extension
|
||||||
Version: @PACKAGE_VERSION@
|
Version: @PACKAGE_VERSION@
|
||||||
Requires.private: xcb
|
Requires.private: xcb
|
||||||
Libs: -L${libdir} -lxcb-xevie
|
Libs: -L${libdir} -lxcb-xevie
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir} @XCB_CFLAGS@
|
||||||
|
|
|
@ -8,4 +8,4 @@ Description: XCB XFree86-DRI Extension
|
||||||
Version: @PACKAGE_VERSION@
|
Version: @PACKAGE_VERSION@
|
||||||
Requires.private: xcb
|
Requires.private: xcb
|
||||||
Libs: -L${libdir} -lxcb-xf86dri
|
Libs: -L${libdir} -lxcb-xf86dri
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir} @XCB_CFLAGS@
|
||||||
|
|
|
@ -8,4 +8,4 @@ Description: XCB XFixes Extension
|
||||||
Version: @PACKAGE_VERSION@
|
Version: @PACKAGE_VERSION@
|
||||||
Requires.private: xcb xcb-render xcb-shape
|
Requires.private: xcb xcb-render xcb-shape
|
||||||
Libs: -L${libdir} -lxcb-xfixes
|
Libs: -L${libdir} -lxcb-xfixes
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir} @XCB_CFLAGS@
|
||||||
|
|
|
@ -8,4 +8,4 @@ Description: XCB Xinerama Extension
|
||||||
Version: @PACKAGE_VERSION@
|
Version: @PACKAGE_VERSION@
|
||||||
Requires.private: xcb
|
Requires.private: xcb
|
||||||
Libs: -L${libdir} -lxcb-xinerama
|
Libs: -L${libdir} -lxcb-xinerama
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir} @XCB_CFLAGS@
|
||||||
|
|
|
@ -8,4 +8,4 @@ Description: XCB XInput Extension (EXPERIMENTAL)
|
||||||
Version: @PACKAGE_VERSION@
|
Version: @PACKAGE_VERSION@
|
||||||
Requires.private: xcb xcb-xfixes
|
Requires.private: xcb xcb-xfixes
|
||||||
Libs: -L${libdir} -lxcb-xinput
|
Libs: -L${libdir} -lxcb-xinput
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir} @XCB_CFLAGS@
|
||||||
|
|
|
@ -8,4 +8,4 @@ Description: XCB Keyboard Extension (EXPERIMENTAL)
|
||||||
Version: @PACKAGE_VERSION@
|
Version: @PACKAGE_VERSION@
|
||||||
Requires.private: xcb
|
Requires.private: xcb
|
||||||
Libs: -L${libdir} -lxcb-xkb
|
Libs: -L${libdir} -lxcb-xkb
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir} @XCB_CFLAGS@
|
||||||
|
|
|
@ -8,4 +8,4 @@ Description: XCB Xprint Extension
|
||||||
Version: @PACKAGE_VERSION@
|
Version: @PACKAGE_VERSION@
|
||||||
Requires.private: xcb
|
Requires.private: xcb
|
||||||
Libs: -L${libdir} -lxcb-xprint
|
Libs: -L${libdir} -lxcb-xprint
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir} @XCB_CFLAGS@
|
||||||
|
|
|
@ -8,4 +8,4 @@ Description: XCB SELinux Extension
|
||||||
Version: @PACKAGE_VERSION@
|
Version: @PACKAGE_VERSION@
|
||||||
Requires.private: xcb
|
Requires.private: xcb
|
||||||
Libs: -L${libdir} -lxcb-xselinux
|
Libs: -L${libdir} -lxcb-xselinux
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir} @XCB_CFLAGS@
|
||||||
|
|
|
@ -8,4 +8,4 @@ Description: XCB XTEST Extension
|
||||||
Version: @PACKAGE_VERSION@
|
Version: @PACKAGE_VERSION@
|
||||||
Requires.private: xcb
|
Requires.private: xcb
|
||||||
Libs: -L${libdir} -lxcb-xtest
|
Libs: -L${libdir} -lxcb-xtest
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir} @XCB_CFLAGS@
|
||||||
|
|
|
@ -8,4 +8,4 @@ Description: XCB Xv Extension
|
||||||
Version: @PACKAGE_VERSION@
|
Version: @PACKAGE_VERSION@
|
||||||
Requires.private: xcb xcb-shm
|
Requires.private: xcb xcb-shm
|
||||||
Libs: -L${libdir} -lxcb-xv
|
Libs: -L${libdir} -lxcb-xv
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir} @XCB_CFLAGS@
|
||||||
|
|
|
@ -8,4 +8,4 @@ Description: XCB XvMC Extension
|
||||||
Version: @PACKAGE_VERSION@
|
Version: @PACKAGE_VERSION@
|
||||||
Requires.private: xcb xcb-xv
|
Requires.private: xcb xcb-xv
|
||||||
Libs: -L${libdir} -lxcb-xvmc
|
Libs: -L${libdir} -lxcb-xvmc
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir} @XCB_CFLAGS@
|
||||||
|
|
Loading…
Reference in New Issue