#!/usr/bin/make -f

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)

export CFLAGS := $(shell dpkg-buildflags --get CFLAGS) $(shell dpkg-buildflags --get CPPFLAGS)
export CXXFLAGS := $(shell dpkg-buildflags --get CXXFLAGS) $(shell dpkg-buildflags --get CPPFLAGS)
export LDFLAGS := $(shell dpkg-buildflags --get LDFLAGS) -Wl,--as-needed
export QMAKE_CFLAGS_RELEASE := $(CFLAGS)
export QMAKE_CFLAGS_DEBUG := $(CFLAGS)
export QMAKE_CXXFLAGS_RELEASE := $(CXXFLAGS)
export QMAKE_CXXFLAGS_DEBUG := $(CXXFLAGS)
export QMAKE_LFLAGS_RELEASE := $(LDFLAGS)
export QMAKE_LFLAGS_DEBUG := $(LDFLAGS)
export QT_SELECT := qt5
export QT_QPA_PLATFORM := minimal

# Upstream changelog
upstream_changes := $(wildcard dist/changes-*)

# Skip tests on the archs they are known to be flaky  with current configuration
testskip_architectures := powerpc

%:
	dh $@ --parallel --list-missing --dbg-package=qtcreator-dbg --buildsystem=qmake --builddirectory=builddir

override_dh_auto_configure:
	mkdir -p builddir
	cd builddir ; \
		qmake -recursive QMAKE_CFLAGS_RELEASE="$(QMAKE_CFLAGS_RELEASE)" \
		QMAKE_CFLAGS_DEBUG="$(QMAKE_CFLAGS_DEBUG)" \
		QMAKE_CXXFLAGS_RELEASE="$(QMAKE_CXXFLAGS_RELEASE)" \
		QMAKE_CXXFLAGS_DEBUG="$(QMAKE_CXXFLAGS_DEBUG)" \
		QMAKE_LFLAGS_RELEASE="$(QMAKE_LFLAGS_RELEASE)" \
		QMAKE_LFLAGS_DEBUG="$(QMAKE_LFLAGS_DEBUG)" \
		QMAKE_STRIP=: \
		BUILD_TESTS=true \
		PREFIX=/usr/ \
		$(CURDIR) IDE_LIBRARY_BASENAME=lib/$(DEB_HOST_MULTIARCH) IDE_PACKAGE_MODE=1 USE_SYSTEM_BOTAN=1 $(extra_configure_opts)

ifeq ($(DEB_HOST_ARCH),$(findstring $(DEB_HOST_ARCH), armhf))
	# Hack over a g++ problem while using -O2 on armhf.
	# If you don't like this horrible hack please feel free to help me try to
	# reproduce it in a minimal test case so as to be able to properly fill a
	# bug against g++.
	sed -i 's/O2/O1/g' builddir/src/plugins/qmldesigner/Makefile.qmldesignerplugin
endif

override_dh_auto_install:
ifneq (,$(filter qtcreator-doc,qtcreator-dev, $(shell dh_listpackages)))
	dh_auto_build -- qch_docs
endif
	dh_auto_install --destdir=debian/tmp/usr
	dh_auto_build -- install_docs INSTALL_ROOT=$(CURDIR)/debian/tmp/usr
	mkdir -p debian/tmp/usr/src/qtcreator/
	find | egrep -v '^\.\/doc|^\.\/share|^\.\/\.pc|^\.\/debian|^\.\/tests|^\.\/share|cmakeprojectmanager|valgrind|qnx|remotelinux|Qnx' | grep "\.pri\$$\|\.h\$$\|\.xsl\$$" | xargs -I{} cp --parents -r "{}" debian/tmp/usr/src/qtcreator
	cd debian/tmp/usr/src/qtcreator; cp -r builddir/* .; rm -R builddir
	rm -rfv debian/tmp/usr/usr/tests/
	# Separated to own plugin packages, need not to be installed
	rm -rfv debian/tmp/usr/share/qtcreator/templates/wizards/plaincppapp/cmake debian/tmp/usr/share/qtcreator/templates/wizards/plaincapp/cmake debian/tmp/usr/share/qtcreator/templates/wizards/bb-*

override_dh_auto_clean:
	dh_auto_clean
	# make sure the bundles botan lib isn't used during the build
	rm -f src/libs/3rdparty/botan/botan.cpp src/libs/3rdparty/botan/botan.h

override_dh_installdocs:
	dh_installdocs -pqtcreator $(upstream_changes)
	dh_installdocs --remaining-packages

override_dh_makeshlibs:
	# qtcreator doesn't provide any public libraries

override_dh_shlibdeps:
	dh_shlibdeps -l$(CURDIR)/debian/qtcreator/usr/lib/$(DEB_HOST_MULTIARCH)/qtcreator:\
	$(CURDIR)/debian/qtcreator/usr/lib/$(DEB_HOST_MULTIARCH)/qtcreator/plugins/QtProject

override_dh_builddeb:
	dh_builddeb -- -Zxz

override_dh_auto_test:
ifneq ($(DEB_HOST_ARCH),$(findstring $(DEB_HOST_ARCH), $(testskip_architectures)))
ifeq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS)))
	cp -r $(CURDIR)/builddir/lib/*/ $(CURDIR)/lib
	xvfb-run -a dh_auto_test -- -C tests/auto
endif
endif

