--
[email protected]
SDF Public Access UNIX System - http://sdf.lonestar.org
Index: Makefile
===================================================================
RCS file: /home2/cvs/OpenBSD/ports/audio/fluidsynth/Makefile,v
retrieving revision 1.2
diff -u -r1.2 Makefile
--- Makefile 20 Apr 2008 11:19:20 -0000 1.2
+++ Makefile 12 Dec 2008 12:28:03 -0000
@@ -2,7 +2,7 @@
COMMENT = SoundFont2 software synthesizer
DISTNAME = fluidsynth-1.0.8
-PKGNAME = ${DISTNAME}p0
+PKGNAME = ${DISTNAME}p1
SHARED_LIBS = fluidsynth 0.0
@@ -17,7 +17,7 @@
PERMIT_DISTFILES_CDROM = Yes
PERMIT_DISTFILES_FTP = Yes
-WANTLIB = c m ncurses ossaudio pthread readline
+WANTLIB = c m ncurses ossaudio pthread readline sndio
MASTER_SITES = http://download.savannah.gnu.org/releases/fluid/
@@ -27,10 +27,23 @@
LIB_DEPENDS = jack::audio/jack
+AUTOCONF_VERSION = 2.61
+AUTOMAKE_VERSION = 1.9
+
+BUILD_DEPENDS += ${MODGNU_AUTOCONF_DEPENDS} \
+ ${MODGNU_AUTOMAKE_DEPENDS}
+
USE_LIBTOOL = Yes
CONFIGURE_STYLE = gnu
CONFIGURE_ARGS += ${CONFIGURE_SHARED} \
--disable-lash \
--disable-ladcca
+
+post-patch:
+ cp ${FILESDIR}/fluid_libsndio.c ${WRKSRC}/src/
+
+pre-configure:
+ cd ${WRKSRC} && AUTOMAKE_VERSION=${AUTOMAKE_VERSION} \
+ AUTOCONF_VERSION=${AUTOCONF_VERSION} ./autogen.sh
.include <bsd.port.mk>
Index: files/fluid_libsndio.c
===================================================================
RCS file: files/fluid_libsndio.c
diff -N files/fluid_libsndio.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ files/fluid_libsndio.c 12 Dec 2008 12:28:03 -0000
@@ -0,0 +1,372 @@
+/* libsndio backend for FluidSynth - A Software Synthesizer
+ *
+ * Copyright (c) 2008 Jacob Meuser <[email protected]>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+
+/* fluid_libsndio.c
+ *
+ * Driver for the libsndio audio access library
+ */
+
+#include "fluid_synth.h"
+#include "fluid_adriver.h"
+#include "fluid_settings.h"
+
+#if LIBSNDIO_SUPPORT
+
+#include <sndio.h>
+
+#include <sys/time.h>
+#include <sys/types.h>
+#include <pthread.h>
+#include <unistd.h>
+
+
+/** fluid_libsndio_audio_driver_t
+ *
+ * This structure should not be accessed directly. Use audio port
+ * functions instead.
+ */
+typedef struct {
+ fluid_audio_driver_t driver;
+ fluid_synth_t* synth;
+ fluid_audio_callback_t read;
+ void* buffer;
+ pthread_t thread;
+ int cont;
+ struct sio_hdl *hdl;
+ struct sio_par par;
+ int buffer_size;
+ int buffer_byte_size;
+ fluid_audio_func_t callback;
+ void* data;
+ float* buffers[2];
+} fluid_libsndio_audio_driver_t;
+
+int delete_fluid_libsndio_audio_driver(fluid_audio_driver_t* p);
+
+/* local utilities */
+static void* fluid_libsndio_audio_run(void* d);
+static void* fluid_libsndio_audio_run2(void* d);
+
+
+void
+fluid_libsndio_audio_driver_settings(fluid_settings_t* settings)
+{
+ fluid_settings_register_str(settings, "audio.libsndio.device", NULL, 0,
NULL, NULL);
+}
+
+/*
+ * new_fluid_libsndio_audio_driver
+ */
+fluid_audio_driver_t*
+new_fluid_libsndio_audio_driver(fluid_settings_t* settings, fluid_synth_t*
synth)
+{
+ fluid_libsndio_audio_driver_t* dev = NULL;
+ int queuesize;
+ double sample_rate;
+ int periods, period_size;
+ char* devname;
+ pthread_attr_t attr;
+ int err;
+
+ dev = FLUID_NEW(fluid_libsndio_audio_driver_t);
+ if (dev == NULL) {
+ FLUID_LOG(FLUID_ERR, "Out of memory");
+ return NULL;
+ }
+ FLUID_MEMSET(dev, 0, sizeof(fluid_libsndio_audio_driver_t));
+
+ fluid_settings_getint(settings, "audio.periods", &periods);
+ fluid_settings_getint(settings, "audio.period-size", &period_size);
+ fluid_settings_getnum(settings, "synth.sample-rate", &sample_rate);
+
+ dev->hdl = NULL;
+ dev->synth = synth;
+ dev->callback = NULL;
+ dev->data = NULL;
+ dev->cont = 1;
+ dev->buffer_size = (int) period_size;
+ queuesize = (int) (periods * period_size);
+
+ if (!fluid_settings_getstr(settings, "audio.libsndio.device", &devname)) {
+ devname = NULL;
+ }
+
+ dev->hdl = sio_open(devname, SIO_PLAY, 0);
+ if (dev->hdl == NULL) {
+ FLUID_LOG(FLUID_ERR, "libsndio could not be opened for writing");
+ goto error_recovery;
+ }
+
+ sio_initpar(&dev->par);
+
+ if (fluid_settings_str_equal(settings, "audio.sample-format", "16bits")) {
+ dev->par.bits = 16;
+#ifdef WORDS_BIGENDIAN
+ dev->par.le = 0;
+#else
+ dev->par.le = 1;
+#endif
+ dev->read = fluid_synth_write_s16;
+ dev->buffer_byte_size = dev->buffer_size * 4;
+
+ } else {
+ FLUID_LOG(FLUID_ERR, "Unknown sample format");
+ goto error_recovery;
+ }
+
+ dev->buffer = FLUID_MALLOC(dev->buffer_byte_size);
+ if (dev->buffer == NULL) {
+ FLUID_LOG(FLUID_ERR, "Out of memory");
+ goto error_recovery;
+ }
+
+ dev->par.bufsz = dev->buffer_size * periods;
+ dev->par.round = dev->buffer_size;
+
+ dev->par.pchan = 2;
+ dev->par.rate = sample_rate;
+
+ if (!sio_setpar(dev->hdl, &dev->par)) {
+ FLUID_LOG(FLUID_ERR, "Couldn't set libsndio audio parameters");
+ goto error_recovery;
+ }
+
+ if (!sio_getpar(dev->hdl, &dev->par)) {
+ FLUID_LOG(FLUID_ERR, "Couldn't get libsndio audio parameters");
+ goto error_recovery;
+ } else if (dev->par.pchan != 2 || dev->par.rate != sample_rate ||
+ dev->par.bits != 16) {
+ FLUID_LOG(FLUID_ERR, "Couldn't set libsndio audio parameters as desired");
+ goto error_recovery;
+ }
+
+ if (!sio_start(dev->hdl)) {
+ FLUID_LOG(FLUID_ERR, "Couldn't start libsndio");
+ goto error_recovery;
+ }
+
+ if (pthread_attr_init(&attr)) {
+ FLUID_LOG(FLUID_ERR, "Couldn't initialize audio thread attributes");
+ goto error_recovery;
+ }
+
+ err = pthread_create(&dev->thread, &attr, fluid_libsndio_audio_run, (void*)
dev);
+ if (err) {
+ FLUID_LOG(FLUID_ERR, "Couldn't create audio thread");
+ goto error_recovery;
+ }
+
+ return (fluid_audio_driver_t*) dev;
+
+error_recovery:
+ delete_fluid_libsndio_audio_driver((fluid_audio_driver_t*) dev);
+ return NULL;
+}
+
+fluid_audio_driver_t*
+new_fluid_libsndio_audio_driver2(fluid_settings_t* settings,
fluid_audio_func_t func, void* data)
+{
+ fluid_libsndio_audio_driver_t* dev = NULL;
+ int queuesize;
+ double sample_rate;
+ int periods, period_size;
+ char* devname;
+ pthread_attr_t attr;
+ int err;
+
+ dev = FLUID_NEW(fluid_libsndio_audio_driver_t);
+ if (dev == NULL) {
+ FLUID_LOG(FLUID_ERR, "Out of memory");
+ return NULL;
+ }
+ FLUID_MEMSET(dev, 0, sizeof(fluid_libsndio_audio_driver_t));
+
+ fluid_settings_getint(settings, "audio.periods", &periods);
+ fluid_settings_getint(settings, "audio.period-size", &period_size);
+ fluid_settings_getnum(settings, "synth.sample-rate", &sample_rate);
+
+ dev->hdl = NULL;
+ dev->synth = NULL;
+ dev->read = NULL;
+ dev->callback = func;
+ dev->data = data;
+ dev->cont = 1;
+ dev->buffer_size = (int) period_size;
+ queuesize = (int) (periods * period_size);
+ dev->buffer_byte_size = dev->buffer_size * 2 * 2; /* 2 channels * 16 bits
audio */
+
+ if (!fluid_settings_getstr(settings, "audio.libsndio.device", &devname)) {
+ devname = NULL;
+ }
+
+ dev->hdl = sio_open(devname, SIO_PLAY, 0);
+ if (dev->hdl == NULL) {
+ FLUID_LOG(FLUID_ERR, "libsndio could not be opened for writing");
+ goto error_recovery;
+ }
+
+ sio_initpar(&dev->par);
+
+ dev->par.bufsz = dev->buffer_size * periods;
+ dev->par.round = dev->buffer_size;
+
+ dev->par.bits = 16;
+#ifdef WORDS_BIGENDIAN
+ dev->par.le = 0;
+#else
+ dev->par.le = 1;
+#endif
+
+ dev->par.pchan = 2;
+ dev->par.rate = sample_rate;
+
+ if (!sio_setpar(dev->hdl, &dev->par)){
+ FLUID_LOG(FLUID_ERR, "Can't configure libsndio parameters");
+ goto error_recovery;
+ }
+
+ if (!sio_getpar(dev->hdl, &dev->par)) {
+ FLUID_LOG(FLUID_ERR, "Couldn't get libsndio audio parameters");
+ goto error_recovery;
+ } else if (dev->par.pchan != 2 || dev->par.rate != sample_rate ||
+ dev->par.bits != 16) {
+ FLUID_LOG(FLUID_ERR, "Couldn't set libsndio audio parameters as desired");
+ goto error_recovery;
+ }
+
+ /* allocate the buffers. FIXME!!! don't use interleaved samples */
+ dev->buffer = FLUID_MALLOC(dev->buffer_byte_size);
+ dev->buffers[0] = FLUID_ARRAY(float, dev->buffer_size);
+ dev->buffers[1] = FLUID_ARRAY(float, dev->buffer_size);
+ if ((dev->buffer == NULL) || (dev->buffers[0] == NULL) || (dev->buffers[1]
== NULL)) {
+ FLUID_LOG(FLUID_ERR, "Out of memory");
+ goto error_recovery;
+ }
+
+ if (!sio_start(dev->hdl)) {
+ FLUID_LOG(FLUID_ERR, "Couldn't start libsndio");
+ goto error_recovery;
+ }
+
+ if (pthread_attr_init(&attr)) {
+ FLUID_LOG(FLUID_ERR, "Couldn't initialize audio thread attributes");
+ goto error_recovery;
+ }
+
+ err = pthread_create(&dev->thread, &attr, fluid_libsndio_audio_run2, (void*)
dev);
+ if (err) {
+ FLUID_LOG(FLUID_ERR, "Couldn't create audio2 thread");
+ goto error_recovery;
+ }
+
+ return (fluid_audio_driver_t*) dev;
+
+error_recovery:
+ delete_fluid_libsndio_audio_driver((fluid_audio_driver_t*) dev);
+ return NULL;
+}
+
+/*
+ * delete_fluid_libsndio_audio_driver
+ */
+int
+delete_fluid_libsndio_audio_driver(fluid_audio_driver_t* p)
+{
+ fluid_libsndio_audio_driver_t* dev = (fluid_libsndio_audio_driver_t*) p;
+
+ if (dev == NULL) {
+ return FLUID_OK;
+ }
+ dev->cont = 0;
+ if (dev->thread) {
+ if (pthread_join(dev->thread, NULL)) {
+ FLUID_LOG(FLUID_ERR, "Failed to join the audio thread");
+ return FLUID_FAILED;
+ }
+ }
+ if (dev->hdl) {
+ sio_close(dev->hdl);
+ }
+ if (dev->buffer != NULL) {
+ FLUID_FREE(dev->buffer);
+ }
+ FLUID_FREE(dev);
+ return FLUID_OK;
+}
+
+/*
+ * fluid_libsndio_audio_run
+ */
+void*
+fluid_libsndio_audio_run(void* d)
+{
+ fluid_libsndio_audio_driver_t* dev = (fluid_libsndio_audio_driver_t*) d;
+ fluid_synth_t* synth = dev->synth;
+ void* buffer = dev->buffer;
+ int len = dev->buffer_size;
+
+ /* it's as simple as that: */
+ while (dev->cont)
+ {
+ dev->read (synth, len, buffer, 0, 2, buffer, 1, 2);
+ sio_write (dev->hdl, buffer, dev->buffer_byte_size);
+ }
+
+ FLUID_LOG(FLUID_DBG, "Audio thread finished");
+
+ pthread_exit(NULL);
+
+ return 0; /* not reached */
+}
+
+
+/*
+ * fluid_libsndio_audio_run
+ */
+void*
+fluid_libsndio_audio_run2(void* d)
+{
+ fluid_libsndio_audio_driver_t* dev = (fluid_libsndio_audio_driver_t*) d;
+ short* buffer = (short*) dev->buffer;
+ float* left = dev->buffers[0];
+ float* right = dev->buffers[1];
+ int buffer_size = dev->buffer_size;
+ int dither_index = 0;
+
+ FLUID_LOG(FLUID_DBG, "Audio thread running");
+
+ /* it's as simple as that: */
+ while (dev->cont)
+ {
+ (*dev->callback)(dev->data, buffer_size, 0, NULL, 2, dev->buffers);
+
+ fluid_synth_dither_s16 (&dither_index, buffer_size, left, right,
+ buffer, 0, 2, buffer, 1, 2);
+
+ sio_write (dev->hdl, buffer, dev->buffer_byte_size);
+ }
+
+ FLUID_LOG(FLUID_DBG, "Audio thread finished");
+
+ pthread_exit(NULL);
+
+ return 0; /* not reached */
+}
+
+
+#endif /*#if LIBSNDIO_SUPPORT */
Index: patches/patch-acinclude_m4
===================================================================
RCS file: patches/patch-acinclude_m4
diff -N patches/patch-acinclude_m4
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-acinclude_m4 12 Dec 2008 12:28:03 -0000
@@ -0,0 +1,22 @@
+$OpenBSD$
+--- acinclude.m4.orig Sat Oct 18 21:09:19 2008
++++ acinclude.m4 Sat Oct 18 21:11:47 2008
+@@ -43,13 +43,14 @@ AC_DEFUN([AC_OSS_AUDIO],
+ OSS_SUPPORT=0
+
+ if test "x$enable_oss_support" != "xno"; then
+- AC_CHECK_HEADERS(fcntl.h sys/ioctl.h sys/soundcard.h machine/soundcard.h)
++ AC_CHECK_HEADERS(fcntl.h sys/ioctl.h sys/soundcard.h machine/soundcard.h
soundcard.h)
+ if test "${ac_cv_header_fcntl_h}" = "yes" && \
+ test "${ac_cv_header_sys_ioctl_h}" = "yes"; then
+ if test "${ac_cv_header_sys_soundcard_h}" = "yes" || \
+- test "${ac_cv_header_machine_soundcard_h}" = "yes"; then
+- OSS_SUPPORT=1
+- AC_DEFINE(OSS_SUPPORT, 1, [Define to enable OSS driver])
++ test "${ac_cv_header_machine_soundcard_h}" = "yes" || \
++ test "${ac_cv_header_soundcard_h}" = "yes"; then
++ OSS_SUPPORT=1
++ AC_DEFINE(OSS_SUPPORT, 1, [Define to enable OSS driver])
+ else
+ AC_MSG_WARN([ *** Could not find soundcard.h, disabling OSS driver])
+ fi dnl soundcard.h header test
Index: patches/patch-configure
===================================================================
RCS file: patches/patch-configure
diff -N patches/patch-configure
--- patches/patch-configure 6 Apr 2008 22:42:11 -0000 1.1.1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,68 +0,0 @@
-$OpenBSD: patch-configure,v 1.1.1.1 2008/04/06 22:42:11 jakemsr Exp $
---- configure.orig Sat Nov 17 13:32:16 2007
-+++ configure Fri Feb 15 17:45:13 2008
-@@ -19986,13 +19986,13 @@ fi
-
-
-
--{ echo "$as_me:$LINENO: checking for pthread_create in -lpthread" >&5
--echo $ECHO_N "checking for pthread_create in -lpthread... $ECHO_C" >&6; }
-+{ echo "$as_me:$LINENO: checking for pthread_create in -pthread" >&5
-+echo $ECHO_N "checking for pthread_create in -pthread... $ECHO_C" >&6; }
- if test "${ac_cv_lib_pthread_pthread_create+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- ac_check_lib_save_LIBS=$LIBS
--LIBS="-lpthread $LIBS"
-+LIBS="-pthread $LIBS"
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
-@@ -20052,7 +20052,7 @@ if test $ac_cv_lib_pthread_pthread_create = yes; then
- #define HAVE_LIBPTHREAD 1
- _ACEOF
-
-- LIBS="-lpthread $LIBS"
-+ LIBS="-pthread $LIBS"
-
- fi
-
-@@ -20727,7 +20727,7 @@ esac
-
-
-
-- if test "$mingw32_support" == "yes"; then
-+ if test "$mingw32_support" = "yes"; then
- MINGW32_SUPPORT_TRUE=
- MINGW32_SUPPORT_FALSE='#'
- else
-@@ -20899,7 +20899,7 @@ cat >>confdefs.h <<\_ACEOF
- _ACEOF
-
- else
-- CFLAGS="${CFLAGS} ${FCCFLAGS} -O2 -fomit-frame-pointer -funroll-all-loops
-finline-functions -Wall -W -Wpointer-arith -Wbad-function-cast -Wcast-qual
-Wcast-align -Wstrict-prototypes -Wno-unused -Winline"
-+ CFLAGS="${CFLAGS} ${FCCFLAGS} -Wall -W -Wpointer-arith -Wbad-function-cast
-Wcast-qual -Wcast-align -Wstrict-prototypes -Wno-unused -Winline"
-
- cat >>confdefs.h <<\_ACEOF
- #define DEBUG 0
-@@ -21152,7 +21152,7 @@ fi
-
-
-
--for ac_header in fcntl.h sys/ioctl.h sys/soundcard.h machine/soundcard.h
-+for ac_header in fcntl.h sys/ioctl.h sys/soundcard.h machine/soundcard.h
soundcard.h
- do
- as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
- if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-@@ -21294,8 +21294,9 @@ done
- if test "${ac_cv_header_fcntl_h}" = "yes" && \
- test "${ac_cv_header_sys_ioctl_h}" = "yes"; then
- if test "${ac_cv_header_sys_soundcard_h}" = "yes" || \
-- test "${ac_cv_header_machine_soundcard_h}" = "yes"; then
-- OSS_SUPPORT=1
-+ test "${ac_cv_header_machine_soundcard_h}" = "yes" || \
-+ test "${ac_cv_header_soundcard_h}" = "yes"; then
-+ OSS_SUPPORT=1
-
- cat >>confdefs.h <<\_ACEOF
- #define OSS_SUPPORT 1
Index: patches/patch-configure_ac
===================================================================
RCS file: patches/patch-configure_ac
diff -N patches/patch-configure_ac
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-configure_ac 12 Dec 2008 12:28:03 -0000
@@ -0,0 +1,72 @@
+$OpenBSD$
+--- configure.ac.orig Sat Oct 18 20:58:26 2008
++++ configure.ac Sat Oct 18 21:08:50 2008
+@@ -49,7 +49,8 @@ AM_PROG_LIBTOOL
+ AC_PROG_MAKE_SET
+
+ dnl Check for libraries
+-AC_CHECK_LIB(pthread, pthread_create)
++dnl AC_CHECK_LIB(pthread, pthread_create)
++LIBS="$LIBS -pthread"
+
+ dnl Check for header files
+ AC_HEADER_STDC
+@@ -82,7 +83,7 @@ AC_SUBST(LIBFLUID_CPPFLAGS)
+ AC_SUBST(LIBFLUID_LDFLAGS)
+ AC_SUBST(FLUID_CPPFLAGS)
+
+-AM_CONDITIONAL(MINGW32_SUPPORT, test "$mingw32_support" == "yes")
++AM_CONDITIONAL(MINGW32_SUPPORT, test "$mingw32_support" = "yes")
+
+ AC_ARG_ENABLE(double, AS_HELP_STRING([--enable-double],
+ [double floating point for dsp (default=float)]),
+@@ -136,7 +137,7 @@ if test "$ENABLE_DEBUG" = "yes"; then
+ CFLAGS="${CFLAGS} ${FCCFLAGS} -g -Wall -W -Wpointer-arith
-Wbad-function-cast -Wcast-qual -Wcast-align -Wstrict-prototypes -Wno-unused"
+ AC_DEFINE(DEBUG, 1, [Define to activate debugging message])
+ else
+- CFLAGS="${CFLAGS} ${FCCFLAGS} -O2 -fomit-frame-pointer -funroll-all-loops
-finline-functions -Wall -W -Wpointer-arith -Wbad-function-cast -Wcast-qual
-Wcast-align -Wstrict-prototypes -Wno-unused -Winline"
++ CFLAGS="${CFLAGS} ${FCCFLAGS} -Wall -W -Wpointer-arith -Wbad-function-cast
-Wcast-qual -Wcast-align -Wstrict-prototypes -Wno-unused -Winline"
+ AC_DEFINE(DEBUG, 0, [Define to activate debugging message])
+ fi
+
+@@ -183,7 +184,27 @@ dnl - Check support for OSS audio
+ AC_OSS_AUDIO
+ AM_CONDITIONAL(OSS_SUPPORT, test "$OSS_SUPPORT" = "1")
+
++dnl - Check for libsndio support
++AC_ARG_ENABLE(libsndio-support, AS_HELP_STRING([--disable-libsndio-support],
++ [disable libsndio support (default=auto)]),
++ enable_libsndio=$enableval, enable_libsndio="yes")
+
++if test "x$enable_libsndio" != "xno"; then
++ AC_CHECK_HEADER(sndio.h, LIBSNDIO_SUPPORT=1, LIBSNDIO_SUPPORT=0)
++else
++ LIBSNDIO_SUPPORT=0
++fi
++
++if test "$LIBSNDIO_SUPPORT" = "1"; then
++ AC_DEFINE(LIBSNDIO_SUPPORT, 1, [Define to enable libsndio driver])
++fi
++AM_CONDITIONAL(LIBSNDIO_SUPPORT, test "$LIBSNDIO_SUPPORT" = "1")
++LIBSNDIO_CFLAGS=""
++AC_SUBST(LIBSNDIO_CFLAGS)
++LIBSNDIO_LIBS="-lsndio"
++AC_SUBST(LIBSNDIO_LIBS)
++
++
+ dnl - Check support for MidiShare
+ AC_MIDISHARE
+
+@@ -341,6 +362,12 @@ if test "${OSS_SUPPORT}" = "1"; then
+ echo "OSS: yes"
+ else
+ echo "OSS: no"
++fi
++
++if test "${LIBSNDIO_SUPPORT}" = "1"; then
++ echo "libsndio: yes"
++else
++ echo "libsndio: no"
+ fi
+
+ if test "${MIDISHARE_SUPPORT}" = "1"; then
Index: patches/patch-src_Makefile_am
===================================================================
RCS file: patches/patch-src_Makefile_am
diff -N patches/patch-src_Makefile_am
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_Makefile_am 12 Dec 2008 12:28:03 -0000
@@ -0,0 +1,40 @@
+$OpenBSD$
+--- src/Makefile.am.orig Sun Nov 11 12:06:28 2007
++++ src/Makefile.am Sat Oct 18 21:26:52 2008
+@@ -21,6 +21,10 @@ if OSS_SUPPORT
+ fluid_oss = fluid_oss.c
+ endif
+
++if LIBSNDIO_SUPPORT
++fluid_libsndio = fluid_libsndio.c
++endif
++
+ # if LASH_SUPPORT || LADCCA_SUPPORT (Makefile supports OR?)
+ if LASH_SUPPORT
+ fluid_lash = fluid_lash.c
+@@ -33,7 +37,7 @@ endif
+
+ # Extra files and optional drivers
+ EXTRA_DIST = fluid_dll.c fluid_dsound.c fluid_winmidi.c fluid_portaudio.c \
+- fluid_coreaudio.c fluid_alsa.c fluid_oss.c \
++ fluid_coreaudio.c fluid_alsa.c fluid_oss.c fluid_libsndio.c \
+ fluid_dsp_simple.c \
+ fluid_sndmgr.c config_macos.h config_macosx.h config_macosx_pb.h \
+ config_win32.h fluid_jack.c
+@@ -47,6 +51,7 @@ libfluidsynth_la_SOURCES = \
+ $(fluid_jack) \
+ $(fluid_lash) \
+ $(fluid_oss) \
++ $(fluid_libsndio) \
+ $(fluid_windows) \
+ fluid_adriver.c \
+ fluid_adriver.h \
+@@ -108,7 +113,7 @@ INCLUDES = -I$(top_srcdir)/include $(LASH_CFLAGS) $(LA
+ $(READLINE_CFLAGS) $(JACK_CFLAGS) $(ALSA_CFLAGS)
+
+ libfluidsynth_la_LIBADD = $(LIBFLUID_LIBS) $(LASH_LIBS) $(LADCCA_LIBS) \
+- $(READLINE_LIBS) $(COREAUDIO_LIBS) $(JACK_LIBS) $(ALSA_LIBS)
++ $(READLINE_LIBS) $(COREAUDIO_LIBS) $(JACK_LIBS) $(ALSA_LIBS)
$(LIBSNDIO_LIBS) -lossaudio
+ libfluidsynth_la_LDFLAGS = \
+ -version-info @LT_VERSION_INFO@ \
+ -export-dynamic $(LIBFLUID_LDFLAGS)
Index: patches/patch-src_Makefile_in
===================================================================
RCS file: patches/patch-src_Makefile_in
diff -N patches/patch-src_Makefile_in
--- patches/patch-src_Makefile_in 6 Apr 2008 22:42:11 -0000 1.1.1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,12 +0,0 @@
-$OpenBSD: patch-src_Makefile_in,v 1.1.1.1 2008/04/06 22:42:11 jakemsr Exp $
---- src/Makefile.in.orig Fri Feb 15 17:43:01 2008
-+++ src/Makefile.in Fri Feb 15 17:43:45 2008
-@@ -356,7 +356,7 @@ INCLUDES = -I$(top_srcdir)/include $(LASH_CFLAGS) $(LA
- $(READLINE_CFLAGS) $(JACK_CFLAGS) $(ALSA_CFLAGS)
-
- libfluidsynth_la_LIBADD = $(LIBFLUID_LIBS) $(LASH_LIBS) $(LADCCA_LIBS) \
-- $(READLINE_LIBS) $(COREAUDIO_LIBS) $(JACK_LIBS) $(ALSA_LIBS)
-+ $(READLINE_LIBS) $(COREAUDIO_LIBS) $(JACK_LIBS) $(ALSA_LIBS) -lossaudio
-
- libfluidsynth_la_LDFLAGS = \
- -version-info @LT_VERSION_INFO@ \
Index: patches/patch-src_config_h_in
===================================================================
RCS file: patches/patch-src_config_h_in
diff -N patches/patch-src_config_h_in
--- patches/patch-src_config_h_in 6 Apr 2008 22:42:11 -0000 1.1.1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,13 +0,0 @@
-$OpenBSD: patch-src_config_h_in,v 1.1.1.1 2008/04/06 22:42:11 jakemsr Exp $
---- src/config.h.in.orig Fri Feb 15 17:22:28 2008
-+++ src/config.h.in Fri Feb 15 17:23:02 2008
-@@ -72,6 +72,9 @@
- /* Define to 1 if you have the <signal.h> header file. */
- #undef HAVE_SIGNAL_H
-
-+/* Define to 1 if you have the <soundcard.h> header file. */
-+#undef HAVE_SOUNDCARD_H
-+
- /* Define to 1 if you have the <stdarg.h> header file. */
- #undef HAVE_STDARG_H
-
Index: patches/patch-src_fluid_adriver_c
===================================================================
RCS file: patches/patch-src_fluid_adriver_c
diff -N patches/patch-src_fluid_adriver_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_fluid_adriver_c 12 Dec 2008 12:28:03 -0000
@@ -0,0 +1,52 @@
+$OpenBSD$
+--- src/fluid_adriver.c.orig Sat Oct 18 20:34:27 2008
++++ src/fluid_adriver.c Sat Oct 18 20:36:59 2008
+@@ -56,6 +56,15 @@ int delete_fluid_oss_audio_driver(fluid_audio_driver_t
+ void fluid_oss_audio_driver_settings(fluid_settings_t* settings);
+ #endif
+
++#if LIBSNDIO_SUPPORT
++fluid_audio_driver_t* new_fluid_libsndio_audio_driver(fluid_settings_t*
settings,
++ fluid_synth_t* synth);
++fluid_audio_driver_t* new_fluid_libsndio_audio_driver2(fluid_settings_t*
settings,
++ fluid_audio_func_t func, void*
data);
++int delete_fluid_libsndio_audio_driver(fluid_audio_driver_t* p);
++void fluid_libsndio_audio_driver_settings(fluid_settings_t* settings);
++#endif
++
+ #if COREAUDIO_SUPPORT
+ fluid_audio_driver_t* new_fluid_core_audio_driver(fluid_settings_t* settings,
+ fluid_synth_t* synth);
+@@ -112,6 +121,13 @@ fluid_audriver_definition_t fluid_audio_drivers[] = {
+ delete_fluid_oss_audio_driver,
+ fluid_oss_audio_driver_settings },
+ #endif
++#if LIBSNDIO_SUPPORT
++ { "libsndio",
++ new_fluid_libsndio_audio_driver,
++ new_fluid_libsndio_audio_driver2,
++ delete_fluid_libsndio_audio_driver,
++ fluid_libsndio_audio_driver_settings },
++#endif
+ #if ALSA_SUPPORT
+ { "alsa",
+ new_fluid_alsa_audio_driver,
+@@ -193,6 +209,8 @@ void fluid_audio_driver_settings(fluid_settings_t* set
+ /* Set the default driver */
+ #if ALSA_SUPPORT
+ fluid_settings_register_str(settings, "audio.driver", "alsa", 0, NULL,
NULL);
++#elif LIBSNDIO_SUPPORT
++ fluid_settings_register_str(settings, "audio.driver", "libsndio", 0, NULL,
NULL);
+ #elif OSS_SUPPORT
+ fluid_settings_register_str(settings, "audio.driver", "oss", 0, NULL, NULL);
+ #elif COREAUDIO_SUPPORT
+@@ -217,6 +235,9 @@ void fluid_audio_driver_settings(fluid_settings_t* set
+ #endif
+ #if OSS_SUPPORT
+ fluid_settings_add_option(settings, "audio.driver", "oss");
++#endif
++#if LIBSNDIO_SUPPORT
++ fluid_settings_add_option(settings, "audio.driver", "libsndio");
+ #endif
+ #if COREAUDIO_SUPPORT
+ fluid_settings_add_option(settings, "audio.driver", "coreaudio");
Index: pkg/PLIST
===================================================================
RCS file: /home2/cvs/OpenBSD/ports/audio/fluidsynth/pkg/PLIST,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 PLIST
--- pkg/PLIST 6 Apr 2008 22:42:11 -0000 1.1.1.1
+++ pkg/PLIST 12 Dec 2008 12:28:03 -0000
@@ -1,6 +1,6 @@
@comment $OpenBSD: PLIST,v 1.1.1.1 2008/04/06 22:42:11 jakemsr Exp $
%%SHARED%%
-bin/fluidsynth
+...@bin bin/fluidsynth
include/fluidsynth/
include/fluidsynth.h
include/fluidsynth/audio.h