diff options
Diffstat (limited to 'check-pc-requires')
-rwxr-xr-x | check-pc-requires | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/check-pc-requires b/check-pc-requires new file mode 100755 index 0000000..0fd9c65 --- /dev/null +++ b/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 |