summaryrefslogtreecommitdiff
path: root/emulators/xmame
diff options
context:
space:
mode:
authorkristerw <kristerw>2002-01-06 22:09:31 +0000
committerkristerw <kristerw>2002-01-06 22:09:31 +0000
commit762536e93f27a0755599b74e9e6fa43ce9d51cbb (patch)
treeba76464607ccb368d430f7d1e4d6611c02e2a08d /emulators/xmame
parent938ff07af7a539af757fb7ded83694a82475e4bd (diff)
downloadpkgsrc-762536e93f27a0755599b74e9e6fa43ce9d51cbb.tar.gz
Make xmame compile for new systems that have libusbhid.so instead of libusb.so.
Noted by Rui-Xiang Guo in a mail to tech-pkg.
Diffstat (limited to 'emulators/xmame')
-rw-r--r--emulators/xmame/Makefile4
-rw-r--r--emulators/xmame/distinfo4
-rw-r--r--emulators/xmame/patches/patch-ab20
-rw-r--r--emulators/xmame/patches/patch-ac60
4 files changed, 85 insertions, 3 deletions
diff --git a/emulators/xmame/Makefile b/emulators/xmame/Makefile
index 9b91d1e7b38..f23e650f82b 100644
--- a/emulators/xmame/Makefile
+++ b/emulators/xmame/Makefile
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.63 2002/01/06 09:36:45 kristerw Exp $
+# $NetBSD: Makefile,v 1.64 2002/01/06 22:09:31 kristerw Exp $
#
DISTNAME= xmame-0.57.1
@@ -97,7 +97,7 @@ MAKE_FLAGS+= X11_DGA=1
MAKE_FLAGS+= JOY_I386=1
.endif
.if ${OPSYS} == "NetBSD"
-. if exists(/usr/lib/libusb.a)
+. if exists(/usr/lib/libusb.a) || exists(/usr/lib/libusbhid.a)
MAKE_FLAGS+= JOY_USB=1
. endif
.endif
diff --git a/emulators/xmame/distinfo b/emulators/xmame/distinfo
index 9eba9b29c61..b8f3af27c0b 100644
--- a/emulators/xmame/distinfo
+++ b/emulators/xmame/distinfo
@@ -1,6 +1,8 @@
-$NetBSD: distinfo,v 1.16 2002/01/06 09:36:45 kristerw Exp $
+$NetBSD: distinfo,v 1.17 2002/01/06 22:09:31 kristerw Exp $
SHA1 (xmame-0.57.1.tar.bz2) = dde6921edd3d107409743398814a87d3a7f9dd74
Size (xmame-0.57.1.tar.bz2) = 5350283 bytes
SHA1 (patch-aa) = be131167296c50e3aea55da46288dfc16bf3ad8e
+SHA1 (patch-ab) = b6bb3acba452b91c8b9dd946531e9195d5d196fb
+SHA1 (patch-ac) = 08dda8c365c9891e1f54ef622325015a38cb9758
SHA1 (patch-ae) = ccc133c1a597a4f9f4eee3d189fc917c60d2e958
diff --git a/emulators/xmame/patches/patch-ab b/emulators/xmame/patches/patch-ab
new file mode 100644
index 00000000000..ac8c972f30f
--- /dev/null
+++ b/emulators/xmame/patches/patch-ab
@@ -0,0 +1,20 @@
+$NetBSD: patch-ab,v 1.13 2002/01/06 22:09:32 kristerw Exp $
+--- src/unix/unix.mak.orig Sun Jan 6 03:44:58 2002
++++ src/unix/unix.mak Sun Jan 6 19:01:36 2002
+@@ -214,7 +214,16 @@
+ endif
+ ifdef JOY_USB
+ CONFIG += -DUSB_JOYSTICK
++ifeq ($(ARCH), netbsd)
++ifeq ($(shell test -f /usr/include/usbhid.h && echo have_usbhid), have_usbhid)
++CONFIG += -DHAVE_USBHID_H
++MY_LIBS += -lusbhid
++else
+ MY_LIBS += -lusb
++endif
++else
++MY_LIBS += -lusb
++endif
+ endif
+
+ ifdef EFENCE
diff --git a/emulators/xmame/patches/patch-ac b/emulators/xmame/patches/patch-ac
new file mode 100644
index 00000000000..508c48eece1
--- /dev/null
+++ b/emulators/xmame/patches/patch-ac
@@ -0,0 +1,60 @@
+$NetBSD: patch-ac,v 1.6 2002/01/06 22:09:32 kristerw Exp $
+--- src/unix/joystick-drivers/joy_usb.c.orig Wed Jan 2 03:45:55 2002
++++ src/unix/joystick-drivers/joy_usb.c Sun Jan 6 22:17:55 2002
+@@ -21,7 +21,11 @@
+ #endif
+
+ #if defined(__ARCH_netbsd)
++#ifdef HAVE_USBHID_H
++#include <usbhid.h>
++#else
+ #include <usb.h>
++#endif
+ #elif defined(__ARCH_freebsd)
+ #include <libusb.h>
+ #endif
+@@ -69,7 +73,7 @@
+
+ static int joy_initialize_hid(int i)
+ {
+- int size, is_joystick, report_id;
++ int size, is_joystick, report_id = 0;
+ struct hid_data *d;
+ struct hid_item h;
+ report_desc_t rd;
+@@ -82,7 +86,19 @@
+
+ priv_joy_data[i].hids = NULL;
+
++#ifdef HAVE_USBHID_H
++ if (ioctl(joy_data[i].fd, USB_GET_REPORT_ID, &report_id) < 0)
++ {
++ fprintf(stderr_file, "error: /dev/uhid%d: %s", i, strerror(errno));
++ return FALSE;
++ }
++
++ size = hid_report_size(rd, hid_input, report_id);
++ priv_joy_data[i].offset = 0;
++#else
+ size = hid_report_size(rd, hid_input, &report_id);
++ priv_joy_data[i].offset = (report_id != 0);
++#endif
+ if ((priv_joy_data[i].data_buf = malloc(size)) == NULL)
+ {
+ fprintf(stderr_file, "error: couldn't malloc %d bytes\n", size);
+@@ -90,10 +106,14 @@
+ return FALSE;
+ }
+ priv_joy_data[i].dlen = size;
+- priv_joy_data[i].offset = (report_id != 0);
+
+ is_joystick = 0;
++#ifdef HAVE_USBHID_H
++ for (d = hid_start_parse(rd, 1 << hid_input, report_id);
++ hid_get_item(d, &h); )
++#else
+ for (d = hid_start_parse(rd, 1 << hid_input); hid_get_item(d, &h); )
++#endif
+ {
+ int axis, usage, page, interesting_hid;
+