kopia lustrzana https://github.com/FreeSpacenav/spacenavd
229 wiersze
5.3 KiB
Bash
Executable File
229 wiersze
5.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_kver() {
|
|
req_major=`echo $1 | awk -F . '{ print $1 }'`
|
|
req_minor=`echo $1 | awk -F . '{ print $2 }'`
|
|
req_rev=`echo $1 | awk -F . '{ print $3 }'`
|
|
|
|
linux_rev=`uname -r | sed 's/-.*//'`
|
|
kver_major=`echo $linux_rev | awk -F . '{ print $1 }'`
|
|
kver_minor=`echo $linux_rev | awk -F . '{ print $2 }'`
|
|
kver_rev=`echo $linux_rev | awk -F . '{ print $3 }'`
|
|
|
|
if [ "$kver_major" -lt "$req_major" ]; then
|
|
return 1
|
|
fi
|
|
if [ "$kver_major" = "$req_major" ]; then
|
|
if [ "$kver_minor" -lt "$req_minor" ]; then
|
|
return 1
|
|
fi
|
|
|
|
if [ "$kver_minor" = "$req_minor" -a "$kver_rev" -lt "$req_rev" ]; then
|
|
return 1
|
|
fi
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
check_header() {
|
|
printf "Looking for header: $1 ... " >&2
|
|
echo "#include <$1>" >.chkhdr.c
|
|
if cpp -I/usr/local/include .chkhdr.c >/dev/null 2>&1; then
|
|
echo found >&2
|
|
echo "#define HAVE_`basename $1 | tr '[:lower:]' '[:upper:]' | sed 's/\./_/g'`"
|
|
else
|
|
echo not found >&2
|
|
fi
|
|
rm -f .chkhdr.c
|
|
}
|
|
|
|
|
|
PREFIX=/usr/local
|
|
OPT=yes
|
|
DBG=yes
|
|
X11=yes
|
|
HOTPLUG=yes
|
|
XINPUT=yes
|
|
VER=`git describe --tags 2>/dev/null`
|
|
CFGDIR=/etc
|
|
|
|
if [ -z "$VER" ]; then
|
|
VER=`git rev-parse --short HEAD`
|
|
if [ -z "$VER" ]; then
|
|
VER=v`pwd | grep 'spacenavd-[0-9]\+\.' | sed 's/.*spacenavd-\(\([0-9]\+\.\)\+[0-9]\+\).*$/\1/'`
|
|
if [ $VER = v ]; then
|
|
VER='<unknown version>'
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
echo "configuring spacenavd - $VER"
|
|
|
|
sys=`uname -s`
|
|
if [ "$sys" = Linux ]; then
|
|
# NETLINK_KOBJECT_UEVENT used for hotplug detection requires 2.6.10
|
|
if test_kver 2.6.10; then
|
|
HOTPLUG=yes
|
|
else
|
|
HOTPLUG=no
|
|
fi
|
|
elif [ "$sys" = Darwin ]; then
|
|
LDFLAGS='-framework CoreFoundation -framework IOKit'
|
|
else
|
|
# TODO implement hotplug for other systems then switch this on
|
|
HOTPLUG=no
|
|
fi
|
|
|
|
srcdir="`dirname "$0"`"
|
|
|
|
# process arguments
|
|
for arg; do
|
|
case "$arg" in
|
|
--prefix=*)
|
|
value=`echo $arg | sed 's/--prefix=//'`
|
|
PREFIX=${value:-$prefix}
|
|
;;
|
|
|
|
--cfgdir=*)
|
|
value=`echo $arg | sed 's/--cfgdir=//'`
|
|
CFGDIR=${value:-$cfgdir}
|
|
;;
|
|
|
|
--enable-opt)
|
|
OPT=yes;;
|
|
--disable-opt)
|
|
OPT=no;;
|
|
|
|
--enable-debug)
|
|
DBG=yes;;
|
|
--disable-debug)
|
|
DBG=no;;
|
|
|
|
--enable-x11)
|
|
X11=yes;;
|
|
--disable-x11)
|
|
X11=no;;
|
|
|
|
--enable-hotplug)
|
|
HOTPLUG=yes;;
|
|
--disable-hotplug)
|
|
HOTPLUG=no;;
|
|
|
|
--help)
|
|
echo 'usage: ./configure [options]'
|
|
echo 'options:'
|
|
echo ' --prefix=<path>: installation path (default: /usr/local)'
|
|
echo ' --enable-x11: enable X11 communication mode (default)'
|
|
echo ' --disable-x11: disable X11 communication mode'
|
|
echo ' --enable-hotplug: enable hotplug using NETLINK_KOBJECT_UEVENT (default)'
|
|
echo ' --disable-hotplug: disable hotplug, fallback to polling for the device'
|
|
echo ' --enable-opt: enable speed optimizations (default)'
|
|
echo ' --disable-opt: disable speed optimizations'
|
|
echo ' --enable-debug: include debugging symbols (default)'
|
|
echo ' --disable-debug: do not include debugging symbols'
|
|
echo 'all invalid options are silently ignored'
|
|
exit 0
|
|
;;
|
|
esac
|
|
done
|
|
|
|
echo " prefix: $PREFIX"
|
|
echo " config dir: $CFGDIR"
|
|
echo " optimize for speed: $OPT"
|
|
echo " include debugging symbols: $DBG"
|
|
echo " x11 communication method: $X11"
|
|
echo " use hotplug: $HOTPLUG"
|
|
echo ""
|
|
|
|
|
|
HAVE_ALLOCA_H=`check_header alloca.h`
|
|
HAVE_MALLOC_H=`check_header malloc.h`
|
|
HAVE_STDINT_H=`check_header stdint.h`
|
|
HAVE_INTTYPES_H=`check_header inttypes.h`
|
|
|
|
if [ "$X11" = "no" ]; then
|
|
echo "WARNING: you have disabled the X11 interface, the resulting daemon \
|
|
won't be compatible with applications written for the proprietary 3Dconnexion \
|
|
daemon (3dxserv)!"
|
|
echo
|
|
else
|
|
HAVE_XINPUT2_H=`check_header X11/extensions/XInput2.h`
|
|
HAVE_XTEST_H=`check_header X11/extensions/XTest.h`
|
|
|
|
if [ -z "$HAVE_XTEST_H" ]; then
|
|
echo "WARNING: building without XTEST support, makes keyboard emulation \
|
|
less reliable (fallback to XSendEvent)."
|
|
fi
|
|
fi
|
|
|
|
# create Makefile
|
|
echo 'creating Makefile ...'
|
|
echo "PREFIX = $PREFIX" >Makefile
|
|
echo "srcdir = $srcdir" >>Makefile
|
|
echo "ver = $VER" >>Makefile
|
|
|
|
if [ "$DBG" = 'yes' ]; then
|
|
echo 'dbg = -g' >>Makefile
|
|
fi
|
|
|
|
if [ "$OPT" = 'yes' ]; then
|
|
echo 'opt = -O2' >>Makefile
|
|
fi
|
|
|
|
if [ "$X11" = 'yes' ]; then
|
|
echo 'xlib = -L/usr/X11/lib' >>Makefile
|
|
if [ -n "$HAVE_XINPUT2_H" ]; then
|
|
echo 'xlib += -lXi' >>Makefile
|
|
fi
|
|
if [ -n "$HAVE_XTEST_H" ]; then
|
|
echo xlib += -lXtst >>Makefile
|
|
fi
|
|
echo 'xlib += -lX11 -lXext' >>Makefile
|
|
fi
|
|
|
|
if [ -n "$CFLAGS" ]; then
|
|
echo "add_cflags = $CFLAGS" >>Makefile
|
|
fi
|
|
if [ -n "$LDFLAGS" ]; then
|
|
echo "add_ldflags = $LDFLAGS" >>Makefile
|
|
fi
|
|
|
|
cat "$srcdir/Makefile.in" >>Makefile
|
|
|
|
|
|
# create config.h
|
|
cfgheader=$srcdir/src/config.h
|
|
|
|
echo 'creating config.h'
|
|
echo '#ifndef CONFIG_H_' >$cfgheader
|
|
echo '#define CONFIG_H_' >>$cfgheader
|
|
echo >>$cfgheader
|
|
if [ "$X11" = yes ]; then
|
|
echo '#define USE_X11' >>$cfgheader
|
|
echo >>$cfgheader
|
|
fi
|
|
if [ "$HOTPLUG" = yes ]; then
|
|
echo '#define USE_NETLINK' >>$cfgheader
|
|
echo >>$cfgheader
|
|
fi
|
|
echo '#define VERSION "'$VER'"' >>$cfgheader
|
|
echo >>$cfgheader
|
|
|
|
# check for alloca.h
|
|
[ -n "$HAVE_ALLOCA_H" ] && echo $HAVE_ALLOCA_H >>$cfgheader
|
|
[ -n "$HAVE_MALLOC_H" ] && echo $HAVE_MALLOC_H >>$cfgheader
|
|
[ -n "$HAVE_STDINT_H" ] && echo $HAVE_STDINT_H >>$cfgheader
|
|
[ -n "$HAVE_INTTYPES_H" ] && echo $HAVE_INTTYPES_H >>$cfgheader
|
|
[ -n "$HAVE_XINPUT2_H" ] && echo $HAVE_XINPUT2_H >>$cfgheader
|
|
[ -n "$HAVE_XTEST_H" ] && echo $HAVE_XTEST_H >>$cfgheader
|
|
echo >>$cfgheader
|
|
|
|
echo "#define CFGDIR \"$CFGDIR\"" >>$cfgheader
|
|
echo >>$cfgheader
|
|
|
|
echo '#endif /* CONFIG_H_ */' >>$cfgheader
|
|
|
|
echo ''
|
|
echo 'Done. You can now type make (or gmake) to compile spacenavd.'
|
|
echo ''
|