aboutsummaryrefslogtreecommitdiff
path: root/package/tvheadend/tvheadend.mk
blob: e19763e186f0089666eb9b4048a4f917a5797fd0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
################################################################################
#
# tvheadend
#
################################################################################

TVHEADEND_VERSION = febcf9818d7c37fec8a98d424934edcb3243d5e4
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)$(BR2_PACKAGE_XORG7),yy)
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_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))