#!/usr/bin/make -f

# resolve DEB_BUILD_OPTION_PARALLEL
include /usr/share/dpkg/buildopts.mk

export LC_ALL = C.UTF-8

QBS_OPTS = --settings-dir $(CURDIR)/debian \
 profile:deb config:qbs-build \
 -f valentina.qbs
ifeq ($(DH_VERBOSE),1)
QBS_OPTS += --log-level debug
endif
ifeq (,$(filter terse,$(DEB_BUILD_OPTIONS)))
QBS_OPTS += --command-echo-mode command-line
endif

# execute test
# * link with freshly built libraries
# * execute in virtual X11 environment
_TEST = LD_LIBRARY_PATH=$(subst $() ,:,$(wildcard \
 $(patsubst %,$(CURDIR)/qbs-build/%.*,QMUParserLib VPropertyExplorerLib))) \
 QT_QPA_PLATFORM=offscreen \
 HOME=$(CURDIR)/debian/build \
 XDG_RUNTIME_DIR=$(CURDIR)/debian/tmp-xdg-runtime-dir \
 dbus-run-session -- \
 qbs run --no-build $(QBS_OPTS) -p $(1) \
 --install-root $(CURDIR)/qbs-build/install-root

override_dh_auto_configure:
	mkdir --mode 0700 --parents debian/tmp-xdg-runtime-dir
# set Qt API
# install private shared libraries as such
	qbs-setup-toolchains --settings-dir debian --detect
	qbs-setup-qt --settings-dir debian /usr/bin/qmake6 deb
	qbs config --settings-dir debian profiles.deb.qbs.installPrefix usr/
	qbs config --settings-dir debian profiles.deb.cpp.debugInformation true
ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS)))
	qbs config --settings-dir debian profiles.deb.cpp.optimization none
else
	qbs config --settings-dir debian profiles.deb.cpp.optimization fast
endif
#FIXME	qbs config --settings-dir debian profiles.deb.cpp.commonCompilerFlags -Wdate-time
	qbs config --settings-dir debian profiles.deb.cpp.defines '"FORTIFY_SOURCE=2"'
#TODO: https://gitlab.com/smart-pattern/valentina/-/issues/228
ifneq (,$(filter armel armhf mips64el,$(DEB_HOST_ARCH)))
	qbs config --settings-dir debian profiles.deb.cpp.cFlags '[ "-fdebug-prefix-map=$(CURDIR)=.", "-fstack-protector-strong", "-Wformat", "-Werror=format-security", "-Wno-error=cast-align" ]'
	qbs config --settings-dir debian profiles.deb.cpp.cxxFlags '[ "-fdebug-prefix-map=$(CURDIR)=.", "-fstack-protector-strong", "-Wformat", "-Werror=format-security", "-Wno-error=cast-align" ]'
else
	qbs config --settings-dir debian profiles.deb.cpp.cFlags '[ "-fdebug-prefix-map=$(CURDIR)=.", "-fstack-protector-strong", "-Wformat", "-Werror=format-security" ]'
	qbs config --settings-dir debian profiles.deb.cpp.cxxFlags '[ "-fdebug-prefix-map=$(CURDIR)=.", "-fstack-protector-strong", "-Wformat", "-Werror=format-security" ]'
endif
	qbs config --settings-dir debian profiles.deb.cpp.linkerFlags "-z,relro"

override_dh_auto_build:
	qbs build --no-install $(QBS_OPTS) \
	modules.qbs.installRoot:$(CURDIR)/debian/tmp/

override_dh_auto_test:
# ppc64el: https://gitlab.com/smart-pattern/valentina/-/issues/229
ifneq (,$(filter armel armhf mips64el ppc64el riscv64,$(DEB_HOST_ARCH)))
	$(call _TEST,CollectionTest) || true
else
	$(call _TEST,CollectionTest)
endif
	$(call _TEST,ParserTest)
ifneq (,$(filter i386 hurd-i386,$(DEB_HOST_ARCH)))
	$(call _TEST,ValentinaTest) || true
else
	$(call _TEST,ValentinaTest)
endif

override_dh_auto_test-indep:
	$(call _TEST,TranslationsTest)

override_dh_auto_install:
	qbs install --no-build $(QBS_OPTS) \
	--install-root $(CURDIR)/debian/tmp/

# rename puzzle -> valentina-puzzle
# rename tape -> valentina-tape
# normalize paths embedded in example files
execute_after_dh_install-arch:
	chrpath --replace /usr/lib/valentina \
		debian/valentina/usr/bin/valentina \
		debian/valentina/usr/bin/puzzle \
		debian/valentina/usr/bin/tape
	mv debian/valentina/usr/bin/puzzle \
		debian/valentina/usr/bin/valentina-puzzle
	mv debian/valentina/usr/bin/tape \
		debian/valentina/usr/bin/valentina-tape
	mv debian/valentina/usr/share/applications/ua.com.smart-pattern.puzzle.desktop \
		debian/valentina/usr/share/applications/ua.com.smart-pattern.valentina-puzzle.desktop
	mv debian/valentina/usr/share/applications/ua.com.smart-pattern.tape.desktop \
		debian/valentina/usr/share/applications/ua.com.smart-pattern.valentina-tape.desktop
	perl -i -pe 's/(?:Exec|Icon)=\Kpuzzle/valentina-puzzle/' \
		debian/valentina/usr/share/applications/ua.com.smart-pattern.valentina-puzzle.desktop
	perl -i -pe 's/(?:Exec|Icon)=\Ktape/valentina-tape/' \
		debian/valentina/usr/share/applications/ua.com.smart-pattern.valentina-tape.desktop
execute_after_dh_installman-arch:
	mv debian/valentina/usr/share/man/man1/puzzle.1 \
		debian/valentina/usr/share/man/man1/valentina-puzzle.1
	mv debian/valentina/usr/share/man/man1/tape.1 \
		debian/valentina/usr/share/man/man1/valentina-tape.1

# install select documentation with all binary packages
override_dh_installdocs:
	dh_installdocs -- AUTHORS.txt README.md

override_dh_auto_clean:
	rm -rf qbs-build

execute_before_dh_clean:
	rm -rf debian/tmp-xdg-runtime-dir

%:
	dh $@
