#!/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 DVDNAV_COMPONENT = libdvdnav-embedded DVDNAV_URL = tools/depends/target/libdvdnav/libdvdnav-embedded.tar.xz DVDREAD_COMPONENT = libdvdread-embedded DVDREAD_URL = tools/depends/target/libdvdread/libdvdread-embedded.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 alpha,$(DEB_HOST_ARCH))) EXTRA_FLAGS := $(EXTRA_FLAGS) -DWITH_ARCH=alpha else ifneq (,$(filter amd64,$(DEB_HOST_ARCH))) EXTRA_FLAGS := $(EXTRA_FLAGS) -DWITH_ARCH=x86_64-linux else ifneq (,$(filter arm64,$(DEB_HOST_ARCH))) EXTRA_FLAGS := $(EXTRA_FLAGS) -DWITH_ARCH=aarch64 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 m68k,$(DEB_HOST_ARCH))) EXTRA_FLAGS := $(EXTRA_FLAGS) -DWITH_ARCH=m68k 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 powerpc,$(DEB_HOST_ARCH))) EXTRA_FLAGS := $(EXTRA_FLAGS) -DWITH_ARCH=ppc else ifneq (,$(filter ppc64,$(DEB_HOST_ARCH))) EXTRA_FLAGS := $(EXTRA_FLAGS) -DWITH_ARCH=ppc64 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 # TODO: Workaround for #1043076 - remove when resolved export DEB_CFLAGS_MAINT_APPEND = -O3 -fexcess-precision=fast export DEB_CXXFLAGS_MAINT_APPEND = -O3 -fexcess-precision=fast else ifneq (,$(filter sh4,$(DEB_HOST_ARCH))) EXTRA_FLAGS := $(EXTRA_FLAGS) -DWITH_ARCH=sh4 else ifneq (,$(filter sparc64,$(DEB_HOST_ARCH))) EXTRA_FLAGS := $(EXTRA_FLAGS) -DWITH_ARCH=sparc64 endif # Build arm* architectures with GLES instead of GL # (Closes: 1056563) ifneq (,$(filter armel armhf arm64,$(DEB_HOST_ARCH))) EXTRA_FLAGS := $(EXTRA_FLAGS) -DAPP_RENDER_SYSTEM=gles else EXTRA_FLAGS := $(EXTRA_FLAGS) -DAPP_RENDER_SYSTEM=gl 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 # Kodi configuration options # 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_INTERNAL_LIBDVD=ON \ -DENABLE_INTERNAL_RapidJSON=OFF \ -DENABLE_INTERNAL_TZDATA=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)" \ $(EXTRA_FLAGS) %: dh $@ --buildsystem cmake --with python3 override_dh_clean: # Restore official addon repository list in version.txt sed -i \ '/^ADDON_REPOS/s+,repository.debian.languages|file:///usr/share/kodi/language-repo++' \ version.txt # Clean up "repository.debian.languages" addon echo "Cleaning up repository.debian.languages ..." rm -rf $(CURDIR)/addons/repository.debian.languages \ $(CURDIR)/repo-resources-embedded/language-repo sed -i "/repository.debian.languages/i\ \ repository.debian.languages<\/addon>" \ $(CURDIR)/system/addon-manifest.xml echo "addons/repository.debian.languages/*" \ 1>>$(CURDIR)/cmake/installdata/common/addons.txt # Build repository.debian.languages repository cd repo-resources-embedded && \ python3 ../debian/generate-repo.py language-repo # Prepare archives from embedded libdvd* tar -cf $(DVDNAV_URL) $(DVDNAV_COMPONENT) tar -cf $(DVDREAD_URL) $(DVDREAD_COMPONENT) override_dh_auto_configure: addons/skin.estuary/media/from-debian-logo.png embedded-libs lib/gtest/lib/.libs/libgtest.a media/Fonts/arial.ttf 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) \ -DLIBDVDREAD_HASH="SHA256=$(shell sha256sum $(DVDREAD_URL) | cut -d' ' -f1)" \ -DLIBDVDNAV_HASH="SHA256=$(shell sha256sum $(DVDNAV_URL) | cut -d' ' -f1)" 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 # Prepare kodi/system dummy file # this is necessary to compensate absence of libsse4.so on non-x86 mkdir -p debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/kodi/system touch debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/kodi/system/dummy # 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 # zeroconf.py find debian/kodi-eventclients-*/ \ ! \( -name "ps3_remote.py" -o -name "sixpair.py" -o -name "sixwatch.py" -o -name "zeroconf.py" \) \ -name "*.py" -exec chmod 0644 '{}' \; # Remove ps3 and zeroconf.py 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 rm -f debian/kodi-eventclients-python/usr/lib/python*/*/kodi/zeroconf.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