#!/usr/bin/make -f
# See debhelper(7) (uncomment to enable)
# output every command that modifies files on the build system.
DH_VERBOSE = 1

DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/default.mk
include /usr/share/dpkg/architecture.mk

DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)

ifeq ($(DEB_HOST_ARCH), i386)
    EXTRA_FLAGS = "-ffloat-store",
endif

# see FEATURE AREAS in dpkg-buildflags(1)
#export DEB_BUILD_MAINT_OPTIONS = hardening=+all

# main packaging script based on dh7 syntax
%:
	dh $@ 

# Note that the dpkg-buildflags settings are currently static. We await a 
# mechanism to convert them dynamically into Qbs-speak

override_dh_auto_configure:
	qbs-setup-toolchains --settings-dir /tmp --detect
	QT_SELECT=5 qbs-setup-qt --settings-dir /tmp /usr/bin/qmake deb
	# choose gcc as if clang is installed too you have to pick one
	qbs config --settings-dir /tmp profiles.deb.baseProfile gcc
	qbs config --settings-dir /tmp profiles.deb.qbs.installPrefix usr/
	qbs config --settings-dir /tmp profiles.deb.cpp.debugInformation true
ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS)))
	qbs config --settings-dir /tmp profiles.deb.cpp.optimization none
else
	qbs config --settings-dir /tmp profiles.deb.cpp.optimization fast
endif
	qbs config --settings-dir /tmp profiles.deb.cpp.commonCompilerFlags -Wdate-time
	qbs config --settings-dir /tmp profiles.deb.cpp.defines '"FORTIFY_SOURCE=2"'
	qbs config --settings-dir /tmp profiles.deb.cpp.cFlags '[ $(EXTRA_FLAGS) "-fdebug-prefix-map=$(CURDIR)=.", "-fstack-protector-strong", "-Wformat", "-Werror=format-security" ]'
	qbs config --settings-dir /tmp profiles.deb.cpp.cxxFlags '[ $(EXTRA_FLAGS) "-fdebug-prefix-map=$(CURDIR)=.", "-fstack-protector-strong", "-Wformat", "-Werror=format-security" ]'
	qbs config --settings-dir /tmp profiles.deb.cpp.linkerFlags "-z,relro"

override_dh_auto_build:
	qbs build --settings-dir /tmp --command-echo-mode command-line --no-install \
	   profile:deb \
	   modules.qbs.installRoot:$(CURDIR)/debian/tmp \
	   project.libDir:lib/$(DEB_HOST_MULTIARCH) \
	   qbs-build
	# Generate pkgconfig file
	sed -e "s/@DEB_HOST_MULTIARCH@/${DEB_HOST_MULTIARCH}/" < debian/libdewalls.pc.in > debian/libdewalls.pc
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
	# run tests 
	qbs run --settings-dir /tmp --no-build -p dewalls-test \
	   --install-root $(CURDIR)/qbs-build/install-root \
	   project.libDir:lib/$(DEB_HOST_MULTIARCH) \
	   profile:deb qbs-build
endif

override_dh_auto_install:
	qbs install --settings-dir /tmp --no-build \
	   --install-root $(CURDIR)/debian/tmp \
	   profile:deb \
	   project.libDir:lib/$(DEB_HOST_MULTIARCH) \
	   qbs-build
	dh_install

override_dh_clean:
	# tidy up qbs profile builddirs
	- rm -r qbs-build
	- rm debian/libdewalls.pc
	dh_clean
