428277b03e
Some IPTV streams will need ffmpef, the command line tool), while some won't, so we just suggest that to the user in the help text. There were two alternatives, but neither were very convincing: - always enforce that ffmpeg is enabled - only enforce ffmpeg to be enabled when the package is already enabled In either case, that may cary the ffmpeg tool when it really is not needed. So leave it to the user to decide whether they want it or not. tvheadend now has a bunch of options, so make it a sub-menu. Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> [yann.morin.1998@free.fr: - do not forcibly enable ffmpeg-the-commandline-tool - one option per-commit ] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
209 lines
5.5 KiB
Makefile
209 lines
5.5 KiB
Makefile
################################################################################
|
|
#
|
|
# tvheadend
|
|
#
|
|
################################################################################
|
|
|
|
TVHEADEND_VERSION = dbaa0f850394af8ab845df802f5f781ac0218ec4
|
|
TVHEADEND_SITE = $(call github,tvheadend,tvheadend,$(TVHEADEND_VERSION))
|
|
TVHEADEND_LICENSE = GPL-3.0+
|
|
TVHEADEND_LICENSE_FILES = LICENSE.md
|
|
TVHEADEND_DEPENDENCIES = \
|
|
host-gettext \
|
|
host-pkgconf \
|
|
host-pngquant \
|
|
$(if $(BR2_PACKAGE_PYTHON3),host-python3,host-python) \
|
|
openssl
|
|
|
|
ifeq ($(BR2_PACKAGE_AVAHI),y)
|
|
TVHEADEND_DEPENDENCIES += avahi
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_DBUS),y)
|
|
TVHEADEND_DEPENDENCIES += dbus
|
|
TVHEADEND_CONF_OPTS += --enable-dbus-1
|
|
else
|
|
TVHEADEND_CONF_OPTS += --disable-dbus-1
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_TVHEADEND_TRANSCODING),y)
|
|
TVHEADEND_CONF_OPTS += --enable-libav --enable-libx264
|
|
TVHEADEND_DEPENDENCIES += ffmpeg x264
|
|
ifeq ($(BR2_PACKAGE_LIBVA),y)
|
|
TVHEADEND_CONF_OPTS += --enable-vaapi
|
|
TVHEADEND_DEPENDENCIES += libva
|
|
else
|
|
TVHEADEND_CONF_OPTS += --disable-vaapi
|
|
endif
|
|
ifeq ($(BR2_PACKAGE_OPUS),y)
|
|
TVHEADEND_CONF_OPTS += --enable-libopus
|
|
TVHEADEND_DEPENDENCIES += opus
|
|
else
|
|
TVHEADEND_CONF_OPTS += --disable-libopus
|
|
endif
|
|
ifeq ($(BR2_PACKAGE_RPI_USERLAND),y)
|
|
TVHEADEND_CONF_OPTS += --enable-omx
|
|
TVHEADEND_DEPENDENCIES += rpi-userland
|
|
else
|
|
TVHEADEND_CONF_OPTS += --disable-omx
|
|
endif
|
|
ifeq ($(BR2_PACKAGE_X265),y)
|
|
TVHEADEND_CONF_OPTS += --enable-libx265
|
|
TVHEADEND_DEPENDENCIES += x265
|
|
else
|
|
TVHEADEND_CONF_OPTS += --disable-libx265
|
|
endif
|
|
else
|
|
TVHEADEND_CONF_OPTS += \
|
|
--disable-libav \
|
|
--disable-libopus \
|
|
--disable-omx \
|
|
--disable-vaapi \
|
|
--disable-libx264 \
|
|
--disable-libx265
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_TVHEADEND_DESCRAMBLER),y)
|
|
TVHEADEND_CONF_OPTS += \
|
|
--enable-cardclient \
|
|
--enable-cwc \
|
|
--enable-cccam \
|
|
--enable-capmt \
|
|
--enable-constcw
|
|
else
|
|
TVHEADEND_CONF_OPTS += \
|
|
--disable-cardclient \
|
|
--disable-cwc \
|
|
--disable-cccam \
|
|
--disable-capmt \
|
|
--disable-constcw
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_TVHEADEND_IPTV),y)
|
|
TVHEADEND_CONF_OPTS += --enable-iptv
|
|
else
|
|
TVHEADEND_CONF_OPTS += --disable-iptv
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_TVHEADEND_SATIP),y)
|
|
TVHEADEND_CONF_OPTS += --enable-satip_client --enable-satip_server
|
|
else
|
|
TVHEADEND_CONF_OPTS += --disable-satip_client --disable-satip_server
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_TVHEADEND_TIMESHIFT),y)
|
|
TVHEADEND_CONF_OPTS += --enable-timeshift
|
|
else
|
|
TVHEADEND_CONF_OPTS += --disable-timeshift
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_LIBDVBCSA),y)
|
|
TVHEADEND_DEPENDENCIES += libdvbcsa
|
|
TVHEADEND_CONF_OPTS += --enable-tvhcsa
|
|
else
|
|
TVHEADEND_CONF_OPTS += --disable-tvhcsa
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_LIBHDHOMERUN),y)
|
|
TVHEADEND_DEPENDENCIES += libhdhomerun
|
|
TVHEADEND_CONF_OPTS += --enable-hdhomerun_client
|
|
else
|
|
TVHEADEND_CONF_OPTS += --disable-hdhomerun_client
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_LIBICONV),y)
|
|
TVHEADEND_DEPENDENCIES += libiconv
|
|
endif
|
|
|
|
TVHEADEND_CFLAGS = $(TARGET_CFLAGS)
|
|
ifeq ($(BR2_PACKAGE_LIBURIPARSER),y)
|
|
TVHEADEND_DEPENDENCIES += liburiparser
|
|
TVHEADEND_CFLAGS += $(if $(BR2_USE_WCHAR),,-DURI_NO_UNICODE)
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_PCRE),y)
|
|
TVHEADEND_DEPENDENCIES += pcre
|
|
TVHEADEND_CONF_OPTS += --enable-pcre
|
|
else
|
|
TVHEADEND_CONF_OPTS += --disable-pcre
|
|
endif
|
|
|
|
ifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),)
|
|
TVHEADEND_CONF_OPTS += --disable-pie
|
|
endif
|
|
|
|
TVHEADEND_DEPENDENCIES += dtv-scan-tables
|
|
|
|
# The tvheadend build system expects the transponder data to be present inside
|
|
# its source tree. To prevent a download initiated by the build system just
|
|
# copy the data files in the right place and add the corresponding stamp file.
|
|
define TVHEADEND_INSTALL_DTV_SCAN_TABLES
|
|
$(INSTALL) -d $(@D)/data/dvb-scan
|
|
cp -r $(TARGET_DIR)/usr/share/dvb/* $(@D)/data/dvb-scan/
|
|
touch $(@D)/data/dvb-scan/.stamp
|
|
endef
|
|
TVHEADEND_PRE_CONFIGURE_HOOKS += TVHEADEND_INSTALL_DTV_SCAN_TABLES
|
|
|
|
define TVHEADEND_CONFIGURE_CMDS
|
|
(cd $(@D); \
|
|
$(TARGET_CONFIGURE_OPTS) \
|
|
$(TARGET_CONFIGURE_ARGS) \
|
|
CFLAGS="$(TVHEADEND_CFLAGS)" \
|
|
./configure \
|
|
--prefix=/usr \
|
|
--arch="$(ARCH)" \
|
|
--cpu="$(GCC_TARGET_CPU)" \
|
|
--nowerror \
|
|
--python="$(HOST_DIR)/bin/python" \
|
|
--enable-dvbscan \
|
|
--enable-bundle \
|
|
--enable-pngquant \
|
|
--disable-ffmpeg_static \
|
|
--disable-hdhomerun_static \
|
|
$(TVHEADEND_CONF_OPTS) \
|
|
)
|
|
endef
|
|
|
|
define TVHEADEND_FIX_PNGQUANT_PATH
|
|
$(SED) "s%^pngquant_bin =.*%pngquant_bin = '$(HOST_DIR)/bin/pngquant'%" \
|
|
$(@D)/support/mkbundle
|
|
endef
|
|
TVHEADEND_POST_CONFIGURE_HOOKS += TVHEADEND_FIX_PNGQUANT_PATH
|
|
|
|
define TVHEADEND_BUILD_CMDS
|
|
$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
|
|
endef
|
|
|
|
define TVHEADEND_INSTALL_TARGET_CMDS
|
|
$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(TARGET_DIR)" install
|
|
endef
|
|
|
|
# Remove documentation and source files that are not needed because we
|
|
# use the bundled web interface version.
|
|
define TVHEADEND_CLEAN_SHARE
|
|
rm -rf $(TARGET_DIR)/usr/share/tvheadend/docs
|
|
rm -rf $(TARGET_DIR)/usr/share/tvheadend/src
|
|
endef
|
|
|
|
TVHEADEND_POST_INSTALL_TARGET_HOOKS += TVHEADEND_CLEAN_SHARE
|
|
|
|
#----------------------------------------------------------------------------
|
|
# To run tvheadend, we need:
|
|
# - a startup script, and its config file
|
|
# - a non-root user to run as, and a home for it that is not accessible
|
|
# to the other users (because there will be crendentials in there)
|
|
|
|
define TVHEADEND_INSTALL_INIT_SYSV
|
|
$(INSTALL) -D package/tvheadend/etc.default.tvheadend $(TARGET_DIR)/etc/default/tvheadend
|
|
$(INSTALL) -D package/tvheadend/S99tvheadend $(TARGET_DIR)/etc/init.d/S99tvheadend
|
|
endef
|
|
|
|
define TVHEADEND_USERS
|
|
tvheadend -1 tvheadend -1 * /home/tvheadend - video TVHeadend daemon
|
|
endef
|
|
define TVHEADEND_PERMISSIONS
|
|
/home/tvheadend r 0700 tvheadend tvheadend - - - - -
|
|
endef
|
|
|
|
$(eval $(generic-package))
|