f295ad4cb0
Now that the infra takes care of removing extraneous spaces before commas, we can safely append to LICENSE variables. This removes the only case where we had to use immediate assignment to append to a variable. Mechanical change, with: $ sed -r -i -e 's/\<([^[:space:]]+_LICENSE) := \$\(\1\),/\1 += ,/' \ $(git grep -l -E '\<([^[:space:]]+_LICENSE) := \$\(\1\),') Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
409 lines
11 KiB
Makefile
409 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_KODI_PLATFORM_RBPI),y)
|
|
# 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_RBPI),y)
|
|
KODI_CONF_OPTS += -DCORE_SYSTEM_NAME=rbpi -DENABLE_OPENGLES=ON
|
|
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
|
|
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 += , unrar
|
|
KODI_LICENSE_FILES += lib/UnrarXLib/license.txt
|
|
else
|
|
KODI_CONF_OPTS += -DENABLE_NONFREE=OFF
|
|
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))
|