diff options
Diffstat (limited to 'libxcb')
-rw-r--r-- | libxcb/Makefile.am | 8 | ||||
-rw-r--r-- | libxcb/check-pc-requires | 70 | ||||
-rw-r--r-- | libxcb/src/c_client.py | 2 | ||||
-rw-r--r-- | libxcb/xcb-present.pc.in | 2 | ||||
-rw-r--r-- | libxcb/xcb-randr.pc.in | 2 | ||||
-rw-r--r-- | libxcb/xcb-xinput.pc.in | 2 |
6 files changed, 81 insertions, 5 deletions
diff --git a/libxcb/Makefile.am b/libxcb/Makefile.am index 387c2f28e..e9124892b 100644 --- a/libxcb/Makefile.am +++ b/libxcb/Makefile.am @@ -86,8 +86,14 @@ pkgconfig_DATA += xcb-xvmc.pc endif +AM_TESTS_ENVIRONMENT = \ + AM_SRCDIR=${srcdir} + +TESTS=check-pc-requires + EXTRA_DIST = \ tools/README \ tools/api_conv.pl \ tools/constants \ -autogen.sh +autogen.sh \ +$(TESTS) diff --git a/libxcb/check-pc-requires b/libxcb/check-pc-requires new file mode 100644 index 000000000..0fd9c6597 --- /dev/null +++ b/libxcb/check-pc-requires @@ -0,0 +1,70 @@ +#!/bin/sh + +case "$AM_SRCDIR" in +"") + AM_SRCDIR="." + ;; +*) + ;; +esac + +fix=n +status=0 +case "$1" in +"-fix") + fix=y + ;; +esac + +for inc in src/*.h; do + package=xcb-`basename $inc .h` + pcin="$AM_SRCDIR"/$package.pc.in + if [ -f $pcin ]; then + included=`grep '# *include' $inc | + sed -e 's/[^<"]*[<"]//' -e 's/[>"]//' | + grep -v 'xcb.h\|xproto.h'` + requires=`grep '^Requires:' $pcin` + missing="" + for i in $included; do + ibase=`basename $i .h` + r="xcb-$ibase" + rpcin="$AM_SRCDIR"/$r.pc.in + if [ -f $rpcin ]; then + m="$r" + for has in $requires; do + if [ $has = $r ]; then + m="" + fi + done + case "$m" in + "") + ;; + *) + case "$missing" in + "") + missing=$m + ;; + *) + missing="$missing $m" + ;; + esac + ;; + esac + fi + done + case "$missing" in + "") + ;; + *) + if [ "$fix" = "y" ]; then + echo $package adding dependency on $missing + sed -i '/^Requires:/s/$/ '"$missing"'/' $pcin + else + echo $package missing $missing + status=1 + fi + ;; + esac + fi +done +exit $status diff --git a/libxcb/src/c_client.py b/libxcb/src/c_client.py index aaaab2e4a..c94a9e61c 100644 --- a/libxcb/src/c_client.py +++ b/libxcb/src/c_client.py @@ -190,7 +190,7 @@ def c_open(self): _c('#define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member)') if _ns.is_ext: - for (n, h) in self.imports: + for (n, h) in self.direct_imports: _hc('#include "%s.h"', h) _h('') diff --git a/libxcb/xcb-present.pc.in b/libxcb/xcb-present.pc.in index 848ac02ef..e2eccc489 100644 --- a/libxcb/xcb-present.pc.in +++ b/libxcb/xcb-present.pc.in @@ -6,6 +6,6 @@ includedir=@includedir@ Name: XCB Present Description: XCB Present Extension Version: @PACKAGE_VERSION@ -Requires: xcb +Requires: xcb xcb-randr xcb-xfixes xcb-sync Libs: -L${libdir} -lxcb-present Cflags: -I${includedir} diff --git a/libxcb/xcb-randr.pc.in b/libxcb/xcb-randr.pc.in index ac7f35d97..09c3d12e2 100644 --- a/libxcb/xcb-randr.pc.in +++ b/libxcb/xcb-randr.pc.in @@ -6,6 +6,6 @@ includedir=@includedir@ Name: XCB RandR Description: XCB RandR Extension Version: @PACKAGE_VERSION@ -Requires: xcb +Requires: xcb xcb-render Libs: -L${libdir} -lxcb-randr Cflags: -I${includedir} diff --git a/libxcb/xcb-xinput.pc.in b/libxcb/xcb-xinput.pc.in index ec3122947..ff34ab470 100644 --- a/libxcb/xcb-xinput.pc.in +++ b/libxcb/xcb-xinput.pc.in @@ -6,6 +6,6 @@ includedir=@includedir@ Name: XCB XInput Description: XCB XInput Extension (EXPERIMENTAL) Version: @PACKAGE_VERSION@ -Requires: xcb +Requires: xcb xcb-xfixes Libs: -L${libdir} -lxcb-xinput Cflags: -I${includedir} |