#!/usr/bin/make -f # Avoid custom build rule silencing export V=1 # Include /usr/share/dpkg/pkg-info.mk to get DEB_{SOURCE,VERSION} include /usr/share/dpkg/pkg-info.mk # Include /usr/share/dpkg/architecture.mk to get DEB_HOST_{MULTI,}ARCH include /usr/share/dpkg/architecture.mk # bindnow breaks wrappers used in with libdvdread export DEB_BUILD_MAINT_OPTIONS = hardening=+all,-bindnow DATE_COMPONENT = libdate-tz-embedded DVDNAV_COMPONENT = libdvdnav-embedded DVDNAV_URL = tools/depends/target/libdvdnav/libdvdnav-$$(grep VERSION tools/depends/target/libdvdnav/DVDNAV-VERSION | sed 's/^[^=]*=//').tar.xz DVDREAD_COMPONENT = libdvdread-embedded DVDREAD_URL = tools/depends/target/libdvdread/libdvdread-$$(grep VERSION tools/depends/target/libdvdread/DVDREAD-VERSION | sed 's/^[^=]*=//').tar.xz export DEB_CFLAGS_MAINT_STRIP = -O2 export DEB_CFLAGS_MAINT_APPEND = -O3 export DEB_CXXFLAGS_MAINT_STRIP = -O2 export DEB_CXXFLAGS_MAINT_APPEND = -O3 BUILD_WAYLAND := yes BUILD_GBM := yes NUMCPU = # Support parallel= in DEB_BUILD_OPTIONS (see #209008) ifneq (,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS)))) NUMCPU := $(subst parallel=,,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS)))) endif # Various environment variables to set export DEB_LDFLAGS_MAINT_APPEND = -latomic -lpthread # for embedded libdvd* and Kodi from Debian patch: export DEB_CPPFLAGS_MAINT_APPEND = -D_XBMC -DDEB_VERSION=\"$(DEB_VERSION)\" KODI_PLATFORMS := x11 ifeq ($(BUILD_WAYLAND),yes) KODI_PLATFORMS := $(KODI_PLATFORMS) wayland endif ifeq ($(BUILD_GBM),yes) KODI_PLATFORMS := $(KODI_PLATFORMS) gbm endif # basilgello: keep these overrides to ensure CMake honors # the 32-bit architecture requested by 'dpkg-buildpackage' # (like 'i486-linux') on 64-bit machines (like 'amd64'). ifneq (,$(filter amd64,$(DEB_HOST_ARCH))) EXTRA_FLAGS := $(EXTRA_FLAGS) -DWITH_ARCH=x86_64-linux else ifneq (,$(filter armel armhf,$(DEB_HOST_ARCH))) EXTRA_FLAGS := $(EXTRA_FLAGS) -DWITH_ARCH=arm else ifneq (,$(filter i386,$(DEB_HOST_ARCH))) EXTRA_FLAGS := $(EXTRA_FLAGS) -DWITH_ARCH=i486-linux else ifneq (,$(filter mipsel,$(DEB_HOST_ARCH))) EXTRA_FLAGS := $(EXTRA_FLAGS) -DWITH_ARCH=mips else ifneq (,$(filter mips64el,$(DEB_HOST_ARCH))) EXTRA_FLAGS := $(EXTRA_FLAGS) -DWITH_ARCH=mips64 else ifneq (,$(filter ppc64el,$(DEB_HOST_ARCH))) EXTRA_FLAGS := $(EXTRA_FLAGS) -DWITH_ARCH=ppc64 else ifneq (,$(filter riscv64,$(DEB_HOST_ARCH))) EXTRA_FLAGS := $(EXTRA_FLAGS) -DWITH_ARCH=riscv64 else ifneq (,$(filter s390x,$(DEB_HOST_ARCH))) EXTRA_FLAGS := $(EXTRA_FLAGS) -DWITH_ARCH=s390x endif # basilgello: If cross-compiling, tell Kodi to look for native prerequisites # in $(CURDIR)/native-tools, where the override_dh_autoconfigure step builds # them for the build architecture (the native architecture of builder machine) ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) EXTRA_FLAGS := $(EXTRA_FLAGS) \ -DWITH_JSONSCHEMABUILDER=$(CURDIR)/native-tools/bin/JsonSchemaBuilder \ -DWITH_TEXTUREPACKER=$(CURDIR)/native-tools/bin/TexturePacker endif # libdate-tz configuration options DATE_OPTS=\ -DVERBOSE=1 \ -DUSE_SYSTEM_TZ_DB=ON \ -DMANUAL_TZ_DB=OFF \ -DUSE_TZ_DB_IN_DOT=OFF \ -DBUILD_SHARED_LIBS=OFF \ -DBUILD_TZ_LIB=ON \ -DCMAKE_CXX_STANDARD=14 \ -DDISABLE_STRING_VIEW=ON # Kodi configuration options # #‌ basilgello: we build embedded libdate-tz as external to Kodi # because the Kodi upstream requires us either to specify CMake # toolchain file or build libdate-tz before Kodi is configured # # Two CMake variables are injected into CMake cache to disable # `find_library(DATE_LIBRARY` and `find_include_dir(DATE_INCLUDE_DIR` # processing: DATE_LIBRARY_RELEASE and DATE_INCLUDE_DIR. #‌ # See cmake/modules/FindDate.cmake and --trace-expand CMake log for # the underlying logic KODI_OPTS=\ -DVERBOSE=1 \ -DUSE_LTO=$(NUMCPU) \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DENABLE_AIRTUNES=ON \ -DENABLE_ALSA=ON \ -DENABLE_AVAHI=ON \ -DENABLE_BLURAY=ON \ -DENABLE_CEC=ON \ -DENABLE_DBUS=ON \ -DENABLE_DEBUGFISSION=OFF \ -DENABLE_DVDCSS=OFF \ -DENABLE_EVENTCLIENTS=ON \ -DENABLE_INTERNAL_CROSSGUID=OFF \ -DENABLE_INTERNAL_DATE=OFF \ -DENABLE_INTERNAL_FFMPEG=OFF \ -DENABLE_INTERNAL_KISSFFT=OFF \ -DENABLE_MICROHTTPD=ON \ -DENABLE_MYSQLCLIENT=ON \ -DENABLE_NFS=ON \ -DENABLE_OPTICAL=ON \ -DENABLE_PULSEAUDIO=ON \ -DENABLE_SMBCLIENT=ON \ -DENABLE_UDEV=ON \ -DENABLE_UPNP=ON \ -DENABLE_VAAPI=ON \ -DENABLE_VDPAU=ON \ -DENABLE_XSLT=ON \ -DLIBDVDREAD_URL=$(DVDREAD_URL) \ -DLIBDVDNAV_URL=$(DVDNAV_URL) \ -DENABLE_LIRCCLIENT=ON \ -DNEON=False \ -DCORE_PLATFORM_NAME="$(KODI_PLATFORMS)" \ -DAPP_RENDER_SYSTEM=gl \ -DDATE_LIBRARY_RELEASE:FILEPATH=$(CURDIR)/lib/date/libdate-tz.a \ -DDATE_INCLUDE_DIR:PATH=$(CURDIR)/$(DATE_COMPONENT)/include \ $(EXTRA_FLAGS) %: dh $@ --buildsystem cmake --with python3 override_dh_clean: #‌ Clean the optional language packs originating in repo-resources-embedded #‌ We rely on the fact that there are no optional resource.language.* in # system/addon-manifest.xml cd repo-resources-embedded && for i in resource.language.*; do \ if grep -q "$$i" \ $(CURDIR)/system/addon-manifest.xml; \ then \ echo "Cleaning language pack $$i"; \ rm -rf $(CURDIR)/addons/$$i; \ sed -i "/$$i/i\ \ $$i<\/addon>" \ $(CURDIR)/system/addon-manifest.xml; \ echo "addons/$$i/*"‌ \ 1>>$(CURDIR)/cmake/installdata/common/addons.txt; \ done #‌ Prepare archives from embedded libdvd* tar -cf $(DVDNAV_URL) $(DVDNAV_COMPONENT) tar -cf $(DVDREAD_URL) $(DVDREAD_COMPONENT) ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) # We are cross-compiling! # Produce the JsonSchemaBuilder and TexturePacker # prerequisites for the build architecture cd tools/depends/native/JsonSchemaBuilder && \ make NATIVEPREFIX=$(CURDIR)/native-tools cd tools/depends/native/TexturePacker && \ make NATIVEPREFIX=$(CURDIR)/native-tools endif dh_auto_configure -- $(KODI_OPTS) override_dh_auto_build: dh_auto_build for file in $$(ls debian/dh-addon/dh_*); do \ pod2man --section=1 --utf8 $$file $$file.1; \ done override_dh_auto_test-arch: dh_auto_build -- kodi-test dh_auto_test -a # No tests for indep build. override_dh_auto_test-indep: override_dh_install-indep: # Perform arch-independent install dh_install -i -XLICENCE -XLICENSE \ -XLicence.txt -XLicense.txt -XLICENSE.txt \ -XNOTICE.txt \ -Xjquery-1.8.2.min.js -Xiscroll-min.js # Remove kodi-repository-kodi part from kodi-data rm -rf debian/kodi-data/usr/share/kodi/addons/repository.xbmc.org # Remove documentation-outside-usr-share-doc but not from addons rm -f debian/kodi-data/usr/share/kodi/privacy-policy.txt # Install kodi-repository-kodi dh_install -pkodi-repository-kodi \ addons/repository.xbmc.org/* usr/share/kodi/addons/repository.xbmc.org # ship xbmcclient.h only in kodi-eventclients-dev rm -f debian/kodi-addons-dev-common/usr/include/kodi/xbmcclient.h # check if all needed headers are included $(CXX) -E -c debian/headers-check.c -DBUILD_KODI_ADDON \ $(shell dpkg-buildflags --get CPPFLAGS) \ $(shell dpkg-buildflags --get CXXFLAGS) \ -Idebian/kodi-addons-dev-common/usr/include \ -o /dev/null override_dh_install-arch: # Prepare kodi-eventclients-dev dummy file # see debian/control for explanation of package purpose touch debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/kodi/eventclients-dev # Rename zeroconf.py to zeroconf and move to multi-arch location mv debian/tmp/usr/lib/python*/*/kodi/zeroconf.py debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/kodi/zeroconf # Perform arch-specific install dh_install -a -XLICENCE -XLICENSE -XLicence.txt -XLicense.txt -XLICENSE.txt -XNOTICE.txt # Drop executable flag from all Python scripts except: # ps3_remote.py # sixpair.py # sixwatch.py find debian/kodi-eventclients-*/ \ ! \( -name "ps3_remote.py" -o -name "sixpair.py" -o -name "sixwatch.py" \) \ -name "*.py" -exec chmod 0644 '{}' \; # Remove ps3 from kodi-eventclients-python rm -rf debian/kodi-eventclients-python/usr/lib/python*/*/kodi/ps3 rm -f debian/kodi-eventclients-python/usr/lib/python*/*/kodi/ps3_remote.py # dwz fails to create multifile dwarfs with '-gstrip-dwarf' override_dh_dwz: override_dh_shlibdeps: dh_shlibdeps -a \ -l$(CURDIR)/debian/kodi-bin/usr/lib/*/kodi/system/players/dvdplayer override_dh_gencontrol: debian/dh-addon/dh_kodiaddon_depends dh_gencontrol