[Buildroot] [PATCH v2 37/38] package/kodi: add Kconfig option to make TexturePacker optional
Bernd Kuhls
bernd.kuhls at t-online.de
Fri Feb 3 16:20:31 UTC 2017
Kodi uses a tool named TexturePacker to compile all images used in a
skin into a single file. The benefit of it is that images inside the
Textures.xbt will load faster in the skin. This is done by converting
all images into a format that take less processing by Kodi when they
need to be rendered onto the screen.
Previously this was done by default, this patch provides support for
the corresponding configure options in Kodi while still taking care
to remove the original media files when TexturePacker support is
enabled, also add this to package kodi-skin-confluence.
Signed-off-by: Bernd Kuhls <bernd.kuhls at t-online.de>
---
.../kodi-skin-confluence/kodi-skin-confluence.mk | 11 +++++++
package/kodi/Config.in | 15 ++++++++++
package/kodi/kodi.mk | 34 ++++++++++++++++------
3 files changed, 51 insertions(+), 9 deletions(-)
diff --git a/package/kodi-skin-confluence/kodi-skin-confluence.mk b/package/kodi-skin-confluence/kodi-skin-confluence.mk
index 65f27150a..8ffa817a3 100644
--- a/package/kodi-skin-confluence/kodi-skin-confluence.mk
+++ b/package/kodi-skin-confluence/kodi-skin-confluence.mk
@@ -10,9 +10,20 @@ KODI_SKIN_CONFLUENCE_LICENSE = GPLv2+
KODI_SKIN_CONFLUENCE_LICENSE_FILES = COPYING
KODI_SKIN_CONFLUENCE_DEPENDENCIES = kodi
+ifeq ($(BR2_PACKAGE_KODI_TEXTUREPACKER),y)
+define KODI_SKIN_CONFLUENCE_BUILD_CMDS
+ $(HOST_DIR)/usr/bin/TexturePacker -input $(@D)/media/ -output $(@D)/media/Textures.xbt -dupecheck -use_none
+endef
+define KODI_SKIN_CONFLUENCE_CLEAN
+ find $(TARGET_DIR)/usr/share/kodi/addons/skin.confluence/media -name *.jpg -delete
+ find $(TARGET_DIR)/usr/share/kodi/addons/skin.confluence/media -name *.png -delete
+endef
+endif
+
define KODI_SKIN_CONFLUENCE_INSTALL_TARGET_CMDS
mkdir -p $(TARGET_DIR)/usr/share/kodi/addons/skin.confluence
cp -dpfr $(@D)/* $(TARGET_DIR)/usr/share/kodi/addons/skin.confluence
+ $(KODI_SKIN_CONFLUENCE_CLEAN)
endef
$(eval $(generic-package))
diff --git a/package/kodi/Config.in b/package/kodi/Config.in
index 40b9cfb36..67435d34f 100644
--- a/package/kodi/Config.in
+++ b/package/kodi/Config.in
@@ -345,6 +345,21 @@ config BR2_PACKAGE_KODI_SKIN_DEFAULT_CONFLUENCE
endchoice
+config BR2_PACKAGE_KODI_TEXTUREPACKER
+ bool "kodi-texturepacker"
+ default y
+ help
+ Kodi uses a tool named TexturePacker to compile all images
+ used in a skin into a single file. The benefit of it is that
+ images inside the Textures.xbt will load faster in the skin.
+ This is done by converting all images into a format that take
+ less processing by Kodi when they need to be rendered onto the
+ screen.
+
+ http://kodi.wiki/view/TexturePacker
+
+comment "Skins"
+
config BR2_PACKAGE_KODI_SKIN_ESTUARY
bool "kodi-skin-estuary"
default y
diff --git a/package/kodi/kodi.mk b/package/kodi/kodi.mk
index d86ac6d36..f9e7434aa 100644
--- a/package/kodi/kodi.mk
+++ b/package/kodi/kodi.mk
@@ -18,11 +18,7 @@ KODI_DEPENDENCIES = \
freetype \
host-gawk \
host-gettext \
- host-giflib \
host-gperf \
- host-libjpeg \
- host-libpng \
- host-lzo \
host-nasm \
host-swig \
host-xmlstarlet \
@@ -53,10 +49,7 @@ KODI_CONF_ENV = \
PYTHON_LDFLAGS="-lpython$(PYTHON_VERSION_MAJOR) -lpthread -ldl -lutil -lm" \
PYTHON_CPPFLAGS="-I$(STAGING_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR)" \
PYTHON_SITE_PKG="$(STAGING_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages" \
- PYTHON_NOVERSIONCHECK="no-check" \
- use_texturepacker_native=yes \
- USE_TEXTUREPACKER_NATIVE_ROOT="$(HOST_DIR)/usr" \
- TEXTUREPACKER_NATIVE_ROOT="$(HOST_DIR)/usr"
+ PYTHON_NOVERSIONCHECK="no-check"
KODI_MAKE_ENV = \
DVD_PREFIX="$(STAGING_DIR)"
@@ -286,11 +279,30 @@ endif
# Add HOST_DIR to PATH for codegenerator.mk to find swig
define KODI_BOOTSTRAP
$(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D)/tools/depends/native/JsonSchemaBuilder
- $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D)/tools/depends/native/TexturePacker
cd $(@D) && PATH=$(BR_PATH) ./bootstrap
endef
KODI_PRE_CONFIGURE_HOOKS += KODI_BOOTSTRAP
+ifeq ($(BR2_PACKAGE_KODI_TEXTUREPACKER),y)
+KODI_DEPENDENCIES += \
+ host-giflib \
+ host-libjpeg \
+ host-libpng \
+ host-lzo
+KODI_CONF_ENV += \
+ use_texturepacker_native=yes \
+ USE_TEXTUREPACKER_NATIVE_ROOT="$(HOST_DIR)/usr" \
+ TEXTUREPACKER_NATIVE_ROOT="$(HOST_DIR)/usr"
+define KODI_BUILD_TEXTUREPACKER
+ $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D)/tools/depends/native/TexturePacker
+ $(INSTALL) -m 755 -D $(@D)/tools/depends/native/TexturePacker/bin/TexturePacker $(HOST_DIR)/usr/bin/TexturePacker
+endef
+KODI_PRE_CONFIGURE_HOOKS += KODI_BUILD_TEXTUREPACKER
+KODI_CONF_OPTS += --enable-texturepacker
+else
+KODI_CONF_OPTS += --disable-texturepacker
+endif
+
# Remove versioncheck addon, updating Kodi is done by building a new
# buildroot image.
@@ -306,12 +318,14 @@ KODI_POST_INSTALL_TARGET_HOOKS += KODI_CLEAN_UNUSED_ADDONS
# Skins estuary and estouchy are installed by default and need to be
# removed if they are disabled in buildroot
ifeq ($(BR2_PACKAGE_KODI_SKIN_ESTUARY),y)
+ifeq ($(BR2_PACKAGE_KODI_TEXTUREPACKER),y)
define KODI_CLEAN_SKIN_ESTUARY
find $(TARGET_DIR)/usr/share/kodi/addons/skin.estuary/media -name *.gif -delete
find $(TARGET_DIR)/usr/share/kodi/addons/skin.estuary/media -name *.jpg -delete
find $(TARGET_DIR)/usr/share/kodi/addons/skin.estuary/media -name *.png -delete
endef
KODI_POST_INSTALL_TARGET_HOOKS += KODI_CLEAN_SKIN_ESTUARY
+endif
else
define KODI_REMOVE_SKIN_ESTUARY
rm -Rf $(TARGET_DIR)/usr/share/kodi/addons/skin.estuary
@@ -323,12 +337,14 @@ KODI_POST_INSTALL_TARGET_HOOKS += KODI_REMOVE_SKIN_ESTUARY
endif
ifeq ($(BR2_PACKAGE_KODI_SKIN_ESTOUCHY),y)
+ifeq ($(BR2_PACKAGE_KODI_TEXTUREPACKER),y)
define KODI_CLEAN_SKIN_ESTOUCHY
find $(TARGET_DIR)/usr/share/kodi/addons/skin.estouchy/media -name *.gif -delete
find $(TARGET_DIR)/usr/share/kodi/addons/skin.estouchy/media -name *.jpg -delete
find $(TARGET_DIR)/usr/share/kodi/addons/skin.estouchy/media -name *.png -delete
endef
KODI_POST_INSTALL_TARGET_HOOKS += KODI_CLEAN_SKIN_ESTOUCHY
+endif
else
define KODI_REMOVE_SKIN_ESTOUCHY
rm -Rf $(TARGET_DIR)/usr/share/kodi/addons/skin.estouchy
--
2.11.0
More information about the buildroot
mailing list