#!/usr/bin/make -f
# -*- makefile -*-

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

name = myproxy

INSTALLDIR = $(CURDIR)/debian/tmp

_prefix = /usr
_bindir = $(_prefix)/bin
_sbindir = $(_prefix)/sbin
_libdir = $(_prefix)/lib/$(DEB_HOST_MULTIARCH)
_datadir = $(_prefix)/share
_mandir = $(_datadir)/man
_docdir = $(_datadir)/doc/lib$(name)-dev
_sysconfdir = /etc

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

configure: configure-stamp

configure-stamp:
	dh_testdir

	dh_autoreconf

	CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" \
	FFLAGS="$(FFLAGS)" CPPFLAGS="$(CPPFLAGS)" \
	LDFLAGS="$(LDFLAGS) -Wl,--as-needed -Wl,-z,defs" \
	./configure \
	   --disable-static \
	   --prefix=$(_prefix) \
	   --libdir='$${prefix}/lib/$(DEB_HOST_MULTIARCH)' \
	   --sysconfdir=/etc \
	   --localstatedir=/var \
	   --sharedstatedir=/var/lib \
	   --mandir='$${datadir}/man' \
	   --includedir='$${prefix}/include/globus' \
	   --libexecdir='$${datadir}/globus' \
	   --docdir=$(_docdir) \
	   --with-voms=/usr \
	   --with-openldap=/usr \
	   --with-kerberos5=/usr \
	   --with-sasl2=/usr

	# Reduce overlinking
	sed 's!CC \(.*-shared\) !CC \\\$${wl}--as-needed \1 !' -i libtool

	touch $@

build: build-arch build-indep

build-arch: build-stamp

build-indep: build-stamp

build-stamp: configure-stamp
	dh_testdir

	$(MAKE)

	# The voms support plugin causes the tests to fail
	# Move it out of the way while running tests
	# Investigate later when voms supports openssl 1.1.0 properly
	mkdir .libs/x
	mv .libs/libmyproxy_voms.* .libs/x
	$(MAKE) check VERBOSE=1
	mv .libs/x/* .libs
	rmdir .libs/x

	touch $@

clean:
	dh_testdir
	dh_testroot

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

	dh_autoreconf_clean

	rm -f build-stamp configure-stamp

	dh_clean debian/myproxy-server.service debian/myproxy-server.tmpfile

install: build-stamp
	dh_testdir
	dh_testroot
	dh_prep

	$(MAKE) install DESTDIR=$(INSTALLDIR)

	# Remove libtool archives (.la files)
	rm $(INSTALLDIR)$(_libdir)/*.la

	# Move documentation to default debian location
	mkdir -p $(INSTALLDIR)$(_docdir)/extras
	for FILE in login.html myproxy-accepted-credentials-mapapp \
	  myproxy-cert-checker myproxy-certificate-mapapp \
          myproxy-certreq-checker myproxy-crl.cron myproxy.cron \
	  myproxy-get-delegation.cgi myproxy-get-trustroots.cron \
	  myproxy-passphrase-policy myproxy-revoke ; do \
	  mv $(INSTALLDIR)$(_datadir)/$(name)/$$FILE \
	     $(INSTALLDIR)$(_docdir)/extras ; \
	done

	for FILE in PROTOCOL VERSION ; do \
	  mv $(INSTALLDIR)$(_datadir)/$(name)/$$FILE \
	    $(INSTALLDIR)$(_docdir) ; \
	done

	# Remove irrelavent example configuration files.
	for FILE in etc.inetd.conf.modifications etc.init.d.myproxy.nonroot \
	  etc.services.modifications etc.xinetd.myproxy \
	  etc.init.d.myproxy LICENSE* INSTALL README ; do \
	  rm $(INSTALLDIR)$(_datadir)/$(name)/$$FILE ; \
	done

	# Move example configuration file into place.
	mkdir -p $(INSTALLDIR)$(_sysconfdir)
	mv $(INSTALLDIR)$(_datadir)/$(name)/myproxy-server.config \
	   $(INSTALLDIR)$(_sysconfdir)

	mkdir -p $(INSTALLDIR)/var/lib/$(name)
	chmod 700 $(INSTALLDIR)/var/lib/$(name)

	# Create a directory to hold myproxy owned host certificates.
	mkdir -p $(INSTALLDIR)$(_sysconfdir)/grid-security/$(name)

	# systemd unit files
	mv $(INSTALLDIR)$(_datadir)/$(name)/myproxy-server.service debian
	mv $(INSTALLDIR)$(_datadir)/$(name)/myproxy-server.conf \
	   debian/myproxy-server.tmpfile

binary: binary-arch binary-indep

binary-arch: install
	dh_testdir
	dh_testroot
	dh_installdocs -a
	dh_installchangelogs -a
	dh_install -a --fail-missing
	dh_installinit -a
	dh_installman -a
	dh_lintian -a
	dh_link -a
	dh_strip -a -X/bin/ -X/sbin/ --dbg-package=lib$(name)-dbg
	dh_strip -a -X/lib/ --dbg-package=$(name)-dbg
	dh_compress -a
	dh_fixperms -a -X var/lib/$(name)
	dh_perl -a
	dh_makeshlibs -a
	dh_installdeb -a
	dh_shlibdeps -a
	dh_gencontrol -a
	dh_md5sums -a
	dh_builddeb -a

binary-indep: install
	dh_testdir
	dh_testroot
	dh_installdocs -i
	dh_installchangelogs -i
	dh_install -i --fail-missing
	dh_installman -i
	dh_link -i
	dh_compress -i
	dh_fixperms -i
	dh_perl -i
	dh_installdeb -i
	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i

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