SDL.spec.in
author Sam Lantinga <slouken@libsdl.org>
Mon, 02 Jun 2003 14:50:22 +0000
changeset 632 85e104fe14c2
parent 385 daa944f00154
child 1008 5fb02068b648
permissions -rw-r--r--
Date: Sun, 1 Jun 2003 15:38:45 -0700 (PDT)
From: Jeff Brown <jabrown@caida.org>
Subject: [patch] SDL-1.2.5 + FreeBSD joystick axes, hat fixes

Hello again! When I sent in some SDL fixes last December, I found out
they'd already been fixed in the CVS version. This time, I checked the
repository before bugging you. =)

I'm using SDL-1.2.5 on a FreeBSD 4.6.2-RELEASE system, and in the course
of getting my multi-analog-axis USB controller (with a hat switch!)
working with d2x-sdl -- the SDL port of the Descent 2 engine -- I came
across a few problems:

1) The second analog stick is reported as a slider in one direction, and
"Rz" in the other. SDL was ignoring the Rz axis, so I added Rx/Ry/Rz to
the set of things SDL considers to be axes.

2) After the above change, the set of JOYAXE_* axes for my gamepad was
{0,1,3,7}; however, d2x-sdl expects the axes to be contiguously numbered
from 0, which seems like a pretty reasonable expectation, rather than
having to scan the entire space of axes that SDL may or may not have.
So, I added a table lookup which maps the JOYAXE_* axis numbers to 0,1,...
in the order they're detected by SDL_SYS_JoystickOpen(), when reporting
them to the application. I also added a function "usage_to_joyaxe()"
which maps the USB HUG_* usage values to JOYAXE_values, since the repeated
case statements testing for HUG_* were getting out of hand.

3) The BSD joystick driver had no hat support, so I added it. It looks
like our USB library can only support one hat switch per device, which
makes life easy.

The patch against SDL-1.2.5 which implements these changes is at:

http://www.caida.org/~jabrown/patches/sdl-1.2.5-bsdhat.diff

After applying, SDL's "testjoystick" reports all activity from my gamepad
correctly, and d2x works too (though it needed some other fixes).

Moving on...

There is also a problem with slightly different USBHID library interfaces
on different versions of FreeBSD. I wasn't going to mention this since the
FreeBSD port for SDL-1.2.5 (and not SDL itself) was doing the FreeBSD
version-specific patching, so I e-mailed the port maintainer with this
change. However, I see that you've incorporated the FreeBSD
version-checking stuff into the CVS version of SDL, so now it's relevant
for you too.

The problem is, the FreeBSD #if tests don't work right for FreeBSD
4.6.2-RELEASE. There may be other versions with this problem, but I've
only tested 4.6.2-R. The following patch against your latest CVS version
fixes this:

--- SDL_sysjoystick.c-1.16 Tue Apr 15 09:02:08 2003
+++ SDL_sysjoystick.c Sun Jun 1 15:10:28 2003
@@ -420,6 +420,8 @@
# else
len = hid_report_size(rd, repinfo[repind].kind, r->rid);
# endif
+# elif (__FreeBSD_version == 460002)
+ len = hid_report_size(rd, r->rid, repinfo[repind].kind);
# else
len = hid_report_size(rd, repinfo[repind].kind, &r->rid);
#endif


I hope this is all useful to you. I've been getting myself dizzy playing
Descent 2 with it, all morning!

-Jeff Brown


P.S. My USB controller is a Thrustmaster Firestorm Dual Analog 2. That's
probably irrelevant, but I threw it in for completeness.
slouken@0
     1
%define name @PACKAGE@
slouken@0
     2
%define version @VERSION@
slouken@0
     3
%define release 1
slouken@0
     4
slouken@0
     5
Summary: Simple DirectMedia Layer
slouken@0
     6
Name: %{name}
slouken@0
     7
Version: %{version}
slouken@0
     8
Release: %{release}
slouken@0
     9
Source0: %{name}-%{version}.tar.gz
slouken@0
    10
URL: http://www.libsdl.org/
slouken@0
    11
Copyright: LGPL
slouken@0
    12
Group: System Environment/Libraries
slouken@0
    13
BuildRoot: /var/tmp/%{name}-buildroot
slouken@0
    14
Prefix: %{_prefix}
slouken@328
    15
Provides: libSDL-1.1.so.0
slouken@0
    16
slouken@0
    17
%description
slouken@0
    18
This is the Simple DirectMedia Layer, a generic API that provides low
slouken@0
    19
level access to audio, keyboard, mouse, and display framebuffer across
slouken@0
    20
multiple platforms.
slouken@0
    21
slouken@0
    22
%package devel
slouken@0
    23
Summary: Libraries, includes and more to develop SDL applications.
slouken@0
    24
Group: Development/Libraries
slouken@0
    25
Requires: %{name}
slouken@0
    26
slouken@0
    27
%description devel
slouken@0
    28
This is the Simple DirectMedia Layer, a generic API that provides low
slouken@0
    29
level access to audio, keyboard, mouse, and display framebuffer across
slouken@0
    30
multiple platforms.
slouken@0
    31
slouken@0
    32
This is the libraries, include files and other resources you can use
slouken@0
    33
to develop SDL applications.
slouken@0
    34
slouken@0
    35
slouken@0
    36
%prep
slouken@0
    37
rm -rf ${RPM_BUILD_ROOT}
slouken@0
    38
slouken@0
    39
%setup -q 
slouken@0
    40
slouken@0
    41
%build
slouken@355
    42
CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{prefix} --disable-video-svga --disable-video-ggi --disable-video-aalib --disable-debug --enable-dlopen --enable-esd-shared --enable-arts-shared --disable-alsa
slouken@0
    43
make
slouken@0
    44
slouken@0
    45
%install
slouken@0
    46
rm -rf $RPM_BUILD_ROOT
slouken@0
    47
make install prefix=$RPM_BUILD_ROOT/%{prefix}
slouken@84
    48
ln -s libSDL-1.2.so.0 $RPM_BUILD_ROOT/%{prefix}/lib/libSDL-1.1.so.0
slouken@0
    49
slouken@0
    50
%clean
slouken@0
    51
rm -rf $RPM_BUILD_ROOT
slouken@0
    52
slouken@0
    53
%files
slouken@0
    54
%defattr(-,root,root)
slouken@0
    55
%doc README-SDL.txt COPYING CREDITS BUGS
slouken@0
    56
%{prefix}/lib/lib*.so.*
slouken@0
    57
slouken@0
    58
%files devel
slouken@0
    59
%defattr(-,root,root)
slouken@0
    60
%doc README README-SDL.txt COPYING CREDITS BUGS WhatsNew docs.html
slouken@0
    61
%doc docs/index.html docs/html
slouken@0
    62
%{prefix}/bin/*-config
slouken@0
    63
%{prefix}/lib/lib*.a
slouken@385
    64
%{prefix}/lib/lib*.la
slouken@0
    65
%{prefix}/lib/lib*.so
slouken@0
    66
%{prefix}/include/SDL/
slouken@0
    67
%{prefix}/man/man3/*
slouken@0
    68
%{prefix}/share/aclocal/*
slouken@0
    69
slouken@0
    70
%changelog
slouken@0
    71
* Wed Jan 19 2000 Sam Lantinga <slouken@libsdl.org>
slouken@0
    72
- Re-integrated spec file into SDL distribution
slouken@0
    73
- 'name' and 'version' come from configure 
slouken@0
    74
- Some of the documentation is devel specific
slouken@0
    75
- Removed SMP support from %build - it doesn't work with libtool anyway
slouken@0
    76
slouken@0
    77
* Tue Jan 18 2000 Hakan Tandogan <hakan@iconsult.com>
slouken@0
    78
- Hacked Mandrake sdl spec to build 1.1
slouken@0
    79
slouken@0
    80
* Sun Dec 19 1999 John Buswell <johnb@mandrakesoft.com>
slouken@0
    81
- Build Release
slouken@0
    82
slouken@0
    83
* Sat Dec 18 1999 John Buswell <johnb@mandrakesoft.com>
slouken@0
    84
- Add symlink for libSDL-1.0.so.0 required by sdlbomber
slouken@0
    85
- Added docs
slouken@0
    86
slouken@0
    87
* Thu Dec 09 1999 Lenny Cartier <lenny@mandrakesoft.com>
slouken@0
    88
- v 1.0.0
slouken@0
    89
slouken@0
    90
* Mon Nov  1 1999 Chmouel Boudjnah <chmouel@mandrakesoft.com>
slouken@0
    91
- First spec file for Mandrake distribution.
slouken@0
    92
slouken@0
    93
# end of file