################################################################################ # # kodi # ################################################################################ KODI_VERSION = 16.1-Jarvis KODI_SITE = $(call github,xbmc,xbmc,$(KODI_VERSION)) KODI_LICENSE = GPL-2.0 KODI_LICENSE_FILES = LICENSE.GPL # needed for binary addons KODI_INSTALL_STAGING = YES KODI_DEPENDENCIES = \ boost \ bzip2 \ expat \ ffmpeg \ fontconfig \ freetype \ giflib \ host-gawk \ host-gettext \ host-giflib \ host-gperf \ host-libjpeg \ host-libpng \ host-lzo \ host-nasm \ host-swig \ host-zip \ jasper \ jpeg \ libass \ libcdio \ libcrossguid \ libcurl \ libdcadec \ libfribidi \ libgcrypt \ libmpeg2 \ libogg \ libplist \ libpng \ libsamplerate \ libsquish \ libvorbis \ libxml2 \ libxslt \ lzo \ ncurses \ openssl \ pcre \ python \ readline \ sqlite \ taglib \ tiff \ tinyxml \ yajl \ zlib KODI_CONF_ENV = \ PYTHON_VERSION="$(PYTHON_VERSION_MAJOR)" \ PYTHON_LDFLAGS="-lpython$(PYTHON_VERSION_MAJOR) -lpthread -ldl -lutil -lm" \ PYTHON_CPPFLAGS="-I$(STAGING_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR)" \ PYTHON_SITE_PKG="$(STAGING_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages" \ PYTHON_NOVERSIONCHECK="no-check" \ use_texturepacker_native=yes \ USE_TEXTUREPACKER_NATIVE_ROOT="$(HOST_DIR)/usr" \ TEXTUREPACKER_NATIVE_ROOT="$(HOST_DIR)/usr" KODI_CONF_OPTS += \ --with-ffmpeg=shared \ --disable-joystick \ --disable-openmax \ --disable-pulse \ --disable-vtbdecoder \ --enable-optimizations ifeq ($(BR2_PACKAGE_KODI_MYSQL),y) KODI_CONF_OPTS += --enable-mysql KODI_CONF_ENV += ac_cv_path_MYSQL_CONFIG="$(STAGING_DIR)/usr/bin/mysql_config" KODI_DEPENDENCIES += mysql else KODI_CONF_OPTS += --disable-mysql endif ifeq ($(BR2_PACKAGE_KODI_NONFREE),y) KODI_CONF_OPTS += --enable-non-free KODI_LICENSE := $(KODI_LICENSE), unrar KODI_LICENSE_FILES += lib/UnrarXLib/license.txt else KODI_CONF_OPTS += --disable-non-free endif ifeq ($(BR2_PACKAGE_RPI_USERLAND),y) KODI_DEPENDENCIES += rpi-userland KODI_CONF_OPTS += --with-platform=raspberry-pi --enable-player=omxplayer KODI_INCLUDES += \ -I$(STAGING_DIR)/usr/include/interface/vcos/pthreads \ -I$(STAGING_DIR)/usr/include/interface/vmcs_host/linux KODI_LIBS = -lvcos -lvchostif endif ifeq ($(BR2_PACKAGE_HAS_UDEV),y) KODI_DEPENDENCIES += udev KODI_CONF_OPTS += --enable-udev else KODI_CONF_OPTS += --disable-udev endif ifeq ($(BR2_PACKAGE_IMX_VPUWRAP),y) KODI_DEPENDENCIES += imx-vpuwrap KODI_CONF_OPTS += --enable-codec=imxvpu endif ifeq ($(BR2_PACKAGE_LIBAMCODEC),y) KODI_DEPENDENCIES += libamcodec KODI_CONF_OPTS += --enable-codec=amcodec KODI_INCLUDES += -I$(STAGING_DIR)/usr/include/amcodec endif KODI_CONF_ENV += \ INCLUDES="$(KODI_INCLUDES)" \ LIBS="$(KODI_LIBS)" ifeq ($(BR2_PACKAGE_LIBCAP),y) KODI_CONF_OPTS += --enable-libcap KODI_DEPENDENCIES += libcap else KODI_CONF_OPTS += --disable-libcap endif ifeq ($(BR2_PACKAGE_KODI_DBUS),y) KODI_DEPENDENCIES += dbus KODI_CONF_OPTS += --enable-dbus else KODI_CONF_OPTS += --disable-dbus endif ifeq ($(BR2_PACKAGE_KODI_ALSA_LIB),y) KODI_DEPENDENCIES += alsa-lib KODI_CONF_OPTS += --enable-alsa else KODI_CONF_OPTS += --disable-alsa endif # quote from kodi/configure.in: "GLES overwrites GL if both set to yes." # we choose the opposite because opengl offers more features, like libva support # GL means X11, and under X11, Kodi needs libdrm; libdrm is forcefully selected # by a modular Xorg server, which Kodi already depends on. ifeq ($(BR2_PACKAGE_KODI_GL),y) KODI_DEPENDENCIES += libglew libglu libgl xlib_libX11 xlib_libXext \ xlib_libXmu xlib_libXrandr xlib_libXt libdrm KODI_CONF_OPTS += --enable-gl --enable-x11 --disable-gles else KODI_CONF_OPTS += --disable-gl --disable-x11 ifeq ($(BR2_PACKAGE_KODI_EGL_GLES),y) KODI_DEPENDENCIES += libegl libgles KODI_CONF_ENV += CXXFLAGS="$(TARGET_CXXFLAGS) `$(PKG_CONFIG_HOST_BINARY) --cflags --libs egl`" KODI_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) `$(PKG_CONFIG_HOST_BINARY) --cflags --libs egl`" KODI_CONF_OPTS += --enable-gles else KODI_CONF_OPTS += --disable-gles endif endif ifeq ($(BR2_PACKAGE_KODI_LIBUSB),y) KODI_DEPENDENCIES += libusb-compat KODI_CONF_OPTS += --enable-libusb else KODI_CONF_OPTS += --disable-libusb endif ifeq ($(BR2_PACKAGE_KODI_LIBMICROHTTPD),y) KODI_DEPENDENCIES += libmicrohttpd KODI_CONF_OPTS += --enable-webserver else KODI_CONF_OPTS += --disable-webserver endif ifeq ($(BR2_PACKAGE_KODI_LIBSMBCLIENT),y) KODI_DEPENDENCIES += samba4 KODI_CONF_OPTS += --enable-samba else KODI_CONF_OPTS += --disable-samba endif ifeq ($(BR2_PACKAGE_KODI_LIBNFS),y) KODI_DEPENDENCIES += libnfs KODI_CONF_OPTS += --enable-nfs else KODI_CONF_OPTS += --disable-nfs endif ifeq ($(BR2_PACKAGE_KODI_RTMPDUMP),y) KODI_DEPENDENCIES += rtmpdump KODI_CONF_OPTS += --enable-rtmp else KODI_CONF_OPTS += --disable-rtmp endif ifeq ($(BR2_PACKAGE_KODI_LIBBLURAY),y) KODI_DEPENDENCIES += libbluray KODI_CONF_OPTS += --enable-libbluray else KODI_CONF_OPTS += --disable-libbluray endif ifeq ($(BR2_PACKAGE_KODI_LIBSHAIRPLAY),y) KODI_DEPENDENCIES += libshairplay KODI_CONF_OPTS += --enable-airplay else KODI_CONF_OPTS += --disable-airplay endif ifeq ($(BR2_PACKAGE_KODI_LIBSSH),y) KODI_DEPENDENCIES += libssh KODI_CONF_OPTS += --enable-ssh else KODI_CONF_OPTS += --disable-ssh endif ifeq ($(BR2_PACKAGE_KODI_AVAHI),y) KODI_DEPENDENCIES += avahi KODI_CONF_OPTS += --enable-avahi else KODI_CONF_OPTS += --disable-avahi endif ifeq ($(BR2_PACKAGE_KODI_LIBCEC),y) KODI_DEPENDENCIES += libcec KODI_CONF_OPTS += --enable-libcec else KODI_CONF_OPTS += --disable-libcec endif ifeq ($(BR2_PACKAGE_KODI_LIRC),y) KODI_CONF_OPTS += --enable-lirc else KODI_CONF_OPTS += --disable-lirc endif ifeq ($(BR2_PACKAGE_KODI_LIBTHEORA),y) KODI_DEPENDENCIES += libtheora endif # kodi needs libva & libva-glx ifeq ($(BR2_PACKAGE_KODI_LIBVA)$(BR2_PACKAGE_MESA3D_DRI_DRIVER),yy) KODI_DEPENDENCIES += mesa3d libva KODI_CONF_OPTS += --enable-vaapi else KODI_CONF_OPTS += --disable-vaapi endif ifeq ($(BR2_PACKAGE_KODI_LIBVDPAU),y) KODI_DEPENDENCIES += libvdpau KODI_CONF_OPTS += --enable-vdpau else KODI_CONF_OPTS += --disable-vdpau endif ifeq ($(BR2_PACKAGE_KODI_UPNP),y) KODI_CONF_OPTS += --enable-upnp else KODI_CONF_OPTS += --disable-upnp endif ifeq ($(BR2_PACKAGE_KODI_OPTICALDRIVE),y) KODI_CONF_OPTS += --enable-optical-drive --enable-dvdcss else KODI_CONF_OPTS += --disable-optical-drive --disable-dvdcss endif # Add HOST_DIR to PATH for codegenerator.mk to find swig define KODI_BOOTSTRAP $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D)/tools/depends/native/JsonSchemaBuilder $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D)/tools/depends/native/TexturePacker cd $(@D) && PATH=$(BR_PATH) ./bootstrap endef KODI_PRE_CONFIGURE_HOOKS += KODI_BOOTSTRAP define KODI_CLEAN_UNUSED_ADDONS rm -Rf $(TARGET_DIR)/usr/share/kodi/addons/visualization.milkdrop rm -Rf $(TARGET_DIR)/usr/share/kodi/addons/visualization.projectm rm -Rf $(TARGET_DIR)/usr/share/kodi/addons/visualization.itunes endef KODI_POST_INSTALL_TARGET_HOOKS += KODI_CLEAN_UNUSED_ADDONS define KODI_CLEAN_CONFLUENCE_SKIN find $(TARGET_DIR)/usr/share/kodi/addons/skin.confluence/media -name *.png -delete find $(TARGET_DIR)/usr/share/kodi/addons/skin.confluence/media -name *.jpg -delete endef KODI_POST_INSTALL_TARGET_HOOKS += KODI_CLEAN_CONFLUENCE_SKIN define KODI_INSTALL_BR_WRAPPER $(INSTALL) -D -m 0755 package/kodi/br-kodi \ $(TARGET_DIR)/usr/bin/br-kodi endef KODI_POST_INSTALL_TARGET_HOOKS += KODI_INSTALL_BR_WRAPPER # When run from a startup script, Kodi has no $HOME where to store its # configuration, so ends up storing it in /.kodi (yes, at the root of # the rootfs). This is a problem for read-only filesystems. But we can't # easily change that, so create /.kodi as a symlink where we want the # config to eventually be. Add synlinks for the legacy XBMC name as well define KODI_INSTALL_CONFIG_DIR $(INSTALL) -d -m 0755 $(TARGET_DIR)/var/kodi ln -sf /var/kodi $(TARGET_DIR)/.kodi ln -sf /var/kodi $(TARGET_DIR)/var/xbmc ln -sf /var/kodi $(TARGET_DIR)/.xbmc endef KODI_POST_INSTALL_TARGET_HOOKS += KODI_INSTALL_CONFIG_DIR define KODI_INSTALL_INIT_SYSV $(INSTALL) -D -m 755 package/kodi/S50kodi \ $(TARGET_DIR)/etc/init.d/S50kodi endef define KODI_INSTALL_INIT_SYSTEMD $(INSTALL) -D -m 644 package/kodi/kodi.service \ $(TARGET_DIR)/usr/lib/systemd/system/kodi.service mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants ln -fs ../../../../usr/lib/systemd/system/kodi.service \ $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/kodi.service endef $(eval $(autotools-package))