#!/usr/bin/make -f

GIT ?= $(shell dpkg-parsechangelog -ldebian/changelog | perl -ne 'print $$1 if m{^Version:\s+[^+]+\+git([^-]+)};')
VER ?= $(shell dpkg-parsechangelog -ldebian/changelog | perl -ne 'print $$1 if m{^Version:\s+([^+]+\+git[^-]+)};')

LIBRFXCODEC_GIT ?= fb80d7d
XORGXRDP_GIT ?= 575c0aa

DEB_LDFLAGS_MAINT_APPEND=-Wl,--as-needed
DEB_BUILD_MAINT_OPTIONS=hardening=+all

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

export PKG_CONFIG_PATH=${CURDIR}/pkgconfig

# this is precisely what dh_auto_configure does
CONFIGURE_ARGS:=	--build=${DEB_BUILD_GNU_TYPE} \
			--prefix=/usr \
			--includedir=\$${prefix}/include \
			--mandir=\$${prefix}/share/man \
			--infodir=\$${prefix}/share/info \
			--sysconfdir=/etc \
			--localstatedir=/var \
			--disable-silent-rules \
			--libdir=\$${prefix}/lib/${DEB_HOST_MULTIARCH} \
			--libexecdir=\$${prefix}/lib/${DEB_HOST_MULTIARCH} \
			--disable-maintainer-mode \
			--disable-dependency-tracking

ifneq (${DEB_BUILD_GNU_TYPE},${DEB_HOST_GNU_TYPE})
CONFIGURE_ARGS+=	--host=${DEB_HOST_GNU_TYPE}
endif

ifeq (x32,${DEB_HOST_ARCH})
# autodetection fails on x32 (wrongly recognised as amd64)
CONFIGURE_ARGS+=	--without-simd
endif

%:
	dh $@ --with systemd

override_dh_auto_configure:
	./bootstrap
	cd xorgxrdp && ./bootstrap
	cd librfxcodec && ./bootstrap
	./configure ${CONFIGURE_ARGS} \
	    --enable-ipv6 \
	    --enable-jpeg \
	    --enable-fuse \
	    --enable-rfxcodec \
	    --enable-opus
	cd xorgxrdp && ./configure ${CONFIGURE_ARGS}
	cd librfxcodec && ./configure ${CONFIGURE_ARGS} \
	    --disable-shared \
	    --enable-static
	find . -name Makefile -print0 | \
	    xargs -0 perl -pi -e 's!XRDP_PID_PATH.*?/run!$$&/xrdp!g' --

override_dh_auto_install:
	dh_auto_install -v --destdir=debian/xrdp
	# remove unused/confusing files
	rm -f debian/xrdp/etc/xrdp/xrdp.sh
	rm -f debian/xrdp/etc/xrdp/startwm.sh
	rm -f debian/xrdp/etc/xrdp/rsakeys.ini
	rm -f debian/xrdp/usr/bin/rfxcodectest
	# Policy
	find debian/xrdp/ -name \*.la -print0 | xargs -0 rm -f --
	find debian/xrdp/usr/lib/ -name \*.a -print0 | \
	    xargs -0 strip --strip-debug -R .comment --
	# package split
	mkdir -p debian/xorgxrdp/etc debian/xorgxrdp/usr/lib
	mv debian/xrdp/etc/X11 debian/xorgxrdp/etc/
	mv debian/xrdp/usr/lib/xorg debian/xorgxrdp/usr/lib/

override_dh_installinit:
	dh_installinit --no-restart-on-upgrade

override_dh_systemd_start:
	dh_systemd_start --no-restart-on-upgrade

override_dh_shlibdeps:
	# That's a plugin, use appropriate warning level:
	dh_shlibdeps -pxorgxrdp -- --warnings=6
	# Use default levels for everything else:
	dh_shlibdeps --remaining-packages

override_dh_gencontrol:
	echo >>debian/xorgxrdp.substvars "xdriver:Depends=$$( \
	    (cd /usr/share/xserver-xorg && cat videodrvdep xinputdep) | \
	    sed 's/, /\n/g' | sort -u | \
	    perl -0e 'print join(", ", split(/\n/, <>));')"
	dh_gencontrol

override_dh_clean:
	dh_clean
	chmod +x xorgxrdp/tests/xorg-test-run.sh

get-orig-source:
	sh -c '\
		mkdir -p debian/tmp/get-orig-source; \
		cd debian/tmp/get-orig-source; \
		wget https://github.com/neutrinolabs/xrdp/archive/${GIT}.tar.gz; \
		tar -xzf ${GIT}.tar.gz; \
		rm ${GIT}.tar.gz; \
		mv xrdp* xrdp-${VER}; \
		rmdir xrdp-${VER}/librfxcodec xrdp-${VER}/xorgxrdp; \
		wget https://github.com/neutrinolabs/librfxcodec/archive/${LIBRFXCODEC_GIT}.tar.gz; \
		tar -xzf ${LIBRFXCODEC_GIT}.tar.gz; \
		mv librfxcodec* xrdp-${VER}/librfxcodec; \
		rm ${LIBRFXCODEC_GIT}.tar.gz; \
		wget https://github.com/neutrinolabs/xorgxrdp/archive/${XORGXRDP_GIT}.tar.gz; \
		tar -xzf ${XORGXRDP_GIT}.tar.gz; \
		mv xorgxrdp* xrdp-${VER}/xorgxrdp; \
		rm ${XORGXRDP_GIT}.tar.gz; \
		rm -rf xrdp-${VER}/.git*; \
		tar -caf xrdp_${VER}.orig.tar.xz --owner=root --group=root --mode=a+rX xrdp-${VER}; \
		mv xrdp_${VER}.orig.tar.xz ../../../../; \
		cd ../../../; \
		rm -rf debian/tmp/; \
	'
