aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornaddy <naddy@FreeBSD.org>2016-08-09 23:11:26 +0800
committernaddy <naddy@FreeBSD.org>2016-08-09 23:11:26 +0800
commit70795b1a0c80647c6fb8e4c1223cf3736cb451e7 (patch)
tree69b072b40eaa1573c7e48316e0504dfa6409ac05
parent4d51eddcf7e7565d4b9e78d3589c3539878e0214 (diff)
downloadfreebsd-ports-graphics-70795b1a0c80647c6fb8e4c1223cf3736cb451e7.tar.gz
freebsd-ports-graphics-70795b1a0c80647c6fb8e4c1223cf3736cb451e7.tar.zst
freebsd-ports-graphics-70795b1a0c80647c6fb8e4c1223cf3736cb451e7.zip
Enable sndio support in libao, based on the OpenBSD port.
Also add --disable-alsa to CONFIGURE_ARGS because without it the port tries to link with libasound when it's installed. PR: 211662 Submitted by: Tobias Kortkamp <t@tobik.me>
-rw-r--r--audio/libao/Makefile6
-rw-r--r--audio/libao/files/patch-src_plugins_sndio_ao__sndio.c58
-rw-r--r--audio/libao/pkg-plist1
3 files changed, 64 insertions, 1 deletions
diff --git a/audio/libao/Makefile b/audio/libao/Makefile
index 28f6ea1bce0..6504ba2a1d1 100644
--- a/audio/libao/Makefile
+++ b/audio/libao/Makefile
@@ -16,13 +16,14 @@ USES= libtool pathfix pkgconfig
USE_LDCONFIG= yes
GNU_CONFIGURE= yes
CONFIGURE_ARGS= --enable-static \
+ --disable-alsa \
--disable-arts
INSTALL_TARGET= install-strip
# do not install
MAKE_ARGS= ckport_DATA=""
-OPTIONS_DEFINE= DOCS ESOUND NAS PULSEAUDIO
+OPTIONS_DEFINE= DOCS ESOUND NAS PULSEAUDIO SNDIO
OPTIONS_SUB= yes
NAS_LIB_DEPENDS=libaudio.so:audio/nas
@@ -34,6 +35,9 @@ PULSEAUDIO_CONFIGURE_ENABLE= pulse
ESOUND_CONFIGURE_ENABLE=esd
ESOUND_USE= GNOME=esound
+SNDIO_LIB_DEPENDS= libsndio.so:audio/sndio
+SNDIO_USES= localbase
+
post-patch:
@${REINPLACE_CMD} -e 's|/etc/libao.conf|${PREFIX}&|' \
${WRKSRC}/libao.conf.5 ${WRKSRC}/include/ao/ao_private.h \
diff --git a/audio/libao/files/patch-src_plugins_sndio_ao__sndio.c b/audio/libao/files/patch-src_plugins_sndio_ao__sndio.c
new file mode 100644
index 00000000000..45b25feff31
--- /dev/null
+++ b/audio/libao/files/patch-src_plugins_sndio_ao__sndio.c
@@ -0,0 +1,58 @@
+$OpenBSD: patch-src_plugins_sndio_ao_sndio_c,v 1.3 2014/05/27 19:44:56 naddy Exp $
+--- src/plugins/sndio/ao_sndio.c.orig 2012-02-14 00:46:06 UTC
++++ src/plugins/sndio/ao_sndio.c
+@@ -99,6 +99,7 @@ int ao_plugin_set_option(ao_device *devi
+ int ao_plugin_open(ao_device *device, ao_sample_format *format)
+ {
+ ao_sndio_internal *internal = (ao_sndio_internal *) device->internal;
++ struct sio_hdl *hdl;
+ struct sio_par par;
+
+ if(!internal->dev && internal->id>=0){
+@@ -107,20 +108,26 @@ int ao_plugin_open(ao_device *device, ao
+ internal->dev = strdup(buf);
+ }
+
+- internal->hdl = sio_open(internal->dev, SIO_PLAY, 0);
+- if (internal->hdl == NULL)
++ hdl = sio_open(internal->dev, SIO_PLAY, 0);
++ if (hdl == NULL)
+ return 0;
++ internal->hdl = hdl;
+
+ sio_initpar(&par);
+ par.sig = 1;
+- par.le = SIO_LE_NATIVE;
++ if (format->bits > 8)
++ par.le = device->client_byte_format == AO_FMT_LITTLE ? 1 : 0;
+ par.bits = format->bits;
+ par.rate = format->rate;
+ par.pchan = device->output_channels;
+- if (!sio_setpar(internal->hdl, &par))
++ if (!sio_setpar(hdl, &par))
+ return 0;
+- device->driver_byte_format = AO_FMT_NATIVE;
+- if (!sio_start(internal->hdl))
++ if (!sio_getpar(hdl, &par))
++ return 0;
++ if (par.bits != format->bits)
++ return 0;
++ device->driver_byte_format = par.le ? AO_FMT_LITTLE : AO_FMT_BIG;
++ if (!sio_start(hdl))
+ return 0;
+
+ if(!device->inter_matrix){
+@@ -148,9 +155,10 @@ int ao_plugin_close(ao_device *device)
+ ao_sndio_internal *internal = (ao_sndio_internal *) device->internal;
+ struct sio_hdl *hdl = internal->hdl;
+
+- if(hdl)
+- if (!sio_stop(hdl))
+- return 0;
++ if(hdl){
++ sio_close(hdl);
++ internal->hdl = NULL;
++ }
+ return 1;
+ }
+
diff --git a/audio/libao/pkg-plist b/audio/libao/pkg-plist
index 074df18fe34..b64961932e6 100644
--- a/audio/libao/pkg-plist
+++ b/audio/libao/pkg-plist
@@ -9,6 +9,7 @@ lib/ao/plugins-4/liboss.so
%%ESOUND%%lib/ao/plugins-4/libesd.so
%%NAS%%lib/ao/plugins-4/libnas.so
%%PULSEAUDIO%%lib/ao/plugins-4/libpulse.so
+%%SNDIO%%lib/ao/plugins-4/libsndio.so
libdata/pkgconfig/ao.pc
man/man5/libao.conf.5.gz
share/aclocal/ao.m4