#!/usr/bin/make -f

ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
	NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
endif

ifeq (,$(NUMJOBS))
	NUMJOBS = 1
endif

CPPFLAGS:=$(shell dpkg-buildflags --get CPPFLAGS)
CXXFLAGS:=$(shell dpkg-buildflags --get CXXFLAGS) $(CPPFLAGS)
LDFLAGS:=$(shell dpkg-buildflags --get LDFLAGS) -Wl,--as-needed

BUILDDIR1 = builddir1
BUILDDIR2 = builddir2

DEB_DH_INSTALL_SOURCEDIR = $(CURDIR)/debian/tmp

PACKAGE = eiskaltdcpp

DEBIAN_PATH := $(abspath $(dir $(MAKEFILE_LIST)))
USCAN_REPORT = $(shell uscan --noconf --report --dehs $(DEBIAN_PATH))
CUR_VER = $(shell echo "$(USCAN_REPORT)" | sed -n 's/.*<upstream-version>\(.*\)<\/upstream-version>.*/\1/p')
CUR_URL = $(shell echo "$(USCAN_REPORT)" | sed -n 's/.*<upstream-url>\(.*\)<\/upstream-url>.*/\1/p')

CMAKEOPTS = -DCMAKE_BUILD_TYPE=RelWithDebInfo \
            -DCMAKE_CXX_FLAGS="$(CXXFLAGS)" \
            -DCMAKE_SHARED_LINKER_FLAGS="$(LDFLAGS)" \
            -DCMAKE_EXE_LINKER_FLAGS="$(LDFLAGS)" \
            -DCMAKE_INSTALL_PREFIX=/usr \
            -DUSE_MINIUPNP=ON -DLOCAL_MINIUPNP=OFF \
            -DLUA_SCRIPT=ON -DWITH_LUASCRIPTS=ON \
            -DPERL_REGEX=ON -DWITH_DHT=ON \
            -DWITH_SOUNDS=ON \
            -DUSE_QT=ON \
            -DUSE_ASPELL=ON -DFREE_SPACE_BAR_C=ON \
            -DCHECK_GTK_DEPRECATED=OFF \
            -DUSE_LIBGNOME2=OFF -DUSE_LIBNOTIFY=ON \
            -DCREATE_MO=ON -DUPDATE_PO=OFF \
            -DNO_UI_DAEMON=ON \
            -DXMLRPC_DAEMON=OFF -DJSONRPC_DAEMON=ON \
            -DUSE_CLI_JSONRPC=ON \
            -DWITH_DEV_FILES=ON \
            ..

OPTSSTEP1 = -DUSE_QT_SQLITE=ON \
            -DUSE_JS=ON -DUSE_QT_QML=ON \
            -DUSE_GTK=ON -DUSE_GTK3=OFF

OPTSSTEP2 = -DUSE_QT_SQLITE=OFF \
            -DUSE_JS=OFF -DUSE_QT_QML=OFF \
            -DUSE_GTK=OFF -DUSE_GTK3=ON

# This option is for daily builds of the EiskaltDC++ packages on Launchpad
# See https://launchpad.net/~tehnick/+archive/tehnick for more information
#REVISION = $(shell /bin/sh -c "head -n 1 debian/changelog | sed -e 's/^.*-[0-9]\{6,6\}-//' -e 's/-0ppa.*$$//'")
#CMAKEOPTS += -DDCPP_REVISION="$(REVISION)"


%:
	dh $@ --parallel --list-missing

override_dh_auto_configure:
	mkdir -p $(BUILDDIR1) && cd $(BUILDDIR1) && cmake $(CMAKEOPTS) $(OPTSSTEP1)

override_dh_auto_build:
	cd $(BUILDDIR1) && $(MAKE) -j$(NUMJOBS)
	cp -ra $(BUILDDIR1) $(BUILDDIR2)
	cd $(BUILDDIR2) && find . -type f -iname '*make*' -exec sed -i "s|$(BUILDDIR1)|$(BUILDDIR2)|" {} \;
	cd $(BUILDDIR2) && cmake $(CMAKEOPTS) $(OPTSSTEP2)
	cd $(BUILDDIR2) && $(MAKE) -j$(NUMJOBS)

override_dh_auto_clean:
	dh_testroot
	[ ! -f Makefile ] || ( cd $(BUILDDIR1) && $(MAKE) clean )
	[ ! -f Makefile ] || ( cd $(BUILDDIR2) && $(MAKE) clean )
	[ ! -d $(BUILDDIR1) ] || rm -r $(BUILDDIR1)
	[ ! -d $(BUILDDIR2) ] || rm -r $(BUILDDIR2)
	rm -f configure-stamp build-stamp

override_dh_auto_install:
	cd $(BUILDDIR1) && $(MAKE) install DESTDIR=$(DEB_DH_INSTALL_SOURCEDIR)
	cp $(CURDIR)/debian/eiskaltdcpp-qt-mini.desktop \
			$(DEB_DH_INSTALL_SOURCEDIR)/usr/share/applications/eiskaltdcpp-qt-mini.desktop
	cp $(BUILDDIR2)/eiskaltdcpp-qt/eiskaltdcpp-qt \
			$(DEB_DH_INSTALL_SOURCEDIR)/usr/bin/eiskaltdcpp-qt-mini
	chrpath -d $(DEB_DH_INSTALL_SOURCEDIR)/usr/bin/eiskaltdcpp-qt-mini
	cp $(BUILDDIR2)/eiskaltdcpp-qt/eiskaltdcpp-qt.1.gz \
			$(DEB_DH_INSTALL_SOURCEDIR)/usr/share/man/man1/eiskaltdcpp-qt-mini.1.gz
	cp $(CURDIR)/debian/eiskaltdcpp-gtk3.desktop \
			$(DEB_DH_INSTALL_SOURCEDIR)/usr/share/applications/eiskaltdcpp-gtk3.desktop
	cp $(BUILDDIR2)/eiskaltdcpp-gtk/eiskaltdcpp-gtk \
			$(DEB_DH_INSTALL_SOURCEDIR)/usr/bin/eiskaltdcpp-gtk3
	chrpath -d $(DEB_DH_INSTALL_SOURCEDIR)/usr/bin/eiskaltdcpp-gtk3
	cp $(BUILDDIR2)/eiskaltdcpp-gtk/eiskaltdcpp-gtk.1.gz \
			$(DEB_DH_INSTALL_SOURCEDIR)/usr/share/man/man1/eiskaltdcpp-gtk3.1.gz

override_dh_install:
	dh_movefiles

override_dh_installchangelogs:
	dh_installchangelogs ChangeLog.txt

.PHONY: override_dh_strip
override_dh_strip:
	dh_strip -Nlibeiskaltdcpp2.2 \
			-Neiskaltdcpp-qt \
			-Neiskaltdcpp-qt-mini \
			-Neiskaltdcpp-gtk \
			-Neiskaltdcpp-gtk3 \
			-Neiskaltdcpp-daemon
	dh_strip -plibeiskaltdcpp2.2 --dbg-package=libeiskaltdcpp2.2-dbg
	dh_strip -peiskaltdcpp-qt --dbg-package=eiskaltdcpp-qt-dbg
	dh_strip -peiskaltdcpp-qt-mini --dbg-package=eiskaltdcpp-qt-mini-dbg
	dh_strip -peiskaltdcpp-gtk --dbg-package=eiskaltdcpp-gtk-dbg
	dh_strip -peiskaltdcpp-gtk3 --dbg-package=eiskaltdcpp-gtk3-dbg
	dh_strip -peiskaltdcpp-daemon --dbg-package=eiskaltdcpp-daemon-dbg

.PHONY: override_dh_makeshlibs
override_dh_makeshlibs:
	dh_makeshlibs -V -plibeiskaltdcpp2.2

.PHONY: override_dh_shlibdeps
override_dh_shlibdeps:
	dh_shlibdeps -a -ldebian/libeiskaltdcpp2.2/usr/lib

get-orig-source:
	wget -c "$(CUR_URL)" -O "$(PACKAGE)_$(CUR_VER).orig.tar.xz"
