Subject: pkg/17374: let SDL support USB gamepad
To: None <gnats-bugs@gnats.netbsd.org>
From: None <rxg@ms25.url.com.tw>
List: netbsd-bugs
Date: 06/24/2002 18:48:56
>Number:         17374
>Category:       pkg
>Synopsis:       let SDL support USB gamepad
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    pkg-manager
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Mon Jun 24 03:56:00 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Rui-Xiang Guo
>Release:        NetBSD 1.6_BETA1
>Organization:
	
>Environment:
	
	
System: NetBSD hive.u2online 1.6_BETA1 NetBSD 1.6_BETA1 (HIVE) #0: Sun Jun 9 09:10:00 CST 2002 rxg@hive.u2online:/usr/src/sys/arch/i386/compile/HIVE i386
Architecture: i386
Machine: i386
>Description:
	I want to play games under zsnes with my USB gamepad. :)
>How-To-Repeat:
	1. unpack this tarball under devel/SDL
begin 644 files.tar.gz
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
#4```
`
end

	2. fix the Makefile
--- /usr/pkgsrc/devel/SDL/Makefile      Sun Jun 16 19:58:28 2002
+++ Makefile    Sat Jun 22 19:00:14 2002
@@ -48,6 +48,8 @@
 
 pre-patch:
        cd ${WRKSRC} && ${MKDIR} src/audio/netbsd
+       cd ${WRKSRC} && ${MKDIR} src/joystick/netbsd
+       ${CP} ${FILESDIR}/* ${WRKSRC}/src/joystick/netbsd
 
 pre-configure:
        cd ${WRKSRC} && ${LOCALBASE}/bin/autoreconf --force --foreign

	3. replace patch-aj
$NetBSD$

--- configure.in.orig   Thu Nov  8 15:28:00 2001
+++ configure.in
@@ -374,10 +374,7 @@
                   , enable_nas=yes)
     if test x$enable_audio = xyes -a x$enable_nas = xyes; then
         AC_MSG_CHECKING(for NAS audio support)
-        have_nas=no
-        if test -r /usr/X11R6/include/audio/audiolib.h; then
-            have_nas=yes
-        fi
+        have_nas=yes
         AC_MSG_RESULT($have_nas)
         if test x$have_nas = xyes; then
             CFLAGS="$CFLAGS -DNAS_SUPPORT"
@@ -429,7 +426,7 @@
                   NASMFLAGS="-f win32"
                   ;;
               *)
-                  NASMFLAGS="-f elf"
+                  test -n "$NASMFLAGS" || NASMFLAGS="-f elf"
                   ;;
             esac
             AC_SUBST(NASMFLAGS)
@@ -999,8 +996,8 @@
             pthread_lib="-pthread"
             ;;
         *-*-netbsd*)
-            pthread_cflags="-I/usr/pkg/include -D_REENTRANT"
-            pthread_lib="-L/usr/pkg/lib -lpthread -lsem"
+            pthread_cflags="-D_REENTRANT"
+            pthread_lib="-lpthread"
             ;;
         *-*-openbsd*)
             pthread_cflags="-D_REENTRANT"
@@ -1465,11 +1462,13 @@
         CheckDummyVideo
         CheckDiskAudio
         CheckNASM
+        CheckOPENBSDAUDIO
         CheckOSS
         CheckARTSC
         CheckESD
         CheckNAS
         CheckX11
+        CheckDGA
         CheckAAlib
         CheckOpenGL
         CheckPTHREAD
@@ -1482,10 +1481,10 @@
             AUDIO_DRIVERS="$AUDIO_DRIVERS sun/libaudio_sun.la"
         fi
         # Set up files for the joystick library
-        # (No joystick support yet)
         if test x$enable_joystick = xyes; then
-            JOYSTICK_SUBDIRS="$JOYSTICK_SUBDIRS dummy"
-            JOYSTICK_DRIVERS="$JOYSTICK_DRIVERS dummy/libjoystick_dummy.la"
+            JOYSTICK_SUBDIRS="$JOYSTICK_SUBDIRS netbsd"
+            JOYSTICK_DRIVERS="$JOYSTICK_DRIVERS netbsd/libjoystick_netbsd.la"
+            SYSTEM_LIBS="$SYSTEM_LIBS -lusbhid"
         fi
         # Set up files for the cdrom library
         if test x$enable_cdrom = xyes; then
@@ -1770,7 +1769,11 @@
             COPY_ARCH_SRC(src/thread, linux, SDL_systhread_c.h)
             COPY_ARCH_SRC(src/thread, linux, SDL_sysmutex.c)
             COPY_ARCH_SRC(src/thread, linux, SDL_sysmutex_c.h)
-            COPY_ARCH_SRC(src/thread, linux, SDL_syssem.c)
+           if test x$use_pthreads = xyes -a x$enable_pthread_sem != xyes; then
+               COPY_ARCH_SRC(src/thread, generic, SDL_syssem.c)
+           else
+               COPY_ARCH_SRC(src/thread, linux, SDL_syssem.c)
+           fi
             COPY_ARCH_SRC(src/thread, generic, SDL_syssem_c.h)
             COPY_ARCH_SRC(src/thread, linux, SDL_syscond.c)
             COPY_ARCH_SRC(src/thread, generic, SDL_syscond_c.h)
@@ -2159,6 +2162,10 @@
   SDL_RLD_FLAGS="-R\${exec_prefix}/lib"
 fi
 
+if test $ARCH = netbsd; then
+  SDL_RLD_FLAGS="-Wl,-rpath,\${exec_prefix}/lib -Wl,-rpath,${X11BASE}/lib"
+fi
+
 if test $ARCH = openbsd; then
   SDL_RLD_FLAGS="-Wl,-rpath,\${exec_prefix}/lib $SYSTEM_LIBS"
 fi
@@ -2281,6 +2288,7 @@
 src/joystick/dummy/Makefile
 src/joystick/linux/Makefile
 src/joystick/macos/Makefile
+src/joystick/netbsd/Makefile
 src/joystick/win32/Makefile
 src/cdrom/Makefile
 src/cdrom/aix/Makefile

	4. type 'make makepatchsum && make install'
	5. test it with emulators/zsnes or 'testjoystick' under test/ in SDL
[/home/rxg]% zsnes

ZSNES v1.337   beta (c)1997-2001 ZSNES Team (zsKnight - _Demo_)
Linux version, please report crashes to zsnes-devel@lists.sourceforge.net.
Compiled under NASM, GCC

  Programmers     : zsKnight, _Demo_
  Assistant Coder : Pharos

ZSNES comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions;
check license.txt.

Use ZSNES -? for command line definitions

MMX support enabled. FOUND!

Joystick 0 (8 Buttons): /dev/uhid0

>Fix:
	
>Release-Note:
>Audit-Trail:
>Unformatted: