#! /usr/bin/make -f # for SOURCE_DATE_EPOCH include /usr/share/dpkg/pkg-info.mk DATE_MONTH_YEAR=$(shell env LC_TIME=C.utf8 date --utc --date=@${SOURCE_DATE_EPOCH} +"%B %Y") # retrieve the first part of the upstream version matching [0-9.]+ VERSION_UPSTREAM = $(shell dpkg-parsechangelog -SVersion | sed 's/\([0-9.]\+\).*/\1/') # for DEB_HOST_GNU_TYPE include /usr/share/dpkg/architecture.mk export DEB_BUILD_MAINT_OPTIONS=hardening=+all DPKG_EXPORT_BUILDFLAGS = 1 include /usr/share/dpkg/buildflags.mk # On mips and mipsel, each process is limited to 2 GB of memory. Because # gcc manages its memory badly, it will randomly run out of memory. As a # workaround we force the garbage collector to drop memory more aggressively. # # See Debian bug #849657 and # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79030 ifneq (,$(filter $(DEB_HOST_ARCH), mips mipsel)) export DEB_CXXFLAGS_MAINT_APPEND+=--param ggc-min-expand=5 endif BUILDDIR=$(CURDIR)/obj-$(DEB_HOST_GNU_TYPE) %: dh $@ --builddirectory=$(BUILDDIR) # override disabled by default rpath - we need to find libvcmi.so with it: override_dh_auto_configure: ln -s /usr/src/googletest/googletest test/googletest dh_auto_configure -- \ -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON \ -DCMAKE_INSTALL_RPATH=/usr/lib/$(DEB_HOST_MULTIARCH)/vcmi \ -DCMAKE_BUILD_RPATH_USE_ORIGIN=ON \ -DBIN_DIR=games \ -DFORCE_BUNDLED_FL=OFF \ -DENABLE_GITVERSION=OFF \ -DENABLE_TEST=0 execute_before_dh_auto_build: # cmake checking for compiler flags without setting CPPFLAGS # False positive from blhc. See #994422 @echo 'blhc: ignore-line-regexp: /usr/(bin|lib)/(ccache/)?c\+\+ -std=gnu\+\+17 -dM -E -c /usr/share/cmake-[0-9.]+/Modules/CMakeCXXCompilerABI.cpp .*' execute_before_dh_installman: ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) # native build # verify that the contents of debian/*.1 files are up-to-date # # we have to set HOME to a temporary directory when running vcmiserver because # - when running vcmiserver it wants to create $HOME/.config/vcmi, # $HOME/.cache/vcmi and $HOME/.local/share/vcmi/Saves # - sbuild uses the non-existing path /sbuild-nonexistent and the vcmiserver # invocation would fail because it cannot create it # - we don't want to touch the home directory of the user running dpkg-buildpackage HOME=$(BUILDDIR) help2man --version-string=$(VERSION_UPSTREAM) --include=debian/vcmiserver.1.in --output=vcmiserver.1 $(BUILDDIR)/bin/vcmiserver HOME=$(BUILDDIR) QT_QPA_PLATFORM=minimal help2man --version-string=$(VERSION_UPSTREAM) --include=debian/vcmieditor.1.in --output=vcmieditor.1 $(BUILDDIR)/bin/vcmieditor help2man --version-string=$(VERSION_UPSTREAM) --include=debian/vcmiclient.1.in --output=vcmiclient.1 $(BUILDDIR)/bin/vcmiclient # Prepend the first line and replace version string before comparing set -e; for bin in server editor client; do \ { \ awk 'NR == 1 && /DO NOT MODIFY THIS FILE! It was generated by help2man/ { print }' vcmi$$bin.1; \ sed 's/@@VERSION@@/$(VERSION_UPSTREAM)/;s/@@DATE@@/$(DATE_MONTH_YEAR)/' debian/vcmi$$bin.1; \ } | diff -u - vcmi$$bin.1; \ done endif # if this was a cross-build, we can just use the cached debian/*.1 files # if this was a native build, we verified their contents above set -e; for bin in server editor client; do \ sed 's/@@VERSION@@/$(VERSION_UPSTREAM)/;s/@@DATE@@/$(DATE_MONTH_YEAR)/' debian/vcmi$$bin.1 > vcmi$$bin.1; \ done # vcmibuilder is a shell script so we can run this even when cross-building help2man --version-string=$(VERSION_UPSTREAM) --include=debian/vcmibuilder.1.in --output=vcmibuilder.1 $(CURDIR)/vcmibuilder override_dh_auto_install: dh_auto_install --destdir=debian/vcmi execute_after_dh_auto_clean: # test/googletest is either an empty directory from the upstream # tarball or a symlink we created rmdir test/googletest || rm -f test/googletest