kodi.mk 11 KB

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