Makefile 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. # This file is part of the OpenADK project. OpenADK is copyrighted
  2. # material, please see the LICENCE file in the top-level directory.
  3. include $(ADK_TOPDIR)/rules.mk
  4. PKG_NAME:= kodi
  5. PKG_VERSION:= 21.2
  6. PKG_RELEASE:= 1
  7. PKG_HASH:= da3a5df663684664b9383b65f1c06568222629d935084a59e4e641fcdcb6c383
  8. PKG_DESCR:= software media player
  9. PKG_SECTION:= mm/video
  10. PKG_DEPENDS:= python3 libsquish libopenssl libfmt rapidjson libpcre
  11. PKG_DEPENDS+= libass libmpeg2 libmad libmodplug libcurl libxshmfence
  12. PKG_DEPENDS+= libflac libbz2 libtiff libnettle librtmp liblzo libXext
  13. PKG_DEPENDS+= yajl tinyxml libsqlite libpcrecpp libncurses libpng
  14. PKG_DEPENDS+= libpcre2 libcdio libfreetype libsamplerate libuuid
  15. PKG_DEPENDS+= taglib libjasper libmp3lame libgpg-error giflib nghttp2
  16. PKG_DEPENDS+= glib libdcadec libffmpeg libxvidcore libiconv harfbuzz
  17. PKG_DEPENDS+= flatbuffers fstrcmp spdlog mesa libinput libxkbcommon
  18. PKG_DEPENDS+= xkeyboard-config tinyxml2 libdisplay-info libudfread
  19. PKG_BUILDDEP:= python3 libass ffmpeg rtmpdump libiconv libudfread
  20. PKG_BUILDDEP+= libmpeg2 libmad libjpeg-turbo fmt rapidjson
  21. PKG_BUILDDEP+= curl flac bzip2 libtiff yajl cmake-host libdisplay-info
  22. PKG_BUILDDEP+= tinyxml tinyxml2 sqlite pcre2 libcdio freetype libpng
  23. PKG_BUILDDEP+= libsamplerate taglib libjasper giflib xkeyboard-config
  24. PKG_BUILDDEP+= glib libmodplug libgpg-error xvidcore libxshmfence
  25. PKG_BUILDDEP+= swig-host liblzo-host libpng-host libjpeg-turbo-host
  26. PKG_BUILDDEP+= zip-host unzip-host giflib-host libsquish libdcadec
  27. PKG_BUILDDEP+= libcrossguid openssl bzip2 liblzo harfbuzz pcre
  28. PKG_BUILDDEP+= flatbuffers fstrcmp spdlog mesa libinput libxkbcommon
  29. PKG_NEEDS:= threads c++ data iconv
  30. PKG_URL:= http://kodi.tv/
  31. PKG_SITES:= https://github.com/xbmc/xbmc/archive/
  32. DISTFILES:= $(PKG_VERSION)-Omega.tar.gz
  33. WRKDIST= ${WRKDIR}/xbmc-$(PKG_VERSION)-Omega
  34. WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
  35. PKG_SYSTEM_DEPENDS:= qemu-x86_64 raspberry-pi raspberry-pi2 raspberry-pi3 raspberry-pi4 raspberry-pi4-64 rockpi4-plus raspberry-pi5
  36. PKG_FLAVOURS_KODI:= WITH_ALSA WITH_CEC WITH_PULSEAUDIO WITH_SMB
  37. PKG_FLAVOURS_KODI+= WITH_MICROHTTPD WITH_SSH WITH_AVAHI
  38. PKGFD_WITH_ALSA:= enable alsa support
  39. PKGFS_WITH_ALSA:= alsa-lib
  40. PKGFB_WITH_ALSA:= alsa-lib
  41. PKGFD_WITH_AVAHI:= enable avahi support
  42. PKGFS_WITH_AVAHI:= libavahi
  43. PKGFB_WITH_AVAHI:= avahi
  44. PKGFD_WITH_CEC:= enable cec support
  45. PKGFS_WITH_CEC:= libcec
  46. PKGFB_WITH_CEC:= libcec
  47. PKGFD_WITH_MICROHTTPD:= enable microhttpd support
  48. PKGFS_WITH_MICROHTTPD:= libmicrohttpd
  49. PKGFB_WITH_MICROHTTPD:= libmicrohttpd
  50. PKGFD_WITH_PULSEAUDIO:= enable pulseaudio support
  51. PKGFS_WITH_PULSEAUDIO:= pulseaudio
  52. PKGFB_WITH_PULSEAUDIO:= pulseaudio
  53. PKGFD_WITH_SMB:= enable smb support
  54. PKGFS_WITH_SMB:= samba
  55. PKGFB_WITH_SMB:= samba
  56. PKGFD_WITH_SSH:= enable ssh support
  57. PKGFS_WITH_SSH:= libssh
  58. PKGFB_WITH_SSH:= libssh
  59. include $(ADK_TOPDIR)/mk/package.mk
  60. $(eval $(call PKG_template,KODI,kodi,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
  61. HOST_CXXFLAGS:= -DTARGET_POSIX -DTARGET_LINUX -D_LINUX -I$(WRKSRC)/xbmc/linux
  62. CONFIG_STYLE:= cmake
  63. CMAKE_FLAGS+= -DENABLE_CCACHE=OFF \
  64. -DENABLE_TESTING=OFF \
  65. -DCMAKE_BUILD_TYPE=Release \
  66. -DVERBOSE=ON \
  67. -DENABLE_DVDCSS=ON \
  68. -DENABLE_INTERNAL_FFMPEG=OFF \
  69. -DENABLE_INTERNAL_CROSSGUID=OFF \
  70. -DENABLE_INTERNAL_RapidJSON=OFF \
  71. -DWITH_FFMPEG=$(STAGING_TARGET_DIR)/usr \
  72. -DPYTHON_EXECUTABLE=$(STAGING_HOST_DIR)/usr/bin/python3 \
  73. -DPYTHON_INCLUDE_DIRS=$(STAGING_TARGET_DIR)/usr/include/python3.13 \
  74. -DPYTHON_PATH=$(STAGING_TARGET_DIR)/usr/lib/python3.13 \
  75. -DPYTHON_VER=3.13 \
  76. -DKODI_DEPENDSBUILD=OFF \
  77. -DENABLE_OPENSSL=ON \
  78. -DENABLE_MYSQLCLIENT=OFF \
  79. -DENABLE_NONFREE=ON \
  80. -DENABLE_CAP=OFF \
  81. -DENABLE_XSLT=OFF \
  82. -DENABLE_BLUETOOTH=OFF \
  83. -DENABLE_BLURAY=OFF \
  84. -DENABLE_AIRTUNES=OFF \
  85. -DENABLE_LCMS2=OFF \
  86. -DENABLE_LIRC=OFF \
  87. -DENABLE_UPNP=OFF \
  88. -DENABLE_OPTICAL=OFF \
  89. -DENABLE_DBUS=OFF \
  90. -DENABLE_EVENTCLIENTS=OFF \
  91. -DENABLE_UDEV=ON \
  92. -DENABLE_PLIST=OFF \
  93. -DNATIVEPREFIX=$(STAGING_HOST_DIR)/usr \
  94. -DDEPENDS_PATH=$(STAGING_TARGET_DIR)/usr \
  95. -DWITH_JSONSCHEMABUILDER=$(STAGING_HOST_DIR)/usr/bin/JsonSchemaBuilder \
  96. -DCMAKE_EXE_LINKER_FLAGS="-latomic -liconv" \
  97. -DLIBDVDCSS_URL=$(DL_DIR)/libdvdcss-1.4.3-Next-Nexus-Alpha2-2.tar.gz \
  98. -DLIBDVDNAV_URL=$(DL_DIR)/libdvdnav-6.1.1-Next-Nexus-Alpha2-2.tar.gz \
  99. -DLIBDVDREAD_URL=$(DL_DIR)/libdvdread-6.1.3-Next-Nexus-Alpha2-2.tar.gz
  100. ifeq ($(ADK_TARGET_ARCH_AARCH64),y)
  101. CMAKE_FLAGS+= -DWITH_ARCH=aarch64 \
  102. -DWITH_CPU=aarch64 \
  103. -DENABLE_NEON=OFF
  104. endif
  105. ifeq ($(ADK_TARGET_ARCH_ARM),y)
  106. CMAKE_FLAGS+= -DWITH_ARCH=arm \
  107. -DWITH_CPU=arm \
  108. -DENABLE_NEON=ON
  109. endif
  110. ifeq ($(ADK_TARGET_ARCH_X86_64),y)
  111. CMAKE_FLAGS+= -DWITH_ARCH=x86_64 \
  112. -DAPP_RENDER_SYSTEM=gl \
  113. -DCORE_PLATFORM_NAME=x11 \
  114. -DENABLE_OPENGL=ON \
  115. -DENABLE_X11=ON
  116. endif
  117. ifeq ($(ADK_TARGET_BOARD_BCM28XX),y)
  118. CMAKE_FLAGS+= -DCORE_PLATFORM_NAME=gbm \
  119. -DAPP_RENDER_SYSTEM=gles \
  120. -DENABLE_OPENGL=OFF \
  121. -DENABLE_X11=OFF \
  122. -DENABLE_OPENGLES=ON
  123. endif
  124. ifeq ($(ADK_PACKAGE_KODI_WITH_ALSA),y)
  125. CMAKE_FLAGS+= -DENABLE_ALSA=ON
  126. else
  127. CMAKE_FLAGS+= -DENABLE_ALSA=OFF
  128. endif
  129. ifeq ($(ADK_PACKAGE_KODI_WITH_AVAHI),y)
  130. CMAKE_FLAGS+= -DENABLE_AVAHI=ON
  131. else
  132. CMAKE_FLAGS+= -DENABLE_AVAHI=OFF
  133. endif
  134. ifeq ($(ADK_PACKAGE_KODI_WITH_CEC),y)
  135. CMAKE_FLAGS+= -DENABLE_CEC=ON
  136. else
  137. CMAKE_FLAGS+= -DENABLE_CEC=OFF
  138. endif
  139. ifeq ($(ADK_PACKAGE_KODI_WITH_MICROHTTPD),y)
  140. CMAKE_FLAGS+= -DENABLE_MICROHTTPD=ON
  141. else
  142. CMAKE_FLAGS+= -DENABLE_MICROHTTPD=OFF
  143. endif
  144. ifeq ($(ADK_PACKAGE_KODI_WITH_PULSEAUDIO),y)
  145. CMAKE_FLAGS+= -DENABLE_PULSEAUDIO=ON
  146. else
  147. CMAKE_FLAGS+= -DENABLE_PULSEAUDIO=OFF
  148. endif
  149. ifeq ($(ADK_PACKAGE_KODI_WITH_SMB),y)
  150. CMAKE_FLAGS+= -DENABLE_SMBCLIENT=ON
  151. else
  152. CMAKE_FLAGS+= -DENABLE_SMBCLIENT=OFF
  153. endif
  154. ifeq ($(ADK_PACKAGE_KODI_WITH_SSH),y)
  155. CMAKE_FLAGS+= -DENABLE_SSH=ON
  156. else
  157. CMAKE_FLAGS+= -DENABLE_SSH=OFF
  158. endif
  159. XAKE_FLAGS+= VERBOSE=1
  160. KODI_LIBDVDCSS_VERSION = 1.4.3-Next-Nexus-Alpha2-2
  161. KODI_LIBDVDNAV_VERSION = 6.1.1-Next-Nexus-Alpha2-2
  162. KODI_LIBDVDREAD_VERSION = 6.1.3-Next-Nexus-Alpha2-2
  163. pre-configure:
  164. (cd $(WRKSRC)/tools/depends/native/JsonSchemaBuilder/src && PATH='$(HOST_PATH)' cmake .)
  165. PATH='$(HOST_PATH)' make -C $(WRKSRC)/tools/depends/native/JsonSchemaBuilder/src
  166. cp $(WRKSRC)/tools/depends/native/JsonSchemaBuilder/src/JsonSchemaBuilder \
  167. $(STAGING_HOST_DIR)/usr/bin/JsonSchemaBuilder
  168. #(cd $(WRKSRC)/tools/depends/native/TexturePacker/src && PATH='$(HOST_PATH)' cmake \
  169. # -DKODI_SOURCE_DIR=$(WRKSRC) \
  170. # -DCMAKE_MODULE_PATH=$(WRKSRC)/cmake/modules \
  171. # -DCMAKE_CXX_FLAGS="$(HOST_CXXFLAGS)" .)
  172. #PATH='$(HOST_PATH)' make -C $(WRKSRC)/tools/depends/native/TexturePacker/src
  173. #cp $(WRKSRC)/tools/depends/native/TexturePacker/src/TexturePacker \
  174. # $(STAGING_HOST_DIR)/usr/bin
  175. (cd $(DL_DIR) && wget -O libdvdcss-$(KODI_LIBDVDCSS_VERSION).tar.gz https://github.com/xbmc/libdvdcss/archive/refs/tags/$(KODI_LIBDVDCSS_VERSION).tar.gz)
  176. (cd $(DL_DIR) && wget -O libdvdnav-$(KODI_LIBDVDNAV_VERSION).tar.gz https://github.com/xbmc/libdvdnav/archive/refs/tags/$(KODI_LIBDVDNAV_VERSION).tar.gz)
  177. (cd $(DL_DIR) && wget -O libdvdread-$(KODI_LIBDVDREAD_VERSION).tar.gz https://github.com/xbmc/libdvdread/archive/refs/tags/$(KODI_LIBDVDREAD_VERSION).tar.gz)
  178. kodi-install:
  179. $(INSTALL_DIR) $(STAGING_TARGET_DIR)/usr/share/kodi
  180. $(CP) $(WRKINST)/usr/share/kodi/* \
  181. $(STAGING_TARGET_DIR)/usr/share/kodi
  182. # we need a symlink to /data
  183. cd $(IDIR_KODI)/ && ln -sf ../data/kodi .kodi
  184. $(INSTALL_DIR) $(IDIR_KODI)/usr/lib/kodi/addons
  185. $(CP) $(WRKINST)/usr/lib/kodi/* \
  186. $(IDIR_KODI)/usr/lib/kodi
  187. $(INSTALL_DIR) $(IDIR_KODI)/usr/share/kodi
  188. $(CP) $(WRKINST)/usr/share/kodi/* \
  189. $(IDIR_KODI)/usr/share/kodi
  190. $(INSTALL_DIR) $(IDIR_KODI)/usr/bin
  191. $(INSTALL_BIN) $(WRKINST)/usr/bin/kodi-standalone \
  192. $(IDIR_KODI)/usr/bin
  193. $(INSTALL_BIN) $(WRKINST)/usr/bin/kodi \
  194. $(IDIR_KODI)/usr/bin
  195. include ${ADK_TOPDIR}/mk/pkg-bottom.mk