|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
XKB=yes
|
|
|
|
XPLATFORM=`basename $1`
|
|
|
|
XCONFIG=$1/qmake.conf
|
|
|
|
VERBOSE=$2
|
|
|
|
shift 2
|
|
|
|
IN_INCDIRS=""
|
|
|
|
PARAMS=$@
|
|
|
|
for PARAM in $PARAMS; do
|
|
|
|
PREFIX=`echo $PARAM | sed 's/^\(..\).*/\1/'`
|
|
|
|
case $PREFIX in
|
|
|
|
-I)
|
|
|
|
CINCDIR=`echo $PARAM | sed -e 's/^-I//'`
|
|
|
|
IN_INCDIRS="$IN_INCDIRS $CINCDIR"
|
|
|
|
;;
|
|
|
|
*) ;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
|
|
|
|
# debuggery
|
|
|
|
[ "$VERBOSE" = "yes" ] && echo "XKB auto-detection... ($*)"
|
|
|
|
|
|
|
|
# some platforms are known to be broken
|
|
|
|
# Solaris 7 + Xsun
|
|
|
|
# Patches 107648-01 and 107649-01 upgrade the Xsun package
|
|
|
|
# of Solaris 7 to X Window 6.4 on SPARC and Intel platforms
|
|
|
|
# respectively, introducing XKB support. However most headers
|
|
|
|
# are missing and there's no patch to fix that. Our solution
|
|
|
|
# is to disable XKB support on Solaris 7.
|
|
|
|
# Of course XFree86 is not affected by this Xsun bug, so ideally
|
|
|
|
# we should disable XKB support on Solaris + Xsun only, not on
|
|
|
|
# Solaris + XFree86. But then how to detect Xsun vs. XFree86?
|
|
|
|
# Tru64
|
|
|
|
# Link-time problems.
|
|
|
|
case "$XPLATFORM" in
|
|
|
|
solaris-*)
|
|
|
|
UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
|
|
|
|
case "$UNAME_RELEASE" in
|
|
|
|
5.7)
|
|
|
|
[ "x$VERBOSE" = "xyes" ] && echo "XKB extension known to be broken on this platform."
|
|
|
|
XKB=no
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
tru64-*)
|
|
|
|
UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
|
|
|
|
[ "x$VERBOSE" = "xyes" ] && echo "XKB extension not supported on this platform."
|
|
|
|
XKB=no
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
# check for headers
|
|
|
|
XKBLIB_H=
|
|
|
|
if [ "$XKB" = "yes" ]; then
|
|
|
|
INC="X11/XKBlib.h"
|
|
|
|
XDIRS=`sed -n -e '/^QMAKE_INCDIR_X11[ ]*=/ { s/[^=]*=[ ]*//; s/-I/ /g; p; }' $XCONFIG`
|
|
|
|
INCDIRS="$IN_INCDIRS $XDIRS /usr/include /include"
|
|
|
|
F=
|
|
|
|
for INCDIR in $INCDIRS; do
|
|
|
|
if [ -f $INCDIR/$INC ]; then
|
|
|
|
F=yes
|
|
|
|
XKBLIB_H=$INCDIR/$INC
|
|
|
|
if [ "$VERBOSE" = "yes" ]
|
|
|
|
then
|
|
|
|
echo " Found $INC in $INCDIR"
|
|
|
|
fi
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
if [ -z "$F" ]; then
|
|
|
|
XKB=no
|
|
|
|
if [ "$VERBOSE" = "yes" ]; then
|
|
|
|
echo " Could not find $INC anywhere in $INCDIRS"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
# check for XkbSetPerClientControls in X11/XKBlib.h
|
|
|
|
# if it is not found, we disable xkb support
|
|
|
|
if [ "$XKB" = "yes" ] && [ -f "$XKBLIB_H" ]; then
|
|
|
|
grep XkbSetPerClientControls $XKBLIB_H >/dev/null || XKB=no
|
|
|
|
if [ "$VERBOSE" = "yes" ]; then
|
|
|
|
if [ "$XKB" = "yes" ]; then
|
|
|
|
echo " XkbSetPerClientControls found."
|
|
|
|
else
|
|
|
|
echo " XkbSetPerClientControls not found."
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
# done
|
|
|
|
if [ "$XKB" != "yes" ]; then
|
|
|
|
[ "$VERBOSE" = "yes" ] && echo "XKB disabled."
|
|
|
|
exit 0
|
|
|
|
else
|
|
|
|
[ "$VERBOSE" = "yes" ] && echo "XKB enabled."
|
|
|
|
exit 1
|
|
|
|
fi
|