#!/usr/bin/make -f

DEBVERS		?= $(shell dpkg-parsechangelog | sed -n -e 's/^Version: //p')
VERSION		?= $(shell echo '$(DEBVERS)' | sed -e 's/^[[:digit:]]*://' -e 's/[-].*//')
DEBFLAVOR	?= $(shell dpkg-parsechangelog | grep -E ^Distribution: | cut -d" " -f2)
DEBPKGNAME	?= $(shell dpkg-parsechangelog | grep -E ^Source: | cut -d" " -f2)
GIT_TAG		?= $(shell echo '$(VERSION)' | sed -e 's/~/_/')
DEBIAN_BRANCH	?= $(shell cat debian/gbp.conf | grep debian-branch | cut -d'=' -f2 | awk '{print $1}')

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

# Enables hardening flags.
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk

# Python helper
-include /usr/share/python/python.mk

# All available python versions (python-support)
PYVERS  := $(shell pyversions -rv)

# CFLAGS
CFLAGS = -Wall -g
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
	CFLAGS += -O0
else
	CFLAGS += -O2
endif

build: build-all $(PYVERS:%=build-python%)

build: build-all-stamp
build-all: build-all-stamp
build-all-stamp:
	dh_testdir
	$(MAKE)
	touch $@

$(PYVERS:%=build-python%): build-all-stamp $(PYVERS:%=build-python%-stamp)
build-python%-stamp:
	CFLAGS="$(CFLAGS)" python$* setup.py build
	touch $@

clean:
	dh_testdir
	dh_testroot
	rm -f build-stamp portlistingparse.o build-python*-stamp

	$(MAKE) clean
	dh_clean

install: build install-prereq install-all $(PYVERS:%=install-python%)

install-prereq:
	dh_testdir
	dh_testroot
	dh_prep

install-all: install-all-stamp
install-all-stamp: install-prereq
	$(MAKE) install PREFIX=$(CURDIR)/debian/miniupnpc INSTALLDIRLIB=$(CURDIR)/debian/miniupnpc/usr/lib/$(DEB_HOST_MULTIARCH)
	# Move the library in its corresponding separate package folder.
	mkdir -p $(CURDIR)/debian/libminiupnpc10/usr
	mv $(CURDIR)/debian/miniupnpc/usr/lib $(CURDIR)/debian/libminiupnpc10/usr
	# Move the include files
	mkdir -p $(CURDIR)/debian/libminiupnpc-dev/usr/lib
	mv $(CURDIR)/debian/miniupnpc/usr/include $(CURDIR)/debian/libminiupnpc-dev/usr
	mkdir -p $(CURDIR)/debian/libminiupnpc-dev/usr/lib/$(DEB_HOST_MULTIARCH)
	mv $(CURDIR)/debian/libminiupnpc10/usr/lib/$(DEB_HOST_MULTIARCH)/libminiupnpc.so $(CURDIR)/debian/libminiupnpc-dev/usr/lib/$(DEB_HOST_MULTIARCH)
	mv $(CURDIR)/debian/libminiupnpc10/usr/lib/$(DEB_HOST_MULTIARCH)/libminiupnpc.a $(CURDIR)/debian/libminiupnpc-dev/usr/lib/$(DEB_HOST_MULTIARCH)

$(PYVERS:%=install-python%): $(PYVERS:%=install-python%-stamp)
install-python%-stamp: install-all-stamp
	python$* setup.py install --root=$(CURDIR)/debian/python-miniupnpc --no-compile $(py_setup_install_args)

binary-indep: build install

binary-arch: build install
	dh_testdir
	dh_testroot
	dh_installchangelogs Changelog.txt
	dh_installdocs
	dh_installman
	dh_python2
	dh_strip
	dh_compress
	dh_fixperms
	dh_makeshlibs -V -- -c4
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb

############################################
### Below is to manage upstream Git repo ###
### and is not used during package build ###
############################################
gen-orig-xz:
	git tag -v $(GIT_TAG) || true
	if [ ! -f ../$(DEBPKGNAME)_$(VERSION).orig.tar.xz ] ; then \
		git archive --prefix=$(DEBPKGNAME)-$(VERSION)/ $(GIT_TAG) | xz >../$(DEBPKGNAME)_$(VERSION).orig.tar.xz ; \
	fi
	[ ! -e ../build-area ] && mkdir ../build-area || true
	[ ! -e ../build-area/$(DEBPKGNAME)_$(VERSION).orig.tar.xz ] && cp ../$(DEBPKGNAME)_$(VERSION).orig.tar.xz ../build-area

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install configure build-arch build-indep gen-orig-xz
