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

EXTRA_CMAKE_VARIABLES += \
	TDESKTOP_API_ID=50322 \
	TDESKTOP_API_HASH=9ff1a639196c0779c86dd661af8522ba \
	QT_VERSION_MAJOR=5 \
	DESKTOP_APP_REQUIRE_JEMALLOC=OFF \
	DESKTOP_APP_USE_PACKAGED_FONTS=ON \
	DESKTOP_APP_USE_PACKAGED_RLOTTIE=ON \
	DESKTOP_APP_USE_PACKED_RESOURCES=ON \
	DESKTOP_APP_USE_CLD3=OFF \
	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 -I$(CURDIR)/debian

# 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_CFLAGS_MAINT_STRIP += -ffat-lto-objects
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
 ifeq ($(DEB_BUILD_ARCH),mips64el)
   DEB_CXXFLAGS_MAINT_STRIP += -g
   DEB_CXXFLAGS_MAINT_PREPEND += -g1
 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,$(CFLAGS)),)
  DEB_CLAGS_MAINT_STRIP += -g
  DEB_CFLAGS_MAINT_PREPEND += -g1
 endif
 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_CFLAGS_MAINT_PREPEND += -gsplit-dwarf
 DEB_CXXFLAGS_MAINT_PREPEND += -gsplit-dwarf
endif

ifeq ($(filter pkg.$(DEB_SOURCE).hugeopt,$(DEB_BUILD_PROFILES)),)
 ifeq ($(DEB_VENDOR),Ubuntu)
  # Link time optimizations require more than 8 GB of RAM.
  DEB_BUILD_MAINT_OPTIONS += optimize=-lto
 endif
endif

backporting_bullseye = $(findstring bullseye,$(DEB_DISTRIBUTION))
backporting_jammy    = $(findstring jammy,$(DEB_DISTRIBUTION))

CPPLIBS_PACKAGES = libexpected-dev libmsgsl-dev librange-v3-dev libtgowt-dev
EXTRA_SUBSTVARS += \
	cpplibs:Built-Using=$(shell dpkg-query -Wf '$${source:Package}(=$${source: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%)
ifneq ($(backporting_bullseye),)
# 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
endif

# Copy WebView resources missing by CMake installation script.
execute_after_dh_auto_install:
	ln obj-*/lib_webview.rcc debian/telegram-desktop/usr/share/TelegramDesktop/
ifneq ($(backporting_bullseye)$(backporting_jammy),)
# Write hidden desktop entry for compatibility with existing setups.
	cd debian/telegram-desktop/usr/share/applications && sed /^$$/iHidden=true org.telegram.desktop.desktop > telegramdesktop.desktop
endif

# 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%")
