]> rtime.felk.cvut.cz Git - coffee/buildroot.git/blob - package/kodi/kodi.mk
package/kodi: remove imx support
[coffee/buildroot.git] / package / kodi / kodi.mk
1 ################################################################################
2 #
3 # kodi
4 #
5 ################################################################################
6
7 # When updating the version, please also update kodi-jsonschemabuilder
8 # and kodi-texturepacker
9 KODI_VERSION = 17.6-Krypton
10 KODI_SITE = $(call github,xbmc,xbmc,$(KODI_VERSION))
11 KODI_LICENSE = GPL-2.0
12 KODI_LICENSE_FILES = LICENSE.GPL
13 # needed for binary addons
14 KODI_INSTALL_STAGING = YES
15 KODI_DEPENDENCIES = \
16         bzip2 \
17         expat \
18         ffmpeg \
19         fontconfig \
20         freetype \
21         host-gawk \
22         host-gperf \
23         host-kodi-jsonschemabuilder \
24         host-kodi-texturepacker \
25         host-nasm \
26         host-swig \
27         host-xmlstarlet \
28         host-zip \
29         libass \
30         libcdio \
31         libcrossguid \
32         libcurl \
33         libfribidi \
34         libplist \
35         libsamplerate \
36         lzo \
37         ncurses \
38         openssl \
39         pcre \
40         python \
41         readline \
42         sqlite \
43         taglib \
44         tinyxml \
45         yajl \
46         zlib
47
48 KODI_SUBDIR = project/cmake
49
50 KODI_LIBDVDCSS_VERSION = 2f12236
51 KODI_LIBDVDNAV_VERSION = 981488f
52 KODI_LIBDVDREAD_VERSION = 17d99db
53
54 KODI_EXTRA_DOWNLOADS = \
55         https://github.com/xbmc/libdvdcss/archive/$(KODI_LIBDVDCSS_VERSION).tar.gz \
56         https://github.com/xbmc/libdvdnav/archive/$(KODI_LIBDVDNAV_VERSION).tar.gz \
57         https://github.com/xbmc/libdvdread/archive/$(KODI_LIBDVDREAD_VERSION).tar.gz
58
59 KODI_CONF_OPTS += \
60         -DCMAKE_C_FLAGS="$(TARGET_CFLAGS) $(KODI_C_FLAGS)" \
61         -DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) $(KODI_CXX_FLAGS)" \
62         -DENABLE_CCACHE=OFF \
63         -DENABLE_DVDCSS=ON \
64         -DENABLE_INTERNAL_CROSSGUID=OFF \
65         -DENABLE_INTERNAL_FFMPEG=OFF \
66         -DKODI_DEPENDSBUILD=OFF \
67         -DENABLE_OPENSSL=ON \
68         -DNATIVEPREFIX=$(HOST_DIR) \
69         -DDEPENDS_PATH=$(@D) \
70         -DWITH_FFMPEG=$(STAGING_DIR)/usr \
71         -DWITH_TEXTUREPACKER=$(HOST_DIR)/bin/TexturePacker \
72         -DLIBDVDCSS_URL=$(DL_DIR)/$(KODI_LIBDVDCSS_VERSION).tar.gz \
73         -DLIBDVDNAV_URL=$(DL_DIR)/$(KODI_LIBDVDNAV_VERSION).tar.gz \
74         -DLIBDVDREAD_URL=$(DL_DIR)/$(KODI_LIBDVDREAD_VERSION).tar.gz \
75         -DENABLE_IMX=OFF
76
77 ifeq ($(BR2_ENABLE_LOCALE),)
78 KODI_DEPENDENCIES += libiconv
79 endif
80
81 ifeq ($(BR2_PACKAGE_RPI_USERLAND),y)
82 KODI_CONF_OPTS += -DCORE_SYSTEM_NAME=rbpi
83 KODI_DEPENDENCIES += rpi-userland
84 # These CPU-specific options are only used on rbpi:
85 # https://github.com/xbmc/xbmc/blob/Krypton/project/cmake/scripts/rbpi/ArchSetup.cmake#L13
86 ifeq ($(BR2_arm1176jzf_s)$(BR2_cortex_a7)$(BR2_cortex_a53),y)
87 KODI_CONF_OPTS += -DWITH_CPU=$(BR2_GCC_TARGET_CPU)
88 endif
89 else
90 ifeq ($(BR2_arceb)$(BR2_arcle),y)
91 KODI_CONF_OPTS += -DWITH_ARCH=arc -DWITH_CPU=arc
92 else ifeq ($(BR2_armeb),y)
93 KODI_CONF_OPTS += -DWITH_ARCH=arm -DWITH_CPU=arm
94 else ifeq ($(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el),y)
95 KODI_CONF_OPTS += \
96         -DWITH_ARCH=mips$(if $(BR2_ARCH_IS_64),64) \
97         -DWITH_CPU=mips$(if $(BR2_ARCH_IS_64),64)
98 else ifeq ($(BR2_powerpc)$(BR2_powerpc64le),y)
99 KODI_CONF_OPTS += \
100         -DWITH_ARCH=powerpc$(if $(BR2_ARCH_IS_64),64) \
101         -DWITH_CPU=powerpc$(if $(BR2_ARCH_IS_64),64)
102 else ifeq ($(BR2_powerpc64)$(BR2_sparc64)$(BR2_sh4)$(BR2_xtensa),y)
103 KODI_CONF_OPTS += -DWITH_ARCH=$(BR2_ARCH) -DWITH_CPU=$(BR2_ARCH)
104 else
105 # Kodi auto-detects ARCH, tested: arm, aarch64, i386, x86_64
106 # see project/cmake/scripts/linux/ArchSetup.cmake
107 KODI_CONF_OPTS += -DWITH_CPU=$(BR2_ARCH)
108 endif
109 endif
110
111 ifeq ($(BR2_X86_CPU_HAS_SSE),y)
112 KODI_CONF_OPTS += -D_SSE_OK=ON -D_SSE_TRUE=ON
113 else
114 KODI_CONF_OPTS += -D_SSE_OK=OFF -D_SSE_TRUE=OFF
115 endif
116
117 ifeq ($(BR2_X86_CPU_HAS_SSE2),y)
118 KODI_CONF_OPTS += -D_SSE2_OK=ON -D_SSE2_TRUE=ON
119 else
120 KODI_CONF_OPTS += -D_SSE2_OK=OFF -D_SSE2_TRUE=OFF
121 endif
122
123 ifeq ($(BR2_X86_CPU_HAS_SSE3),y)
124 KODI_CONF_OPTS += -D_SSE3_OK=ON -D_SSE3_TRUE=ON
125 else
126 KODI_CONF_OPTS += -D_SSE3_OK=OFF -D_SSE3_TRUE=OFF
127 endif
128
129 ifeq ($(BR2_X86_CPU_HAS_SSSE3),y)
130 KODI_CONF_OPTS += -D_SSSE3_OK=ON -D_SSSE3_TRUE=ON
131 else
132 KODI_CONF_OPTS += -D_SSSE3_OK=OFF -D_SSSE3_TRUE=OFF
133 endif
134
135 ifeq ($(BR2_X86_CPU_HAS_SSE4),y)
136 KODI_CONF_OPTS += -D_SSE41_OK=ON -D_SSE41_TRUE=ON
137 else
138 KODI_CONF_OPTS += -D_SSE41_OK=OFF -D_SSE41_TRUE=OFF
139 endif
140
141 ifeq ($(BR2_X86_CPU_HAS_SSE42),y)
142 KODI_CONF_OPTS += -D_SSE42_OK=ON -D_SSE42_TRUE=ON
143 else
144 KODI_CONF_OPTS += -D_SSE42_OK=OFF -D_SSE42_TRUE=OFF
145 endif
146
147 ifeq ($(BR2_X86_CPU_HAS_AVX),y)
148 KODI_CONF_OPTS += -D_AVX_OK=ON -D_AVX_TRUE=ON
149 else
150 KODI_CONF_OPTS += -D_AVX_OK=OFF -D_AVX_TRUE=OFF
151 endif
152
153 ifeq ($(BR2_X86_CPU_HAS_AVX2),y)
154 KODI_CONF_OPTS += -D_AVX2_OK=ON -D_AVX2_TRUE=ON
155 else
156 KODI_CONF_OPTS += -D_AVX2_OK=OFF -D_AVX2_TRUE=OFF
157 endif
158
159 # mips: uses __atomic_load_8
160 ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)
161 KODI_CXX_FLAGS += -latomic
162 endif
163
164 ifeq ($(BR2_PACKAGE_KODI_MYSQL),y)
165 KODI_CONF_OPTS += -DENABLE_MYSQLCLIENT=ON
166 KODI_DEPENDENCIES += mysql
167 else
168 KODI_CONF_OPTS += -DENABLE_MYSQLCLIENT=OFF
169 endif
170
171 ifeq ($(BR2_PACKAGE_KODI_NONFREE),y)
172 KODI_CONF_OPTS += -DENABLE_NONFREE=ON
173 KODI_LICENSE := $(KODI_LICENSE), unrar
174 KODI_LICENSE_FILES += lib/UnrarXLib/license.txt
175 else
176 KODI_CONF_OPTS += -DENABLE_NONFREE=OFF
177 endif
178
179 ifeq ($(BR2_PACKAGE_RPI_USERLAND),y)
180 KODI_CONF_OPTS += -DCORE_SYSTEM_NAME=rbpi
181 KODI_DEPENDENCIES += rpi-userland
182 else
183 # Kodi considers "rpbi" and "linux" as two separate platforms. The
184 # below options, defined in
185 # project/cmake/scripts/linux/ArchSetup.cmake are only valid for the
186 # "linux" platforms. The "rpbi" platform has a different set of
187 # options, defined in project/cmake/scripts/rbpi/
188 KODI_CONF_OPTS += -DENABLE_LDGOLD=OFF
189 ifeq ($(BR2_PACKAGE_LIBAMCODEC),y)
190 KODI_CONF_OPTS += -DENABLE_AML=ON
191 KODI_DEPENDENCIES += libamcodec
192 else
193 KODI_CONF_OPTS += -DENABLE_AML=OFF
194 endif
195 endif
196
197 ifeq ($(BR2_PACKAGE_HAS_UDEV),y)
198 KODI_CONF_OPTS += -DENABLE_UDEV=ON
199 KODI_DEPENDENCIES += udev
200 else
201 KODI_CONF_OPTS += -DENABLE_UDEV=OFF
202 ifeq ($(BR2_PACKAGE_KODI_LIBUSB),y)
203 KODI_CONF_OPTS += -DENABLE_LIBUSB=ON
204 KODI_DEPENDENCIES += libusb-compat
205 endif
206 endif
207
208 ifeq ($(BR2_PACKAGE_LIBCAP),y)
209 KODI_CONF_OPTS += -DENABLE_CAP=ON
210 KODI_DEPENDENCIES += libcap
211 else
212 KODI_CONF_OPTS += -DENABLE_CAP=OFF
213 endif
214
215 ifeq ($(BR2_PACKAGE_LIBXML2)$(BR2_PACKAGE_LIBXSLT),yy)
216 KODI_CONF_OPTS += -DENABLE_XSLT=ON
217 KODI_DEPENDENCIES += libxml2 libxslt
218 else
219 KODI_CONF_OPTS += -DENABLE_XSLT=OFF
220 endif
221
222 ifeq ($(BR2_PACKAGE_KODI_BLUEZ),y)
223 KODI_CONF_OPTS += -DENABLE_BLUETOOTH=ON
224 KODI_DEPENDENCIES += bluez5_utils
225 else
226 KODI_CONF_OPTS += -DENABLE_BLUETOOTH=OFF
227 endif
228
229 ifeq ($(BR2_PACKAGE_KODI_DBUS),y)
230 KODI_DEPENDENCIES += dbus
231 KODI_CONF_OPTS += -DENABLE_DBUS=ON
232 else
233 KODI_CONF_OPTS += -DENABLE_DBUS=OFF
234 endif
235
236 ifeq ($(BR2_PACKAGE_KODI_EVENTCLIENTS),y)
237 KODI_CONF_OPTS += -DENABLE_EVENTCLIENTS=ON
238 else
239 KODI_CONF_OPTS += -DENABLE_EVENTCLIENTS=OFF
240 endif
241
242 ifeq ($(BR2_PACKAGE_KODI_ALSA_LIB),y)
243 KODI_CONF_OPTS += -DENABLE_ALSA=ON
244 KODI_DEPENDENCIES += alsa-lib
245 else
246 KODI_CONF_OPTS += -DENABLE_ALSA=OFF
247 endif
248
249 ifeq ($(BR2_PACKAGE_KODI_GL_EGL),y)
250 KODI_DEPENDENCIES += libegl libglu libgl xlib_libX11 xlib_libXext \
251         xlib_libXrandr libdrm
252 KODI_CONF_OPTS += -DENABLE_OPENGL=ON -DENABLE_X11=ON -DENABLE_OPENGLES=OFF
253 else
254 KODI_CONF_OPTS += -DENABLE_OPENGL=OFF -DENABLE_X11=OFF
255 endif
256
257 ifeq ($(BR2_PACKAGE_KODI_EGL_GLES),y)
258 KODI_DEPENDENCIES += libegl libgles
259 KODI_CONF_OPTS += \
260         -DENABLE_OPENGLES=ON
261 KODI_C_FLAGS += `$(PKG_CONFIG_HOST_BINARY) --cflags --libs egl`
262 KODI_CXX_FLAGS += `$(PKG_CONFIG_HOST_BINARY) --cflags --libs egl`
263 else
264 KODI_CONF_OPTS += -DENABLE_OPENGLES=OFF
265 endif
266
267 ifeq ($(BR2_PACKAGE_KODI_LIBMICROHTTPD),y)
268 KODI_CONF_OPTS += -DENABLE_MICROHTTPD=ON
269 KODI_DEPENDENCIES += libmicrohttpd
270 else
271 KODI_CONF_OPTS += -DENABLE_MICROHTTPD=OFF
272 endif
273
274 ifeq ($(BR2_PACKAGE_KODI_LIBSMBCLIENT),y)
275 KODI_DEPENDENCIES += samba4
276 KODI_CONF_OPTS += -DENABLE_SMBCLIENT=ON
277 else
278 KODI_CONF_OPTS += -DENABLE_SMBCLIENT=OFF
279 endif
280
281 ifeq ($(BR2_PACKAGE_KODI_LIBNFS),y)
282 KODI_DEPENDENCIES += libnfs
283 KODI_CONF_OPTS += -DENABLE_NFS=ON
284 else
285 KODI_CONF_OPTS += -DENABLE_NFS=OFF
286 endif
287
288 ifeq ($(BR2_PACKAGE_KODI_LIBBLURAY),y)
289 KODI_DEPENDENCIES += libbluray
290 KODI_CONF_OPTS += -DENABLE_BLURAY=ON
291 else
292 KODI_CONF_OPTS += -DENABLE_BLURAY=OFF
293 endif
294
295 ifeq ($(BR2_PACKAGE_KODI_LIBSHAIRPLAY),y)
296 KODI_DEPENDENCIES += libshairplay
297 KODI_CONF_OPTS += -DENABLE_AIRTUNES=ON
298 else
299 KODI_CONF_OPTS += -DENABLE_AIRTUNES=OFF
300 endif
301
302 ifeq ($(BR2_PACKAGE_KODI_LIBSSH),y)
303 KODI_DEPENDENCIES += libssh
304 KODI_CONF_OPTS += -DENABLE_SSH=ON
305 else
306 KODI_CONF_OPTS += -DENABLE_SSH=OFF
307 endif
308
309 ifeq ($(BR2_PACKAGE_KODI_AVAHI),y)
310 KODI_DEPENDENCIES += avahi
311 KODI_CONF_OPTS += -DENABLE_AVAHI=ON
312 else
313 KODI_CONF_OPTS += -DENABLE_AVAHI=OFF
314 endif
315
316 ifeq ($(BR2_PACKAGE_KODI_LIBCEC),y)
317 KODI_DEPENDENCIES += libcec
318 KODI_CONF_OPTS += -DENABLE_CEC=ON
319 else
320 KODI_CONF_OPTS += -DENABLE_CEC=OFF
321 endif
322
323 ifeq ($(BR2_PACKAGE_KODI_LCMS2),y)
324 KODI_DEPENDENCIES += lcms2
325 KODI_CONF_OPTS += -DENABLE_LCMS2=ON
326 else
327 KODI_CONF_OPTS += -DENABLE_LCMS2=OFF
328 endif
329
330 ifeq ($(BR2_PACKAGE_KODI_LIRC),y)
331 KODI_CONF_OPTS += -DENABLE_LIRC=ON
332 else
333 KODI_CONF_OPTS += -DENABLE_LIRC=OFF
334 endif
335
336 ifeq ($(BR2_PACKAGE_KODI_LIBTHEORA),y)
337 KODI_DEPENDENCIES += libtheora
338 endif
339
340 # kodi needs libva & libva-glx
341 ifeq ($(BR2_PACKAGE_KODI_LIBVA)$(BR2_PACKAGE_MESA3D_DRI_DRIVER),yy)
342 KODI_DEPENDENCIES += mesa3d libva
343 KODI_CONF_OPTS += -DENABLE_VAAPI=ON
344 else
345 KODI_CONF_OPTS += -DENABLE_VAAPI=OFF
346 endif
347
348 ifeq ($(BR2_PACKAGE_KODI_LIBVDPAU),y)
349 KODI_DEPENDENCIES += libvdpau
350 KODI_CONF_OPTS += -DENABLE_VDPAU=ON
351 else
352 KODI_CONF_OPTS += -DENABLE_VDPAU=OFF
353 endif
354
355 ifeq ($(BR2_PACKAGE_KODI_UPNP),y)
356 KODI_CONF_OPTS += -DENABLE_UPNP=ON
357 else
358 KODI_CONF_OPTS += -DENABLE_UPNP=OFF
359 endif
360
361 ifeq ($(BR2_PACKAGE_KODI_OPTICALDRIVE),y)
362 KODI_CONF_OPTS += -DENABLE_OPTICAL=ON
363 else
364 KODI_CONF_OPTS += -DENABLE_OPTICAL=OFF
365 endif
366
367 ifeq ($(BR2_PACKAGE_KODI_PULSEAUDIO),y)
368 KODI_CONF_OPTS += -DENABLE_PULSEAUDIO=ON
369 KODI_DEPENDENCIES += pulseaudio
370 else
371 KODI_CONF_OPTS += -DENABLE_PULSEAUDIO=OFF
372 endif
373
374 # Remove versioncheck addon, updating Kodi is done by building a new
375 # buildroot image.
376 KODI_ADDON_MANIFEST = $(TARGET_DIR)/usr/share/kodi/system/addon-manifest.xml
377 define KODI_CLEAN_UNUSED_ADDONS
378         rm -Rf $(TARGET_DIR)/usr/share/kodi/addons/service.xbmc.versioncheck
379         $(HOST_DIR)/bin/xml ed -L \
380                 -d "/addons/addon[text()='service.xbmc.versioncheck']" \
381                 $(KODI_ADDON_MANIFEST)
382 endef
383 KODI_POST_INSTALL_TARGET_HOOKS += KODI_CLEAN_UNUSED_ADDONS
384
385 define KODI_INSTALL_BR_WRAPPER
386         $(INSTALL) -D -m 0755 package/kodi/br-kodi \
387                 $(TARGET_DIR)/usr/bin/br-kodi
388 endef
389 KODI_POST_INSTALL_TARGET_HOOKS += KODI_INSTALL_BR_WRAPPER
390
391 # When run from a startup script, Kodi has no $HOME where to store its
392 # configuration, so ends up storing it in /.kodi  (yes, at the root of
393 # the rootfs). This is a problem for read-only filesystems. But we can't
394 # easily change that, so create /.kodi as a symlink where we want the
395 # config to eventually be. Add synlinks for the legacy XBMC name as well
396 define KODI_INSTALL_CONFIG_DIR
397         $(INSTALL) -d -m 0755 $(TARGET_DIR)/var/kodi
398         ln -sf /var/kodi $(TARGET_DIR)/.kodi
399         ln -sf /var/kodi $(TARGET_DIR)/var/xbmc
400         ln -sf /var/kodi $(TARGET_DIR)/.xbmc
401 endef
402 KODI_POST_INSTALL_TARGET_HOOKS += KODI_INSTALL_CONFIG_DIR
403
404 define KODI_INSTALL_INIT_SYSV
405         $(INSTALL) -D -m 755 package/kodi/S50kodi \
406                 $(TARGET_DIR)/etc/init.d/S50kodi
407 endef
408
409 define KODI_INSTALL_INIT_SYSTEMD
410         $(INSTALL) -D -m 644 package/kodi/kodi.service \
411                 $(TARGET_DIR)/usr/lib/systemd/system/kodi.service
412
413         mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants
414
415         ln -fs ../../../../usr/lib/systemd/system/kodi.service \
416                 $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/kodi.service
417 endef
418
419 $(eval $(cmake-package))