1################################################################################ 2# 3# kodi 4# 5################################################################################ 6 7# When updating the version, please also update kodi-jsonschemabuilder 8# and kodi-texturepacker 9KODI_VERSION_MAJOR = 19.3 10KODI_VERSION_NAME = Matrix 11KODI_VERSION = $(KODI_VERSION_MAJOR)-$(KODI_VERSION_NAME) 12KODI_SITE = $(call github,xbmc,xbmc,$(KODI_VERSION)) 13KODI_LICENSE = GPL-2.0 14KODI_LICENSE_FILES = LICENSE.md 15KODI_CPE_ID_VENDOR = kodi 16KODI_CPE_ID_VERSION = $(KODI_VERSION_MAJOR) 17# needed for binary addons 18KODI_INSTALL_STAGING = YES 19# kodi recommends building out-of-source 20KODI_SUPPORTS_IN_SOURCE_BUILD = NO 21KODI_DEPENDENCIES = \ 22 ffmpeg \ 23 flatbuffers \ 24 fmt \ 25 fontconfig \ 26 freetype \ 27 fstrcmp \ 28 host-flatbuffers \ 29 host-gawk \ 30 host-gettext \ 31 host-gperf \ 32 host-kodi-jsonschemabuilder \ 33 host-kodi-texturepacker \ 34 host-nasm \ 35 host-swig \ 36 host-xmlstarlet \ 37 libass \ 38 libcdio \ 39 libcrossguid \ 40 libcurl \ 41 libdrm \ 42 libegl \ 43 libfribidi \ 44 libplist \ 45 lzo \ 46 openssl \ 47 pcre \ 48 python3 \ 49 rapidjson \ 50 spdlog \ 51 sqlite \ 52 taglib \ 53 tinyxml \ 54 zlib 55 56# taken from tools/depends/target/*/*-VERSION 57KODI_LIBDVDCSS_VERSION = 1.4.2-Leia-Beta-5 58KODI_LIBDVDNAV_VERSION = 6.0.0-Leia-Alpha-3 59KODI_LIBDVDREAD_VERSION = 6.0.0-Leia-Alpha-3 60KODI_EXTRA_DOWNLOADS += \ 61 $(call github,xbmc,libdvdcss,$(KODI_LIBDVDCSS_VERSION))/kodi-libdvdcss-$(KODI_LIBDVDCSS_VERSION).tar.gz \ 62 $(call github,xbmc,libdvdnav,$(KODI_LIBDVDNAV_VERSION))/kodi-libdvdnav-$(KODI_LIBDVDNAV_VERSION).tar.gz \ 63 $(call github,xbmc,libdvdread,$(KODI_LIBDVDREAD_VERSION))/kodi-libdvdread-$(KODI_LIBDVDREAD_VERSION).tar.gz 64 65KODI_CONF_OPTS += \ 66 -DCMAKE_C_FLAGS="$(TARGET_CFLAGS) $(KODI_C_FLAGS)" \ 67 -DENABLE_APP_AUTONAME=OFF \ 68 -DENABLE_CCACHE=OFF \ 69 -DENABLE_DVDCSS=ON \ 70 -DENABLE_INTERNAL_CROSSGUID=OFF \ 71 -DWITH_FFMPEG=$(STAGING_DIR)/usr \ 72 -DENABLE_INTERNAL_FLATBUFFERS=OFF \ 73 -DFLATBUFFERS_FLATC_EXECUTABLE=$(HOST_DIR)/bin/flatc \ 74 -DKODI_DEPENDSBUILD=OFF \ 75 -DENABLE_LDGOLD=OFF \ 76 -DNATIVEPREFIX=$(HOST_DIR) \ 77 -DDEPENDS_PATH=$(STAGING_DIR)/usr \ 78 -DENABLE_TESTING=OFF \ 79 -DWITH_JSONSCHEMABUILDER=$(HOST_DIR)/bin/JsonSchemaBuilder \ 80 -DWITH_TEXTUREPACKER=$(HOST_DIR)/bin/TexturePacker \ 81 -DLIBDVDCSS_URL=$(KODI_DL_DIR)/kodi-libdvdcss-$(KODI_LIBDVDCSS_VERSION).tar.gz \ 82 -DLIBDVDNAV_URL=$(KODI_DL_DIR)/kodi-libdvdnav-$(KODI_LIBDVDNAV_VERSION).tar.gz \ 83 -DLIBDVDREAD_URL=$(KODI_DL_DIR)/kodi-libdvdread-$(KODI_LIBDVDREAD_VERSION).tar.gz 84 85ifeq ($(BR2_PACKAGE_KODI_RENDER_SYSTEM_GL),y) 86KODI_CONF_OPTS += -DAPP_RENDER_SYSTEM=gl 87KODI_DEPENDENCIES += libgl libglu 88else ifeq ($(BR2_PACKAGE_KODI_RENDER_SYSTEM_GLES),y) 89KODI_CONF_OPTS += -DAPP_RENDER_SYSTEM=gles 90KODI_DEPENDENCIES += libgles 91endif 92 93ifeq ($(BR2_PACKAGE_KODI_PLATFORM_SUPPORTS_GBM),y) 94KODI_CORE_PLATFORM_NAME += gbm 95KODI_DEPENDENCIES += libinput libxkbcommon mesa3d 96endif 97 98ifeq ($(BR2_PACKAGE_KODI_PLATFORM_SUPPORTS_WAYLAND),y) 99KODI_CONF_OPTS += \ 100 -DPC_WAYLANDPP_SCANNER=$(HOST_DIR)/bin/wayland-scanner \ 101 -DPC_WAYLANDPP_SCANNER_FOUND=ON 102KODI_CORE_PLATFORM_NAME += wayland 103KODI_DEPENDENCIES += libxkbcommon waylandpp 104endif 105 106ifeq ($(BR2_PACKAGE_KODI_PLATFORM_SUPPORTS_X11),y) 107KODI_CORE_PLATFORM_NAME += x11 108KODI_DEPENDENCIES += \ 109 xlib_libX11 \ 110 xlib_libXext \ 111 xlib_libXrandr 112endif 113 114KODI_CONF_OPTS += -DCORE_PLATFORM_NAME="$(KODI_CORE_PLATFORM_NAME)" 115 116ifeq ($(BR2_ENABLE_LOCALE),) 117KODI_DEPENDENCIES += libiconv 118endif 119 120ifeq ($(BR2_arceb)$(BR2_arcle),y) 121KODI_CONF_OPTS += -DWITH_ARCH=arc -DWITH_CPU=arc 122else ifeq ($(BR2_armeb),y) 123KODI_CONF_OPTS += -DWITH_ARCH=arm -DWITH_CPU=arm 124else ifeq ($(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el),y) 125KODI_CONF_OPTS += \ 126 -DWITH_ARCH=mips$(if $(BR2_ARCH_IS_64),64) \ 127 -DWITH_CPU=mips$(if $(BR2_ARCH_IS_64),64) 128else ifeq ($(BR2_powerpc)$(BR2_powerpc64le),y) 129KODI_CONF_OPTS += \ 130 -DWITH_ARCH=powerpc$(if $(BR2_ARCH_IS_64),64) \ 131 -DWITH_CPU=powerpc$(if $(BR2_ARCH_IS_64),64) 132else ifeq ($(BR2_powerpc64)$(BR2_sparc64)$(BR2_sh4)$(BR2_xtensa),y) 133KODI_CONF_OPTS += -DWITH_ARCH=$(BR2_ARCH) -DWITH_CPU=$(BR2_ARCH) 134else 135# Kodi auto-detects ARCH, tested: arm, aarch64, i386, x86_64 136# see project/cmake/scripts/linux/ArchSetup.cmake 137KODI_CONF_OPTS += -DWITH_CPU=$(BR2_ARCH) 138endif 139 140ifeq ($(BR2_X86_CPU_HAS_SSE),y) 141KODI_CONF_OPTS += -D_SSE_OK=ON -D_SSE_TRUE=ON 142else 143KODI_CONF_OPTS += -D_SSE_OK=OFF -D_SSE_TRUE=OFF 144endif 145 146ifeq ($(BR2_X86_CPU_HAS_SSE2),y) 147KODI_CONF_OPTS += -D_SSE2_OK=ON -D_SSE2_TRUE=ON 148else 149KODI_CONF_OPTS += -D_SSE2_OK=OFF -D_SSE2_TRUE=OFF 150endif 151 152ifeq ($(BR2_X86_CPU_HAS_SSE3),y) 153KODI_CONF_OPTS += -D_SSE3_OK=ON -D_SSE3_TRUE=ON 154else 155KODI_CONF_OPTS += -D_SSE3_OK=OFF -D_SSE3_TRUE=OFF 156endif 157 158ifeq ($(BR2_X86_CPU_HAS_SSSE3),y) 159KODI_CONF_OPTS += -D_SSSE3_OK=ON -D_SSSE3_TRUE=ON 160else 161KODI_CONF_OPTS += -D_SSSE3_OK=OFF -D_SSSE3_TRUE=OFF 162endif 163 164ifeq ($(BR2_X86_CPU_HAS_SSE4),y) 165KODI_CONF_OPTS += -D_SSE41_OK=ON -D_SSE41_TRUE=ON 166else 167KODI_CONF_OPTS += -D_SSE41_OK=OFF -D_SSE41_TRUE=OFF 168endif 169 170ifeq ($(BR2_X86_CPU_HAS_SSE42),y) 171KODI_CONF_OPTS += -D_SSE42_OK=ON -D_SSE42_TRUE=ON 172else 173KODI_CONF_OPTS += -D_SSE42_OK=OFF -D_SSE42_TRUE=OFF 174endif 175 176ifeq ($(BR2_X86_CPU_HAS_AVX),y) 177KODI_CONF_OPTS += -D_AVX_OK=ON -D_AVX_TRUE=ON 178else 179KODI_CONF_OPTS += -D_AVX_OK=OFF -D_AVX_TRUE=OFF 180endif 181 182ifeq ($(BR2_X86_CPU_HAS_AVX2),y) 183KODI_CONF_OPTS += -D_AVX2_OK=ON -D_AVX2_TRUE=ON 184else 185KODI_CONF_OPTS += -D_AVX2_OK=OFF -D_AVX2_TRUE=OFF 186endif 187 188# mips: uses __atomic_load_8 189ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) 190KODI_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic 191endif 192 193ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_5),) 194KODI_C_FLAGS += -std=gnu99 195endif 196 197ifeq ($(BR2_PACKAGE_KODI_MYSQL),y) 198KODI_CONF_OPTS += -DENABLE_MYSQLCLIENT=ON 199KODI_DEPENDENCIES += mysql 200else 201KODI_CONF_OPTS += -DENABLE_MYSQLCLIENT=OFF 202endif 203 204ifeq ($(BR2_PACKAGE_HAS_UDEV),y) 205KODI_CONF_OPTS += -DENABLE_UDEV=ON 206KODI_DEPENDENCIES += udev 207else 208KODI_CONF_OPTS += -DENABLE_UDEV=OFF 209ifeq ($(BR2_PACKAGE_KODI_LIBUSB),y) 210KODI_CONF_OPTS += -DENABLE_LIBUSB=ON 211KODI_DEPENDENCIES += libusb-compat 212else 213KODI_CONF_OPTS += -DENABLE_LIBUSB=OFF 214endif 215endif 216 217ifeq ($(BR2_PACKAGE_LIBCAP),y) 218KODI_CONF_OPTS += -DENABLE_CAP=ON 219KODI_DEPENDENCIES += libcap 220else 221KODI_CONF_OPTS += -DENABLE_CAP=OFF 222endif 223 224ifeq ($(BR2_PACKAGE_LIBXML2)$(BR2_PACKAGE_LIBXSLT),yy) 225KODI_CONF_OPTS += -DENABLE_XSLT=ON 226KODI_DEPENDENCIES += libxml2 libxslt 227else 228KODI_CONF_OPTS += -DENABLE_XSLT=OFF 229endif 230 231ifeq ($(BR2_PACKAGE_KODI_BLUEZ),y) 232KODI_CONF_OPTS += -DENABLE_BLUETOOTH=ON 233KODI_DEPENDENCIES += bluez5_utils 234else 235KODI_CONF_OPTS += -DENABLE_BLUETOOTH=OFF 236endif 237 238ifeq ($(BR2_PACKAGE_KODI_DBUS),y) 239KODI_DEPENDENCIES += dbus 240KODI_CONF_OPTS += -DENABLE_DBUS=ON 241else 242KODI_CONF_OPTS += -DENABLE_DBUS=OFF 243endif 244 245ifeq ($(BR2_PACKAGE_KODI_EVENTCLIENTS),y) 246KODI_CONF_OPTS += -DENABLE_EVENTCLIENTS=ON 247else 248KODI_CONF_OPTS += -DENABLE_EVENTCLIENTS=OFF 249endif 250 251ifeq ($(BR2_PACKAGE_KODI_ALSA_LIB),y) 252KODI_CONF_OPTS += -DENABLE_ALSA=ON 253KODI_DEPENDENCIES += alsa-lib 254else 255KODI_CONF_OPTS += -DENABLE_ALSA=OFF 256endif 257 258ifeq ($(BR2_PACKAGE_KODI_LIBMICROHTTPD),y) 259KODI_CONF_OPTS += -DENABLE_MICROHTTPD=ON 260KODI_DEPENDENCIES += libmicrohttpd 261else 262KODI_CONF_OPTS += -DENABLE_MICROHTTPD=OFF 263endif 264 265ifeq ($(BR2_PACKAGE_KODI_LIBSMBCLIENT),y) 266KODI_DEPENDENCIES += samba4 267KODI_CONF_OPTS += -DENABLE_SMBCLIENT=ON 268else 269KODI_CONF_OPTS += -DENABLE_SMBCLIENT=OFF 270endif 271 272ifeq ($(BR2_PACKAGE_KODI_LIBNFS),y) 273KODI_DEPENDENCIES += libnfs 274KODI_CONF_OPTS += -DENABLE_NFS=ON 275else 276KODI_CONF_OPTS += -DENABLE_NFS=OFF 277endif 278 279ifeq ($(BR2_PACKAGE_KODI_LIBBLURAY),y) 280KODI_DEPENDENCIES += libbluray 281KODI_CONF_OPTS += -DENABLE_BLURAY=ON 282else 283KODI_CONF_OPTS += -DENABLE_BLURAY=OFF 284endif 285 286ifeq ($(BR2_PACKAGE_KODI_LIBSHAIRPLAY),y) 287KODI_DEPENDENCIES += libshairplay 288KODI_CONF_OPTS += -DENABLE_AIRTUNES=ON 289else 290KODI_CONF_OPTS += -DENABLE_AIRTUNES=OFF 291endif 292 293ifeq ($(BR2_PACKAGE_KODI_AVAHI),y) 294KODI_DEPENDENCIES += avahi 295KODI_CONF_OPTS += -DENABLE_AVAHI=ON 296else 297KODI_CONF_OPTS += -DENABLE_AVAHI=OFF 298endif 299 300ifeq ($(BR2_PACKAGE_KODI_LIBCEC),y) 301KODI_DEPENDENCIES += libcec 302KODI_CONF_OPTS += -DENABLE_CEC=ON 303else 304KODI_CONF_OPTS += -DENABLE_CEC=OFF 305endif 306 307ifeq ($(BR2_PACKAGE_KODI_LCMS2),y) 308KODI_DEPENDENCIES += lcms2 309KODI_CONF_OPTS += -DENABLE_LCMS2=ON 310else 311KODI_CONF_OPTS += -DENABLE_LCMS2=OFF 312endif 313 314ifeq ($(BR2_PACKAGE_LIRC_TOOLS),y) 315KODI_DEPENDENCIES += lirc-tools 316endif 317 318ifeq ($(BR2_PACKAGE_LIBVA),y) 319KODI_DEPENDENCIES += libva 320KODI_CONF_OPTS += -DENABLE_VAAPI=ON 321else 322KODI_CONF_OPTS += -DENABLE_VAAPI=OFF 323endif 324 325ifeq ($(BR2_PACKAGE_KODI_LIBVDPAU),y) 326KODI_DEPENDENCIES += libvdpau 327KODI_CONF_OPTS += -DENABLE_VDPAU=ON 328else 329KODI_CONF_OPTS += -DENABLE_VDPAU=OFF 330endif 331 332ifeq ($(BR2_PACKAGE_KODI_UPNP),y) 333KODI_CONF_OPTS += -DENABLE_UPNP=ON 334else 335KODI_CONF_OPTS += -DENABLE_UPNP=OFF 336endif 337 338ifeq ($(BR2_PACKAGE_KODI_OPTICALDRIVE),y) 339KODI_CONF_OPTS += -DENABLE_OPTICAL=ON 340else 341KODI_CONF_OPTS += -DENABLE_OPTICAL=OFF 342endif 343 344ifeq ($(BR2_PACKAGE_KODI_PULSEAUDIO),y) 345KODI_CONF_OPTS += -DENABLE_PULSEAUDIO=ON 346KODI_DEPENDENCIES += pulseaudio 347else 348KODI_CONF_OPTS += -DENABLE_PULSEAUDIO=OFF 349endif 350 351ifeq ($(BR2_PACKAGE_LIBUDFREAD),y) 352KODI_DEPENDENCIES += libudfread 353else 354KODI_CONF_OPTS += -DENABLE_INTERNAL_UDFREAD=OFF 355endif 356 357# Remove versioncheck addon, updating Kodi is done by building a new 358# buildroot image. 359KODI_ADDON_MANIFEST = $(TARGET_DIR)/usr/share/kodi/system/addon-manifest.xml 360define KODI_CLEAN_UNUSED_ADDONS 361 rm -Rf $(TARGET_DIR)/usr/share/kodi/addons/service.xbmc.versioncheck 362 $(HOST_DIR)/bin/xml ed -L \ 363 -d "/addons/addon[text()='service.xbmc.versioncheck']" \ 364 $(KODI_ADDON_MANIFEST) 365endef 366KODI_POST_INSTALL_TARGET_HOOKS += KODI_CLEAN_UNUSED_ADDONS 367 368define KODI_INSTALL_BR_WRAPPER 369 $(INSTALL) -D -m 0755 package/kodi/br-kodi \ 370 $(TARGET_DIR)/usr/bin/br-kodi 371endef 372KODI_POST_INSTALL_TARGET_HOOKS += KODI_INSTALL_BR_WRAPPER 373 374# When run from a startup script, Kodi has no $HOME where to store its 375# configuration, so ends up storing it in /.kodi (yes, at the root of 376# the rootfs). This is a problem for read-only filesystems. But we can't 377# easily change that, so create /.kodi as a symlink where we want the 378# config to eventually be. Add synlinks for the legacy XBMC name as well 379define KODI_INSTALL_CONFIG_DIR 380 $(INSTALL) -d -m 0755 $(TARGET_DIR)/var/kodi 381 ln -sf /var/kodi $(TARGET_DIR)/.kodi 382 ln -sf /var/kodi $(TARGET_DIR)/var/xbmc 383 ln -sf /var/kodi $(TARGET_DIR)/.xbmc 384endef 385KODI_POST_INSTALL_TARGET_HOOKS += KODI_INSTALL_CONFIG_DIR 386 387define KODI_INSTALL_INIT_SYSV 388 $(INSTALL) -D -m 755 package/kodi/S50kodi \ 389 $(TARGET_DIR)/etc/init.d/S50kodi 390endef 391 392define KODI_INSTALL_INIT_SYSTEMD 393 $(INSTALL) -D -m 644 package/kodi/kodi.service \ 394 $(TARGET_DIR)/usr/lib/systemd/system/kodi.service 395endef 396 397$(eval $(cmake-package)) 398