You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
184 lines
5.3 KiB
184 lines
5.3 KiB
#!/bin/sh
|
|
|
|
XFT=yes
|
|
XFT2=no
|
|
XFT2_HEADER=no
|
|
XCONFIG=$1/qmake.conf
|
|
VERBOSE=$2
|
|
SRCDIR=$3
|
|
OUTDIR=$4
|
|
shift 4
|
|
IN_LIBDIRS=""
|
|
IN_INCDIRS=""
|
|
PARAMS=$@
|
|
for PARAM in $PARAMS; do
|
|
PREFIX=`echo $PARAM | sed 's/^\(..\).*/\1/'`
|
|
case $PREFIX in
|
|
-L)
|
|
CLIBDIR=`echo $PARAM | sed -e 's/^-L//'`
|
|
IN_LIBDIRS="$IN_LIBDIRS $CLIBDIR"
|
|
;;
|
|
-I)
|
|
CINCDIR=`echo $PARAM | sed -e 's/^-I//'`
|
|
IN_INCDIRS="$IN_INCDIRS $CINCDIR"
|
|
;;
|
|
*) ;;
|
|
esac
|
|
done
|
|
|
|
# debuggery
|
|
[ "$VERBOSE" = "yes" ] && echo "Xft auto-detection... ($*)"
|
|
|
|
# cleanup...
|
|
rm -f $OUTDIR/config.tests/x11/xft.cfg
|
|
rm -f $OUTDIR/config.tests/x11/xft.inc
|
|
rm -f $OUTDIR/config.tests/x11/xft.lib
|
|
|
|
# check for the Xft library
|
|
XDIRS=`sed -n -e '/^QMAKE_LIBDIR_X11[ ]*=/ { s/[^=]*=[ ]*//; s/-L/ /g; p; }' $XCONFIG`
|
|
LIBDIRS="$IN_LIBDIRS $XDIRS /usr/shlib /usr/lib /lib"
|
|
F=
|
|
LIBS="Xft2 Xft"
|
|
for LIB in $LIBS; do
|
|
for LIBDIR in $LIBDIRS; do
|
|
EXTENSIONS="a so sl"
|
|
for E in $EXTENSIONS; do
|
|
if [ -f "$LIBDIR/lib$LIB.$E" ]; then
|
|
F="$LIB"
|
|
[ "$VERBOSE" = "yes" ] && echo " Found lib$LIB.$E in $LIBDIR"
|
|
break
|
|
fi
|
|
done
|
|
done
|
|
[ -n "$F" ] && break
|
|
done
|
|
if [ -z "$F" ]; then
|
|
XFT=no
|
|
[ "$VERBOSE" = "yes" ] && echo " Could not find Xft lib anywhere in $LIBDIRS"
|
|
fi
|
|
LIBXFT="-l$F -lfreetype"
|
|
|
|
# check for X11/Xft/Xft.h
|
|
XFT_H=
|
|
if [ "$XFT" = "yes" ]; then
|
|
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
|
|
INCS="X11/Xft/Xft2.h X11/Xft/Xft.h"
|
|
for INC in $INCS; do
|
|
if [ -f $INCDIR/$INC ]; then
|
|
F=yes
|
|
[ "$INC" = "X11/Xft/Xft2.h" ] && XFT2_HEADER=yes
|
|
XFT_H=$INCDIR/$INC
|
|
[ "$VERBOSE" = "yes" ] && echo " Found $INC in $INCDIR"
|
|
break
|
|
fi
|
|
done
|
|
done
|
|
if [ -z "$F" ]; then
|
|
XFT=no
|
|
[ "$VERBOSE" = "yes" ] && echo " Could not find $INC anywhere in $INCDIRS"
|
|
fi
|
|
fi
|
|
|
|
# detect major version of Xft
|
|
if [ "$XFT" = "yes" ]; then
|
|
XFT_MAJOR=`grep XFT_MAJOR $XFT_H | head -n 1 | awk '{ print \$3 }'`
|
|
XFT_MINOR=`grep XFT_MINOR $XFT_H | head -n 1 | awk '{ print \$3 }'`
|
|
XFT_REVISION=`grep XFT_REVISION $XFT_H | head -n 1 | awk '{ print \$3 }'`
|
|
[ "$VERBOSE" = "yes" ] && echo " Found Xft version $XFT_MAJOR.$XFT_MINOR.$XFT_REVISION"
|
|
if [ "$XFT_MAJOR" = "2" ]; then
|
|
XFT2=yes
|
|
LIBXFT="$LIBXFT -lfontconfig"
|
|
fi
|
|
fi
|
|
|
|
# find XftFreetype.h if using Xft1
|
|
if [ "$XFT" = "yes" ] && [ "$XFT2" = "no" ]; then
|
|
INC="X11/Xft/XftFreetype.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
|
|
[ "$VERBOSE" = "yes" ] && echo " Found $INC in $INCDIR"
|
|
break
|
|
fi
|
|
done
|
|
if [ -z "$F" ]; then
|
|
XFT=no
|
|
[ "$VERBOSE" = "yes" ] && echo " Could not find $INC anywhere in $INCDIRS"
|
|
fi
|
|
fi
|
|
|
|
# check for freetype2 headers
|
|
FREETYPE2_INCDIR=
|
|
if [ "$XFT" = "yes" ]; then
|
|
XDIRS=`sed -n -e '/^QMAKE_INCDIR_X11[ ]*=/ { s/[^=]*=[ ]*//; s/-I/ /g; p; }' $XCONFIG`
|
|
LDIRS=`sed -n -e '/^QMAKE_INCDIR[ ]*=/ { s/[^=]*=[ ]*//; s/-I/ /g; p; }' $XCONFIG`
|
|
INCDIRS="$IN_INCDIRS $XDIRS $LDIRS /usr/include /include"
|
|
F=
|
|
for INCDIR in $INCDIRS; do
|
|
INC="freetype2/freetype/freetype.h" # libfreetype <= 2.4.9-1.1
|
|
if ! [ -f $INCDIR/$INC ]; then
|
|
INC="freetype2/freetype.h" # libfreetype >= 2.5.1-1
|
|
fi
|
|
if [ -f $INCDIR/$INC ]; then
|
|
# detect major version of freetype2
|
|
FREETYPE_MAJOR=`grep "#define FREETYPE_MAJOR" $INCDIR/$INC | head -n 1 | awk '{ print \$3 }'`
|
|
FREETYPE_MINOR=`grep "#define FREETYPE_MINOR" $INCDIR/$INC | head -n 1 | awk '{ print \$3 }'`
|
|
FREETYPE_PATCH=`grep "#define FREETYPE_PATCH" $INCDIR/$INC | head -n 1 | awk '{ print \$3 }'`
|
|
test -z "$FREETYPE_PATCH" && FREETYPE_PATCH="0"
|
|
[ "$VERBOSE" = "yes" ] && \
|
|
echo " Found Freetype version $FREETYPE_MAJOR.$FREETYPE_MINOR.$FREETYPE_PATCH"
|
|
if [ "$FREETYPE_MAJOR" -eq "2" ] \
|
|
&& [ "$FREETYPE_MINOR" -ge "0" -a "$FREETYPE_PATCH" -ge "9" ] \
|
|
|| [ "$FREETYPE_MINOR" -ge "1" ]; then
|
|
F=yes
|
|
FREETYPE2_INCDIR=$INCDIR/freetype2
|
|
[ "$VERBOSE" = "yes" ] && echo " Found $INC in $INCDIR"
|
|
break
|
|
fi
|
|
fi
|
|
done
|
|
if [ -z "$F" ]; then
|
|
XFT=no
|
|
[ "$VERBOSE" = "yes" ] && echo " Could not find $INC anywhere in $INCDIRS"
|
|
fi
|
|
fi
|
|
|
|
# check for fontconfig headers when using Xft2
|
|
if [ "$XFT" = "yes" ] && [ "$XFT2" = "yes" ]; then
|
|
INC="fontconfig/fontconfig.h"
|
|
XDIRS=`sed -n -e '/^QMAKE_INCDIR_X11[ ]*=/ { s/[^=]*=[ ]*//; s/-I/ /g; p; }' $XCONFIG`
|
|
LDIRS=`sed -n -e '/^QMAKE_INCDIR[ ]*=/ { s/[^=]*=[ ]*//; s/-I/ /g; p; }' $XCONFIG`
|
|
INCDIRS="$IN_INCDIRS $XDIRS $LDIRS /usr/include /include"
|
|
F=
|
|
for INCDIR in $INCDIRS; do
|
|
if [ -f $INCDIR/$INC ]; then
|
|
F=yes
|
|
[ "$VERBOSE" = "yes" ] && echo " Found $INC in $INCDIR"
|
|
break
|
|
fi
|
|
done
|
|
if [ -z "$F" ]; then
|
|
XFT=no
|
|
[ "$VERBOSE" = "yes" ] && echo " Could not find $INC anywhere in $INCDIRS"
|
|
fi
|
|
fi
|
|
|
|
# done
|
|
if [ "$XFT" != "yes" ]; then
|
|
[ "$VERBOSE" = "yes" ] && echo "Xft disabled."
|
|
exit 0
|
|
else
|
|
[ "$VERBOSE" = "yes" ] && echo "Xft enabled."
|
|
[ "$XFT2_HEADER" = "yes" ] && \
|
|
echo "xft2header" > $OUTDIR/config.tests/x11/xft.cfg
|
|
echo "$FREETYPE2_INCDIR" > $OUTDIR/config.tests/x11/xft.inc
|
|
echo "$LIBXFT" > $OUTDIR/config.tests/x11/xft.lib
|
|
exit 1
|
|
fi
|