[cfg] libplist+libsodium now required, remove configure options

Need the two libraries for AirPlay 2, which can't be optional.

Means iTunes XML and device verification configure options are no longer
useful.
This commit is contained in:
ejurgensen 2021-01-03 23:30:09 +01:00
parent 01360fff99
commit a5bd8b011e
5 changed files with 17 additions and 89 deletions

View File

@ -43,8 +43,6 @@ Optional packages:
--------------------|--------------------------|------------------------------------------------
Chromecast | `--enable-chromecast` | libgnutls*-dev libprotobuf-c-dev
Spotify | `--enable-spotify` | libspotify-dev
iTunes XML | `--disable-itunes` | libplist-dev
Device verification | `--disable-verification` | libplist-dev libsodium-dev
Player web UI | `--disable-webinterface` | libwebsockets-dev
Live web UI | `--with-libwebsockets` | libwebsockets-dev
Pulseaudio | `--with-pulseaudio` | libpulse-dev
@ -146,7 +144,8 @@ Afterwards, you can optionally install Oracle's newer version, and then
```bash
sudo port install \
autoconf automake libtool pkgconfig git gperf libgcrypt \
libunistring libconfuse ffmpeg libevent json-c libwebsockets curl
libunistring libconfuse ffmpeg libevent json-c libwebsockets curl \
libplist libsodium
```
Download, configure, build and install the Mini-XML library:
@ -170,8 +169,6 @@ Optional features require the following additional ports:
Feature | Configure argument | Ports
--------------------|--------------------------|-------------------
Chromecast | `--enable-chromecast` | gnutls protobuf-c
iTunes XML | `--disable-itunes` | libplist
Device verification | `--disable-verification` | libplist libsodium
Pulseaudio | `--with-pulseaudio` | pulseaudio
Clone the forked-daapd repo:
@ -263,21 +260,21 @@ Libraries:
from <https://github.com/json-c/json-c/wiki>
- libcurl
from <http://curl.haxx.se/libcurl/>
- libasound (optional - ALSA local audio)
often already installed as part of your distro
- libpulse (optional - Pulseaudio local audio)
from <https://www.freedesktop.org/wiki/Software/PulseAudio/Download/>
- libplist 0.16+ (optional - iTunes XML support and Apple TV device verification)
- libplist 0.16+
from <http://github.com/JonathanBeck/libplist/downloads>
- libsodium (optional - Apple TV device verification)
- libsodium
from <https://download.libsodium.org/doc/>
- libspotify (optional - Spotify support)
- libasound (optional - ALSA local audio)
often already installed as part of your distro
- libpulse (optional - Pulseaudio local audio)
from <https://www.freedesktop.org/wiki/Software/PulseAudio/Download/>
- libspotify (optional - Spotify support)
from <https://developer.spotify.com>
- libgnutls (optional - Chromecast support)
- libgnutls (optional - Chromecast support)
from <http://www.gnutls.org/>
- libprotobuf-c (optional - Chromecast support)
- libprotobuf-c (optional - Chromecast support)
from <https://github.com/protobuf-c/protobuf-c/wiki>
- libwebsockets 2.0.2+ (optional - websocket support)
- libwebsockets 2.0.2+ (optional - websocket support)
from <https://libwebsockets.org/>
If using binary packages, remember that you need the development packages to
@ -325,15 +322,9 @@ to run on systems without libspotify (the Spotify features will then be disabled
Support for LastFM scrobbling is optional. Use `--enable-lastfm` to enable this
feature.
Support for iTunes Music Library XML format is optional. Use `--disable-itunes`
to disable this feature.
Support for the MPD protocol is optional. Use `--disable-mpd` to disable this
feature.
Support for Apple TV device verification is optional. Use `--disable-verification`
to disable this feature.
Support for Chromecast devices is optional. Use `--enable-chromecast` to enable
this feature.

View File

@ -118,6 +118,7 @@ FORK_FUNC_REQUIRE([COMMON], [GNU libunistring], [LIBUNISTRING], [unistring],
FORK_MODULES_CHECK([FORKED], [ZLIB], [zlib], [deflate], [zlib.h])
FORK_MODULES_CHECK([FORKED], [CONFUSE], [libconfuse >= 3.0], [cfg_init], [confuse.h])
FORK_MODULES_CHECK([FORKED], [LIBCURL], [libcurl], [curl_global_init], [curl/curl.h])
FORK_MODULES_CHECK([FORKED], [LIBSODIUM], [libsodium], [sodium_init], [sodium.h])
FORK_MODULES_CHECK([FORKED], [MINIXML], [mxml],
[mxmlNewElement], [mxml.h],
@ -186,6 +187,7 @@ AM_PATH_GPG_ERROR([1.6])
FORK_FUNC_REQUIRE([FORKED], [GNUPG Error Values], [GPG_ERROR_MT], [gpg-error],
[gpg_err_init], [gpg-error.h])
AC_CHECK_HEADER([sys/eventfd.h], [AC_CHECK_FUNCS([eventfd])])
AC_CHECK_HEADER([sys/timerfd.h], [AC_CHECK_FUNC([timerfd_create],
@ -266,10 +268,6 @@ FORK_ARG_WITH_CHECK([FORKED_OPTS], [libwebsockets support], [libwebsockets], [LI
[libwebsockets >= 2.0.2])
AM_CONDITIONAL([COND_LIBWEBSOCKETS], [[test "x$with_libwebsockets" = "xyes"]])
dnl Build with libsodium
FORK_ARG_WITH_CHECK([FORKED_OPTS], [libsodium support], [libsodium], [LIBSODIUM],
[libsodium], [sodium_init], [sodium.h])
dnl Build with libevent_pthreads
FORK_ARG_WITH_CHECK([FORKED_OPTS], [libevent_pthreads support],
[libevent_pthreads], [LIBEVENT_PTHREADS], [libevent_pthreads],
@ -327,27 +325,10 @@ AM_CONDITIONAL([COND_PROTOBUF_OLD], [[test "x$protobuf_old" = "xyes"]])
dnl DB profiling support
FORK_ARG_ENABLE([DB profiling support], [dbprofile], [DB_PROFILE])
dnl iTunes playlists with libplist
FORK_ARG_DISABLE([iTunes Music Library XML support], [itunes], [ITUNES],
[AS_IF([[test "x$with_libplist" = "xno"]],
[AC_MSG_ERROR([[iTunes Music Library XML support requires libplist]])])
])
AM_CONDITIONAL([COND_ITUNES], [[test "x$enable_itunes" = "xyes"]])
dnl MPD support
FORK_ARG_DISABLE([MPD client protocol support], [mpd], [MPD])
AM_CONDITIONAL([COND_MPD], [[test "x$enable_mpd" = "xyes"]])
dnl Apple device verification
FORK_ARG_DISABLE([Apple TV device verification], [verification], [RAOP_VERIFICATION],
[
AS_IF([[test "x$with_libsodium" = "xno"]],
[AC_MSG_ERROR([[Apple TV device verification requires libsodium]])])
AS_IF([[test "x$with_libplist" = "xno"]],
[AC_MSG_ERROR([[Apple TV device verification requires libplist]])])
])
AM_CONDITIONAL([COND_RAOP_VERIFICATION], [[test "x$enable_verification" = "xyes"]])
dnl Include default webinterface
FORK_ARG_DISABLE([Include default web interface], [webinterface], [WEBINTERFACE],
[AS_IF([[test "x$with_libwebsockets" = "xno"]],

View File

@ -1,10 +1,6 @@
sbin_PROGRAMS = forked-daapd
if COND_ITUNES
ITUNES_SRC=library/filescanner_itunes.c
endif
if COND_SPOTIFY
SPOTIFY_SRC=spotify.c spotify.h spotify_webapi.c spotify_webapi.h inputs/spotify.c
endif
@ -25,10 +21,8 @@ if COND_MPD
MPD_SRC=mpd.c mpd.h
endif
if COND_RAOP_VERIFICATION
RAOP_VERIFICATION_SRC=outputs/pair_fruit.c outputs/pair_homekit.c outputs/pair.c outputs/pair-internal.h outputs/pair.h
PAIR_AP_SRC=outputs/pair_fruit.c outputs/pair_homekit.c outputs/pair.c outputs/pair-internal.h outputs/pair.h
AM_CPPFLAGS += -DCONFIG_GCRYPT
endif
if COND_ALSA
ALSA_SRC=outputs/alsa.c
@ -103,7 +97,7 @@ forked_daapd_SOURCES = main.c \
cache.c cache.h \
library/filescanner.c library/filescanner.h \
library/filescanner_ffmpeg.c library/filescanner_playlist.c \
library/filescanner_smartpl.c $(ITUNES_SRC) \
library/filescanner_smartpl.c library/filescanner_itunes.c \
library/rssscanner.c \
library.c library.h \
$(MDNS_SRC) mdns.h \
@ -134,8 +128,7 @@ forked_daapd_SOURCES = main.c \
inputs/file.c inputs/http.c inputs/pipe.c inputs/timer.c \
outputs.h outputs.c \
outputs/rtp_common.h outputs/rtp_common.c \
outputs/raop.c $(RAOP_VERIFICATION_SRC) \
outputs/airplay.c \
outputs/raop.c outputs/airplay.c $(PAIR_AP_SRC) \
outputs/streaming.c outputs/dummy.c outputs/fifo.c \
$(ALSA_SRC) $(PULSEAUDIO_SRC) $(CHROMECAST_SRC) \
evrtsp/rtsp.c evrtsp/evrtsp.h evrtsp/rtsp-internal.h evrtsp/log.h \

View File

@ -57,11 +57,6 @@ static char *buildopts[] =
#else
"libav",
#endif
#ifdef ITUNES
"iTunes XML",
#else
"Without iTunes XML",
#endif
#ifdef SPOTIFY
"Spotify",
#else
@ -82,11 +77,6 @@ static char *buildopts[] =
#else
"Without MPD",
#endif
#ifdef RAOP_VERIFICATION
"Device verification",
#else
"Without device verification",
#endif
#ifdef HAVE_LIBWEBSOCKETS
"Websockets",
#else

View File

@ -64,10 +64,7 @@
#include "dmap_common.h"
#include "rtp_common.h"
#include "outputs.h"
#ifdef RAOP_VERIFICATION
#include "pair.h"
#endif
#define ALAC_HEADER_LEN 3
@ -222,11 +219,9 @@ struct raop_session
unsigned short control_port;
unsigned short timing_port; // ATV4 has this set to 0, but it is not used by forked-daapd anyway
#ifdef RAOP_VERIFICATION
/* Device verification, see pair.h */
struct pair_verify_context *pair_verify_ctx;
struct pair_setup_context *pair_setup_ctx;
#endif
int server_fd;
@ -1658,7 +1653,6 @@ raop_send_req_options(struct raop_session *rs, evrtsp_req_cb cb, const char *log
return 0;
}
#ifdef RAOP_VERIFICATION
static int
raop_send_req_pin_start(struct raop_session *rs, evrtsp_req_cb cb, const char *log_caller)
{
@ -1696,14 +1690,6 @@ raop_send_req_pin_start(struct raop_session *rs, evrtsp_req_cb cb, const char *l
return 0;
}
#else
static int
raop_send_req_pin_start(struct raop_session *rs, evrtsp_req_cb cb, const char *log_caller)
{
DPRINTF(E_LOG, L_RAOP, "Device '%s' requires verification, but forked-daapd was built with --disable-verification\n", rs->devname);
return -1;
}
#endif
/* ------------------------------ Session handling -------------------------- */
@ -3987,7 +3973,6 @@ raop_cb_startup_options(struct evrtsp_request *req, void *arg)
/* ------------------------- tvOS device verification ----------------------- */
/* e.g. for the ATV4 (read it from the bottom and up) */
#ifdef RAOP_VERIFICATION
static int
raop_pair_response_process(int step, struct evrtsp_request *req, struct raop_session *rs)
{
@ -4365,16 +4350,6 @@ raop_device_authorize(struct output_device *device, const char *pin, int callbac
return 1;
}
#else
static int
raop_pair_verify(struct raop_session *rs)
{
DPRINTF(E_LOG, L_RAOP, "Device '%s' requires verification, but forked-daapd was built with --disable-verification\n", rs->devname);
return -1;
}
#endif /* RAOP_VERIFICATION */
/* ------------------ RAOP devices discovery - mDNS callback ---------------- */
/* Thread: main (mdns) */
@ -4995,7 +4970,5 @@ struct output_definition output_raop =
.metadata_prepare = raop_metadata_prepare,
.metadata_send = raop_metadata_send,
.metadata_purge = raop_metadata_purge,
#ifdef RAOP_VERIFICATION
.device_authorize = raop_device_authorize,
#endif
};