From 112990f26e0c91637443f0695e3891487be70c2d Mon Sep 17 00:00:00 2001 From: ryoon Date: Sun, 6 Jan 2013 00:59:46 +0000 Subject: Fix build on OpenBSD/amd64 5.2. The patches are taken from OpenBSD ports repository. * Disable joystick on OpenBSD/!i386 * Use sndio on OpenBSD --- games/plib/distinfo | 10 +-- games/plib/patches/patch-aa | 30 +++++++-- games/plib/patches/patch-ab | 145 +++++++++++++++++++++++++++++++++++++++++++- games/plib/patches/patch-ad | 39 +++++++++++- games/plib/patches/patch-ae | 33 +++++++++- 5 files changed, 237 insertions(+), 20 deletions(-) (limited to 'games') diff --git a/games/plib/distinfo b/games/plib/distinfo index fb30e2cac97..02682cdc404 100644 --- a/games/plib/distinfo +++ b/games/plib/distinfo @@ -1,11 +1,11 @@ -$NetBSD: distinfo,v 1.12 2011/12/22 18:21:38 drochner Exp $ +$NetBSD: distinfo,v 1.13 2013/01/06 00:59:46 ryoon Exp $ SHA1 (plib-1.8.5.tar.gz) = c2cf7e3e1e58f7b63dae4bb21e4fa82c3e4d4cfc RMD160 (plib-1.8.5.tar.gz) = 55019bf3758ec2542804d8e3994f4bed5a188e60 Size (plib-1.8.5.tar.gz) = 779133 bytes -SHA1 (patch-aa) = 35cd38d57f15144d659a19458a2b1c00983fb4b2 -SHA1 (patch-ab) = 3976dcf78e8ba44d55d08e67ddf3fa7f23def91e -SHA1 (patch-ad) = 1ec59b079a662bfc9b5ea5fa03686292ac05659f -SHA1 (patch-ae) = ae69e86642c53ef32619d6411809f80ab973b208 +SHA1 (patch-aa) = 6a9e3badb63de5b9b100805fa7151ce5db8ced69 +SHA1 (patch-ab) = 1bb0950b08427f8bcef84ee2da1cfd231ca60385 +SHA1 (patch-ad) = bc79c088939d7dffdd2b63610c3cf9d494a92699 +SHA1 (patch-ae) = fe166e1b3b5d150d3d83bad49e2576d9ebaa0fb7 SHA1 (patch-af) = ea774a54a3cff4d43abae164bbcae745d4642aea SHA1 (patch-ag) = d715adee05f8e6973a5883f74573cc39bfd8d72e diff --git a/games/plib/patches/patch-aa b/games/plib/patches/patch-aa index 5aa747d9154..a58fef62565 100644 --- a/games/plib/patches/patch-aa +++ b/games/plib/patches/patch-aa @@ -1,7 +1,16 @@ -$NetBSD: patch-aa,v 1.7 2008/03/14 14:38:46 drochner Exp $ +$NetBSD: patch-aa,v 1.8 2013/01/06 00:59:47 ryoon Exp $ ---- src/sl/slPortability.h.orig 2008-03-11 03:06:24.000000000 +0100 +--- src/sl/slPortability.h.orig Tue Mar 11 02:06:24 2008 +++ src/sl/slPortability.h +@@ -51,7 +51,7 @@ + #include + #include + +-#if (defined(UL_LINUX) || defined(UL_BSD)) && !defined(__NetBSD__) ++#if (defined(UL_LINUX) || defined(UL_BSD)) && !defined(__NetBSD__) && !defined(__OpenBSD__) + #define SL_USING_OSS_AUDIO 1 + #endif + @@ -59,7 +59,7 @@ # if defined(UL_LINUX) # include @@ -11,12 +20,21 @@ $NetBSD: patch-aa,v 1.7 2008/03/14 14:38:46 drochner Exp $ # include # else /* -@@ -75,7 +75,7 @@ +@@ -75,9 +75,14 @@ #endif #ifdef UL_BSD -#ifndef __FreeBSD__ -+#if !defined(__FreeBSD__) && !defined(__DragonFly__) - # include - #endif +-# include +-#endif ++# if defined(__OpenBSD__) ++# define SL_USING_SNDIO ++# include ++# else ++# if !defined(__FreeBSD__) || !defined(__DragonFly__) ++# include ++# endif ++# endif #endif + + /* Tom */ diff --git a/games/plib/patches/patch-ab b/games/plib/patches/patch-ab index 0f3bb7db003..91a30cef7a8 100644 --- a/games/plib/patches/patch-ab +++ b/games/plib/patches/patch-ab @@ -1,13 +1,152 @@ -$NetBSD: patch-ab,v 1.7 2007/09/16 09:25:03 joerg Exp $ +$NetBSD: patch-ab,v 1.8 2013/01/06 00:59:47 ryoon Exp $ ---- src/sl/slDSP.cxx.orig 2007-09-16 08:55:07.000000000 +0000 +--- src/sl/slDSP.cxx.orig Tue Mar 11 02:06:24 2008 +++ src/sl/slDSP.cxx @@ -413,7 +413,7 @@ void slDSP::stop () /* NetBSD/OpenBSD 2.3 this should be very close to SUN Audio */ /* ------------------------------------------------------------ */ -#elif (defined(UL_BSD) && !defined(__FreeBSD__)) || defined(UL_SOLARIS) -+#elif (defined(UL_BSD) && !defined(__FreeBSD__) &&!defined(__DragonFly__)) || defined(UL_SOLARIS) ++#elif (defined(UL_BSD) && !defined(SL_USING_SNDIO) && !defined(__FreeBSD__) && !defined(__DragonFly__)) || defined(UL_SOLARIS) void slDSP::open ( const char *device, int _rate, int _stereo, int _bps ) { +@@ -1082,4 +1082,138 @@ float slDSP::secondsUsed () + + #endif + ++#if defined(SL_USING_SNDIO) + ++#include ++ ++static long long realpos, playpos; ++ ++void ++movecb(void *v, int delta) ++{ ++ realpos += delta; ++} ++ ++void ++slDSP::open(const char *device, int _rate, int _stereo, int _bps ) ++{ ++ error = SL_FALSE; ++ ++ if (!strncmp(device, "default", FILENAME_MAX)) ++ hdl = sio_open(NULL, SIO_PLAY, 0); ++ else ++ hdl = sio_open(device, SIO_PLAY, 0); ++ if (hdl == NULL) { ++ error = SL_TRUE; ++ fprintf(stderr, "slDSP: open\n"); ++ return; ++ } ++ ++ sio_initpar(&par); ++ par.pchan = _stereo ? 2 : 1; ++ par.bits = _bps; ++ par.rate = _rate; ++ par.appbufsz = 4096; ++ ++ realpos = playpos = 0; ++ sio_onmove(hdl, movecb, NULL); ++ ++ if (!sio_setpar(hdl, &par) || !sio_getpar(hdl, &par) || ++ !sio_start(hdl)) { ++ fprintf(stderr, "slDSP: sndio params\n"); ++ error = SL_TRUE; ++ return; ++ } ++ ++ bps = par.bits; ++ rate = par.rate; ++ stereo = par.pchan == 2 ? SL_TRUE : SL_FALSE; ++} ++ ++void ++slDSP::close() ++{ ++ if (hdl != NULL) ++ sio_close(hdl); ++ hdl = NULL; ++} ++ ++int ++slDSP::getDriverBufferSize() ++{ ++ if (error) ++ return 0; ++ ++ return par.round * par.bps * par.pchan; ++} ++ ++void ++slDSP::getBufferInfo() ++{ ++ struct pollfd pfd; ++ nfds_t nfd; ++ ++ if (error) ++ return; ++ ++ /* updates counters */ ++ nfd = sio_pollfd(hdl, &pfd, POLLOUT); ++ poll(&pfd, nfd, 0); ++ sio_revents(hdl, &pfd); ++} ++ ++void ++slDSP::write(void *buffer, size_t length) ++{ ++ int ret, todo, pos; ++ ++ if (error || (int)length <= 0) ++ return; ++ ++ pos = 0; ++ todo = length; ++ while (todo > 0) { ++ ret = sio_write(hdl, (char *)buffer + pos, todo); ++ pos += ret; ++ todo -= ret; ++ } ++ playpos += length / par.bps / par.pchan; ++} ++ ++float ++slDSP::secondsRemaining() ++{ ++ if (error) ++ return 0.0f; ++ ++ getBufferInfo(); ++ ++ /* wtf? tuxkart won't play sounds if less ??? */ ++ return 0.1f; ++ return((float)(par.appbufsz - (playpos - realpos)) / par.rate); ++} ++ ++float ++slDSP::secondsUsed() ++{ ++ if (error) ++ return 0.0f ; ++ ++ getBufferInfo(); ++ ++ if (realpos > playpos) ++ return 0.0f; ++ ++ return((float)(playpos - realpos) / par.rate); ++} ++ ++void ++slDSP::sync() ++{ ++} ++ ++void slDSP::stop() ++{ ++} ++ ++#endif diff --git a/games/plib/patches/patch-ad b/games/plib/patches/patch-ad index 8c6eec5d62c..932a38512a6 100644 --- a/games/plib/patches/patch-ad +++ b/games/plib/patches/patch-ad @@ -1,8 +1,14 @@ -$NetBSD: patch-ad,v 1.6 2007/07/12 19:48:42 drochner Exp $ +$NetBSD: patch-ad,v 1.7 2013/01/06 00:59:47 ryoon Exp $ ---- src/js/jsBSD.cxx.orig 2007-03-22 23:35:44.000000000 +0100 +--- src/js/jsBSD.cxx.orig Tue Mar 11 02:06:21 2008 +++ src/js/jsBSD.cxx -@@ -52,11 +52,8 @@ +@@ -49,16 +49,13 @@ + #include + #if defined(__FreeBSD__) + # include +-#else ++#elif (defined(__OpenBSD__) && defined(__i386__)) || defined(__NetBSD__) || defined(__DragonFly__) + # include // For analog joysticks #endif #ifdef HAVE_USB_JS #if defined(__NetBSD__) @@ -15,3 +21,30 @@ $NetBSD: patch-ad,v 1.6 2007/07/12 19:48:42 drochner Exp $ #elif defined(__FreeBSD__) extern "C" { # if __FreeBSD_version < 500000 +@@ -85,7 +82,9 @@ struct os_specific_s { + int fd; + int is_analog; + // The following structure members are specific to analog joysticks ++#if (defined(__OpenBSD__) && defined(__i386__)) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__DragonFly__) + struct joystick ajs; ++#endif + #ifdef HAVE_USB_JS + // The following structure members are specific to USB joysticks + struct hid_item *hids; +@@ -437,7 +436,7 @@ void jsJoystick::rawRead ( int *buttons, float *axes ) + + return ; + } +- ++#if (defined(__OpenBSD__) && defined(__i386__)) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__DragonFly__) + if ( os->is_analog ) + { + int status = ::read ( os->fd, &os->ajs, sizeof(os->ajs) ); +@@ -462,6 +461,7 @@ void jsJoystick::rawRead ( int *buttons, float *axes ) + + return; + } ++#endif + + #ifdef HAVE_USB_JS + while ((len = ::read(os->fd, os->hid_data_buf, os->hid_dlen)) == os->hid_dlen) diff --git a/games/plib/patches/patch-ae b/games/plib/patches/patch-ae index 642b4a91424..04e834055d8 100644 --- a/games/plib/patches/patch-ae +++ b/games/plib/patches/patch-ae @@ -1,8 +1,8 @@ -$NetBSD: patch-ae,v 1.3 2007/07/12 19:48:42 drochner Exp $ +$NetBSD: patch-ae,v 1.4 2013/01/06 00:59:47 ryoon Exp $ ---- src/sl/sl.h.orig 2007-03-22 23:38:18.000000000 +0100 +--- src/sl/sl.h.orig Tue Mar 11 02:06:24 2008 +++ src/sl/sl.h -@@ -26,6 +26,7 @@ +@@ -26,12 +26,15 @@ #define __SL_H__ 1 #include @@ -10,3 +10,30 @@ $NetBSD: patch-ae,v 1.3 2007/07/12 19:48:42 drochner Exp $ #include "slPortability.h" #ifdef SL_USING_OSS_AUDIO + #define SLDSP_DEFAULT_DEVICE "/dev/dsp" + #elif defined(UL_WIN32) + #define SLDSP_DEFAULT_DEVICE "dsp" ++#elif defined(SL_USING_SNDIO) ++#define SLDSP_DEFAULT_DEVICE "default" + #elif defined(UL_BSD) + #define SLDSP_DEFAULT_DEVICE "/dev/audio" + #elif defined(UL_IRIX) +@@ -78,6 +81,9 @@ class slDSP (private) + + #if defined(SL_USING_OSS_AUDIO) + audio_buf_info buff_info ; ++#elif defined(SL_USING_SNDIO) ++ struct sio_hdl *hdl; ++ struct sio_par par; + #elif defined(UL_BSD) + audio_info_t ainfo; // ioctl structure + audio_offset_t audio_offset; // offset in audiostream +@@ -120,7 +126,7 @@ class slDSP (private) + #endif + + +-#if !defined(UL_WIN32) && !defined(UL_MACINTOSH) && !defined(UL_MAC_OSX) ++#if !defined(UL_WIN32) && !defined(UL_MACINTOSH) && !defined(UL_MAC_OSX) && !defined(SL_USING_SNDIO) + int ioctl ( int cmd, int param = 0 ) + { + if ( error ) return param ; -- cgit v1.2.3