squeezelite: restructure package variants

The squeezelite packages were lacking some features/codecs
(ssl, opus, wma, dsd and resampling) and required manual compilation to
enable these features/codecs.

Now there are 3 packages available that hopefully should satisfy most users:
* full
  This package enables all features and codecs.
* dynamic
  This package only enables PCM/AIFF and MP3 codecs and all other
  features/codecs can be added by manually installing OpenWrt packages.
* custom
  This package allows for customizing squeezelite.

Signed-off-by: Robert Högberg <robert.hogberg@gmail.com>
This commit is contained in:
Robert Högberg 2023-05-18 00:01:24 +02:00 committed by Rosen Penev
parent 7b71d000da
commit 7e796b73be

View file

@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=squeezelite PKG_NAME:=squeezelite
PKG_VERSION:=1.9.9-1432 PKG_VERSION:=1.9.9-1432
PKG_RELEASE:=1 PKG_RELEASE:=2
PKG_SOURCE_PROTO:=git PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/ralph-irving/squeezelite PKG_SOURCE_URL:=https://github.com/ralph-irving/squeezelite
@ -18,6 +18,7 @@ PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
PKG_LICENSE:=GPL-3.0-or-later PKG_LICENSE:=GPL-3.0-or-later
PKG_LICENSE_FILES:=LICENSE.txt PKG_LICENSE_FILES:=LICENSE.txt
PKG_BUILD_DEPENDS:=faad2 ffmpeg flac libsoxr libvorbis openssl opusfile
PKG_BUILD_PARALLEL:=1 PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/package.mk
@ -28,104 +29,183 @@ define Package/squeezelite/default
TITLE:=Headless squeezebox emulator TITLE:=Headless squeezebox emulator
PROVIDES:=squeezelite PROVIDES:=squeezelite
URL:=https://github.com/ralph-irving/squeezelite URL:=https://github.com/ralph-irving/squeezelite
DEPENDS:= +alsa-lib +SQUEEZELITE_RESAMPLE:libsoxr DEPENDS:=+alsa-lib
MENU:=1
endef endef
define Package/squeezelite-full define Package/squeezelite-full
$(call Package/squeezelite/default) $(call Package/squeezelite/default)
TITLE+= (full) TITLE+= (full)
DEPENDS+= +libflac +libvorbis +libmpg123 +libfaad2 \
+SQUEEZELITE_OPUS:libopusfile \
+SQUEEZELITE_SSL:libopenssl \
+SQUEEZELITE_WMA:libffmpeg-audio-dec
VARIANT:=full VARIANT:=full
DEPENDS+= +libfaad2 +libffmpeg-audio-dec +libflac +libmpg123 \
+libopenssl +libopusfile +libsoxr +libvorbis
endef endef
define Package/squeezelite-mini define Package/squeezelite-dynamic
$(call Package/squeezelite/default) $(call Package/squeezelite/default)
TITLE+= (minimal) TITLE+= (dynamic)
VARIANT:=mini VARIANT:=dynamic
DEPENDS+= +libmpg123
endef endef
define Package/squeezelite/config/default define Package/squeezelite-custom
$(call Package/squeezelite/default)
config SQUEEZELITE_WMA TITLE+= (custom)
bool "WMA/ALAC decode support" VARIANT:=custom
depends on BUILD_PATENTED DEPENDS+= @!ALL \
help +SQUEEZELITE_AAC:libfaad2 \
Include WMA and ALAC decoding using ffmpeg +SQUEEZELITE_FLAC:libflac \
default n +SQUEEZELITE_MP3_MAD:libmad \
+SQUEEZELITE_MP3_MPG123:libmpg123 \
config SQUEEZELITE_RESAMPLE +SQUEEZELITE_OPUS:libopusfile \
bool "Resample support" +SQUEEZELITE_RESAMPLE:libsoxr \
help +SQUEEZELITE_SSL:libopenssl \
Include support for resampling using libsoxr +SQUEEZELITE_VORBIS:libvorbis \
default n +SQUEEZELITE_VORBIS_TREMOR:libvorbisidec \
+SQUEEZELITE_WMA_ALAC:libffmpeg-audio-dec
config SQUEEZELITE_DSD MENU:=1
bool "DSD playback over PCM (DoP)"
help
Include support for DSD over PCM for compatible DAC
default n
config SQUEEZELITE_SSL
bool "SSL/TLS support"
help
Include SSL/TLS support for use with e.g. https media URLs
default n
config SQUEEZELITE_OPUS
bool "Opus codec support"
help
Include Opus codec support
default n
endef endef
define Package/squeezelite-full/config define Package/squeezelite-custom/config
if PACKAGE_squeezelite-full if PACKAGE_squeezelite-custom
$(call Package/squeezelite/config/default) config SQUEEZELITE_AAC
endif bool "AAC codec support"
endef help
AAC codec support
default n
define Package/squeezelite-mini/config config SQUEEZELITE_DSD
if PACKAGE_squeezelite-mini bool "DSD playback over PCM (DoP)"
$(call Package/squeezelite/config/default) help
endif Include support for DSD over PCM for compatible DAC
default n
config SQUEEZELITE_FLAC
bool "FLAC codec support"
help
FLAC codec support
default n
config SQUEEZELITE_MP3_MAD
bool "MP3 codec support (libmad)"
help
MP3 codec support (libmad)
default n
config SQUEEZELITE_MP3_MPG123
bool "MP3 codec support (libmpg123)"
help
MP3 codec support (libmpg123)
default n
config SQUEEZELITE_OPUS
bool "Opus codec support"
help
Opus codec support
default n
config SQUEEZELITE_RESAMPLE
bool "Resample support"
help
Include support for resampling using libsoxr
default n
config SQUEEZELITE_SSL
bool "SSL/TLS support"
help
Include SSL/TLS support for use with e.g. https media URLs
default n
config SQUEEZELITE_VORBIS
bool "Vorbis codec support"
help
Vorbis codec support
default n
config SQUEEZELITE_VORBIS_TREMOR
bool "Vorbis codec support (Tremor)"
help
Vorbis codec support (Tremor (libvorbisidec))
default n
config SQUEEZELITE_WMA_ALAC
bool "WMA/ALAC decode support"
help
WMA and ALAC codec support
default n
endif
endef endef
define Package/squeezelite/description/default define Package/squeezelite/description/default
Squeezelite is a small headless squeezebox emulator for linux using alsa audio output Squeezelite is a small headless squeezebox emulator for linux using alsa audio output
It is aimed at supporting high quality audio at multiple sample rates including It is aimed at supporting high quality audio at multiple sample rates including
44.1/48/88.2/96/176.4/192k/352.8/384kHz 44.1/48/88.2/96/176.4/192/352.8/384 kHz
Supported codecs: mp3, flac, ogg, aac, (wma and alac via ffmpeg), opus (optional)
Native support for PCM builtin
Optional support of DSD playback via PCM for DoP capable DAC
Optional resampling to match sound device
endef endef
define Package/squeezelite-full/description define Package/squeezelite-full/description
$(call Package/squeezelite/description/default) $(call Package/squeezelite/description/default)
This package includes all features and codecs.
This package has all the audio codecs compiled in. Supported codecs: AAC, AIFF, ALAC, FLAC, MP3, Ogg, Opus, PCM and WMA
Features:
* Resampling to match sound device
* DSD playback via PCM for DoP capable DAC
endef endef
define Package/squeezelite-mini/description define Package/squeezelite-dynamic/description
$(call Package/squeezelite/description/default) $(call Package/squeezelite/description/default)
This package includes some basic functionality, and it's possible to
add more features and codecs by manually installing additional libraries.
This package will dynamically load installed codecs. Built in codec support: AIFF, MP3, PCM
The following features and codecs can be enabled by installing additional
libraries (library package name in parentheses):
* Resampling (libsoxr)
* Codecs:
* AAC (libfaad2)
* FLAC (libflac)
* Ogg (libvorbis or libvorbisidec)
* Opus (libopusfile)
* WMA and ALAC (libffmpeg-audio-dec)
endef endef
opts+= -DNO_MAD define Package/squeezelite-custom/description
$(call Package/squeezelite/description/default)
This package allows for customizing squeezelite with specific codecs and features.
endef
ifeq ($(CONFIG_SQUEEZELITE_WMA),y) ifeq ($(BUILD_VARIANT),full)
opts+= -DFFMPEG opts+= -DLINKALL
opts+= -DDSD -DFFMPEG -DOPUS -DRESAMPLE -DUSE_SSL
opts+= -DNO_MAD
TARGET_CFLAGS+=-I$(STAGING_DIR)/usr/include/opus
else ifeq ($(BUILD_VARIANT),dynamic)
opts+= -DFFMPEG -DOPUS -DRESAMPLE -DUSE_SSL
opts+= -DNO_MAD
TARGET_CFLAGS+=-I$(STAGING_DIR)/usr/include/opus
else ifeq ($(BUILD_VARIANT),custom)
ifneq ($(CONFIG_SQUEEZELITE_AAC),y)
opts+= -DNO_FAAD
endif endif
ifeq ($(CONFIG_SQUEEZELITE_DSD),y) ifeq ($(CONFIG_SQUEEZELITE_DSD),y)
opts+= -DDSD opts+= -DDSD
endif endif
ifneq ($(CONFIG_SQUEEZELITE_MP3_MAD),y)
opts+= -DNO_MAD
endif
ifneq ($(CONFIG_SQUEEZELITE_MP3_MPG123),y)
opts+= -DNO_MPG123
endif
ifeq ($(CONFIG_SQUEEZELITE_OPUS),y)
opts+= -DOPUS
TARGET_CFLAGS+=-I$(STAGING_DIR)/usr/include/opus
endif
ifeq ($(CONFIG_SQUEEZELITE_RESAMPLE),y) ifeq ($(CONFIG_SQUEEZELITE_RESAMPLE),y)
opts+= -DRESAMPLE opts+= -DRESAMPLE
endif endif
@ -134,13 +214,10 @@ ifeq ($(CONFIG_SQUEEZELITE_SSL),y)
opts+= -DUSE_SSL opts+= -DUSE_SSL
endif endif
ifeq ($(CONFIG_SQUEEZELITE_OPUS),y) ifeq ($(CONFIG_SQUEEZELITE_WMA_ALAC),y)
opts+= -DOPUS opts+= -DFFMPEG
TARGET_CFLAGS+=-I$(STAGING_DIR)/usr/include/opus
endif endif
ifeq ($(BUILD_VARIANT),full)
opts+= -DLINKALL
endif endif
MAKE_FLAGS+=OPTS="$(opts)" MAKE_FLAGS+=OPTS="$(opts)"
@ -149,8 +226,9 @@ define Package/squeezelite/conffiles
/etc/config/squeezelite /etc/config/squeezelite
endef endef
Package/squeezelite-mini/conffiles = $(Package/squeezelite/conffiles)
Package/squeezelite-full/conffiles = $(Package/squeezelite/conffiles) Package/squeezelite-full/conffiles = $(Package/squeezelite/conffiles)
Package/squeezelite-dynamic/conffiles = $(Package/squeezelite/conffiles)
Package/squeezelite-custom/conffiles = $(Package/squeezelite/conffiles)
define Package/squeezelite/install define Package/squeezelite/install
$(INSTALL_DIR) $(1)/usr/bin $(INSTALL_DIR) $(1)/usr/bin
@ -161,8 +239,10 @@ define Package/squeezelite/install
$(INSTALL_CONF) ./files/squeezelite.conf $(1)/etc/config/squeezelite $(INSTALL_CONF) ./files/squeezelite.conf $(1)/etc/config/squeezelite
endef endef
Package/squeezelite-mini/install=$(Package/squeezelite/install)
Package/squeezelite-full/install=$(Package/squeezelite/install) Package/squeezelite-full/install=$(Package/squeezelite/install)
Package/squeezelite-dynamic/install=$(Package/squeezelite/install)
Package/squeezelite-custom/install=$(Package/squeezelite/install)
$(eval $(call BuildPackage,squeezelite-mini))
$(eval $(call BuildPackage,squeezelite-full)) $(eval $(call BuildPackage,squeezelite-full))
$(eval $(call BuildPackage,squeezelite-dynamic))
$(eval $(call BuildPackage,squeezelite-custom))