#!/usr/bin/make -f
# -*- makefile -*-
include /usr/share/dpkg/default.mk

EXTRA_CMAKE_VARIABLES += \
	TDESKTOP_API_ID=50322 \
	TDESKTOP_API_HASH=9ff1a639196c0779c86dd661af8522ba \
	DESKTOP_APP_QT6=OFF \
	DESKTOP_APP_REQUIRE_JEMALLOC=OFF \
	DESKTOP_APP_USE_PACKED_RESOURCES=ON \
	CMAKE_STATIC_LINKER_FLAGS='-T'

DEB_BUILD_MAINT_OPTIONS = hardening=+all

# Reveal any errors with pre-compiled headers.
DEB_CPPFLAGS_MAINT_APPEND += -Werror=invalid-pch

# Print full stack trace of template instantiations.
DEB_CXXFLAGS_MAINT_APPEND += -ftemplate-backtrace-limit=0

# Build scripts do not require compiled object code. This also shrinks result
# binary by 50 kB.
DEB_CXXFLAGS_MAINT_STRIP += -ffat-lto-objects

ifeq ($(filter terse,$(DEB_BUILD_OPTIONS)),)
 # Print entire arguments of moc invocation.
 EXTRA_CMAKE_VARIABLES += CMAKE_AUTOGEN_VERBOSE=ON
endif

ifneq ($(DEB_HOST_ARCH_OS),linux)
 # Wayland is not ready on GNU/Hurd or Debian/kFreeBSD.
 # Make sure KWayland library and Qt WaylandClient plugin are not in use.
 EXTRA_CMAKE_VARIABLES += DESKTOP_APP_DISABLE_WAYLAND_INTEGRATION=ON
 DEB_CPPFLAGS_MAINT_APPEND += -UQT_WAYLANDCLIENT_LIB
endif

ifeq ($(filter pkg.$(DEB_SOURCE).lotmem,$(DEB_BUILD_PROFILES)),)
 ifeq ($(DEB_BUILD_ARCH_BITS),32)
  ATTEMPT_SAVE_MEMORY = 1
 endif
 ifneq ($(filter Debian-riscv64 Ubuntu-arm64 Ubuntu-ppc64el,$(DEB_VENDOR)-$(DEB_BUILD_ARCH)),)
  ATTEMPT_SAVE_MEMORY = 1
 endif
 ifneq ($(filter -flto -flto=%,$(CXXFLAGS)),)
  ATTEMPT_SAVE_MEMORY = 1
 endif
 ifeq ($(DEB_BUILD_ARCH),mipsel)
  ifeq ($(filter nostrip,$(DEB_BUILD_OPTIONS)),)
   SPLIT_DEBUG_INFO = 1
  endif
 endif
endif
ifdef ATTEMPT_SAVE_MEMORY
 # Less debug info by default to fit small address space.
 ifneq ($(filter -g,$(CXXFLAGS)),)
  DEB_CXXFLAGS_MAINT_STRIP += -g
  DEB_CXXFLAGS_MAINT_PREPEND += -g1
 endif
 # Attempt to reduce RAM consumption even more.
 DEB_LDFLAGS_MAINT_APPEND += -Wl,--no-keep-memory
endif
ifdef SPLIT_DEBUG_INFO
 DEB_CXXFLAGS_MAINT_PREPEND += -gsplit-dwarf
endif

CPPLIBS_PACKAGES = libexpected-dev libmsgsl-dev librange-v3-dev libtgowt-dev
EXTRA_SUBSTVARS += \
	cpplibs:Built-Using=$(shell dpkg-query -Wf '$${source:Package}(=$${Version}),' $(CPPLIBS_PACKAGES))

# Make visible all possible maintainer's flags.
export DEB_BUILD_MAINT_OPTIONS $(foreach flag,$(DPKG_BUILDFLAGS_LIST),\
	$(foreach operation,STRIP APPEND PREPEND,DEB_$(flag)_MAINT_$(operation)))

# Make debugging a little easier. https://stackoverflow.com/a/25817631/5000805
# Print also export line if the variable is being exported.
print-%:
	@echo $* = $($*)
	@env | sed '/^\($*\)=.*/s//export \1/;t;d'

%:
	dh $@

override_dh_auto_configure:
	dh_auto_configure -- $(EXTRA_CMAKE_VARIABLES:%=-D%)
# Clear a redundant linker flag imposed by abseil. See https://bugs.debian.org/1001596
	sed -i 's/-Wl,--no-as-needed\>//g' obj-*/Telegram/CMakeFiles/Telegram.dir/link.txt

# Unset limit of debug information entries.
override_dh_dwz:
ifndef SPLIT_DEBUG_INFO
	dh_dwz -- -L none
else

# dwz(1) can't work with split DWARF, see: https://sourceware.org/bugzilla/show_bug.cgi?id=24756
# Gather debug references on my own before Debhelper moves it to -dbgsym package.
TELEGRAM_BINARY = debian/telegram-desktop/usr/bin/telegram-desktop
DBGSYM = debian/.debhelper/telegram-desktop/dbgsym-root
DBGDIR = usr/lib/debug/telegram-desktop
TRACING = $(if $(filter terse,$(DEB_BUILD_OPTIONS)),,-x)
execute_before_dh_strip:
	mkdir -p debian/tmp $(DBGSYM)/$(DBGDIR)
	TMPDIR=debian/tmp debian/dbgpatch.py $(TRACING) $(TELEGRAM_BINARY) $(DBGSYM) $(DBGDIR)
endif

override_dh_gencontrol:
	dh_gencontrol -- $(EXTRA_SUBSTVARS:%="-V%")
