Skip to content

Commit

Permalink
joystick: Fix up Linux joystick code to (mostly) compile on FreeBSD.
Browse files Browse the repository at this point in the history
  • Loading branch information
icculus committed Nov 24, 2020
1 parent 179bd66 commit 5c95774
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 26 deletions.
54 changes: 35 additions & 19 deletions configure
Expand Up @@ -768,7 +768,6 @@ infodir
docdir
oldincludedir
includedir
runstatedir
localstatedir
sharedstatedir
sysconfdir
Expand Down Expand Up @@ -978,7 +977,6 @@ datadir='${datarootdir}'
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
runstatedir='${localstatedir}/run'
includedir='${prefix}/include'
oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE}'
Expand Down Expand Up @@ -1231,15 +1229,6 @@ do
| -silent | --silent | --silen | --sile | --sil)
silent=yes ;;

-runstatedir | --runstatedir | --runstatedi | --runstated \
| --runstate | --runstat | --runsta | --runst | --runs \
| --run | --ru | --r)
ac_prev=runstatedir ;;
-runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
| --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
| --run=* | --ru=* | --r=*)
runstatedir=$ac_optarg ;;

-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
Expand Down Expand Up @@ -1377,7 +1366,7 @@ fi
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
libdir localedir mandir runstatedir
libdir localedir mandir
do
eval ac_val=\$$ac_var
# Remove trailing slashes.
Expand Down Expand Up @@ -1530,7 +1519,6 @@ Fine tuning of the installation directories:
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
--runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
Expand Down Expand Up @@ -22724,9 +22712,35 @@ $as_echo "#define SDL_VIDEO_VULKAN 1" >>confdefs.h

CheckInputEvents()
{
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Linux 2.4 unified input interface" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Linux 2.4 unified input interface" >&5
$as_echo_n "checking for Linux 2.4 unified input interface... " >&6; }
use_input_events=no
use_input_events=no

cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */

#include <dev/evdev/input.h>

int
main ()
{

#ifndef EVIOCGNAME
#error EVIOCGNAME() ioctl not available
#endif

;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :

use_input_events=yes

fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext

if test x$use_input_events = xno; then
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */

Expand All @@ -22750,14 +22764,16 @@ if ac_fn_c_try_compile "$LINENO"; then :

fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $use_input_events" >&5
fi

{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $use_input_events" >&5
$as_echo "$use_input_events" >&6; }
if test x$use_input_events = xyes; then
if test x$use_input_events = xyes; then

$as_echo "#define SDL_INPUT_LINUXEV 1" >>confdefs.h

SUMMARY_input="${SUMMARY_input} linuxev"
fi
SUMMARY_input="${SUMMARY_input} linuxev"
fi
}

CheckInputKD()
Expand Down
30 changes: 23 additions & 7 deletions configure.ac
Expand Up @@ -2603,8 +2603,22 @@ dnl See if we can use the new unified event interface in Linux 2.4
CheckInputEvents()
{
dnl Check for Linux 2.4 unified input event interface support
AC_MSG_CHECKING(for Linux 2.4 unified input interface)
use_input_events=no
AC_MSG_CHECKING(for Linux 2.4 unified input interface)
use_input_events=no

dnl FreeBSD puts this in /usr/include/dev/evdev/input.h ...
AC_TRY_COMPILE([
#include <dev/evdev/input.h>
],[
#ifndef EVIOCGNAME
#error EVIOCGNAME() ioctl not available
#endif
],[
use_input_events=yes
])

dnl And Linux of course puts it in linux/input.h ...
if test x$use_input_events = xno; then
AC_TRY_COMPILE([
#include <linux/input.h>
],[
Expand All @@ -2614,11 +2628,13 @@ CheckInputEvents()
],[
use_input_events=yes
])
AC_MSG_RESULT($use_input_events)
if test x$use_input_events = xyes; then
AC_DEFINE(SDL_INPUT_LINUXEV, 1, [ ])
SUMMARY_input="${SUMMARY_input} linuxev"
fi
fi

AC_MSG_RESULT($use_input_events)
if test x$use_input_events = xyes; then
AC_DEFINE(SDL_INPUT_LINUXEV, 1, [ ])
SUMMARY_input="${SUMMARY_input} linuxev"
fi
}

dnl See if we can use the kernel kd.h header
Expand Down
4 changes: 4 additions & 0 deletions src/joystick/linux/SDL_sysjoystick_c.h
Expand Up @@ -22,7 +22,11 @@
#ifndef SDL_sysjoystick_c_h_
#define SDL_sysjoystick_c_h_

#ifdef __linux__
#include <linux/input.h>
#else /* FreeBSD (and maybe others) */
#include <dev/evdev/input.h>
#endif

struct SDL_joylist_item;

Expand Down

0 comments on commit 5c95774

Please sign in to comment.