80ba1ebd60
To prepare the bump to the next Kodi version 18.0-Leia we rework the options to control the windowing platform Kodi is built for. An automatic choice will no longer be suitable after addition of support for wayland and gbm, the former also providing a choice to use either OpenGL or OpenGL ES. This patch introduces a new choice option by converting the current X11-based OpenGL support to the new scheme. Other windowing platforms will be added by subsequent patches. Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
417 lines
11 KiB
Makefile
417 lines
11 KiB
Makefile
################################################################################
|
|
#
|
|
# kodi
|
|
#
|
|
################################################################################
|
|
|
|
# When updating the version, please also update kodi-jsonschemabuilder
|
|
# and kodi-texturepacker
|
|
KODI_VERSION = 17.6-Krypton
|
|
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 = \
|
|
bzip2 \
|
|
expat \
|
|
fontconfig \
|
|
freetype \
|
|
gnutls \
|
|
host-gawk \
|
|
host-gperf \
|
|
host-kodi-jsonschemabuilder \
|
|
host-kodi-texturepacker \
|
|
host-nasm \
|
|
host-swig \
|
|
host-xmlstarlet \
|
|
host-zip \
|
|
libass \
|
|
libcdio \
|
|
libcrossguid \
|
|
libcurl \
|
|
libfribidi \
|
|
libplist \
|
|
libsamplerate \
|
|
lzo \
|
|
ncurses \
|
|
openssl \
|
|
pcre \
|
|
python \
|
|
readline \
|
|
sqlite \
|
|
taglib \
|
|
tinyxml \
|
|
yajl \
|
|
zlib
|
|
|
|
KODI_SUBDIR = project/cmake
|
|
|
|
# taken from tools/depends/target/ffmpeg/FFMPEG-VERSION
|
|
KODI_FFMPEG_VERSION = 3.1.11-Krypton-17.5
|
|
KODI_EXTRA_DOWNLOADS += \
|
|
https://github.com/xbmc/FFmpeg/archive/$(KODI_FFMPEG_VERSION).tar.gz
|
|
|
|
KODI_LIBDVDCSS_VERSION = 2f12236
|
|
KODI_LIBDVDNAV_VERSION = 981488f
|
|
KODI_LIBDVDREAD_VERSION = 17d99db
|
|
KODI_EXTRA_DOWNLOADS += \
|
|
https://github.com/xbmc/libdvdcss/archive/$(KODI_LIBDVDCSS_VERSION).tar.gz \
|
|
https://github.com/xbmc/libdvdnav/archive/$(KODI_LIBDVDNAV_VERSION).tar.gz \
|
|
https://github.com/xbmc/libdvdread/archive/$(KODI_LIBDVDREAD_VERSION).tar.gz
|
|
|
|
KODI_CONF_OPTS += \
|
|
-DCMAKE_C_FLAGS="$(TARGET_CFLAGS) $(KODI_C_FLAGS)" \
|
|
-DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) $(KODI_CXX_FLAGS)" \
|
|
-DENABLE_CCACHE=OFF \
|
|
-DENABLE_DVDCSS=ON \
|
|
-DENABLE_INTERNAL_CROSSGUID=OFF \
|
|
-DENABLE_INTERNAL_FFMPEG=ON \
|
|
-DFFMPEG_URL=$(KODI_DL_DIR)/$(KODI_FFMPEG_VERSION).tar.gz \
|
|
-DKODI_DEPENDSBUILD=OFF \
|
|
-DENABLE_OPENSSL=ON \
|
|
-DNATIVEPREFIX=$(HOST_DIR) \
|
|
-DDEPENDS_PATH=$(STAGING_DIR)/usr \
|
|
-DWITH_TEXTUREPACKER=$(HOST_DIR)/bin/TexturePacker \
|
|
-DLIBDVDCSS_URL=$(KODI_DL_DIR)/$(KODI_LIBDVDCSS_VERSION).tar.gz \
|
|
-DLIBDVDNAV_URL=$(KODI_DL_DIR)/$(KODI_LIBDVDNAV_VERSION).tar.gz \
|
|
-DLIBDVDREAD_URL=$(KODI_DL_DIR)/$(KODI_LIBDVDREAD_VERSION).tar.gz \
|
|
-DENABLE_IMX=OFF
|
|
|
|
ifeq ($(BR2_ENABLE_LOCALE),)
|
|
KODI_DEPENDENCIES += libiconv
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_RPI_USERLAND),y)
|
|
KODI_CONF_OPTS += -DCORE_SYSTEM_NAME=rbpi
|
|
KODI_DEPENDENCIES += rpi-userland
|
|
# These CPU-specific options are only used on rbpi:
|
|
# https://github.com/xbmc/xbmc/blob/Krypton/project/cmake/scripts/rbpi/ArchSetup.cmake#L13
|
|
ifeq ($(BR2_arm1176jzf_s)$(BR2_cortex_a7)$(BR2_cortex_a53),y)
|
|
KODI_CONF_OPTS += -DWITH_CPU="$(GCC_TARGET_CPU)"
|
|
endif
|
|
else
|
|
ifeq ($(BR2_arceb)$(BR2_arcle),y)
|
|
KODI_CONF_OPTS += -DWITH_ARCH=arc -DWITH_CPU=arc
|
|
else ifeq ($(BR2_armeb),y)
|
|
KODI_CONF_OPTS += -DWITH_ARCH=arm -DWITH_CPU=arm
|
|
else ifeq ($(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el),y)
|
|
KODI_CONF_OPTS += \
|
|
-DWITH_ARCH=mips$(if $(BR2_ARCH_IS_64),64) \
|
|
-DWITH_CPU=mips$(if $(BR2_ARCH_IS_64),64)
|
|
else ifeq ($(BR2_powerpc)$(BR2_powerpc64le),y)
|
|
KODI_CONF_OPTS += \
|
|
-DWITH_ARCH=powerpc$(if $(BR2_ARCH_IS_64),64) \
|
|
-DWITH_CPU=powerpc$(if $(BR2_ARCH_IS_64),64)
|
|
else ifeq ($(BR2_powerpc64)$(BR2_sparc64)$(BR2_sh4)$(BR2_xtensa),y)
|
|
KODI_CONF_OPTS += -DWITH_ARCH=$(BR2_ARCH) -DWITH_CPU=$(BR2_ARCH)
|
|
else
|
|
# Kodi auto-detects ARCH, tested: arm, aarch64, i386, x86_64
|
|
# see project/cmake/scripts/linux/ArchSetup.cmake
|
|
KODI_CONF_OPTS += -DWITH_CPU=$(BR2_ARCH)
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(BR2_X86_CPU_HAS_SSE),y)
|
|
KODI_CONF_OPTS += -D_SSE_OK=ON -D_SSE_TRUE=ON
|
|
else
|
|
KODI_CONF_OPTS += -D_SSE_OK=OFF -D_SSE_TRUE=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_X86_CPU_HAS_SSE2),y)
|
|
KODI_CONF_OPTS += -D_SSE2_OK=ON -D_SSE2_TRUE=ON
|
|
else
|
|
KODI_CONF_OPTS += -D_SSE2_OK=OFF -D_SSE2_TRUE=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_X86_CPU_HAS_SSE3),y)
|
|
KODI_CONF_OPTS += -D_SSE3_OK=ON -D_SSE3_TRUE=ON
|
|
else
|
|
KODI_CONF_OPTS += -D_SSE3_OK=OFF -D_SSE3_TRUE=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_X86_CPU_HAS_SSSE3),y)
|
|
KODI_CONF_OPTS += -D_SSSE3_OK=ON -D_SSSE3_TRUE=ON
|
|
else
|
|
KODI_CONF_OPTS += -D_SSSE3_OK=OFF -D_SSSE3_TRUE=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_X86_CPU_HAS_SSE4),y)
|
|
KODI_CONF_OPTS += -D_SSE41_OK=ON -D_SSE41_TRUE=ON
|
|
else
|
|
KODI_CONF_OPTS += -D_SSE41_OK=OFF -D_SSE41_TRUE=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_X86_CPU_HAS_SSE42),y)
|
|
KODI_CONF_OPTS += -D_SSE42_OK=ON -D_SSE42_TRUE=ON
|
|
else
|
|
KODI_CONF_OPTS += -D_SSE42_OK=OFF -D_SSE42_TRUE=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_X86_CPU_HAS_AVX),y)
|
|
KODI_CONF_OPTS += -D_AVX_OK=ON -D_AVX_TRUE=ON
|
|
else
|
|
KODI_CONF_OPTS += -D_AVX_OK=OFF -D_AVX_TRUE=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_X86_CPU_HAS_AVX2),y)
|
|
KODI_CONF_OPTS += -D_AVX2_OK=ON -D_AVX2_TRUE=ON
|
|
else
|
|
KODI_CONF_OPTS += -D_AVX2_OK=OFF -D_AVX2_TRUE=OFF
|
|
endif
|
|
|
|
# mips: uses __atomic_load_8
|
|
ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)
|
|
KODI_CXX_FLAGS += -latomic
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_KODI_PLATFORM_X11_OPENGL),y)
|
|
KODI_CONF_OPTS += \
|
|
-DENABLE_OPENGL=ON \
|
|
-DENABLE_OPENGLES=OFF \
|
|
-DENABLE_X11=ON
|
|
KODI_DEPENDENCIES += libegl libglu libgl xlib_libX11 xlib_libXext \
|
|
xlib_libXrandr libdrm
|
|
else
|
|
KODI_CONF_OPTS += -DENABLE_OPENGL=OFF -DENABLE_X11=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_KODI_MYSQL),y)
|
|
KODI_CONF_OPTS += -DENABLE_MYSQLCLIENT=ON
|
|
KODI_DEPENDENCIES += mysql
|
|
else
|
|
KODI_CONF_OPTS += -DENABLE_MYSQLCLIENT=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_KODI_NONFREE),y)
|
|
KODI_CONF_OPTS += -DENABLE_NONFREE=ON
|
|
KODI_LICENSE := $(KODI_LICENSE), unrar
|
|
KODI_LICENSE_FILES += lib/UnrarXLib/license.txt
|
|
else
|
|
KODI_CONF_OPTS += -DENABLE_NONFREE=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_RPI_USERLAND),y)
|
|
KODI_CONF_OPTS += -DCORE_SYSTEM_NAME=rbpi
|
|
KODI_DEPENDENCIES += rpi-userland
|
|
else
|
|
# Kodi considers "rpbi" and "linux" as two separate platforms. The
|
|
# below options, defined in
|
|
# project/cmake/scripts/linux/ArchSetup.cmake are only valid for the
|
|
# "linux" platforms. The "rpbi" platform has a different set of
|
|
# options, defined in project/cmake/scripts/rbpi/
|
|
KODI_CONF_OPTS += -DENABLE_LDGOLD=OFF
|
|
ifeq ($(BR2_PACKAGE_LIBAMCODEC),y)
|
|
KODI_CONF_OPTS += -DENABLE_AML=ON
|
|
KODI_DEPENDENCIES += libamcodec
|
|
else
|
|
KODI_CONF_OPTS += -DENABLE_AML=OFF
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_HAS_UDEV),y)
|
|
KODI_CONF_OPTS += -DENABLE_UDEV=ON
|
|
KODI_DEPENDENCIES += udev
|
|
else
|
|
KODI_CONF_OPTS += -DENABLE_UDEV=OFF
|
|
ifeq ($(BR2_PACKAGE_KODI_LIBUSB),y)
|
|
KODI_CONF_OPTS += -DENABLE_LIBUSB=ON
|
|
KODI_DEPENDENCIES += libusb-compat
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_LIBCAP),y)
|
|
KODI_CONF_OPTS += -DENABLE_CAP=ON
|
|
KODI_DEPENDENCIES += libcap
|
|
else
|
|
KODI_CONF_OPTS += -DENABLE_CAP=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_LIBXML2)$(BR2_PACKAGE_LIBXSLT),yy)
|
|
KODI_CONF_OPTS += -DENABLE_XSLT=ON
|
|
KODI_DEPENDENCIES += libxml2 libxslt
|
|
else
|
|
KODI_CONF_OPTS += -DENABLE_XSLT=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_KODI_BLUEZ),y)
|
|
KODI_CONF_OPTS += -DENABLE_BLUETOOTH=ON
|
|
KODI_DEPENDENCIES += bluez5_utils
|
|
else
|
|
KODI_CONF_OPTS += -DENABLE_BLUETOOTH=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_KODI_DBUS),y)
|
|
KODI_DEPENDENCIES += dbus
|
|
KODI_CONF_OPTS += -DENABLE_DBUS=ON
|
|
else
|
|
KODI_CONF_OPTS += -DENABLE_DBUS=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_KODI_EVENTCLIENTS),y)
|
|
KODI_CONF_OPTS += -DENABLE_EVENTCLIENTS=ON
|
|
else
|
|
KODI_CONF_OPTS += -DENABLE_EVENTCLIENTS=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_KODI_ALSA_LIB),y)
|
|
KODI_CONF_OPTS += -DENABLE_ALSA=ON
|
|
KODI_DEPENDENCIES += alsa-lib
|
|
else
|
|
KODI_CONF_OPTS += -DENABLE_ALSA=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_KODI_LIBMICROHTTPD),y)
|
|
KODI_CONF_OPTS += -DENABLE_MICROHTTPD=ON
|
|
KODI_DEPENDENCIES += libmicrohttpd
|
|
else
|
|
KODI_CONF_OPTS += -DENABLE_MICROHTTPD=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_KODI_LIBSMBCLIENT),y)
|
|
KODI_DEPENDENCIES += samba4
|
|
KODI_CONF_OPTS += -DENABLE_SMBCLIENT=ON
|
|
else
|
|
KODI_CONF_OPTS += -DENABLE_SMBCLIENT=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_KODI_LIBNFS),y)
|
|
KODI_DEPENDENCIES += libnfs
|
|
KODI_CONF_OPTS += -DENABLE_NFS=ON
|
|
else
|
|
KODI_CONF_OPTS += -DENABLE_NFS=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_KODI_LIBBLURAY),y)
|
|
KODI_DEPENDENCIES += libbluray
|
|
KODI_CONF_OPTS += -DENABLE_BLURAY=ON
|
|
else
|
|
KODI_CONF_OPTS += -DENABLE_BLURAY=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_KODI_LIBSHAIRPLAY),y)
|
|
KODI_DEPENDENCIES += libshairplay
|
|
KODI_CONF_OPTS += -DENABLE_AIRTUNES=ON
|
|
else
|
|
KODI_CONF_OPTS += -DENABLE_AIRTUNES=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_KODI_LIBSSH),y)
|
|
KODI_DEPENDENCIES += libssh
|
|
KODI_CONF_OPTS += -DENABLE_SSH=ON
|
|
else
|
|
KODI_CONF_OPTS += -DENABLE_SSH=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_KODI_AVAHI),y)
|
|
KODI_DEPENDENCIES += avahi
|
|
KODI_CONF_OPTS += -DENABLE_AVAHI=ON
|
|
else
|
|
KODI_CONF_OPTS += -DENABLE_AVAHI=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_KODI_LIBCEC),y)
|
|
KODI_DEPENDENCIES += libcec
|
|
KODI_CONF_OPTS += -DENABLE_CEC=ON
|
|
else
|
|
KODI_CONF_OPTS += -DENABLE_CEC=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_KODI_LCMS2),y)
|
|
KODI_DEPENDENCIES += lcms2
|
|
KODI_CONF_OPTS += -DENABLE_LCMS2=ON
|
|
else
|
|
KODI_CONF_OPTS += -DENABLE_LCMS2=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_KODI_LIRC),y)
|
|
KODI_CONF_OPTS += -DENABLE_LIRC=ON
|
|
else
|
|
KODI_CONF_OPTS += -DENABLE_LIRC=OFF
|
|
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 += -DENABLE_VAAPI=ON
|
|
else
|
|
KODI_CONF_OPTS += -DENABLE_VAAPI=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_KODI_LIBVDPAU),y)
|
|
KODI_DEPENDENCIES += libvdpau
|
|
KODI_CONF_OPTS += -DENABLE_VDPAU=ON
|
|
else
|
|
KODI_CONF_OPTS += -DENABLE_VDPAU=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_KODI_UPNP),y)
|
|
KODI_CONF_OPTS += -DENABLE_UPNP=ON
|
|
else
|
|
KODI_CONF_OPTS += -DENABLE_UPNP=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_KODI_OPTICALDRIVE),y)
|
|
KODI_CONF_OPTS += -DENABLE_OPTICAL=ON
|
|
else
|
|
KODI_CONF_OPTS += -DENABLE_OPTICAL=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_KODI_PULSEAUDIO),y)
|
|
KODI_CONF_OPTS += -DENABLE_PULSEAUDIO=ON
|
|
KODI_DEPENDENCIES += pulseaudio
|
|
else
|
|
KODI_CONF_OPTS += -DENABLE_PULSEAUDIO=OFF
|
|
endif
|
|
|
|
# Remove versioncheck addon, updating Kodi is done by building a new
|
|
# buildroot image.
|
|
KODI_ADDON_MANIFEST = $(TARGET_DIR)/usr/share/kodi/system/addon-manifest.xml
|
|
define KODI_CLEAN_UNUSED_ADDONS
|
|
rm -Rf $(TARGET_DIR)/usr/share/kodi/addons/service.xbmc.versioncheck
|
|
$(HOST_DIR)/bin/xml ed -L \
|
|
-d "/addons/addon[text()='service.xbmc.versioncheck']" \
|
|
$(KODI_ADDON_MANIFEST)
|
|
endef
|
|
KODI_POST_INSTALL_TARGET_HOOKS += KODI_CLEAN_UNUSED_ADDONS
|
|
|
|
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 $(cmake-package))
|