commit - e26da60a20d19b69c0bafd3005985d2c9965c4f3
commit + 34674849fb1efe5167c457f0dc98ee7fadcc8886
blob - dd7865dd031072630bde52cdb3f06d625ba85dea
blob + 4882c64626c8626ec57729d8adc58b1d7ea8c9a6
--- Makefile
+++ Makefile
DISTNAME = ${PROG}-${VERSION}
SOURCES = amused.c \
- audio_sndio.c \
compats.c \
control.c \
ctl.c \
playlist.c \
xmalloc.c
-OBJS = ${SOURCES:.c=.o}
+OBJS = ${SOURCES:.c=.o} audio_${BACKEND}.o
HEADERS = amused.h \
control.h \
queue.h \
tests.c \
${HEADERS} \
- ${SOURCES}
+ ${SOURCES} \
+ audio_alsa.c \
+ audio_sndio.c
all: ${PROG}
blob - cd2123ffb8898744b528edcb82d574b5e6350854
blob + 8cbb899af097b32a9eb49518f94071f246702084
--- configure
+++ configure
#
# Copyright (c) 2014, 2015, 2016 Ingo Schwarze <schwarze@openbsd.org>
# Copyright (c) 2017, 2018 Kristaps Dzonsons <kristaps@bsd.lv>
-# Copyright (c) 2022 Omar Polo <op@omarpolo.com>
+# Copyright (c) 2022, 2023 Omar Polo <op@omarpolo.com>
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
--prefix=path equivalent to specify the PREFIX variable, supported
for compatibility with other common "configure" scripts.
+ --backend=name equivalent to specify the BACKEND variable, can be either
+ "sndio" or "alsa".
+
Variables available:
+ BACKEND audio backend to use; can be "sndio" or "alsa"
LDADD generic linker flags
LDADD_IMSG linker flags for libimsg
LDADD_LIBEVENT linker flags for libevent
# environment except for CC and CFLAGS, which we might have passed in.
#----------------------------------------------------------------------
+BACKEND=auto
CC=`printf "all:\\n\\t@echo \\\$(CC)\\n" | make ${MAKE_FLAGS} -sf -`
CFLAGS=`printf "all:\\n\\t@echo \\\$(CFLAGS)\\n" | make ${MAKE_FLAGS} -sf -`
CFLAGS="${CFLAGS} -g -W -Wall -Wextra -Wmissing-prototypes"
LDADD_LIB_FLAC=
LDADD_LIB_MPG123=
LDADD_LIB_VORBISFILE=
+LDADD_LIB_ASOUND=
LDADD_LIB_SNDIO=
LDADD_LIB_SOCKET=
LDADD_STATIC=
if [ "$1" = "--prefix" ]; then
if ! shift 2>&1 >/dev/null; then
echo "$0: missing value for --prefix" 1>&2
+ exit 1
+ fi
+ val="$1"
+ fi
+ fi
+
+ if [ "$key" = "--backend" ]; then
+ key=BACKEND
+ if [ "$1" = "--backend" ]; then
+ if ! shift 2>&1 >/dev/null; then
+ echo "$0 missing value for --backend" 1>&2
exit 1
fi
val="$1"
shift
case "$key" in
+ BACKEND)
+ case "$val" in
+ alsa) BACKEND=alsa ;;
+ sndio) BACKEND=sndio ;;
+ *)
+ echo "unknown audio backend: $val" 1>&2
+ exit 1
+ esac ;;
LDADD)
LDADD="$val" ;;
LDADD_IMSG)
HAVE_LIB_MPG123=
HAVE_LIB_OPUSFILE=
HAVE_LIB_VORBISFILE=
+HAVE_LIB_ASOUND=
HAVE_LIB_SNDIO=
HAVE_LIB_SOCKET=
HAVE_MEMMEM=
runtest lib_opusfile LIB_OPUSFILE "" "" "-lopusfile" "opusfile" || true
runtest lib_vorbisfile LIB_VORBISFILE "" "" "-lvorbisfile" "vorbisfile" || true
-runtest lib_sndio LIB_SNDIO "" "" "-lsndio" "sndio" || true
runtest lib_socket LIB_SOCKET "" "" "-lsocket -lnsl" || true
runtest memmem MEMMEM || true
runtest memrchr MEMRCHR || true
runtest recallocarray RECALLOCARRAY || true
runtest sandbox_init SANDBOX_INIT "-Wno-deprecated" || true
runtest setproctitle SETPROCTITLE || true
-runtest sio_flush SIO_FLUSH "" "" "${LDADD_LIB_SNDIO}" || true
runtest SOCK_NONBLOCK SOCK_NONBLOCK || true
runtest static STATIC "" "-static" || true
runtest strlcat STRLCAT || true
runtest sys_file SYS_FILE || true
runtest unveil UNVEIL || true
runtest __progname __PROGNAME || true
+
+if [ $BACKEND != alsa ]; then # auto or sndio
+ runtest lib_sndio LIB_SNDIO "" "" "-lsndio" "sndio" || true
+ runtest sio_flush SIO_FLUSH "" "" "${LDADD_LIB_SNDIO}" || true
+
+ if [ "${HAVE_LIB_SNDIO}" -eq 0 ]; then
+ if [ $BACKEND = sndio ]; then
+ echo "Fatal: missing libsndio" 1>&2
+ echo "Fatal: missing libsndio" 1>&3
+ exit 1
+ fi
+ else
+ BACKEND=sndio
+ fi
+fi
+if [ $BACKEND != sndio ]; then # auto or alsa
+ runtest lib_asound LIB_ASOUND "" "" "-lasound" "alsa" || true
+ if [ "${HAVE_LIB_ASOUND}" -eq 0 ]; then
+ if [ $BACKEND = alsa ]; then
+ echo "Fatal: missing libasound" 1>&2
+ echo "Fatal: missing libasound" 1>&3
+ else
+ echo "Fatal: missing libasound or libsndio" 1>&2
+ echo "Fatal: missing libasound or libsndio" 1>&3
+ fi
+ exit 1
+ fi
+ BACKEND=alsa
+fi
+
if [ "${HAVE_LIBEVENT}" -eq 0 -a "${HAVE_LIBEVENT2}" -eq 0 ]; then
echo "Fatal: missing libevent" 1>&2
echo "Fatal: missing libevent" 1>&3
exit 1
fi
-if [ "${HAVE_LIB_SNDIO}" -eq 0 ]; then
- echo "Fatal: missing libsndio" 1>&2
- echo "Fatal: missing libsndio" 1>&3
- exit 1
-fi
-
#----------------------------------------------------------------------
# Output writing: generate the config.h file.
# This file contains all of the HAVE_xxxx variables necessary for
[ -z "${INSTALL_DATA}" ] && INSTALL_DATA="${INSTALL} -m 0444"
cat << __HEREDOC__
+BACKEND = ${BACKEND}
CC = ${CC}
CFLAGS = ${CFLAGS}
CPPFLAGS = ${CPPFLAGS}
LDADD = ${LDADD} ${LDADD_IMSG} ${LDADD_LIB_FLAC} ${LDADD_LIB_MPG123} \
- ${LDADD_LIB_OPUSFILE} ${LDADD_LIB_VORBISFILE} ${LDADD_LIB_SOCKET} \
- ${LDADD_LIBEVENT} ${LDADD_LIBEVENT2} ${LDADD_LIB_SNDIO}
+ ${LDADD_LIB_OPUSFILE} ${LDADD_LIB_VORBISFILE} \
+ ${LDADD_LIB_SOCKET} ${LDADD_LIBEVENT} ${LDADD_LIBEVENT2} \
+ ${LDADD_LIB_SNDIO} ${LDADD_LIB_ASOUND}
LDADD_STATIC = ${LDADD_STATIC}
LDFLAGS = ${LDFLAGS}
STATIC = ${STATIC}
blob - fb75999b977009afe407604d9871ccf68cdd821f
blob + 89cb73563fbf609ab47ee8ea2843e7755536bb01
--- tests.c
+++ tests.c
return 0;
}
#endif /* TEST_LIB_VORBISFILE */
+#if TEST_LIB_ASOUND
+#include <alsa/asoundlib.h>
+
+int
+main(void)
+{
+ snd_pcm_t *pcm;
+ int err;
+
+ err = snd_pcm_open(&pcm, "default", SND_PCM_STREAM_PLAYBACK,
+ SND_PCM_NONBLOCK);
+ return err;
+}
+#endif /* TEST_LIB_ASOUND */
#if TEST_LIB_SNDIO
#include <sndio.h>