#!/usr/bin/make -f

export DEB_BUILD_MAINT_OPTIONS = hardening=+all
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk

NULL =

DEB_HOST_ARCH=$(shell dpkg-architecture -qDEB_HOST_ARCH)
ifneq (,$(filter armhf,$(DEB_HOST_ARCH)))
ARM_FLOAT_ABI = -DARM_FP_ABI=hard
else
ARM_FLOAT_ABI =
endif

DEB_HOST_ARCH_OS=$(shell dpkg-architecture -qDEB_HOST_ARCH_OS)
ifneq (,$(filter linux,$(DEB_HOST_ARCH_OS)))
LINUX_URBDRC_CLIENT = -DCHANNEL_URBDRC_CLIENT=on
else
LINUX_URBDRC_CLIENT = -DCHANNEL_URBDRC_CLIENT=off
endif

include /usr/share/cdbs/1/class/cmake.mk
include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/rules/utils.mk

DEB_DH_INSTALL_ARGS += --fail-missing

DEB_CMAKE_EXTRA_FLAGS :=  -DCMAKE_INSTALL_INCLUDEDIR=include/$(shell dpkg-architecture -qDEB_HOST_MULTIARCH) \
                          -DCMAKE_SKIP_RPATH=FALSE \
                          -DCMAKE_SKIP_INSTALL_RPATH=TRUE \
                          -DBUILD_TESTING=ON \
                          -DWITH_SERVER=OFF \
                          -DWITH_PULSE=ON \
                          -DWITH_GSTREAMER=OFF \
                          -DWITH_FFMPEG=OFF \
                          -DWITH_CHANNELS=ON \
                          -DSTATIC_CHANNELS=off \
                          -DWITH_CUPS=on \
                          -DWITH_PCSC=on \
                          -DWITH_JPEG=on \
                          $(LINUX_URBDRC_CLIENT) \
                          $(ARM_FLOAT_ABI) \
                          $(NULL)

DEB_MAKE_CHECK_TARGET := test

DEB_DH_MAKESHLIBS_ARGS_libfreerdp-plugins-standard = -X/freerdp/ -V -- -c4

common-install-indep:: remove-cruft tweak-install
common-install-arch:: remove-cruft tweak-install

DEB_DH_STRIP_ARGS_libwinpr-asn1-0.1 = --dbgsym-migration='libwinpr-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libwinpr-bcrypt0.1 = --dbgsym-migration='libwinpr-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libwinpr-credentials0.1 = --dbgsym-migration='libwinpr-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libwinpr-credui0.1 = --dbgsym-migration='libwinpr-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libwinpr-crt0.1 = --dbgsym-migration='libwinpr-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libwinpr-crypto0.1 = --dbgsym-migration='libwinpr-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libwinpr-dsparse0.1 = --dbgsym-migration='libwinpr-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libwinpr-environment0.1 = --dbgsym-migration='libwinpr-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libwinpr-error0.1 = --dbgsym-migration='libwinpr-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libwinpr-file0.1 = --dbgsym-migration='libwinpr-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libwinpr-handle0.1 = --dbgsym-migration='libwinpr-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libwinpr-heap0.1 = --dbgsym-migration='libwinpr-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libwinpr-input0.1 = --dbgsym-migration='libwinpr-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libwinpr-interlocked0.1 = --dbgsym-migration='libwinpr-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libwinpr-io0.1 = --dbgsym-migration='libwinpr-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libwinpr-library0.1 = --dbgsym-migration='libwinpr-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libwinpr-path0.1 = --dbgsym-migration='libwinpr-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libwinpr-pipe0.1 = --dbgsym-migration='libwinpr-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libwinpr-pool0.1 = --dbgsym-migration='libwinpr-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libwinpr-registry0.1 = --dbgsym-migration='libwinpr-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libwinpr-rpc0.1 = --dbgsym-migration='libwinpr-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libwinpr-sspi0.1 = --dbgsym-migration='libwinpr-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libwinpr-sspicli0.1 = --dbgsym-migration='libwinpr-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libwinpr-synch0.1 = --dbgsym-migration='libwinpr-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libwinpr-sysinfo0.1 = --dbgsym-migration='libwinpr-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libwinpr-thread0.1 = --dbgsym-migration='libwinpr-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libwinpr-timezone0.1 = --dbgsym-migration='libwinpr-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libwinpr-utils0.1 = --dbgsym-migration='libwinpr-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libwinpr-winhttp0.1 = --dbgsym-migration='libwinpr-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libwinpr-winsock0.1 = --dbgsym-migration='libwinpr-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'

DEB_DH_STRIP_ARGS_libfreerdp-cache1.1 = --dbgsym-migration='libfreerdp-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libfreerdp-client1.1 = --dbgsym-migration='libfreerdp-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libfreerdp-codec1.1 = --dbgsym-migration='libfreerdp-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libfreerdp-common1.1.0 = --dbgsym-migration='libfreerdp-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libfreerdp-core1.1 = --dbgsym-migration='libfreerdp-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libfreerdp-crypto1.1 = --dbgsym-migration='libfreerdp-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libfreerdp-gdi1.1 = --dbgsym-migration='libfreerdp-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libfreerdp-locale1.1 = --dbgsym-migration='libfreerdp-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libfreerdp-primitives1.1 = --dbgsym-migration='libfreerdp-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libfreerdp-rail1.1 = --dbgsym-migration='libfreerdp-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libfreerdp-utils1.1 = --dbgsym-migration='libfreerdp-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'

DEB_DH_STRIP_ARGS_libfreerdp-plugins-standard = --dbgsym-migration='libfreerdp-plugins-standard-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'

DEB_DH_STRIP_ARGS_freerdp-x11 = --dbgsym-migration='freerdp-x11-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'
DEB_DH_STRIP_ARGS_libxfreerdp-client1.1 = --dbgsym-migration='libxfreerdp-client-dbg (<< 1.1.0~git20140921.1.440916e+dfsg1-14~)'

remove-cruft::
	rm -f debian/tmp/usr/lib/$(shell dpkg-architecture -qDEB_HOST_MULTIARCH)/libwinpr-makecert-tool.a
	rm -f debian/tmp/usr/lib/$(shell dpkg-architecture -qDEB_HOST_MULTIARCH)/freerdp/cliprdr-client.a

tweak-install::
	@echo "Nothing to tweak after installation."

clean::
	rm -f include/version.h
	rm -f config.h

PKD   = $(word 1,$(abspath $(dir $(MAKEFILE_LIST))))
PKG   = $(word 2,$(shell dpkg-parsechangelog -l$(PKD)/changelog | grep ^Source))
UVER  = $(shell dpkg-parsechangelog -l$(PKD)/changelog | perl -ne 'print $$1 if m{^Version:\s+(?:\d+:)?(\d.*)(?:\-\d+.*)};')
DTYPE = +dfsg1
VER  ?= $(subst $(DTYPE),,$(UVER))

UURL = git://github.com/FreeRDP/FreeRDP.git
UREV = $(shell echo $(VER) | cut -d"." -f5)

## http://wiki.debian.org/onlyjob/get-orig-source
.PHONY: get-orig-source
get-orig-source: $(PKG)_$(VER)$(DTYPE).orig.tar.xz $(info I: $(PKG)_$(VER)$(DTYPE))
	@

$(PKG)_$(VER)$(DTYPE).orig.tar.xz: $(info I: GIT Revision=$(UREV))
	$(if $(wildcard $(PKG)-$(VER)),$(error $(PKG)-$(VER) exist, aborting..))
	@echo "# Downloading..."
	git clone $(UURL) $(PKG)-$(VER) \
	    || $(RM) -r $(PKG)-$(VER)
	cd $(PKG)-$(VER) \
	    && git checkout "$(UREV)" \
	    && ( echo "# Generating ChangeLog..." \
	       ; git --no-pager log --format="%ai %aN (%h) %n%n%x09*%w(68,0,10) %s%d%n" > ChangeLog \
	       ; touch -d "$$(git log -1 --format='%ci')" ChangeLog) \
	    && echo "# Setting times..." \
	    && for F in $$(git ls-tree -r --name-only HEAD); do touch --no-dereference -d "$$(git log -1 --format="%ai" -- $$F)" "$$F"; done \
	    && echo "# Cleaning-up..." \
	    && rm -rf \
	        client/Android/ \
	        client/iOS/ \
	        client/Mac/ \
	        client/Windows/ \
	        scripts/OpenSSL-DownloadAndBuild.command \
	    && $(RM) -r .git .git*
	@echo "# Packing..."
	find -L "$(PKG)-$(VER)" -xdev -type f -print | sort \
	    | XZ_OPT="-6v" tar -caf "$(PKG)_$(VER)$(DTYPE).orig.tar.xz" -T- --owner=root --group=root --mode=a+rX \
	    && $(RM) -r "$(PKG)-$(VER)"
