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

DEB_HOST_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)

ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
MAKEFLAGS += -j$(NUMJOBS)
endif

include /usr/share/quilt/quilt.make

name = myproxy
soname = 5

INSTALLDIR = $(CURDIR)/debian/tmp
GLOBUSPACKAGEDIR = $(INSTALLDIR)$(_datadir)/globus/packages

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

DEB_BUILD_ARCH_CPU ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH_CPU)

ifneq (,$(filter $(DEB_HOST_ARCH_CPU), amd64 alpha ia64 s390x ppc64 sparc64))
flavor = gcc64pthr
else
flavor = gcc32pthr
endif

sed: sed-stamp
	:

sed-stamp: $(QUILT_STAMPFN)
	dh_testdir

	for f in `find . ! -path */.pc/* -name Makefile.am` ; do \
	  sed -e 's!^flavorinclude_HEADERS!include_HEADERS!' \
	      -e 's!\(lib[a-zA-Z_]*\)_$$(GLOBUS_FLAVOR_NAME)\.la!\1.la!g' \
	      -e 's!^\(lib[a-zA-Z_]*\)___GLOBUS_FLAVOR_NAME__la_!\1_la_!' \
	    -i $$f ; \
	done
	sed -e "s!<With_Flavors!<With_Flavors ColocateLibraries=\"no\"!" \
	  -i pkgdata/pkg_data_src.gpt.in

	touch $@

unsed: cleanup
	dh_testdir

	if [ -e sed-stamp ] ; then \
	  for f in `find . ! -path */.pc/* -name Makefile.am` ; do \
	    sed -e 's!^include_HEADERS!flavorinclude_HEADERS!' \
		-e 's!\(lib[a-zA-Z_]*\)\.la!\1_$$(GLOBUS_FLAVOR_NAME).la!g' \
		-e 's!^\(lib[a-zA-Z_]*\)_la_!\1___GLOBUS_FLAVOR_NAME__la_!' \
	      -i $$f ; \
	  done ; \
	  sed -e "s!<With_Flavors ColocateLibraries=\"no\"!<With_Flavors!" \
	    -i pkgdata/pkg_data_src.gpt.in ; \
	fi

	rm -f sed-stamp

configure: configure-stamp
	:

configure-stamp: sed-stamp
	dh_testdir

	/usr/share/globus/globus-bootstrap.sh

	for f in config.sub config.guess ; do \
	  if [ -e /usr/share/misc/$$f -a ! -e $$f.dist ] ; then \
	    mv $$f $$f.dist ; \
	    cp -f /usr/share/misc/$$f $$f ; \
	  fi ; \
	done

	./configure \
	   --host=$(DEB_HOST_GNU_TYPE) \
	   --build=$(DEB_BUILD_GNU_TYPE) \
	   --prefix=$(_prefix) \
	   --mandir='$${datadir}/man' \
	   --infodir='$${datadir}/info' \
	   --with-flavor=$(flavor) \
	   --with-voms=/usr \
	   --with-openldap=/usr \
	   --with-kerberos5=/usr \
	   --with-sasl2=/usr \
	   --enable-doxygen

	touch $@

build: build-indep build-arch
	:

build-indep: build-stamp
	:

build-arch: build-stamp
	:

build-stamp: configure-stamp
	dh_testdir

	$(MAKE)

	touch $@

unpatch: unsed

clean: unpatch
	:

cleanup:
	dh_testdir
	dh_testroot

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

	for f in config.sub config.guess ; do \
	  if [ -e $$f.dist ] ; then \
	    mv -f $$f.dist $$f ; \
	  fi ; \
	done

	# Remove autogenerated files

	rm -f aclocal.m4
	rm -f configure
	rm -f config.guess
	rm -f config.sub
	rm -f ltmain.sh
	rm -f mkinstalldirs

	rm -f doxygen/Doxyfile*
	rm -f doxygen/Makefile.am
	rm -f pkgdata/Makefile.am
	rm -f pkgdata/*.filelist
	rm -f pkgdata/*.gpt
	rm -f globus_automake*
	rm -rf autom4te.cache

	rm -rf doxygen/doc

	find . -name Makefile.in -exec rm {} ';'

	rm -f build-stamp configure-stamp

	dh_clean

install: build-stamp
	dh_testdir
	dh_testroot
	dh_clean -k

	$(MAKE) install DESTDIR=$(INSTALLDIR)

	# Remove libtool archives (.la files)
	find $(INSTALLDIR)$(_libdir) -name 'lib*.la' -exec rm -v '{}' \;
	sed '/lib.*\.la$$/d' \
	  -i $(GLOBUSPACKAGEDIR)/$(name)/$(flavor)_rtl.filelist

	# Generate pkg-config file from GPT metadata
	mkdir -p $(INSTALLDIR)$(_libdir)/pkgconfig
	/usr/share/globus/globus-gpt2pkg-config \
	  pkgdata/pkg_data_$(flavor)_dev.gpt > \
	  $(INSTALLDIR)$(_libdir)/pkgconfig/$(name).pc

	# Move documentation to default debian location
	mv $(INSTALLDIR)$(_docdir)/$(name) \
	  $(INSTALLDIR)$(_docdir)/lib$(name)-dev
	sed s!doc/$(name)!doc/lib$(name)-dev! \
	  -i $(GLOBUSPACKAGEDIR)/$(name)/noflavor_doc.filelist

	mkdir -p $(INSTALLDIR)$(_docdir)/lib$(name)-dev/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)/lib$(name)-dev/extras ; \
	  sed -i "s!$(name)/$$FILE!doc/lib$(name)-dev/extras/$$FILE!" \
	    $(GLOBUSPACKAGEDIR)/$(name)/noflavor_data.filelist ; \
	done

	mkdir -p $(INSTALLDIR)$(_docdir)/$(name)
	for FILE in PROTOCOL VERSION ; do \
	  mv $(INSTALLDIR)$(_datadir)/$(name)/$$FILE \
	    $(INSTALLDIR)$(_docdir)/$(name) ; \
	  sed -i "s!$(name)/$$FILE!doc/$(name)/$$FILE!" \
	    $(GLOBUSPACKAGEDIR)/$(name)/noflavor_data.filelist ; \
	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 ; \
	  sed -i "/share\/$(name)\/$$FILE/d" \
	    $(GLOBUSPACKAGEDIR)/$(name)/noflavor_data.filelist ; \
	done

	# Move example configuration file into place.
	mkdir -p $(INSTALLDIR)$(_sysconfdir)
	mv $(INSTALLDIR)$(_datadir)/$(name)/myproxy-server.config \
	   $(INSTALLDIR)$(_sysconfdir)
	sed -i "/share\/$(name)\/myproxy-server.config/d" \
	  $(GLOBUSPACKAGEDIR)/$(name)/noflavor_data.filelist

	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)

	# Move documentation to default debian location
	mv $(INSTALLDIR)$(_docdir)/$(name) \
	  $(INSTALLDIR)$(_docdir)/lib$(name)-dev
	sed s!doc/$(name)!doc/lib$(name)-dev! \
	  -i $(GLOBUSPACKAGEDIR)/$(name)/noflavor_doc.filelist

	sed 's/\(^\.TH.*\) 1 /\1 8 /' \
	  -i $(INSTALLDIR)$(_mandir)/man8/myproxy-admin-query.8

	# Use system jquery script
	if [ -r $(INSTALLDIR)$(_docdir)/lib$(name)-dev/html/jquery.js ] ; then \
	  rm $(INSTALLDIR)$(_docdir)/lib$(name)-dev/html/jquery.js ; \
	  ln -s /usr/share/javascript/jquery/jquery.js \
	    $(INSTALLDIR)$(_docdir)/lib$(name)-dev/html/jquery.js ; \
	  echo js:Depends=libjs-jquery >> debian/lib$(name)-doc.substvars ; \
	else \
	  echo js:Depends= >> debian/lib$(name)-doc.substvars ; \
	fi

	# Check
	PATH=.:$$PATH ./myproxy-test -startserver -generatecerts

binary-indep:
	:

binary-arch: install
	dh_testdir
	dh_testroot
	mkdir -p debian/lib$(name)-doc$(_docdir)
	ln -s lib$(name)-dev debian/lib$(name)-doc$(_docdir)/lib$(name)-doc
	dh_installchangelogs
	dh_installdocs
	dh_install --fail-missing
	dh_installinit --name=myproxy-server
	dh_installman
	dh_link
	dh_strip --dbg-package=$(name)-dbg
	dh_compress -X .tag
	dh_fixperms -X var/lib/$(name)
	dh_perl
	dh_lintian
	dh_makeshlibs
	dh_installdeb
	dh_shlibdeps -l debian/lib$(name)$(soname)/usr/lib
	dh_gencontrol
	dh_md5sums
	dh_builddeb

binary: binary-indep binary-arch
	:

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