xref: /OK3568_Linux_fs/buildroot/package/tvheadend/tvheadend.mk (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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