#!/usr/bin/make -f

-include /usr/share/dpkg/buildflags.mk

# Filter out -Wl,-Bsymbolic-functions from default Ubuntu LDFLAGS
COMMA = ,
LDFLAGS := $(filter-out -Wl$(COMMA)-Bsymbolic-functions,$(LDFLAGS))

ifeq ($(shell pkg-config --atleast-version 2.6 sigc++-2.0 && echo 1),1)
ifeq ($(shell echo __GNUC__ | gcc -E - | tail -1),5)
# Workaround for too new libsigc++/glibmm, too old gcc combination
CXXFLAGS += -std=c++11
endif
endif

ifeq ($(shell perl -mInline::Python < /dev/null 2>/dev/null && echo 1),1)
N =
else
N = -Nnordugrid-arc-arex-python-lrms
endif

ifeq ($(shell dpkg-query -W -f '$${Depends}' libinline-python-perl 2>/dev/null | grep -q python3 && echo 1),1)
PYVER = 3
else
PYVER = 2
endif

configure: configure-stamp

configure-stamp:
	dh_testdir

	if [ ! -f po/POTFILES.in.save ] ; then \
	    cp -p po/POTFILES.in po/POTFILES.in.save ; \
	fi

	dh_autoreconf

	CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" \
	CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS) -Wl,-z,defs" \
	./configure --host=$(DEB_HOST_GNU_TYPE) \
		    --build=$(DEB_BUILD_GNU_TYPE) \
		    --prefix=/usr \
		    --libexecdir='$${prefix}/lib' \
		    --sysconfdir=/etc \
		    --localstatedir=/var \
		    --mandir='$${datadir}/man' \
		    --infodir='$${datadir}/info' \
		    --disable-doc \
		    --docdir='$${datadir}/doc/nordugrid-arc' \
		    --enable-internal \
		    --with-python=python$(PYVER)
	touch $@

build: build-arch build-indep

build-arch: build-stamp

build-indep: build-stamp

build-stamp: configure-stamp
	dh_testdir

	$(MAKE)
ifeq ($(filter nocheck,$(DEB_BUILD_OPTIONS)),)
	$(MAKE) check
endif

	touch $@

clean:
	dh_testdir
	dh_testroot

	if [ -r Makefile ] ; then $(MAKE) distclean ; fi

	rm -f debian/nordugrid-arc-arex.arc-arex.init
	rm -f debian/nordugrid-arc-hed.arched.init
	rm -f debian/nordugrid-arc-datadelivery-service.arc-datadelivery-service.init
	rm -f debian/nordugrid-arc-gridftpd.arc-gridftpd.init
	rm -f debian/nordugrid-arc-infosys-ldap.arc-infosys-ldap.init
	rm -f debian/nordugrid-arc-acix-scanner.arc-acix-scanner.init
	rm -f debian/nordugrid-arc-acix-index.arc-acix-index.init

	if [ -f po/POTFILES.in.save ] ; then \
	    mv po/POTFILES.in.save po/POTFILES.in ; \
	fi

	find python src -name *.pyc -exec rm {} ';'
	rm -rf src/services/acix/*/test/_trial_temp
	rm -rf ./src/services/a-rex/infoproviders/_Inline
	rm -rf ./src/services/a-rex/infoproviders/test/_Inline

	dh_autoreconf_clean

	dh_clean configure-stamp build-stamp

install: build-stamp
	dh_testdir
	dh_testroot
	dh_prep

	$(MAKE) DESTDIR=$(CURDIR)/debian/tmp install

	find $(CURDIR)/debian/tmp -name \*.la -exec rm -fv '{}' ';'

	rm -f $(CURDIR)/debian/tmp/usr/lib/arc/lib*.a

	rm -f $(CURDIR)/debian/tmp/usr/lib/libarcglobusutils.so

	find debian/tmp -depth -name __pycache__ -exec rm -rf '{}' ';'

	mv debian/tmp/etc/init.d/arc-arex \
	   debian/nordugrid-arc-arex.arc-arex.init
	mv debian/tmp/etc/init.d/arched \
	   debian/nordugrid-arc-hed.arched.init
	mv debian/tmp/etc/init.d/arc-datadelivery-service \
	   debian/nordugrid-arc-datadelivery-service.arc-datadelivery-service.init
	mv debian/tmp/etc/init.d/arc-gridftpd \
	   debian/nordugrid-arc-gridftpd.arc-gridftpd.init
	mv debian/tmp/etc/init.d/arc-infosys-ldap \
	   debian/nordugrid-arc-infosys-ldap.arc-infosys-ldap.init
	mv debian/tmp/etc/init.d/arc-acix-scanner \
	   debian/nordugrid-arc-acix-scanner.arc-acix-scanner.init
	mv debian/tmp/etc/init.d/arc-acix-index \
	   debian/nordugrid-arc-acix-index.arc-acix-index.init

	chmod 4755 debian/tmp/usr/bin/arc-job-cgroup

binary: binary-arch binary-indep

binary-arch: install
	dh_testdir
	dh_testroot
	dh_installdirs -a $(N)
	dh_installdocs -a $(N)
	dh_installexamples -a $(N)
	dh_installman -a $(N)
	dh_installlogrotate -a $(N)
	dh_install -a $(N) --fail-missing
	dh_installchangelogs -a $(N)
	dh_installinit -p nordugrid-arc-hed --name arched
	dh_installinit -p nordugrid-arc-arex --name arc-arex
	dh_installinit -p nordugrid-arc-datadelivery-service --name arc-datadelivery-service
	dh_installinit -p nordugrid-arc-gridftpd --name arc-gridftpd
	dh_perl -a $(N)
	[ -x /usr/bin/dh_python3 ] && dh_python3 -a $(N) || :
	[ -x /usr/bin/dh_python2 ] && dh_python2 -a $(N) || :
	dh_lintian -a $(N)
	dh_link -a $(N)
	dh_strip -a $(N)
	dh_compress -a $(N)
	dh_fixperms -a $(N) -X /usr/bin/arc-job-cgroup
	dh_makeshlibs -a $(N)
	dh_installdeb -a $(N)
	dh_shlibdeps -a $(N)

	if [ $(PYVER) -eq 3 ] ; then \
	   echo "pydeps:Depends=python3-ldap, python3-isodate" >> debian/nordugrid-arc-arex.substvars ; \
	else \
	   echo "pydeps:Depends=python-ldap, python-isodate, python-stompy" >> debian/nordugrid-arc-arex.substvars ; \
	fi

	dh_gencontrol -a $(N)
	dh_md5sums -a $(N)
	dh_builddeb -a $(N)

binary-indep: install
	dh_testdir
	dh_testroot
	dh_installdirs -i
	dh_installdocs -i
	dh_installexamples -i
	dh_installman -i
	dh_installlogrotate -i
	dh_install -i --fail-missing
	dh_installchangelogs -i
	dh_installinit -p nordugrid-arc-infosys-ldap --name arc-infosys-ldap
	dh_installinit -p nordugrid-arc-acix-scanner --name arc-acix-scanner
	dh_installinit -p nordugrid-arc-acix-index --name arc-acix-index
	dh_perl -i
	[ -x /usr/bin/dh_python3 ] && dh_python3 -i || :
	[ -x /usr/bin/dh_python2 ] && dh_python2 -i || :
	dh_lintian -i
	dh_link -i
	dh_compress -i
	dh_fixperms -i
	dh_installdeb -i

	if [ $(PYVER) -eq 3 ] ; then \
	   echo "pydeps:Depends=python3-twisted, python3-openssl" >> debian/nordugrid-arc-acix-core.substvars ; \
	   echo "pydeps:Depends=python3-ldap, python3-dns" >> debian/nordugrid-arc-archery-manage.substvars ; \
	else \
	   echo "pydeps:Depends=python-twisted, python-openssl" >> debian/nordugrid-arc-acix-core.substvars ; \
	   echo "pydeps:Depends=python-ldap, python-dns" >> debian/nordugrid-arc-archery-manage.substvars ; \
	fi

	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i

.PHONY: binary binary-arch binary-indep build build-arch build-indep clean configure install
