1*4882a593Smuzhiyun################################################################################ 2*4882a593Smuzhiyun# 3*4882a593Smuzhiyun# tvheadend 4*4882a593Smuzhiyun# 5*4882a593Smuzhiyun################################################################################ 6*4882a593Smuzhiyun 7*4882a593SmuzhiyunTVHEADEND_VERSION = dbaa0f850394af8ab845df802f5f781ac0218ec4 8*4882a593SmuzhiyunTVHEADEND_SITE = $(call github,tvheadend,tvheadend,$(TVHEADEND_VERSION)) 9*4882a593SmuzhiyunTVHEADEND_LICENSE = GPL-3.0+ 10*4882a593SmuzhiyunTVHEADEND_LICENSE_FILES = LICENSE.md 11*4882a593SmuzhiyunTVHEADEND_DEPENDENCIES = \ 12*4882a593Smuzhiyun host-gettext \ 13*4882a593Smuzhiyun host-pkgconf \ 14*4882a593Smuzhiyun host-pngquant \ 15*4882a593Smuzhiyun host-python3 \ 16*4882a593Smuzhiyun openssl 17*4882a593Smuzhiyun 18*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_AVAHI),y) 19*4882a593SmuzhiyunTVHEADEND_DEPENDENCIES += avahi 20*4882a593Smuzhiyunendif 21*4882a593Smuzhiyun 22*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_DBUS),y) 23*4882a593SmuzhiyunTVHEADEND_DEPENDENCIES += dbus 24*4882a593SmuzhiyunTVHEADEND_CONF_OPTS += --enable-dbus-1 25*4882a593Smuzhiyunelse 26*4882a593SmuzhiyunTVHEADEND_CONF_OPTS += --disable-dbus-1 27*4882a593Smuzhiyunendif 28*4882a593Smuzhiyun 29*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_TVHEADEND_TRANSCODING),y) 30*4882a593SmuzhiyunTVHEADEND_CONF_OPTS += --enable-libav --enable-libx264 31*4882a593SmuzhiyunTVHEADEND_DEPENDENCIES += ffmpeg x264 32*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBVA),y) 33*4882a593SmuzhiyunTVHEADEND_CONF_OPTS += --enable-vaapi 34*4882a593SmuzhiyunTVHEADEND_DEPENDENCIES += libva 35*4882a593Smuzhiyunelse 36*4882a593SmuzhiyunTVHEADEND_CONF_OPTS += --disable-vaapi 37*4882a593Smuzhiyunendif 38*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_OPUS),y) 39*4882a593SmuzhiyunTVHEADEND_CONF_OPTS += --enable-libopus 40*4882a593SmuzhiyunTVHEADEND_DEPENDENCIES += opus 41*4882a593Smuzhiyunelse 42*4882a593SmuzhiyunTVHEADEND_CONF_OPTS += --disable-libopus 43*4882a593Smuzhiyunendif 44*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_RPI_USERLAND),y) 45*4882a593SmuzhiyunTVHEADEND_CONF_OPTS += --enable-omx 46*4882a593SmuzhiyunTVHEADEND_DEPENDENCIES += rpi-userland 47*4882a593Smuzhiyunelse 48*4882a593SmuzhiyunTVHEADEND_CONF_OPTS += --disable-omx 49*4882a593Smuzhiyunendif 50*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_X265),y) 51*4882a593SmuzhiyunTVHEADEND_CONF_OPTS += --enable-libx265 52*4882a593SmuzhiyunTVHEADEND_DEPENDENCIES += x265 53*4882a593Smuzhiyunelse 54*4882a593SmuzhiyunTVHEADEND_CONF_OPTS += --disable-libx265 55*4882a593Smuzhiyunendif 56*4882a593Smuzhiyunelse 57*4882a593SmuzhiyunTVHEADEND_CONF_OPTS += \ 58*4882a593Smuzhiyun --disable-libav \ 59*4882a593Smuzhiyun --disable-libopus \ 60*4882a593Smuzhiyun --disable-omx \ 61*4882a593Smuzhiyun --disable-vaapi \ 62*4882a593Smuzhiyun --disable-libx264 \ 63*4882a593Smuzhiyun --disable-libx265 64*4882a593Smuzhiyunendif 65*4882a593Smuzhiyun 66*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_TVHEADEND_DESCRAMBLER),y) 67*4882a593SmuzhiyunTVHEADEND_CONF_OPTS += \ 68*4882a593Smuzhiyun --enable-cardclient \ 69*4882a593Smuzhiyun --enable-cwc \ 70*4882a593Smuzhiyun --enable-cccam \ 71*4882a593Smuzhiyun --enable-capmt \ 72*4882a593Smuzhiyun --enable-constcw 73*4882a593Smuzhiyunelse 74*4882a593SmuzhiyunTVHEADEND_CONF_OPTS += \ 75*4882a593Smuzhiyun --disable-cardclient \ 76*4882a593Smuzhiyun --disable-cwc \ 77*4882a593Smuzhiyun --disable-cccam \ 78*4882a593Smuzhiyun --disable-capmt \ 79*4882a593Smuzhiyun --disable-constcw 80*4882a593Smuzhiyunendif 81*4882a593Smuzhiyun 82*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_TVHEADEND_IPTV),y) 83*4882a593SmuzhiyunTVHEADEND_CONF_OPTS += --enable-iptv 84*4882a593Smuzhiyunelse 85*4882a593SmuzhiyunTVHEADEND_CONF_OPTS += --disable-iptv 86*4882a593Smuzhiyunendif 87*4882a593Smuzhiyun 88*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_TVHEADEND_SATIP),y) 89*4882a593SmuzhiyunTVHEADEND_CONF_OPTS += --enable-satip_client --enable-satip_server 90*4882a593Smuzhiyunelse 91*4882a593SmuzhiyunTVHEADEND_CONF_OPTS += --disable-satip_client --disable-satip_server 92*4882a593Smuzhiyunendif 93*4882a593Smuzhiyun 94*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_TVHEADEND_TIMESHIFT),y) 95*4882a593SmuzhiyunTVHEADEND_CONF_OPTS += --enable-timeshift 96*4882a593Smuzhiyunelse 97*4882a593SmuzhiyunTVHEADEND_CONF_OPTS += --disable-timeshift 98*4882a593Smuzhiyunendif 99*4882a593Smuzhiyun 100*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBDVBCSA),y) 101*4882a593SmuzhiyunTVHEADEND_DEPENDENCIES += libdvbcsa 102*4882a593SmuzhiyunTVHEADEND_CONF_OPTS += --enable-tvhcsa 103*4882a593Smuzhiyunelse 104*4882a593SmuzhiyunTVHEADEND_CONF_OPTS += --disable-tvhcsa 105*4882a593Smuzhiyunendif 106*4882a593Smuzhiyun 107*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBHDHOMERUN),y) 108*4882a593SmuzhiyunTVHEADEND_DEPENDENCIES += libhdhomerun 109*4882a593SmuzhiyunTVHEADEND_CONF_OPTS += --enable-hdhomerun_client 110*4882a593Smuzhiyunelse 111*4882a593SmuzhiyunTVHEADEND_CONF_OPTS += --disable-hdhomerun_client 112*4882a593Smuzhiyunendif 113*4882a593Smuzhiyun 114*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBICONV),y) 115*4882a593SmuzhiyunTVHEADEND_DEPENDENCIES += libiconv 116*4882a593Smuzhiyunendif 117*4882a593Smuzhiyun 118*4882a593SmuzhiyunTVHEADEND_CFLAGS = $(TARGET_CFLAGS) 119*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBURIPARSER),y) 120*4882a593SmuzhiyunTVHEADEND_DEPENDENCIES += liburiparser 121*4882a593SmuzhiyunTVHEADEND_CFLAGS += $(if $(BR2_USE_WCHAR),,-DURI_NO_UNICODE) 122*4882a593Smuzhiyunendif 123*4882a593Smuzhiyun 124*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_PCRE),y) 125*4882a593SmuzhiyunTVHEADEND_DEPENDENCIES += pcre 126*4882a593SmuzhiyunTVHEADEND_CONF_OPTS += --enable-pcre 127*4882a593Smuzhiyunelse 128*4882a593SmuzhiyunTVHEADEND_CONF_OPTS += --disable-pcre 129*4882a593Smuzhiyunendif 130*4882a593Smuzhiyun 131*4882a593Smuzhiyunifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),) 132*4882a593SmuzhiyunTVHEADEND_CONF_OPTS += --disable-pie 133*4882a593Smuzhiyunendif 134*4882a593Smuzhiyun 135*4882a593SmuzhiyunTVHEADEND_DEPENDENCIES += dtv-scan-tables 136*4882a593Smuzhiyun 137*4882a593Smuzhiyun# The tvheadend build system expects the transponder data to be present inside 138*4882a593Smuzhiyun# its source tree. To prevent a download initiated by the build system just 139*4882a593Smuzhiyun# copy the data files in the right place and add the corresponding stamp file. 140*4882a593Smuzhiyundefine TVHEADEND_INSTALL_DTV_SCAN_TABLES 141*4882a593Smuzhiyun $(INSTALL) -d $(@D)/data/dvb-scan 142*4882a593Smuzhiyun cp -r $(TARGET_DIR)/usr/share/dvb/* $(@D)/data/dvb-scan/ 143*4882a593Smuzhiyun touch $(@D)/data/dvb-scan/.stamp 144*4882a593Smuzhiyunendef 145*4882a593SmuzhiyunTVHEADEND_PRE_CONFIGURE_HOOKS += TVHEADEND_INSTALL_DTV_SCAN_TABLES 146*4882a593Smuzhiyun 147*4882a593Smuzhiyundefine TVHEADEND_CONFIGURE_CMDS 148*4882a593Smuzhiyun (cd $(@D); \ 149*4882a593Smuzhiyun $(TARGET_CONFIGURE_OPTS) \ 150*4882a593Smuzhiyun $(TARGET_CONFIGURE_ARGS) \ 151*4882a593Smuzhiyun CFLAGS="$(TVHEADEND_CFLAGS)" \ 152*4882a593Smuzhiyun ./configure \ 153*4882a593Smuzhiyun --prefix=/usr \ 154*4882a593Smuzhiyun --arch="$(ARCH)" \ 155*4882a593Smuzhiyun --cpu="$(GCC_TARGET_CPU)" \ 156*4882a593Smuzhiyun --nowerror \ 157*4882a593Smuzhiyun --python="$(HOST_DIR)/bin/python3" \ 158*4882a593Smuzhiyun --enable-dvbscan \ 159*4882a593Smuzhiyun --enable-bundle \ 160*4882a593Smuzhiyun --enable-pngquant \ 161*4882a593Smuzhiyun --disable-ffmpeg_static \ 162*4882a593Smuzhiyun --disable-hdhomerun_static \ 163*4882a593Smuzhiyun $(TVHEADEND_CONF_OPTS) \ 164*4882a593Smuzhiyun ) 165*4882a593Smuzhiyunendef 166*4882a593Smuzhiyun 167*4882a593Smuzhiyundefine TVHEADEND_FIX_PNGQUANT_PATH 168*4882a593Smuzhiyun $(SED) "s%^pngquant_bin =.*%pngquant_bin = '$(HOST_DIR)/bin/pngquant'%" \ 169*4882a593Smuzhiyun $(@D)/support/mkbundle 170*4882a593Smuzhiyunendef 171*4882a593SmuzhiyunTVHEADEND_POST_CONFIGURE_HOOKS += TVHEADEND_FIX_PNGQUANT_PATH 172*4882a593Smuzhiyun 173*4882a593Smuzhiyundefine TVHEADEND_BUILD_CMDS 174*4882a593Smuzhiyun $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) 175*4882a593Smuzhiyunendef 176*4882a593Smuzhiyun 177*4882a593Smuzhiyundefine TVHEADEND_INSTALL_TARGET_CMDS 178*4882a593Smuzhiyun $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(TARGET_DIR)" install 179*4882a593Smuzhiyunendef 180*4882a593Smuzhiyun 181*4882a593Smuzhiyun# Remove documentation and source files that are not needed because we 182*4882a593Smuzhiyun# use the bundled web interface version. 183*4882a593Smuzhiyundefine TVHEADEND_CLEAN_SHARE 184*4882a593Smuzhiyun rm -rf $(TARGET_DIR)/usr/share/tvheadend/docs 185*4882a593Smuzhiyun rm -rf $(TARGET_DIR)/usr/share/tvheadend/src 186*4882a593Smuzhiyunendef 187*4882a593Smuzhiyun 188*4882a593SmuzhiyunTVHEADEND_POST_INSTALL_TARGET_HOOKS += TVHEADEND_CLEAN_SHARE 189*4882a593Smuzhiyun 190*4882a593Smuzhiyun#---------------------------------------------------------------------------- 191*4882a593Smuzhiyun# To run tvheadend, we need: 192*4882a593Smuzhiyun# - a startup script, and its config file 193*4882a593Smuzhiyun# - a non-root user to run as, and a home for it that is not accessible 194*4882a593Smuzhiyun# to the other users (because there will be crendentials in there) 195*4882a593Smuzhiyun 196*4882a593Smuzhiyundefine TVHEADEND_INSTALL_INIT_SYSV 197*4882a593Smuzhiyun $(INSTALL) -D package/tvheadend/etc.default.tvheadend \ 198*4882a593Smuzhiyun $(TARGET_DIR)/etc/default/tvheadend 199*4882a593Smuzhiyun $(INSTALL) -D package/tvheadend/S99tvheadend \ 200*4882a593Smuzhiyun $(TARGET_DIR)/etc/init.d/S99tvheadend 201*4882a593Smuzhiyunendef 202*4882a593Smuzhiyun 203*4882a593Smuzhiyundefine TVHEADEND_USERS 204*4882a593Smuzhiyun tvheadend -1 tvheadend -1 * /home/tvheadend - video TVHeadend daemon 205*4882a593Smuzhiyunendef 206*4882a593Smuzhiyundefine TVHEADEND_PERMISSIONS 207*4882a593Smuzhiyun /home/tvheadend r 0700 tvheadend tvheadend - - - - - 208*4882a593Smuzhiyunendef 209*4882a593Smuzhiyun 210*4882a593Smuzhiyun$(eval $(generic-package)) 211